OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ia64/] [sn/] [klconfig.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* $Id: klconfig.h,v 1.1.1.1 2004-04-15 02:42:32 phoenix Exp $
2
 *
3
 * This file is subject to the terms and conditions of the GNU General Public
4
 * License.  See the file "COPYING" in the main directory of this archive
5
 * for more details.
6
 *
7
 * Derived from IRIX <sys/SN/klconfig.h>.
8
 *
9
 * Copyright (C) 1992-1997,1999,2001-2003 Silicon Graphics, Inc.  All Rights Reserved.
10
 * Copyright (C) 1999 by Ralf Baechle
11
 */
12
#ifndef _ASM_IA64_SN_KLCONFIG_H
13
#define _ASM_IA64_SN_KLCONFIG_H
14
 
15
#include <linux/config.h>
16
 
17
/*
18
 * klconfig.h
19
 */
20
 
21
/*
22
 * The KLCONFIG structures store info about the various BOARDs found
23
 * during Hardware Discovery. In addition, it stores info about the
24
 * components found on the BOARDs.
25
 */
26
 
27
/*
28
 * WARNING:
29
 *      Certain assembly language routines (notably xxxxx.s) in the IP27PROM
30
 *      will depend on the format of the data structures in this file.  In
31
 *      most cases, rearranging the fields can seriously break things.
32
 *      Adding fields in the beginning or middle can also break things.
33
 *      Add fields if necessary, to the end of a struct in such a way
34
 *      that offsets of existing fields do not change.
35
 */
36
 
37
#include <linux/types.h>
38
#include <asm/sn/types.h>
39
#include <asm/sn/slotnum.h>
40
#include <asm/sn/router.h>
41
#include <asm/sn/sgi.h>
42
#include <asm/sn/addrs.h>
43
#include <asm/sn/vector.h>
44
#include <asm/sn/arc/hinv.h>
45
#include <asm/sn/xtalk/xbow.h>
46
#include <asm/sn/xtalk/xtalk.h>
47
#include <asm/sn/kldir.h>
48
#include <asm/sn/sn_fru.h>
49
#include <asm/sn/sn2/shub_md.h>
50
#include <asm/sn/geo.h>
51
 
52
#define KLCFGINFO_MAGIC 0xbeedbabe
53
 
54
typedef s32 klconf_off_t;
55
 
56
#define MAX_MODULE_ID           255
57
#define SIZE_PAD                4096 /* 4k padding for structures */
58
/*
59
 * 1 NODE brick, 3 Router bricks (1 local, 1 meta, 1 repeater),
60
 * 6 XIO Widgets, 1 Xbow, 1 gfx
61
 */
62
#define MAX_SLOTS_PER_NODE      (1 + 3 + 6 + 1 + 1) 
63
 
64
/* XXX if each node is guranteed to have some memory */
65
 
66
#define MAX_PCI_DEVS            8
67
 
68
/* lboard_t->brd_flags fields */
69
/* All bits in this field are currently used. Try the pad fields if
70
   you need more flag bits */
71
 
72
#define ENABLE_BOARD            0x01
73
#define FAILED_BOARD            0x02
74
#define DUPLICATE_BOARD         0x04    /* Boards like midplanes/routers which
75
                                           are discovered twice. Use one of them */
76
#define VISITED_BOARD           0x08    /* Used for compact hub numbering. */
77
#define LOCAL_MASTER_IO6        0x10    /* master io6 for that node */
78
#define GLOBAL_MASTER_IO6       0x20
79
#define GLOBAL_MASTER_EXT       0x40    /* extend master io6 to other bus on ibrick */
80
#define SECOND_NIC_PRESENT      0x80    /* addons like MIO are present */
81
 
82
/* klinfo->flags fields */
83
 
84
#define KLINFO_ENABLE           0x01    /* This component is enabled */
85
#define KLINFO_FAILED           0x02    /* This component failed */
86
#define KLINFO_DEVICE           0x04    /* This component is a device */
87
#define KLINFO_VISITED          0x08    /* This component has been visited */
88
#define KLINFO_CONTROLLER       0x10    /* This component is a device controller */
89
#define KLINFO_INSTALL          0x20    /* Install a driver */
90
#define KLINFO_HEADLESS         0x40    /* Headless (or hubless) component */
91
#define IS_CONSOLE_IOC3(i)      ((((klinfo_t *)i)->flags) & KLINFO_INSTALL)
92
 
93
#define GB2             0x80000000
94
 
95
#define MAX_RSV_PTRS    32
96
 
97
/* Structures to manage various data storage areas */
98
/* The numbers must be contiguous since the array index i
99
   is used in the code to allocate various areas.
100
*/
101
 
102
#define BOARD_STRUCT            0
103
#define COMPONENT_STRUCT        1
104
#define ERRINFO_STRUCT          2
105
#define KLMALLOC_TYPE_MAX       (ERRINFO_STRUCT + 1)
106
#define DEVICE_STRUCT           3
107
 
108
 
109
typedef struct console_s {
110
        __psunsigned_t  uart_base;
111
        __psunsigned_t  config_base;
112
        __psunsigned_t  memory_base;
113
        short           baud;
114
        short           flag;
115
        int             type;
116
        nasid_t         nasid;
117
        char            wid;
118
        char            npci;
119
        nic_t           baseio_nic;
120
} console_t;
121
 
122
typedef struct klc_malloc_hdr {
123
        klconf_off_t km_base;
124
        klconf_off_t km_limit;
125
        klconf_off_t km_current;
126
} klc_malloc_hdr_t;
127
 
128
/* Functions/macros needed to use this structure */
129
 
130
typedef struct kl_config_hdr {
131
        u64             ch_magic;       /* set this to KLCFGINFO_MAGIC */
132
        u32             ch_version;    /* structure version number */
133
        klconf_off_t    ch_malloc_hdr_off; /* offset of ch_malloc_hdr */
134
        klconf_off_t    ch_cons_off;       /* offset of ch_cons */
135
        klconf_off_t    ch_board_info;  /* the link list of boards */
136
        console_t       ch_cons_info;   /* address info of the console */
137
        klc_malloc_hdr_t ch_malloc_hdr[KLMALLOC_TYPE_MAX];
138
        confidence_t    ch_sw_belief;   /* confidence that software is bad*/
139
        confidence_t    ch_sn0net_belief; /* confidence that sn0net is bad */
140
} kl_config_hdr_t;
141
 
142
 
143
#define KL_CONFIG_HDR(_nasid)   ((kl_config_hdr_t *)(KLCONFIG_ADDR(_nasid)))
144
#define KL_CONFIG_INFO_OFFSET(_nasid)                                   \
145
        (KL_CONFIG_HDR(_nasid)->ch_board_info)
146
#define KL_CONFIG_INFO_SET_OFFSET(_nasid, _off)                         \
147
        (KL_CONFIG_HDR(_nasid)->ch_board_info = (_off))
148
 
149
#ifndef __ia64
150
#define KL_CONFIG_INFO(_nasid)                                          \
151
        (lboard_t *)((KL_CONFIG_HDR(_nasid)->ch_board_info) ?           \
152
         NODE_OFFSET_TO_K0((_nasid), KL_CONFIG_HDR(_nasid)->ch_board_info) : \
153
         0)
154
#else
155
#define NODE_OFFSET_TO_LBOARD(nasid,off)        (lboard_t*)(NODE_CAC_BASE(nasid) + (off))
156
 
157
#define KL_CONFIG_INFO(_nasid)                                          \
158
        (lboard_t *)((KL_CONFIG_HDR(_nasid)->ch_board_info) ?           \
159
         NODE_OFFSET_TO_LBOARD((_nasid), KL_CONFIG_HDR(_nasid)->ch_board_info) : \
160
         NULL)
161
 
162
#endif  /* __ia64 */
163
 
164
#define KL_CONFIG_MAGIC(_nasid)         (KL_CONFIG_HDR(_nasid)->ch_magic)
165
 
166
#define KL_CONFIG_CHECK_MAGIC(_nasid)                                   \
167
        (KL_CONFIG_HDR(_nasid)->ch_magic == KLCFGINFO_MAGIC)
168
 
169
#define KL_CONFIG_HDR_INIT_MAGIC(_nasid)        \
170
                  (KL_CONFIG_HDR(_nasid)->ch_magic = KLCFGINFO_MAGIC)
171
 
172
/* --- New Macros for the changed kl_config_hdr_t structure --- */
173
 
174
#define PTR_CH_MALLOC_HDR(_k)   ((klc_malloc_hdr_t *)\
175
                        ((__psunsigned_t)_k + (_k->ch_malloc_hdr_off)))
