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