1
2
3
4
5
6
7
8
9
10
11#ifndef _ASM_SN_KLCONFIG_H
12#define _ASM_SN_KLCONFIG_H
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#include <linux/config.h>
31#include <linux/types.h>
32#include <asm/sn/types.h>
33
34#if defined(CONFIG_SGI_IP27)
35
36#include <asm/sn/sn0/addrs.h>
37
38
39#define MAX_ROUTER_PORTS (6)
40#include <asm/sn/sn0/sn0_fru.h>
41
42
43
44#elif defined(CONFIG_SGI_IP35)
45
46#include <asm/sn/sn1/addrs.h>
47#include <sys/sn/router.h>
48#include <sys/graph.h>
49#include <asm/xtalk/xbow.h>
50
51#endif
52
53#if defined(CONFIG_SGI_IP27) || defined(CONFIG_SGI_IP35)
54#include <asm/sn/agent.h>
55#include <asm/arc/types.h>
56#include <asm/arc/hinv.h>
57#if defined(CONFIG_SGI_IO) || defined(CONFIG_SGI_IP35)
58
59#include <asm/hack.h>
60#include <asm/sn/vector.h>
61#include <asm/xtalk/xtalk.h>
62#endif
63#endif
64
65#define KLCFGINFO_MAGIC 0xbeedbabe
66
67#ifdef FRUTEST
68typedef u64 klconf_off_t;
69#else
70typedef s32 klconf_off_t;
71#endif
72
73
74
75
76#if 0
77#define RAMBASE 0
78#define ARCSSPB_OFF 0x1000
79
80#define OFF_HWGRAPH 0
81#endif
82
83#define MAX_MODULE_ID 255
84#define SIZE_PAD 4096
85
86
87
88
89#define MAX_SLOTS_PER_NODE (1 + 2 + 6 + 2)
90
91
92
93#define MAX_PCI_DEVS 8
94
95
96
97
98
99#define ENABLE_BOARD 0x01
100#define FAILED_BOARD 0x02
101#define DUPLICATE_BOARD 0x04
102
103#define VISITED_BOARD 0x08
104#define LOCAL_MASTER_IO6 0x10
105#define GLOBAL_MASTER_IO6 0x20
106#define THIRD_NIC_PRESENT 0x40
107#define SECOND_NIC_PRESENT 0x80
108
109
110
111#define KLINFO_ENABLE 0x01
112#define KLINFO_FAILED 0x02
113#define KLINFO_DEVICE 0x04
114#define KLINFO_VISITED 0x08
115#define KLINFO_CONTROLLER 0x10
116#define KLINFO_INSTALL 0x20
117#define KLINFO_HEADLESS 0x40
118#define IS_CONSOLE_IOC3(i) ((((klinfo_t *)i)->flags) & KLINFO_INSTALL)
119
120#define GB2 0x80000000
121
122#define MAX_RSV_PTRS 32
123
124
125
126
127
128
129#define BOARD_STRUCT 0
130#define COMPONENT_STRUCT 1
131#define ERRINFO_STRUCT 2
132#define KLMALLOC_TYPE_MAX (ERRINFO_STRUCT + 1)
133#define DEVICE_STRUCT 3
134
135
136typedef struct console_s {
137#if defined(CONFIG_SGI_IO)
138 __psunsigned_t uart_base;
139 __psunsigned_t config_base;
140 __psunsigned_t memory_base;
141#else
142 unsigned long uart_base;
143 unsigned long config_base;
144 unsigned long memory_base;
145#endif
146 short baud;
147 short flag;
148 int type;
149 nasid_t nasid;
150 char wid;
151 char npci;
152 nic_t baseio_nic;
153} console_t;
154
155typedef struct klc_malloc_hdr {
156 klconf_off_t km_base;
157 klconf_off_t km_limit;
158 klconf_off_t km_current;
159} klc_malloc_hdr_t;
160
161
162
163typedef struct kl_config_hdr {
164 u64 ch_magic;
165 u32 ch_version;
166 klconf_off_t ch_malloc_hdr_off;
167 klconf_off_t ch_cons_off;
168 klconf_off_t ch_board_info;
169 console_t ch_cons_info;
170 klc_malloc_hdr_t ch_malloc_hdr[KLMALLOC_TYPE_MAX];
171 confidence_t ch_sw_belief;
172 confidence_t ch_sn0net_belief;
173} kl_config_hdr_t;
174
175
176#define KL_CONFIG_HDR(_nasid) ((kl_config_hdr_t *)(KLCONFIG_ADDR(_nasid)))
177#if 0
178#define KL_CONFIG_MALLOC_HDR(_nasid) \
179 (KL_CONFIG_HDR(_nasid)->ch_malloc_hdr)
180#endif
181#define KL_CONFIG_INFO_OFFSET(_nasid) \
182 (KL_CONFIG_HDR(_nasid)->ch_board_info)
183#define KL_CONFIG_INFO_SET_OFFSET(_nasid, _off) \
184 (KL_CONFIG_HDR(_nasid)->ch_board_info = (_off))
185
186#define KL_CONFIG_INFO(_nasid) \
187 (lboard_t *)((KL_CONFIG_HDR(_nasid)->ch_board_info) ? \
188 NODE_OFFSET_TO_K1((_nasid), KL_CONFIG_HDR(_nasid)->ch_board_info) : \
189 0)
190#define KL_CONFIG_MAGIC(_nasid) (KL_CONFIG_HDR(_nasid)->ch_magic)
191
192#define KL_CONFIG_CHECK_MAGIC(_nasid) \
193 (KL_CONFIG_HDR(_nasid)->ch_magic == KLCFGINFO_MAGIC)
194
195#define KL_CONFIG_HDR_INIT_MAGIC(_nasid) \
196 (KL_CONFIG_HDR(_nasid)->ch_magic = KLCFGINFO_MAGIC)
197
198
199
200#if defined(CONFIG_SGI_IO)
201#define PTR_CH_MALLOC_HDR(_k) ((klc_malloc_hdr_t *)\
202 ((__psunsigned_t)_k + (_k->ch_malloc_hdr_off)))
203#else
204#define PTR_CH_MALLOC_HDR(_k) ((klc_malloc_hdr_t *)\
205 (unsigned long)_k + (_k->ch_malloc_hdr_off)))
206#endif
207
208#define KL_CONFIG_CH_MALLOC_HDR(_n) PTR_CH_MALLOC_HDR(KL_CONFIG_HDR(_n))
209
210#if defined(CONFIG_SGI_IO)
211#define PTR_CH_CONS_INFO(_k) ((console_t *)\
212 ((__psunsigned_t)_k + (_k->ch_cons_off)))
213#else
214#define PTR_CH_CONS_INFO(_k) ((console_t *)\
215 ((unsigned long)_k + (_k->ch_cons_off)))
216#endif
217
218#define KL_CONFIG_CH_CONS_INFO(_n) PTR_CH_CONS_INFO(KL_CONFIG_HDR(_n))
219
220
221
222#define KL_CONFIG_INFO_START(_nasid) \
223 (klconf_off_t)(KLCONFIG_OFFSET(_nasid) + sizeof(kl_config_hdr_t))
224
225#define KL_CONFIG_BOARD_NASID(_brd) ((_brd)->brd_nasid)
226#define KL_CONFIG_BOARD_SET_NEXT(_brd, _off) ((_brd)->brd_next = (_off))
227
228#define KL_CONFIG_DUPLICATE_BOARD(_brd) ((_brd)->brd_flags & DUPLICATE_BOARD)
229
230#define XBOW_PORT_TYPE_HUB(_xbowp, _link) \
231 ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_flag & XBOW_PORT_HUB)
232#define XBOW_PORT_TYPE_IO(_xbowp, _link) \
233 ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_flag & XBOW_PORT_IO)
234
235#define XBOW_PORT_IS_ENABLED(_xbowp, _link) \
236 ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_flag & XBOW_PORT_ENABLE)
237#define XBOW_PORT_NASID(_xbowp, _link) \
238 ((_xbowp)->xbow_port_info[(_link) - BASE_XBOW_PORT].port_nasid)
239
240#define XBOW_PORT_IO 0x1
241#define XBOW_PORT_HUB 0x2
242#define XBOW_PORT_ENABLE 0x4
243
244#define SN0_PORT_FENCE_SHFT 0
245#define SN0_PORT_FENCE_MASK (1 << SN0_PORT_FENCE_SHFT)
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342#define KL_CPU_R4000 0x1
343#define KL_CPU_TFP 0x2
344#define KL_CPU_R10000 0x3
345#define KL_CPU_NONE (-1)
346
347
348
349
350
351#define KLCLASS_MASK 0xf0
352#define KLCLASS_NONE 0x00
353#define KLCLASS_NODE 0x10
354#define KLCLASS_CPU KLCLASS_NODE
355#define KLCLASS_IO 0x20
356
357#define KLCLASS_ROUTER 0x30
358#define KLCLASS_MIDPLANE 0x40
359
360#define KLCLASS_GFX 0x50
361
362#define KLCLASS_PSEUDO_GFX 0x60
363
364
365
366#define KLCLASS_MAX 7
367#define KLTYPE_MAX 10
368
369#define KLCLASS_UNKNOWN 0xf0
370
371#define KLCLASS(_x) ((_x) & KLCLASS_MASK)
372
373
374
375
376
377#define KLTYPE_MASK 0x0f
378#define KLTYPE_NONE 0x00
379#define KLTYPE_EMPTY 0x00
380
381#define KLTYPE_WEIRDCPU (KLCLASS_CPU | 0x0)
382#define KLTYPE_IP27 (KLCLASS_CPU | 0x1)
383
384#define KLTYPE_WEIRDIO (KLCLASS_IO | 0x0)
385#define KLTYPE_BASEIO (KLCLASS_IO | 0x1)
386#define KLTYPE_IO6 KLTYPE_BASEIO
387#define KLTYPE_4CHSCSI (KLCLASS_IO | 0x2)
388#define KLTYPE_MSCSI KLTYPE_4CHSCSI
389#define KLTYPE_ETHERNET (KLCLASS_IO | 0x3)
390#define KLTYPE_MENET KLTYPE_ETHERNET
391#define KLTYPE_FDDI (KLCLASS_IO | 0x4)
392#define KLTYPE_UNUSED (KLCLASS_IO | 0x5)
393#define KLTYPE_HAROLD (KLCLASS_IO | 0x6)
394#define KLTYPE_PCI KLTYPE_HAROLD
395#define KLTYPE_VME (KLCLASS_IO | 0x7)
396#define KLTYPE_MIO (KLCLASS_IO | 0x8)
397#define KLTYPE_FC (KLCLASS_IO | 0x9)
398#define KLTYPE_LINC (KLCLASS_IO | 0xA)
399#define KLTYPE_TPU (KLCLASS_IO | 0xB)
400#define KLTYPE_GSN_A (KLCLASS_IO | 0xC)
401#define KLTYPE_GSN_B (KLCLASS_IO | 0xD)
402
403#define KLTYPE_GFX (KLCLASS_GFX | 0x0)
404#define KLTYPE_GFX_KONA (KLCLASS_GFX | 0x1)
405#define KLTYPE_GFX_MGRA (KLCLASS_GFX | 0x3)
406
407#define KLTYPE_WEIRDROUTER (KLCLASS_ROUTER | 0x0)
408#define KLTYPE_ROUTER (KLCLASS_ROUTER | 0x1)
409#define KLTYPE_ROUTER2 KLTYPE_ROUTER
410#define KLTYPE_NULL_ROUTER (KLCLASS_ROUTER | 0x2)
411#define KLTYPE_META_ROUTER (KLCLASS_ROUTER | 0x3)
412
413#define KLTYPE_WEIRDMIDPLANE (KLCLASS_MIDPLANE | 0x0)
414#define KLTYPE_MIDPLANE8 (KLCLASS_MIDPLANE | 0x1)
415#define KLTYPE_MIDPLANE KLTYPE_MIDPLANE8
416#define KLTYPE_PBRICK_XBOW (KLCLASS_MIDPLANE | 0x2)
417
418#define KLTYPE_IOBRICK (KLCLASS_IOBRICK | 0x0)
419#define KLTYPE_IBRICK (KLCLASS_IOBRICK | 0x1)
420#define KLTYPE_PBRICK (KLCLASS_IOBRICK | 0x2)
421#define KLTYPE_XBRICK (KLCLASS_IOBRICK | 0x3)
422
423#define KLTYPE_PBRICK_BRIDGE KLTYPE_PBRICK
424
425
426
427
428
429
430
431#define KLTYPE_XTHD (KLCLASS_PSEUDO_GFX | 0x9)
432
433#define KLTYPE_UNKNOWN (KLCLASS_UNKNOWN | 0xf)
434
435#define KLTYPE(_x) ((_x) & KLTYPE_MASK)
436#define IS_MIO_PRESENT(l) ((l->brd_type == KLTYPE_BASEIO) && \
437 (l->brd_flags & SECOND_NIC_PRESENT))
438#define IS_MIO_IOC3(l,n) (IS_MIO_PRESENT(l) && (n > 2))
439
440
441
442
443
444#define MAX_COMPTS_PER_BRD 24
445
446#define LOCAL_BOARD 1
447#define REMOTE_BOARD 2
448
449#define LBOARD_STRUCT_VERSION 2
450
451typedef struct lboard_s {
452 klconf_off_t brd_next;
453 unsigned char struct_type;
454 unsigned char brd_type;
455 unsigned char brd_sversion;
456 unsigned char brd_brevision;
457 unsigned char brd_promver;
458 unsigned char brd_flags;
459 unsigned char brd_slot;
460 unsigned short brd_debugsw;
461 moduleid_t brd_module;
462 partid_t brd_partition;
463 unsigned short brd_diagval;
464 unsigned short brd_diagparm;
465 unsigned char brd_inventory;
466 unsigned char brd_numcompts;
467 nic_t brd_nic;
468 nasid_t brd_nasid;
469 klconf_off_t brd_compts[MAX_COMPTS_PER_BRD];
470 klconf_off_t brd_errinfo;
471 struct lboard_s *brd_parent;
472 vertex_hdl_t brd_graph_link;
473 confidence_t brd_confidence;
474 nasid_t brd_owner;
475 unsigned char brd_nic_flags;
476 char brd_name[32];
477} lboard_t;
478
479
480
481
482
483
484
485#define BOARD_SLOT(_brd) ((_brd)->brd_slot)
486
487#define KLCF_CLASS(_brd) KLCLASS((_brd)->brd_type)
488#define KLCF_TYPE(_brd) KLTYPE((_brd)->brd_type)
489#define KLCF_REMOTE(_brd) (((_brd)->struct_type & LOCAL_BOARD) ? 0 : 1)
490#define KLCF_NUM_COMPS(_brd) ((_brd)->brd_numcompts)
491#define KLCF_MODULE_ID(_brd) ((_brd)->brd_module)
492
493#ifdef FRUTEST
494
495#define KLCF_NEXT(_brd) ((_brd)->brd_next ? (lboard_t *)((_brd)->brd_next): NULL)
496#define KLCF_COMP(_brd, _ndx) (klinfo_t *)((_brd)->brd_compts[(_ndx)])
497#define KLCF_COMP_ERROR(_brd, _comp) (_brd = _brd , (_comp)->errinfo)
498
499#else
500
501#define KLCF_NEXT(_brd) \
502 ((_brd)->brd_next ? \
503 (lboard_t *)(NODE_OFFSET_TO_K1(NASID_GET(_brd), (_brd)->brd_next)):\
504 NULL)
505#define KLCF_COMP(_brd, _ndx) \
506 (klinfo_t *)(NODE_OFFSET_TO_K1(NASID_GET(_brd), \
507 (_brd)->brd_compts[(_ndx)]))
508
509#define KLCF_COMP_ERROR(_brd, _comp) \
510 (NODE_OFFSET_TO_K1(NASID_GET(_brd), (_comp)->errinfo))
511
512#endif
513
514#define KLCF_COMP_TYPE(_comp) ((_comp)->struct_type)
515#define KLCF_BRIDGE_W_ID(_comp) ((_comp)->physid)
516
517
518
519
520
521
522
523
524typedef struct klinfo_s {
525 unsigned char struct_type;
526 unsigned char struct_version;
527 unsigned char flags;
528 unsigned char revision;
529 unsigned short diagval;
530 unsigned short diagparm;
531 unsigned char inventory;
532 nic_t nic;
533 unsigned char physid;
534 unsigned int virtid;
535 unsigned char widid;
536 nasid_t nasid;
537 char pad1;
538 char pad2;
539 COMPONENT *arcs_compt;
540 klconf_off_t errinfo;
541 unsigned short pad3;
542 unsigned short pad4;
543} klinfo_t ;
544
545#define KLCONFIG_INFO_ENABLED(_i) ((_i)->flags & KLINFO_ENABLE)
546
547
548
549
550
551
552
553
554
555#define KLSTRUCT_UNKNOWN 0
556#define KLSTRUCT_CPU 1
557#define KLSTRUCT_HUB 2
558#define KLSTRUCT_MEMBNK 3
559#define KLSTRUCT_XBOW 4
560#define KLSTRUCT_BRI 5
561#define KLSTRUCT_IOC3 6
562#define KLSTRUCT_PCI 7
563#define KLSTRUCT_VME 8
564#define KLSTRUCT_ROU 9
565#define KLSTRUCT_GFX 10
566#define KLSTRUCT_SCSI 11
567#define KLSTRUCT_FDDI 12
568#define KLSTRUCT_MIO 13
569#define KLSTRUCT_DISK 14
570#define KLSTRUCT_TAPE 15
571#define KLSTRUCT_CDROM 16
572#define KLSTRUCT_HUB_UART 17
573#define KLSTRUCT_IOC3ENET 18
574#define KLSTRUCT_IOC3UART 19
575#define KLSTRUCT_UNUSED 20
576#define KLSTRUCT_IOC3PCKM 21
577#define KLSTRUCT_RAD 22
578#define KLSTRUCT_HUB_TTY 23
579#define KLSTRUCT_IOC3_TTY 24
580
581
582
583
584#define KLSTRUCT_FIBERCHANNEL 25
585#define KLSTRUCT_MOD_SERIAL_NUM 26
586#define KLSTRUCT_IOC3MS 27
587#define KLSTRUCT_TPU 28
588#define KLSTRUCT_GSN_A 29
589#define KLSTRUCT_GSN_B 30
590#define KLSTRUCT_XTHD 31
591
592
593
594
595
596#define IP27_CPU0_INDEX 0
597#define IP27_CPU1_INDEX 1
598#define IP27_HUB_INDEX 2
599#define IP27_MEM_INDEX 3
600
601#define BASEIO_BRIDGE_INDEX 0
602#define BASEIO_IOC3_INDEX 1
603#define BASEIO_SCSI1_INDEX 2
604#define BASEIO_SCSI2_INDEX 3
605
606#define MIDPLANE_XBOW_INDEX 0
607#define ROUTER_COMPONENT_INDEX 0
608
609#define CH4SCSI_BRIDGE_INDEX 0
610
611
612
613typedef u64 *pci_t;
614typedef u64 *vmeb_t;
615typedef u64 *vmed_t;
616typedef u64 *fddi_t;
617typedef u64 *scsi_t;
618typedef u64 *mio_t;
619typedef u64 *graphics_t;
620typedef u64 *router_t;
621
622
623
624
625
626
627
628typedef struct klport_s {
629 nasid_t port_nasid;
630 unsigned char port_flag;
631 klconf_off_t port_offset;
632} klport_t;
633
634#if 0
635
636
637
638
639typedef struct klxbow_port_s {
640 nasid_t port_nasid;
641 unsigned char port_flag;
642 klconf_off_t board_offset;
643} klxbow_port_t;
644#endif
645
646typedef struct klcpu_s {
647 klinfo_t cpu_info;
648 unsigned short cpu_prid;
649 unsigned short cpu_fpirr;
650 unsigned short cpu_speed;
651 unsigned short cpu_scachesz;
652 unsigned short cpu_scachespeed;
653} klcpu_t ;
654
655#define CPU_STRUCT_VERSION 2
656
657typedef struct klhub_s {
658 klinfo_t hub_info;
659 uint hub_flags;
660 klport_t hub_port;
661 nic_t hub_box_nic;
662 klconf_off_t hub_mfg_nic;
663 u64 hub_speed;
664} klhub_t ;
665
666typedef struct klhub_uart_s {
667 klinfo_t hubuart_info;
668 uint hubuart_flags;
669 nic_t hubuart_box_nic;
670} klhub_uart_t ;
671
672#define MEMORY_STRUCT_VERSION 2
673
674typedef struct klmembnk_s {
675 klinfo_t membnk_info;
676 short membnk_memsz;
677 short membnk_dimm_select;
678 short membnk_bnksz[MD_MEM_BANKS];
679 short membnk_attr;
680} klmembnk_t ;
681
682#define KLCONFIG_MEMBNK_SIZE(_info, _bank) \
683 ((_info)->membnk_bnksz[(_bank)])
684
685
686#define MEMBNK_PREMIUM 1
687#define KLCONFIG_MEMBNK_PREMIUM(_info, _bank) \
688 ((_info)->membnk_attr & (MEMBNK_PREMIUM << (_bank)))
689
690#define MAX_SERIAL_NUM_SIZE 10
691
692typedef struct klmod_serial_num_s {
693 klinfo_t snum_info;
694 union {
695 char snum_str[MAX_SERIAL_NUM_SIZE];
696 unsigned long long snum_int;
697 } snum;
698} klmod_serial_num_t;
699
700
701
702
703
704
705#define GET_SNUM_COMP(_l) ((klmod_serial_num_t *)\
706 KLCF_COMP(_l, _l->brd_numcompts))
707
708#define MAX_XBOW_LINKS 16
709
710typedef struct klxbow_s {
711 klinfo_t xbow_info ;
712 klport_t xbow_port_info[MAX_XBOW_LINKS] ;
713 int xbow_master_hub_link;
714
715} klxbow_t ;
716
717#define MAX_PCI_SLOTS 8
718
719typedef struct klpci_device_s {
720 s32 pci_device_id;
721 s32 pci_device_pad;
722} klpci_device_t;
723
724#define BRIDGE_STRUCT_VERSION 2
725
726typedef struct klbri_s {
727 klinfo_t bri_info ;
728 unsigned char bri_eprominfo ;
729 unsigned char bri_bustype ;
730 pci_t pci_specific ;
731 klpci_device_t bri_devices[MAX_PCI_DEVS] ;
732 klconf_off_t bri_mfg_nic ;
733} klbri_t ;
734
735#define MAX_IOC3_TTY 2
736
737typedef struct klioc3_s {
738 klinfo_t ioc3_info ;
739 unsigned char ioc3_ssram ;
740 unsigned char ioc3_nvram ;
741 klinfo_t ioc3_superio ;
742 klconf_off_t ioc3_tty_off ;
743 klinfo_t ioc3_enet ;
744 klconf_off_t ioc3_enet_off ;
745 klconf_off_t ioc3_kbd_off ;
746} klioc3_t ;
747
748#define MAX_VME_SLOTS 8
749
750typedef struct klvmeb_s {
751 klinfo_t vmeb_info ;
752 vmeb_t vmeb_specific ;
753 klconf_off_t vmeb_brdinfo[MAX_VME_SLOTS] ;
754} klvmeb_t ;
755
756typedef struct klvmed_s {
757 klinfo_t vmed_info ;
758 vmed_t vmed_specific ;
759 klconf_off_t vmed_brdinfo[MAX_VME_SLOTS] ;
760} klvmed_t ;
761
762#define ROUTER_VECTOR_VERS 2
763
764
765typedef struct klrou_s {
766 klinfo_t rou_info ;
767 uint rou_flags ;
768 nic_t rou_box_nic ;
769 klport_t rou_port[MAX_ROUTER_PORTS + 1] ;
770 klconf_off_t rou_mfg_nic ;
771 u64 rou_vector;
772} klrou_t ;
773
774
775
776
777
778
779
780
781
782
783
784#define KLGFX_COOKIE 0x0c0de000
785
786typedef struct klgfx_s {
787 klinfo_t gfx_info;
788 klconf_off_t old_gndevs;
789 klconf_off_t old_gdoff0;
790 uint cookie;
791 uint moduleslot;
792 struct klgfx_s *gfx_next_pipe;
793 graphics_t gfx_specific;
794 klconf_off_t pad0;
795 klconf_off_t gfx_mfg_nic;
796} klgfx_t;
797
798typedef struct klxthd_s {
799 klinfo_t xthd_info ;
800 klconf_off_t xthd_mfg_nic ;
801} klxthd_t ;
802
803typedef struct kltpu_s {
804 klinfo_t tpu_info ;
805 klconf_off_t tpu_mfg_nic ;
806} kltpu_t ;
807
808typedef struct klgsn_s {
809 klinfo_t gsn_info ;
810 klconf_off_t gsn_mfg_nic ;
811} klgsn_t ;
812
813#define MAX_SCSI_DEVS 16
814
815
816
817
818
819
820
821
822typedef struct klscsi_s {
823 klinfo_t scsi_info ;
824 scsi_t scsi_specific ;
825 unsigned char scsi_numdevs ;
826 klconf_off_t scsi_devinfo[MAX_SCSI_DEVS] ;
827} klscsi_t ;
828
829typedef struct klscdev_s {
830 klinfo_t scdev_info ;
831 struct scsidisk_data *scdev_cfg ;
832} klscdev_t ;
833
834typedef struct klttydev_s {
835 klinfo_t ttydev_info ;
836 struct terminal_data *ttydev_cfg ;
837} klttydev_t ;
838
839typedef struct klenetdev_s {
840 klinfo_t enetdev_info ;
841 struct net_data *enetdev_cfg ;
842} klenetdev_t ;
843
844typedef struct klkbddev_s {
845 klinfo_t kbddev_info ;
846 struct keyboard_data *kbddev_cfg ;
847} klkbddev_t ;
848
849typedef struct klmsdev_s {
850 klinfo_t msdev_info ;
851 void *msdev_cfg ;
852} klmsdev_t ;
853
854#define MAX_FDDI_DEVS 10
855
856typedef struct klfddi_s {
857 klinfo_t fddi_info ;
858 fddi_t fddi_specific ;
859 klconf_off_t fddi_devinfo[MAX_FDDI_DEVS] ;
860} klfddi_t ;
861
862typedef struct klmio_s {
863 klinfo_t mio_info ;
864 mio_t mio_specific ;
865} klmio_t ;
866
867
868typedef union klcomp_s {
869 klcpu_t kc_cpu;
870 klhub_t kc_hub;
871 klmembnk_t kc_mem;
872 klxbow_t kc_xbow;
873 klbri_t kc_bri;
874 klioc3_t kc_ioc3;
875 klvmeb_t kc_vmeb;
876 klvmed_t kc_vmed;
877 klrou_t kc_rou;
878 klgfx_t kc_gfx;
879 klscsi_t kc_scsi;
880 klscdev_t kc_scsi_dev;
881 klfddi_t kc_fddi;
882 klmio_t kc_mio;
883 klmod_serial_num_t kc_snum ;
884} klcomp_t;
885
886typedef union kldev_s {
887 klscdev_t kc_scsi_dev ;
888 klttydev_t kc_tty_dev ;
889 klenetdev_t kc_enet_dev ;
890 klkbddev_t kc_kbd_dev ;
891} kldev_t ;
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916typedef union {
917 lboard_t *lbinfo ;
918} biptr_t ;
919
920
921#define BRI_PER_XBOW 6
922#define PCI_PER_BRI 8
923#define DEV_PER_PCI 16
924
925
926
927
928#define VDS_NOGFX 0x8000
929#define VDS_NOMP 0x100
930#define VDS_MANUMODE 0x80
931#define VDS_NOARB 0x40
932#define VDS_PODMODE 0x20
933#define VDS_NO_DIAGS 0x10
934#define VDS_DEFAULTS 0x08
935#define VDS_NOMEMCLEAR 0x04
936#define VDS_2ND_IO4 0x02
937#define VDS_DEBUG_PROM 0x01
938
939
940
941extern lboard_t *find_lboard(lboard_t *start, unsigned char type);
942extern klinfo_t *find_component(lboard_t *brd, klinfo_t *kli, unsigned char type);
943extern klinfo_t *find_first_component(lboard_t *brd, unsigned char type);
944extern klcpu_t *nasid_slice_to_cpuinfo(nasid_t, int);
945extern lboard_t *find_lboard_class(lboard_t *start, unsigned char brd_class);
946
947
948#if defined(CONFIG_SGI_IO)
949extern xwidgetnum_t nodevertex_widgetnum_get(vertex_hdl_t node_vtx);
950extern vertex_hdl_t nodevertex_xbow_peer_get(vertex_hdl_t node_vtx);
951extern lboard_t *find_gfxpipe(int pipenum);
952extern void setup_gfxpipe_link(vertex_hdl_t vhdl,int pipenum);
953extern lboard_t *find_lboard_module_class(lboard_t *start, moduleid_t mod,
954 unsigned char brd_class);
955extern lboard_t *find_nic_lboard(lboard_t *, nic_t);
956extern lboard_t *find_nic_type_lboard(nasid_t, unsigned char, nic_t);
957extern lboard_t *find_lboard_modslot(lboard_t *start, moduleid_t mod, slotid_t slot);
958extern lboard_t *find_lboard_module(lboard_t *start, moduleid_t mod);
959extern lboard_t *get_board_name(nasid_t nasid, moduleid_t mod, slotid_t slot, char *name);
960extern int config_find_nic_router(nasid_t, nic_t, lboard_t **, klrou_t**);
961extern int config_find_nic_hub(nasid_t, nic_t, lboard_t **, klhub_t**);
962extern int config_find_xbow(nasid_t, lboard_t **, klxbow_t**);
963extern klcpu_t *get_cpuinfo(cpuid_t cpu);
964extern int update_klcfg_cpuinfo(nasid_t, int);
965extern void board_to_path(lboard_t *brd, char *path);
966extern moduleid_t get_module_id(nasid_t nasid);
967extern void nic_name_convert(char *old_name, char *new_name);
968extern int module_brds(nasid_t nasid, lboard_t **module_brds, int n);
969extern lboard_t *brd_from_key(ulong_t key);
970extern void device_component_canonical_name_get(lboard_t *,klinfo_t *,
971 char *);
972extern int board_serial_number_get(lboard_t *,char *);
973extern int is_master_baseio(nasid_t,moduleid_t,slotid_t);
974extern nasid_t get_actual_nasid(lboard_t *brd) ;
975extern net_vec_t klcfg_discover_route(lboard_t *, lboard_t *, int);
976#else
977extern klcpu_t *sn_get_cpuinfo(cpuid_t cpu);
978#endif
979
980#endif
981