176
 
177
#define KL_CONFIG_CH_MALLOC_HDR(_n)   PTR_CH_MALLOC_HDR(KL_CONFIG_HDR(_n))
178
 
179
#define PTR_CH_CONS_INFO(_k)    ((console_t *)\
180
                        ((__psunsigned_t)_k + (_k->ch_cons_off)))
181
 
182
#define KL_CONFIG_CH_CONS_INFO(_n)   PTR_CH_CONS_INFO(KL_CONFIG_HDR(_n))
183
 
184
/* ------------------------------------------------------------- */
185
 
186
#define KL_CONFIG_INFO_START(_nasid)    \
187
        (klconf_off_t)(KLCONFIG_OFFSET(_nasid) + sizeof(kl_config_hdr_t))
188
 
189
#define KL_CONFIG_BOARD_NASID(_brd)     ((_brd)->brd_nasid)
190
#define KL_CONFIG_BOARD_SET_NEXT(_brd, _off)    ((_brd)->brd_next = (_off))
191
 
192
#define KL_CONFIG_DUPLICATE_BOARD(_brd) ((_brd)->brd_flags & DUPLICATE_BOARD)
193
 
194
#define XBOW_PORT_TYPE_HUB(_xbowp, _link)       \
195
               ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_flag & XBOW_PORT_HUB)
196
#define XBOW_PORT_TYPE_IO(_xbowp, _link)        \
197
               ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_flag & XBOW_PORT_IO)
198
 
199
#define XBOW_PORT_IS_ENABLED(_xbowp, _link)     \
200
               ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_flag & XBOW_PORT_ENABLE)
201
#define XBOW_PORT_NASID(_xbowp, _link)  \
202
               ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_nasid)
203
 
204
#define XBOW_PORT_IO     0x1
205
#define XBOW_PORT_HUB    0x2
206
#define XBOW_PORT_ENABLE 0x4
207
 
208
#define SN0_PORT_FENCE_SHFT     0
209
#define SN0_PORT_FENCE_MASK     (1 << SN0_PORT_FENCE_SHFT)
210
 
211
/*
212
 * The KLCONFIG area is organized as a LINKED LIST of BOARDs. A BOARD
213
 * can be either 'LOCAL' or 'REMOTE'. LOCAL means it is attached to
214
 * the LOCAL/current NODE. REMOTE means it is attached to a different
215
 * node.(TBD - Need a way to treat ROUTER boards.)
216
 *
217
 * There are 2 different structures to represent these boards -
218
 * lboard - Local board, rboard - remote board. These 2 structures
219
 * can be arbitrarily mixed in the LINKED LIST of BOARDs. (Refer
220
 * Figure below). The first byte of the rboard or lboard structure
221
 * is used to find out its type - no unions are used.
222
 * If it is a lboard, then the config info of this board will be found
223
 * on the local node. (LOCAL NODE BASE + offset value gives pointer to
224
 * the structure.
225
 * If it is a rboard, the local structure contains the node number
226
 * and the offset of the beginning of the LINKED LIST on the remote node.
227
 * The details of the hardware on a remote node can be built locally,
228
 * if required, by reading the LINKED LIST on the remote node and
229
 * ignoring all the rboards on that node.
230
 *
231
 * The local node uses the REMOTE NODE NUMBER + OFFSET to point to the
232
 * First board info on the remote node. The remote node list is
233
 * traversed as the local list, using the REMOTE BASE ADDRESS and not
234
 * the local base address and ignoring all rboard values.
235
 *
236
 *
237
 KLCONFIG
238
 
239
 +------------+      +------------+      +------------+      +------------+
240
 |  lboard    |  +-->|   lboard   |  +-->|   rboard   |  +-->|   lboard   |
241
 +------------+  |   +------------+  |   +------------+  |   +------------+
242
 | board info |  |   | board info |  |   |errinfo,bptr|  |   | board info |
243
 +------------+  |   +------------+  |   +------------+  |   +------------+
244
 | offset     |--+   |  offset    |--+   |  offset    |--+   |offset=NULL |
245
 +------------+      +------------+      +------------+      +------------+
246
 
247
 
248
 +------------+
249
 | board info |
250
 +------------+       +--------------------------------+
251
 | compt 1    |------>| type, rev, diaginfo, size ...  |  (CPU)
252
 +------------+       +--------------------------------+
253
 | compt 2    |--+
254
 +------------+  |    +--------------------------------+
255
 |  ...       |  +--->| type, rev, diaginfo, size ...  |  (MEM_BANK)
256
 +------------+       +--------------------------------+
257
 | errinfo    |--+
258
 +------------+  |    +--------------------------------+
259
                 +--->|r/l brd errinfo,compt err flags |
260
                      +--------------------------------+
261
 
262
 *
263
 * Each BOARD consists of COMPONENTs and the BOARD structure has
264
 * pointers (offsets) to its COMPONENT structure.
265
 * The COMPONENT structure has version info, size and speed info, revision,
266
 * error info and the NIC info. This structure can accommodate any
267
 * BOARD with arbitrary COMPONENT composition.
268
 *
269
 * The ERRORINFO part of each BOARD has error information
270
 * that describes errors about the BOARD itself. It also has flags to
271
 * indicate the COMPONENT(s) on the board that have errors. The error
272
 * information specific to the COMPONENT is present in the respective
273
 * COMPONENT structure.
274
 *
275
 * The ERRORINFO structure is also treated like a COMPONENT, ie. the
276
 * BOARD has pointers(offset) to the ERRORINFO structure. The rboard
277
 * structure also has a pointer to the ERRORINFO structure. This is
278
 * the place to store ERRORINFO about a REMOTE NODE, if the HUB on
279
 * that NODE is not working or if the REMOTE MEMORY is BAD. In cases where
280
 * only the CPU of the REMOTE NODE is disabled, the ERRORINFO pointer can
281
 * be a NODE NUMBER, REMOTE OFFSET combination, pointing to error info
282
 * which is present on the REMOTE NODE.(TBD)
283
 * REMOTE ERRINFO can be stored on any of the nearest nodes
284
 * or on all the nearest nodes.(TBD)
285
 * Like BOARD structures, REMOTE ERRINFO structures can be built locally
286
 * using the rboard errinfo pointer.
287
 *
288
 * In order to get useful information from this Data organization, a set of
289
 * interface routines are provided (TBD). The important thing to remember while
290
 * manipulating the structures, is that, the NODE number information should
291
 * be used. If the NODE is non-zero (remote) then each offset should
292
 * be added to the REMOTE BASE ADDR else it should be added to the LOCAL BASE ADDR.
293
 * This includes offsets for BOARDS, COMPONENTS and ERRORINFO.
294
 *
295
 * Note that these structures do not provide much info about connectivity.
296
 * That info will be part of HWGRAPH, which is an extension of the cfg_t
297
 * data structure. (ref IP27prom/cfg.h) It has to be extended to include
298
 * the IO part of the Network(TBD).
299
 *
300
 * The data structures below define the above concepts.
301
 */
302
 
303
/*
304
 * Values for CPU types
305
 */
306
#define KL_CPU_R4000            0x1     /* Standard R4000 */
307
#define KL_CPU_TFP              0x2     /* TFP processor */
308
#define KL_CPU_R10000           0x3     /* R10000 (T5) */
309
#define KL_CPU_NONE             (-1)    /* no cpu present in slot */
310
 
311
/*
312
 * IP27 BOARD classes
313
 */
314
 
315
#define KLCLASS_MASK    0xf0   
316
#define KLCLASS_NONE    0x00
317
#define KLCLASS_NODE    0x10             /* CPU, Memory and HUB board */
318
#define KLCLASS_CPU     KLCLASS_NODE    
319
#define KLCLASS_IO      0x20             /* BaseIO, 4 ch SCSI, ethernet, FDDI 
320
                                            and the non-graphics widget boards */
321
#define KLCLASS_ROUTER  0x30             /* Router board */
322
#define KLCLASS_MIDPLANE 0x40            /* We need to treat this as a board
323
                                            so that we can record error info */
324
#define KLCLASS_GFX     0x50            /* graphics boards */
325
 
326
#define KLCLASS_PSEUDO_GFX      0x60    /* HDTV type cards that use a gfx
327
                                         * hw ifc to xtalk and are not gfx
328
                                         * class for sw purposes */
329
 
330
#define KLCLASS_IOBRICK 0x70            /* IP35 iobrick */
331
 
332
#define KLCLASS_MAX     8               /* Bump this if a new CLASS is added */
333
#define KLTYPE_MAX      11              /* Bump this if a new CLASS is added */
334
 
335
#define KLCLASS_UNKNOWN 0xf0
336
 
337
#define KLCLASS(_x) ((_x) & KLCLASS_MASK)
338
 
339
/*
340
 * board types
341
 */
342
 
343
#define KLTYPE_MASK     0x0f
344
#define KLTYPE_NONE     0x00
345
#define KLTYPE_EMPTY    0x00
346
 
347
#define KLTYPE_WEIRDCPU (KLCLASS_CPU | 0x0)
348
#define KLTYPE_SNIA     (KLCLASS_CPU | 0x1)
349
#define KLTYPE_TIO      (KLCLASS_CPU | 0x2)
350
 
351
#define KLTYPE_WEIRDIO  (KLCLASS_IOBRICK  | 0x0)
352
#define KLTYPE_BASEIO   (KLCLASS_IO  | 0x1) /* IOC3, SuperIO, Bridge, SCSI */
353
#define KLTYPE_IO6      KLTYPE_BASEIO       /* Additional name */
354
#define KLTYPE_4CHSCSI  (KLCLASS_IO  | 0x2)
355
#define KLTYPE_MSCSI    KLTYPE_4CHSCSI      /* Additional name */
356
#define KLTYPE_ETHERNET (KLCLASS_IO  | 0x3)
357
#define KLTYPE_MENET    KLTYPE_ETHERNET     /* Additional name */
358
#define KLTYPE_FDDI     (KLCLASS_IO  | 0x4)
359
#define KLTYPE_UNUSED   (KLCLASS_IO  | 0x5) /* XXX UNUSED */
360
#define KLTYPE_HAROLD   (KLCLASS_IO  | 0x6) /* PCI SHOE BOX */
361
#define KLTYPE_PCI      KLTYPE_HAROLD
362
#define KLTYPE_VME      (KLCLASS_IO  | 0x7) /* Any 3rd party VME card */
363
#define KLTYPE_MIO      (KLCLASS_IO  | 0x8)
364
#define KLTYPE_FC       (KLCLASS_IO  | 0x9)
365
#define KLTYPE_LINC     (KLCLASS_IO  | 0xA)
366
#define KLTYPE_TPU      (KLCLASS_IO  | 0xB) /* Tensor Processing Unit */
367
#define KLTYPE_GSN_A    (KLCLASS_IO  | 0xC) /* Main GSN board */
368
#define KLTYPE_GSN_B    (KLCLASS_IO  | 0xD) /* Auxiliary GSN board */
369
#define KLTYPE_SHOEHORN (KLCLASS_IO  | 0xE)
370
#define KLTYPE_SERIAL_HIPPI (KLCLASS_IO  | 0xF)
371
 
372
#define KLTYPE_GFX      (KLCLASS_GFX | 0x0) /* unknown graphics type */
373
#define KLTYPE_GFX_KONA (KLCLASS_GFX | 0x1) /* KONA graphics on IP27 */
374
#define KLTYPE_GFX_MGRA (KLCLASS_GFX | 0x3) /* MGRAS graphics on IP27 */
375
 
376
#define KLTYPE_WEIRDROUTER (KLCLASS_ROUTER | 0x0)
377
#define KLTYPE_ROUTER     (KLCLASS_ROUTER | 0x1)
378
#define KLTYPE_ROUTER2    KLTYPE_ROUTER         /* Obsolete! */
379
#define KLTYPE_NULL_ROUTER (KLCLASS_ROUTER | 0x2)
380
#define KLTYPE_META_ROUTER (KLCLASS_ROUTER | 0x3)
381
#define KLTYPE_REPEATER_ROUTER (KLCLASS_ROUTER | 0x4)
382
 
383
#define KLTYPE_WEIRDMIDPLANE (KLCLASS_MIDPLANE | 0x0)
384
#define KLTYPE_MIDPLANE8  (KLCLASS_MIDPLANE | 0x1) /* 8 slot backplane */
385
#define KLTYPE_MIDPLANE    KLTYPE_MIDPLANE8
386
#define KLTYPE_IOBRICK_XBOW     (KLCLASS_MIDPLANE | 0x2)
387
 
388
#define KLTYPE_IOBRICK          (KLCLASS_IOBRICK | 0x0)
389
#define KLTYPE_IBRICK           (KLCLASS_IOBRICK | 0x1)
390
#define KLTYPE_PBRICK           (KLCLASS_IOBRICK | 0x2)
391
#define KLTYPE_XBRICK           (KLCLASS_IOBRICK | 0x3)
392
#define KLTYPE_NBRICK           (KLCLASS_IOBRICK | 0x4)
393
#define KLTYPE_PEBRICK          (KLCLASS_IOBRICK | 0x5)
394
#define KLTYPE_PXBRICK          (KLCLASS_IOBRICK | 0x6)
395
#define KLTYPE_IXBRICK          (KLCLASS_IOBRICK | 0x7)
396
#define KLTYPE_CGBRICK          (KLCLASS_IOBRICK | 0x8)
397
#define KLTYPE_OPUSBRICK        (KLCLASS_IOBRICK | 0x9)
398
 
399
 
400
#define KLTYPE_PBRICK_BRIDGE    KLTYPE_PBRICK
401
 
402
/* The value of type should be more than 8 so that hinv prints
403
 * out the board name from the NIC string. For values less than
404
 * 8 the name of the board needs to be hard coded in a few places.
405
 * When bringup started nic names had not standardized and so we
406
 * had to hard code. (For people interested in history.)
407
 */
408
#define KLTYPE_XTHD     (KLCLASS_PSEUDO_GFX | 0x9)
409
 
410
#define KLTYPE_UNKNOWN  (KLCLASS_UNKNOWN | 0xf)
411
 
412
#define KLTYPE(_x)      ((_x) & KLTYPE_MASK)
413
#define IS_MIO_PRESENT(l)       ((l->brd_type == KLTYPE_BASEIO) && \
414
                                 (l->brd_flags & SECOND_NIC_PRESENT))
415
#define IS_MIO_IOC3(l,n)        (IS_MIO_PRESENT(l) && (n > 2))
416
 
417
/*
418
 * board structures
419
 */
420
 
421
#define MAX_COMPTS_PER_BRD 24
422
 
423
#define LOCAL_BOARD 1
424
#define REMOTE_BOARD 2
425
 
426
#define LBOARD_STRUCT_VERSION   2
427
 
428
typedef struct lboard_s {
429
        klconf_off_t    brd_next;         /* Next BOARD */
430
        unsigned char   struct_type;      /* type of structure, local or remote */
431
        unsigned char   brd_type;         /* type+class */
432
        unsigned char   brd_sversion;     /* version of this structure */
433
        unsigned char   brd_brevision;    /* board revision */
434
        unsigned char   brd_promver;      /* board prom version, if any */
435
        unsigned char   brd_flags;        /* Enabled, Disabled etc */
436
        unsigned char   brd_slot;         /* slot number */
437
        unsigned short  brd_debugsw;      /* Debug switches */
438
        geoid_t         brd_geoid;        /* geo id */
439
        partid_t        brd_partition;    /* Partition number */
440
        unsigned short  brd_diagval;      /* diagnostic value */
441
        unsigned short  brd_diagparm;     /* diagnostic parameter */
442
        unsigned char   brd_inventory;    /* inventory history */
443
        unsigned char   brd_numcompts;    /* Number of components */
444
        nic_t           brd_nic;          /* Number in CAN */
445
        nasid_t         brd_nasid;        /* passed parameter */
446
        klconf_off_t    brd_compts[MAX_COMPTS_PER_BRD]; /* pointers to COMPONENTS */
447
        klconf_off_t    brd_errinfo;      /* Board's error information */
448
        struct lboard_s *brd_parent;      /* Logical parent for this brd */
449
        vertex_hdl_t    brd_graph_link;   /* vertex hdl to connect extern compts */
450
        confidence_t    brd_confidence;   /* confidence that the board is bad */
451
        nasid_t         brd_owner;        /* who owns this board */
452
        unsigned char   brd_nic_flags;    /* To handle 8 more NICs */
453
        char            pad[32];          /* future expansion */
454
        char            brd_name[32];
455
} lboard_t;
456
 
457
 
458
/*
459
 *      Make sure we pass back the calias space address for local boards.
460
 *      klconfig board traversal and error structure extraction defines.
461
 */
462
 
463
#define BOARD_SLOT(_brd)        ((_brd)->brd_slot)
464
 
465
#define KLCF_CLASS(_brd)        KLCLASS((_brd)->brd_type)
466
#define KLCF_TYPE(_brd)         KLTYPE((_brd)->brd_type)
467
#define KLCF_REMOTE(_brd)       (((_brd)->struct_type & LOCAL_BOARD) ? 0 : 1)
468
#define KLCF_NUM_COMPS(_brd)    ((_brd)->brd_numcompts)
469
#define KLCF_MODULE_ID(_brd)    ((_brd)->brd_module)
470
 
471
#ifndef __ia64
472
#define KLCF_NEXT(_brd)                 ((_brd)->brd_next ? (lboard_t *)((_brd)->brd_next):  NULL)
473
#define KLCF_COMP(_brd, _ndx)   \
474
                (klinfo_t *)(NODE_OFFSET_TO_K0(NASID_GET(_brd), \
475
                                                (_brd)->brd_compts[(_ndx)]))
476
#define KLCF_COMP_ERROR(_brd, _comp)    \
477
                (NODE_OFFSET_TO_K0(NASID_GET(_brd), (_comp)->errinfo))
478
 
479
#else
480
 
481
#define NODE_OFFSET_TO_KLINFO(n,off)    ((klinfo_t*) TO_NODE_CAC(n,off))
482
#define KLCF_NEXT(_brd)         \
483
        ((_brd)->brd_next ?     \
484
         (NODE_OFFSET_TO_LBOARD(NASID_GET(_brd), (_brd)->brd_next)): NULL)
485
#define KLCF_COMP(_brd, _ndx)   \
486
                ((((_brd)->brd_compts[(_ndx)]) == 0) ? 0 : \
487
                        (NODE_OFFSET_TO_KLINFO(NASID_GET(_brd), (_brd)->brd_compts[(_ndx)])))
488
 
489
#define KLCF_COMP_ERROR(_brd, _comp)    \
490
                (NODE_OFFSET_TO_K0(NASID_GET(_brd), (_comp)->errinfo))
491
 
492
#endif /* __ia64 */
493
 
494
#define KLCF_COMP_TYPE(_comp)   ((_comp)->struct_type)
495
#define KLCF_BRIDGE_W_ID(_comp) ((_comp)->physid)       /* Widget ID */
496
 
497
 
498
 
499
/*
500
 * Generic info structure. This stores common info about a
501
 * component.
502
 */
503
 
504
typedef struct klinfo_s {                  /* Generic info */
505
        unsigned char   struct_type;       /* type of this structure */
506
        unsigned char   struct_version;    /* version of this structure */
507
        unsigned char   flags;            /* Enabled, disabled etc */
508
        unsigned char   revision;         /* component revision */
509
        unsigned short  diagval;          /* result of diagnostics */
510
        unsigned short  diagparm;         /* diagnostic parameter */
511
        unsigned char   inventory;        /* previous inventory status */
512
        unsigned short  partid;            /* widget part number */
513
        nic_t           nic;              /* MUst be aligned properly */
514
        unsigned char   physid;           /* physical id of component */
515
        unsigned int    virtid;           /* virtual id as seen by system */
516
        unsigned char   widid;            /* Widget id - if applicable */
517
        nasid_t         nasid;            /* node number - from parent */
518
        char            pad1;             /* pad out structure. */
519
        char            pad2;             /* pad out structure. */
520
        COMPONENT       *arcs_compt;      /* ptr to the arcs struct for ease*/
521
        klconf_off_t    errinfo;          /* component specific errors */
522
        unsigned short  pad3;             /* pci fields have moved over to */
523
        unsigned short  pad4;             /* klbri_t */
524
} klinfo_t ;
525
 
526
#define KLCONFIG_INFO_ENABLED(_i)       ((_i)->flags & KLINFO_ENABLE)
527
/*
528
 * Component structures.
529
 * Following are the currently identified components:
530
 *      CPU, HUB, MEM_BANK,
531
 *      XBOW(consists of 16 WIDGETs, each of which can be HUB or GRAPHICS or BRIDGE)
532
 *      BRIDGE, IOC3, SuperIO, SCSI, FDDI
533
 *      ROUTER
534
 *      GRAPHICS
535
 */
536
#define KLSTRUCT_UNKNOWN        0
537
#define KLSTRUCT_CPU            1
538
#define KLSTRUCT_HUB            2
539
#define KLSTRUCT_MEMBNK         3
540
#define KLSTRUCT_XBOW           4
541
#define KLSTRUCT_BRI            5
542
#define KLSTRUCT_IOC3           6
543
#define KLSTRUCT_PCI            7
544
#define KLSTRUCT_VME            8
545
#define KLSTRUCT_ROU            9
546
#define KLSTRUCT_GFX            10
547
#define KLSTRUCT_SCSI           11
548
#define KLSTRUCT_FDDI           12
549
#define KLSTRUCT_MIO            13
550
#define KLSTRUCT_DISK           14
551
#define KLSTRUCT_TAPE           15
552
#define KLSTRUCT_CDROM          16
553
#define KLSTRUCT_HUB_UART       17
554
#define KLSTRUCT_IOC3ENET       18
555
#define KLSTRUCT_IOC3UART       19
556
#define KLSTRUCT_UNUSED         20 /* XXX UNUSED */
557
#define KLSTRUCT_IOC3PCKM       21
558
#define KLSTRUCT_RAD            22
559
#define KLSTRUCT_HUB_TTY        23
560
#define KLSTRUCT_IOC3_TTY       24
561
 
562
/* Early Access IO proms are compatible
563
   only with KLSTRUCT values upto 24. */
564
 
565
#define KLSTRUCT_FIBERCHANNEL   25
566
#define KLSTRUCT_MOD_SERIAL_NUM 26
567
#define KLSTRUCT_IOC3MS         27
568
#define KLSTRUCT_TPU            28
569
#define KLSTRUCT_GSN_A          29
570
#define KLSTRUCT_GSN_B          30
571
#define KLSTRUCT_XTHD           31
572
#define KLSTRUCT_QLFIBRE        32
573
#define KLSTRUCT_1394           33
574
#define KLSTRUCT_USB            34
575
#define KLSTRUCT_USBKBD         35
576
#define KLSTRUCT_USBMS          36
577
#define KLSTRUCT_SCSI_CTLR      37
578
#define KLSTRUCT_PEBRICK        38
579
#define KLSTRUCT_GIGE           39
580
#define KLSTRUCT_IDE            40
581
#define KLSTRUCT_IOC4           41
582
#define KLSTRUCT_IOC4UART       42
583
#define KLSTRUCT_IOC4_TTY       43
584
#define KLSTRUCT_IOC4PCKM       44
585
#define KLSTRUCT_IOC4MS         45
586
#define KLSTRUCT_IOC4_ATA       46
587
#define KLSTRUCT_PCIGFX         47
588
 
589
/*
590
 * These are the indices of various components within a lboard structure.
591
 */
592
 
593
#define IP27_CPU0_INDEX 0
594
#define IP27_CPU1_INDEX 1
595
#define IP27_HUB_INDEX 2
596
#define IP27_MEM_INDEX 3
597
 
598
#define BASEIO_BRIDGE_INDEX 0
599
#define BASEIO_IOC3_INDEX 1
600
#define BASEIO_SCSI1_INDEX 2
601
#define BASEIO_SCSI2_INDEX 3
602
 
603
#define MIDPLANE_XBOW_INDEX 0
604
#define ROUTER_COMPONENT_INDEX 0
605
 
606
#define CH4SCSI_BRIDGE_INDEX 0
607
 
608
/* Info holders for various hardware components */
609
 
610
typedef u64 *pci_t;
611
typedef u64 *vmeb_t;
612
typedef u64 *vmed_t;
613
typedef u64 *fddi_t;
614
typedef u64 *scsi_t;
615
typedef u64 *mio_t;
616
typedef u64 *graphics_t;
617
typedef u64 *router_t;
618
 
619
/*
620
 * The port info in ip27_cfg area translates to a lboart_t in the
621
 * KLCONFIG area. But since KLCONFIG does not use pointers, lboart_t
622
 * is stored in terms of a nasid and a offset from start of KLCONFIG
623
 * area  on that nasid.
624
 */
625
typedef struct klport_s {
626
        nasid_t         port_nasid;
627
        unsigned char   port_flag;
628
        klconf_off_t    port_offset;
629
        short           port_num;
630
} klport_t;
631
 
632
typedef struct klcpu_s {                          /* CPU */
633
        klinfo_t        cpu_info;
634
        unsigned short  cpu_prid;       /* Processor PRID value */
635
        unsigned short  cpu_fpirr;      /* FPU IRR value */
636
        unsigned short  cpu_speed;      /* Speed in MHZ */
637
        unsigned short  cpu_scachesz;   /* secondary cache size in MB */
638
        unsigned short  cpu_scachespeed;/* secondary cache speed in MHz */
639
        unsigned long   pad;
640
} klcpu_t ;
641
 
642
#define CPU_STRUCT_VERSION   2
643
 
644
typedef struct klhub_s {                        /* HUB */
645
        klinfo_t        hub_info;
646
        uint            hub_flags;              /* PCFG_HUB_xxx flags */
647
#define MAX_NI_PORTS                    2
648
        klport_t        hub_port[MAX_NI_PORTS + 1];/* hub is connected to this */
649
        nic_t           hub_box_nic;            /* nic of containing box */
650
        klconf_off_t    hub_mfg_nic;            /* MFG NIC string */
651
        u64             hub_speed;              /* Speed of hub in HZ */
652
        moduleid_t      hub_io_module;          /* attached io module */
653
        unsigned long   pad;
654
} klhub_t ;
655
 
656
typedef struct klhub_uart_s {                   /* HUB */
657
        klinfo_t        hubuart_info;
658
        uint            hubuart_flags;          /* PCFG_HUB_xxx flags */
659
        nic_t           hubuart_box_nic;        /* nic of containing box */
660
        unsigned long   pad;
661
} klhub_uart_t ;
662
 
663
#define MEMORY_STRUCT_VERSION   2
664
 
665
typedef struct klmembnk_s {                     /* MEMORY BANK */
666
        klinfo_t        membnk_info;
667
        short           membnk_memsz;           /* Total memory in megabytes */
668
        short           membnk_dimm_select; /* bank to physical addr mapping*/
669
        short           membnk_bnksz[MD_MEM_BANKS]; /* Memory bank sizes */
670
        short           membnk_attr;
671
        unsigned long   pad;
672
} klmembnk_t ;
673
 
674
#define KLCONFIG_MEMBNK_SIZE(_info, _bank)      \
675
                            ((_info)->membnk_bnksz[(_bank)])
676
 
677
 
678
#define MEMBNK_PREMIUM 1
679
#define KLCONFIG_MEMBNK_PREMIUM(_info, _bank)   \
680
                            ((_info)->membnk_attr & (MEMBNK_PREMIUM << (_bank)))
681
 
682
#define MAX_SERIAL_NUM_SIZE 10
683
 
684
typedef struct klmod_serial_num_s {
685
      klinfo_t        snum_info;
686
      union {
687
              char snum_str[MAX_SERIAL_NUM_SIZE];
688
              unsigned long long       snum_int;
689
      } snum;
690
      unsigned long   pad;
691
} klmod_serial_num_t;
692
 
693
/* Macros needed to access serial number structure in lboard_t.
694
   Hard coded values are necessary since we cannot treat
695
   serial number struct as a component without losing compatibility
696
   between prom versions. */
697
 
698
#define GET_SNUM_COMP(_l)       ((klmod_serial_num_t *)\
699
                                KLCF_COMP(_l, _l->brd_numcompts))
700
 
701
#define MAX_XBOW_LINKS 16
702
 
703
typedef struct klxbow_s {                          /* XBOW */
704
        klinfo_t        xbow_info ;
705
        klport_t        xbow_port_info[MAX_XBOW_LINKS] ; /* Module number */
706
        int             xbow_master_hub_link;
707
        /* type of brd connected+component struct ptr+flags */
708
        unsigned long   pad;
709
} klxbow_t ;
710
 
711
#define MAX_PCI_SLOTS 8
712
 
713
typedef struct klpci_device_s {
714
        s32     pci_device_id;  /* 32 bits of vendor/device ID. */
715
        s32     pci_device_pad; /* 32 bits of padding. */
716
} klpci_device_t;
717
 
718
#define BRIDGE_STRUCT_VERSION   2
719
 
720
typedef struct klbri_s {                          /* BRIDGE */
721
        klinfo_t        bri_info ;
722
        unsigned char   bri_eprominfo ;    /* IO6prom connected to bridge */
723
        unsigned char   bri_bustype ;      /* PCI/VME BUS bridge/GIO */
724
        pci_t           pci_specific  ;    /* PCI Board config info */
725
        klpci_device_t  bri_devices[MAX_PCI_DEVS] ;     /* PCI IDs */
726
        klconf_off_t    bri_mfg_nic ;
727
        unsigned long   pad;
728
} klbri_t ;
729
 
730
#define MAX_IOC3_TTY    2
731
 
732
typedef struct klioc3_s {                          /* IOC3 */
733
        klinfo_t        ioc3_info ;
734
        unsigned char   ioc3_ssram ;        /* Info about ssram */
735
        unsigned char   ioc3_nvram ;        /* Info about nvram */
736
        klinfo_t        ioc3_superio ;      /* Info about superio */
737
        klconf_off_t    ioc3_tty_off ;
738
        klinfo_t        ioc3_enet ;
739
        klconf_off_t    ioc3_enet_off ;
740
        klconf_off_t    ioc3_kbd_off ;
741
        unsigned long   pad;
742
} klioc3_t ;
743
 
744
#define MAX_VME_SLOTS 8
745
 
746
typedef struct klvmeb_s {                          /* VME BRIDGE - PCI CTLR */
747
        klinfo_t        vmeb_info ;
748
        vmeb_t          vmeb_specific ;
749
        klconf_off_t    vmeb_brdinfo[MAX_VME_SLOTS]   ;    /* VME Board config info */
750
        unsigned long   pad;
751
} klvmeb_t ;
752
 
753
typedef struct klvmed_s {                          /* VME DEVICE - VME BOARD */
754
        klinfo_t        vmed_info ;
755
        vmed_t          vmed_specific ;
756
        klconf_off_t    vmed_brdinfo[MAX_VME_SLOTS]   ;    /* VME Board config info */
757
        unsigned long   pad;
758
} klvmed_t ;
759
 
760
#define ROUTER_VECTOR_VERS      2
761
 
762
/* XXX - Don't we need the number of ports here?!? */
763
typedef struct klrou_s {                          /* ROUTER */
764
        klinfo_t        rou_info ;
765
        uint            rou_flags ;           /* PCFG_ROUTER_xxx flags */
766
        nic_t           rou_box_nic ;         /* nic of the containing module */
767
        klport_t        rou_port[MAX_ROUTER_PORTS + 1] ; /* array index 1 to 6 */
768
        klconf_off_t    rou_mfg_nic ;     /* MFG NIC string */
769
        u64     rou_vector;       /* vector from master node */
770
        unsigned long   pad;
771
} klrou_t ;
772
 
773
/*
774
 *  Graphics Controller/Device
775
 *
776
 *  (IP27/IO6) Prom versions 6.13 (and 6.5.1 kernels) and earlier
777
 *  used a couple different structures to store graphics information.
778
 *  For compatibility reasons, the newer data structure preserves some
779
 *  of the layout so that fields that are used in the old versions remain
780
 *  in the same place (with the same info).  Determination of what version
781
 *  of this structure we have is done by checking the cookie field.
782
 */
783
#define KLGFX_COOKIE    0x0c0de000
784
 
785
typedef struct klgfx_s {                /* GRAPHICS Device */
786
        klinfo_t        gfx_info;
787
        klconf_off_t    old_gndevs;     /* for compatibility with older proms */
788
        klconf_off_t    old_gdoff0;     /* for compatibility with older proms */
789
        uint            cookie;         /* for compatibility with older proms */
790
        uint            moduleslot;
791
        struct klgfx_s  *gfx_next_pipe;
792
        graphics_t      gfx_specific;
793
        klconf_off_t    pad0;           /* for compatibility with older proms */
794
        klconf_off_t    gfx_mfg_nic;
795
        unsigned long   pad;
796
} klgfx_t;
797
 
798
typedef struct klxthd_s {
799
        klinfo_t        xthd_info ;
800
        klconf_off_t    xthd_mfg_nic ;        /* MFG NIC string */
801
        unsigned long   pad;
802
} klxthd_t ;
803
 
804
typedef struct kltpu_s {                     /* TPU board */
805
        klinfo_t        tpu_info ;
806
        klconf_off_t    tpu_mfg_nic ;        /* MFG NIC string */
807
        unsigned long   pad;
808
} kltpu_t ;
809
 
810
typedef struct klgsn_s {                     /* GSN board */
811
        klinfo_t        gsn_info ;
812
        klconf_off_t    gsn_mfg_nic ;        /* MFG NIC string */
813
} klgsn_t ;
814
 
815
#define MAX_SCSI_DEVS 16
816
 
817
/*
818
 * NOTE: THis is the max sized kl* structure and is used in klmalloc.c
819
 * to allocate space of type COMPONENT. Make sure that if the size of
820
 * any other component struct becomes more than this, then redefine
821
 * that as the size to be klmalloced.
822
 */
823
 
824
typedef struct klscsi_s {                          /* SCSI Bus */
825
        klinfo_t        scsi_info ;
826
        scsi_t          scsi_specific   ;
827
        unsigned char   scsi_numdevs ;
828
        klconf_off_t    scsi_devinfo[MAX_SCSI_DEVS] ;
829
        unsigned long   pad;
830
} klscsi_t ;
831
 
832
typedef struct klscctl_s {                          /* SCSI Controller */
833
        klinfo_t        scsi_info ;
834
        uint            type;
835
        uint            scsi_buscnt;                        /* # busses this cntlr */
836
        void            *scsi_bus[2];                       /* Pointer to 2 klscsi_t's */
837
        unsigned long   pad;
838
} klscctl_t ;
839
 
840
typedef struct klscdev_s {                          /* SCSI device */
841
        klinfo_t        scdev_info ;
842
        struct scsidisk_data *scdev_cfg ; /* driver fills up this */
843
        unsigned long   pad;
844
} klscdev_t ;
845
 
846
typedef struct klttydev_s {                          /* TTY device */
847
        klinfo_t        ttydev_info ;
848
        struct terminal_data *ttydev_cfg ; /* driver fills up this */
849
        unsigned long   pad;
850
} klttydev_t ;
851
 
852
typedef struct klenetdev_s {                          /* ENET device */
853
        klinfo_t        enetdev_info ;
854
        struct net_data *enetdev_cfg ; /* driver fills up this */
855
        unsigned long   pad;
856
} klenetdev_t ;
857
 
858
typedef struct klpcigfx_s {                          /* PCI GFX */
859
        klinfo_t        gfx_info ;
860
} klpcigfx_t ;
861
 
862
typedef struct klkbddev_s {                          /* KBD device */
863
        klinfo_t        kbddev_info ;
864
        struct keyboard_data *kbddev_cfg ; /* driver fills up this */
865
        unsigned long   pad;
866
} klkbddev_t ;
867
 
868
typedef struct klmsdev_s {                          /* mouse device */
869
        klinfo_t        msdev_info ;
870
        void            *msdev_cfg ;
871
        unsigned long   pad;
872
} klmsdev_t ;
873
 
874
#define MAX_FDDI_DEVS 10 /* XXX Is this true */
875
 
876
typedef struct klfddi_s {                          /* FDDI */
877
        klinfo_t        fddi_info ;
878
        fddi_t          fddi_specific ;
879
        klconf_off_t    fddi_devinfo[MAX_FDDI_DEVS] ;
880
        unsigned long   pad;
881
} klfddi_t ;
882
 
883
typedef struct klmio_s {                          /* MIO */
884
        klinfo_t        mio_info ;
885
        mio_t           mio_specific   ;
886
        unsigned long   pad;
887
} klmio_t ;
888
 
889
/*
890
 * USB info
891
 */
892
 
893
typedef struct klusb_s {
894
        klinfo_t        usb_info;       /* controller info */
895
        void            *usb_bus;       /* handle to usb_bus_t */
896
        uint64_t        usb_controller; /* ptr to controller info */
897
        unsigned long   pad;
898
} klusb_t ;
899
 
900
typedef union klcomp_s {
901
        klcpu_t         kc_cpu;
902
        klhub_t         kc_hub;
903
        klmembnk_t      kc_mem;
904
        klxbow_t        kc_xbow;
905
        klbri_t         kc_bri;
906
        klioc3_t        kc_ioc3;
907
        klvmeb_t        kc_vmeb;
908
        klvmed_t        kc_vmed;
909
        klrou_t         kc_rou;
910
        klgfx_t         kc_gfx;
911
        klscsi_t        kc_scsi;
912
        klscctl_t       kc_scsi_ctl;
913
        klscdev_t       kc_scsi_dev;
914
        klfddi_t        kc_fddi;
915
        klmio_t         kc_mio;
916
        klmod_serial_num_t kc_snum ;
917
        klusb_t         kc_usb;
918
} klcomp_t;
919
 
920
typedef union kldev_s {      /* for device structure allocation */
921
        klscdev_t       kc_scsi_dev ;
922
        klttydev_t      kc_tty_dev ;
923
        klenetdev_t     kc_enet_dev ;
924
        klkbddev_t      kc_kbd_dev ;
925
} kldev_t ;
926
 
927
/* Data structure interface routines. TBD */
928
 
929
/* Include launch info in this file itself? TBD */
930
 
931
/*
932
 * TBD - Can the ARCS and device driver related info also be included in the
933
 * KLCONFIG area. On the IO4PROM, prom device driver info is part of cfgnode_t
934
 * structure, viz private to the IO4prom.
935
 */
936
 
937
/*
938
 * TBD - Allocation issues.
939
 *
940
 * Do we need to Mark off sepatate heaps for lboard_t, rboard_t, component,
941
 * errinfo and allocate from them, or have a single heap and allocate all
942
 * structures from it. Debug is easier in the former method since we can
943
 * dump all similar structs in one command, but there will be lots of holes,
944
 * in memory and max limits are needed for number of structures.
945
 * Another way to make it organized, is to have a union of all components
946
 * and allocate a aligned chunk of memory greater than the biggest
947
 * component.
948
 */
949
 
950
typedef union {
951
        lboard_t *lbinfo ;
952
} biptr_t ;
953
 
954
 
955
#define BRI_PER_XBOW 6
956
#define PCI_PER_BRI  8
957
#define DEV_PER_PCI  16
958
 
959
 
960
/* Virtual dipswitch values (starting from switch "7"): */
961
 
962
#define VDS_NOGFX               0x8000  /* Don't enable gfx and autoboot */
963
#define VDS_NOMP                0x100   /* Don't start slave processors */
964
#define VDS_MANUMODE            0x80    /* Manufacturing mode */
965
#define VDS_NOARB               0x40    /* No bootmaster arbitration */
966
#define VDS_PODMODE             0x20    /* Go straight to POD mode */
967
#define VDS_NO_DIAGS            0x10    /* Don't run any diags after BM arb */
968
#define VDS_DEFAULTS            0x08    /* Use default environment values */
969
#define VDS_NOMEMCLEAR          0x04    /* Don't run mem cfg code */
970
#define VDS_2ND_IO4             0x02    /* Boot from the second IO4 */
971
#define VDS_DEBUG_PROM          0x01    /* Print PROM debugging messages */
972
 
973
/* external declarations of Linux kernel functions. */
974
 
975
extern lboard_t *find_lboard(lboard_t *start, unsigned char type);
976
extern klinfo_t *find_component(lboard_t *brd, klinfo_t *kli, unsigned char type);
977
extern klinfo_t *find_first_component(lboard_t *brd, unsigned char type);
978
extern klcpu_t *nasid_slice_to_cpuinfo(nasid_t, int);
979
 
980
 
981
extern lboard_t *find_gfxpipe(int pipenum);
982
extern lboard_t *find_lboard_class(lboard_t *start, unsigned char brd_class);
983
extern lboard_t *find_nic_lboard(lboard_t *, nic_t);
984
extern lboard_t *find_nic_type_lboard(nasid_t, unsigned char, nic_t);
985
extern lboard_t *find_lboard_modslot(lboard_t *start, geoid_t geoid);
986
extern lboard_t *find_lboard_module(lboard_t *start, geoid_t geoid);
987
extern int      config_find_nic_router(nasid_t, nic_t, lboard_t **, klrou_t**);
988
extern int      config_find_nic_hub(nasid_t, nic_t, lboard_t **, klhub_t**);
989
extern int      config_find_xbow(nasid_t, lboard_t **, klxbow_t**);
990
extern int      update_klcfg_cpuinfo(nasid_t, int);
991
extern void     board_to_path(lboard_t *brd, char *path);
992
extern void     nic_name_convert(char *old_name, char *new_name);
993
extern int      module_brds(nasid_t nasid, lboard_t **module_brds, int n);
994
extern lboard_t *brd_from_key(uint64_t key);
995
extern void     device_component_canonical_name_get(lboard_t *,klinfo_t *,
996
                                                    char *);
997
extern int      board_serial_number_get(lboard_t *,char *);
998
extern nasid_t  get_actual_nasid(lboard_t *brd) ;
999
extern net_vec_t klcfg_discover_route(lboard_t *, lboard_t *, int);
1000
 
1001
#endif /* _ASM_IA64_SN_KLCONFIG_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.