]>
git.ipfire.org Git - ipfire-2.x.git/blob - src/hwinfo/src/hd/sbus.c
15 typedef unsigned int u_int
;
18 #include <asm/openpromio.h>
20 #define MAX_VAL (4096-128-4)
25 prom_nextnode (int node
)
27 char buf
[OPROMMAXPARAM
];
28 struct openpromio
*op
= (struct openpromio
*)buf
;
30 op
->oprom_size
= sizeof (int);
34 *(int *)op
->oprom_array
= node
;
35 if (ioctl (prom_fd
, OPROMNEXT
, op
) < 0)
38 return *(int *)op
->oprom_array
;
42 prom_getchild (int node
)
44 char buf
[OPROMMAXPARAM
];
45 struct openpromio
*op
= (struct openpromio
*)buf
;
47 op
->oprom_size
= sizeof (int);
49 if (!node
|| node
== -1)
52 *(int *)op
->oprom_array
= node
;
53 if (ioctl (prom_fd
, OPROMCHILD
, op
) < 0)
56 return *(int *)op
->oprom_array
;
60 *prom_getproperty (char *prop
, int *lenp
, char *buf
)
62 struct openpromio
*op
= (struct openpromio
*)buf
;
64 op
->oprom_size
= MAX_VAL
;
66 strcpy (op
->oprom_array
, prop
);
68 if (ioctl (prom_fd
, OPROMGETPROP
, op
) < 0)
72 *lenp
= op
->oprom_size
;
74 if (strncmp ("SUNW,", op
->oprom_array
, 5) == 0)
75 return op
->oprom_array
+ 5;
77 return op
->oprom_array
;
81 prom_getbool (char *prop
)
83 char buf
[OPROMMAXPARAM
];
84 struct openpromio
*op
= (struct openpromio
*)buf
;
88 *(int *)op
->oprom_array
= 0;
90 op
->oprom_size
= 128; /* MAX_PROP */
91 if (ioctl (prom_fd
, OPROMNXTPROP
, op
) < 0)
95 if (!strcmp (op
->oprom_array
, prop
))
101 prom_parse (int node
, int sbus
, int ebus
, hd_data_t
*hd_data
)
104 char buf1
[OPROMMAXPARAM
], buf2
[OPROMMAXPARAM
];
106 int len
, nsbus
= sbus
, nebus
= ebus
;
107 char *prop1
= prom_getproperty ("device_type", &len
, buf1
);
109 if (strcmp (prop1
, "network") == 0)
111 char *prop2
= prom_getproperty ("name", &len
, buf2
);
112 if (prop2
&& len
>= 0)
114 if (strcmp (prop2
, "hme") == 0)
116 ADD2LOG ("NETWORK: type=Sun Happy Meal Ethernet, module=sunhme\n");
117 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
118 hd
->base_class
.id
= bc_network
;
119 hd
->sub_class
.id
= 0x00;
120 hd
->bus
.id
= bus_sbus
;
122 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
123 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x3001);
125 else if (strcmp (prop2
, "le") == 0)
127 ADD2LOG ("NETWORK: type=Sun Lance Ethernet, module=ignore\n");
128 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
129 hd
->base_class
.id
= bc_network
;
130 hd
->sub_class
.id
= 0x00;
131 hd
->bus
.id
= bus_sbus
;
133 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
134 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x3002);
136 else if (strcmp (prop2
, "qe") == 0)
138 prop2
= prom_getproperty("channel#", &len
, buf2
);
139 if (prop2
&& len
== 4 && *(int *)prop2
== 0)
141 ADD2LOG ("NETWORK: type=Sun Quad Ethernet, module=sunqe\n");
142 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
143 hd
->base_class
.id
= bc_network
;
144 hd
->sub_class
.id
= 0x00;
145 hd
->bus
.id
= bus_sbus
;
147 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
148 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x3003);
151 else if (strcmp (prop2
, "qfe") == 0)
153 ADD2LOG ("NETWORK: type=Sun Quad Ethernet (qfe), module=sunhme\n");
154 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
155 hd
->base_class
.id
= bc_network
;
156 hd
->sub_class
.id
= 0x00;
157 hd
->bus
.id
= bus_sbus
;
159 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
160 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x3001);
162 else if (strcmp (prop2
, "mlanai") == 0 || strcmp (prop2
, "myri") == 0)
164 ADD2LOG ("NETWORK: type=MyriCOM MyriNET Gigabit Ethernet, module=myri_sbus\n");
165 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
166 hd
->base_class
.id
= bc_network
;
167 hd
->sub_class
.id
= 0x00;
168 hd
->bus
.id
= bus_sbus
;
170 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
171 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x3004);
174 ADD2LOG ("NETWORK: Unknown device \"%s\"\n", prop2
);
177 else if (strcmp (prop1
, "scsi") == 0)
179 char *prop2
= prom_getproperty ("name", &len
, buf2
);
180 if (prop2
&& len
>= 0)
184 if (strcmp (prop2
, "esp") == 0)
186 ADD2LOG ("SCSI: type=Sun Enhanced SCSI Processor (ESP), module=ignore\n");
187 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
188 hd
->base_class
.id
= bc_storage
;
189 hd
->sub_class
.id
= sc_sto_scsi
;
190 hd
->bus
.id
= bus_sbus
;
192 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
193 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1001);
195 else if (strcmp (prop2
, "soc") == 0)
197 ADD2LOG ("SCSI: type=Sun SPARCStorage Array, module=fc4:soc:pluto\n");
198 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
199 hd
->base_class
.id
= bc_storage
;
200 hd
->sub_class
.id
= sc_sto_scsi
;
201 hd
->bus
.id
= bus_sbus
;
203 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
204 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1101);
206 else if (strcmp (prop2
, "socal") == 0)
208 ADD2LOG ("SCSI: type=Sun Enterprise Network Array, module=fc4:socal:fcal\n");
209 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
210 hd
->base_class
.id
= bc_storage
;
211 hd
->sub_class
.id
= sc_sto_scsi
;
212 hd
->bus
.id
= bus_sbus
;
214 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
215 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1102);
217 else if (strcmp (prop2
, "fas") == 0)
219 ADD2LOG ("SCSI: type=Sun Swift (ESP), module=ignore\n");
220 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
221 hd
->base_class
.id
= bc_storage
;
222 hd
->sub_class
.id
= sc_sto_scsi
;
223 hd
->bus
.id
= bus_sbus
;
225 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
226 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1002);
228 else if (strcmp (prop2
, "ptisp") == 0)
230 ADD2LOG ("SCSI: type=Performance Technologies ISP, module=qlogicpti\n");
231 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
232 hd
->base_class
.id
= bc_storage
;
233 hd
->sub_class
.id
= sc_sto_scsi
;
234 hd
->bus
.id
= bus_sbus
;
236 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
237 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1003);
239 else if (strcmp (prop2
, "isp") == 0)
241 ADD2LOG ("SCSI: type=QLogic ISP, module=qlogicpti\n");
242 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
243 hd
->base_class
.id
= bc_storage
;
244 hd
->sub_class
.id
= sc_sto_scsi
;
245 hd
->bus
.id
= bus_sbus
;
247 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
248 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1004);
251 ADD2LOG ("SCSI: Unknown SBUS device \"%s\"\n", prop2
);
254 ADD2LOG ("SCSI: Unknown device \"%s\"\n", prop2
);
257 else if (strcmp (prop1
, "display") == 0)
259 char *prop2
= prom_getproperty ("name", &len
, buf2
);
260 if (prop2
&& len
>= 0)
261 if (sbus
|| strcmp (prop2
, "ffb") == 0 ||
262 strcmp (prop2
, "afb") == 0 || strcmp (prop2
, "cgfourteen") == 0)
264 if (strcmp (prop2
, "bwtwo") == 0)
266 ADD2LOG ("DISPLAY: Sun|Monochrome (bwtwo), depth=1\n");
267 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
268 hd
->base_class
.id
= bc_display
;
269 hd
->sub_class
.id
= sc_dis_vga
;
270 hd
->bus
.id
= bus_sbus
;
272 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
273 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0001);
275 else if (strcmp (prop2
, "cgthree") == 0)
277 ADD2LOG ("DISPLAY: Sun|Color3 (cgthree), depth=8\n");
278 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
279 hd
->base_class
.id
= bc_display
;
280 hd
->sub_class
.id
= sc_dis_vga
;
281 hd
->bus
.id
= bus_sbus
;
283 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
284 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0002);
286 else if (strcmp (prop2
, "cgeight") == 0)
288 ADD2LOG ("DISPLAY: Sun|CG8/RasterOps, depth=8\n");
289 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
290 hd
->base_class
.id
= bc_display
;
291 hd
->sub_class
.id
= sc_dis_vga
;
292 hd
->bus
.id
= bus_sbus
;
294 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
295 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0003);
297 else if (strcmp (prop2
, "cgtwelve") == 0)
299 ADD2LOG ("DISPLAY: Sun|GS (cgtwelve), depth=24\n");
300 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
301 hd
->base_class
.id
= bc_display
;
302 hd
->sub_class
.id
= sc_dis_vga
;
303 hd
->bus
.id
= bus_sbus
;
305 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
306 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0004);
308 else if (strcmp (prop2
, "gt") == 0)
310 ADD2LOG ("DISPLAY: Sun|Graphics Tower (gt), depth=24\n");
311 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
312 hd
->base_class
.id
= bc_display
;
313 hd
->sub_class
.id
= sc_dis_vga
;
314 hd
->bus
.id
= bus_sbus
;
316 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
317 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0005);
319 else if (strcmp (prop2
, "mgx") == 0)
321 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
322 hd
->base_class
.id
= bc_display
;
323 hd
->sub_class
.id
= sc_dis_vga
;
324 hd
->bus
.id
= bus_sbus
;
325 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
326 prop2
= prom_getproperty ("fb_size", &len
, buf2
);
327 if (prop2
&& len
== 4 && *(int *)prop2
== 0x400000)
329 ADD2LOG ("DISPLAY: Quantum 3D MGXplus with 4M VRAM (mgx), depth=24\n");
330 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0006);
334 ADD2LOG ("DISPLAY: Quantum 3D MGXplus (mgx), depth=24\n");
335 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0007);
338 else if (strcmp (prop2
, "cgsix") == 0)
343 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
344 hd
->base_class
.id
= bc_display
;
345 hd
->sub_class
.id
= sc_dis_vga
;
346 hd
->bus
.id
= bus_sbus
;
347 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
349 prop2
= prom_getproperty("chiprev", &len
, buf2
);
350 if (prop2
&& len
== 4)
351 chiprev
= *(int *)prop2
;
352 prop2
= prom_getproperty("vmsize", &len
, buf2
);
353 if (prop2
&& len
== 4)
354 vmsize
= *(int *)prop2
;
358 ADD2LOG ("DISPLAY: Sun|Double width GX (cgsix), depth=8\n");
359 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0008);
362 ADD2LOG ("DISPLAY: Sun|Single width GX (cgsix), depth=8\n");
363 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0009);
369 ADD2LOG ("DISPLAY: Sun|Turbo GX with 1M VSIMM (cgsix), depth=8\n");
370 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x000a);
373 ADD2LOG ("DISPLAY: Sun|Turbo GX Plus (cgsix), depth=8\n");
374 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x000b);
377 ADD2LOG ("DISPLAY: Sun|Turbo GX (cgsix), depth=8\n");
378 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x000c);
383 ADD2LOG ("DISPLAY: Sun|Unknown GX (cgsix), depth=8\n");
384 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x000d);
388 else if (strcmp (prop2
, "cgfourteen") == 0)
392 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
393 hd
->base_class
.id
= bc_display
;
394 hd
->sub_class
.id
= sc_dis_vga
;
395 hd
->bus
.id
= bus_sbus
;
396 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
398 prop2
= prom_getproperty ("reg", &len
, buf2
);
399 if (prop2
&& !(len
% 12) && len
> 0)
400 size
= *(int *)(prop2
+ len
- 4);
404 ADD2LOG ("DISPLAY: Sun|SX with 4M VSIMM (cgfourteen), depth=24\n");
405 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x000e);
408 ADD2LOG ("DISPLAY: Sun|SX with 8M VSIMM (cgfourteen), depth=24\n");
409 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x000f);
412 ADD2LOG ("DISPLAY: Sun|SX (cgfourteen), depth=24\n");
413 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0010);
417 else if (strcmp (prop2
, "leo") == 0)
419 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
420 hd
->base_class
.id
= bc_display
;
421 hd
->sub_class
.id
= sc_dis_vga
;
422 hd
->bus
.id
= bus_sbus
;
423 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
425 prop2
= prom_getproperty("model", &len
, buf2
);
426 if (prop2
&& len
> 0 && !strstr(prop2
, "501-2503"))
428 ADD2LOG ("DISPLAY: Sun|Turbo ZX (leo), depth=24\n");
429 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0012);
433 ADD2LOG ("DISPLAY: Sun|ZX or Turbo ZX (leo), depth=24\n");
434 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0011);
437 else if (strcmp (prop2
, "tcx") == 0)
439 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
440 hd
->base_class
.id
= bc_display
;
441 hd
->sub_class
.id
= sc_dis_vga
;
442 hd
->bus
.id
= bus_sbus
;
443 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
445 if (prom_getbool ("tcx-8-bit"))
447 ADD2LOG ("DISPLAY: Sun|TCX (8bit), depth=8\n");
448 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0013);
452 ADD2LOG ("DISPLAY: Sun|TCX (S24), depth=24\n");
453 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0014);
456 else if (strcmp (prop2
, "afb") == 0)
460 prop2
= prom_getproperty("board_type", &len
, buf2
);
461 if (prop2
&& len
== 4)
462 btype
= *(int *)prop2
;
464 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
465 hd
->base_class
.id
= bc_display
;
466 hd
->sub_class
.id
= sc_dis_vga
;
467 hd
->bus
.id
= bus_sbus
;
468 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
472 ADD2LOG ("DISPLAY: Sun|Elite3D-M6 Horizontal (afb), depth=24\n");
473 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0015);
477 ADD2LOG ("DISPLAY: Sun|Elite3D (afb), depth=24\n");
478 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0016);
481 else if (strcmp (prop2
, "ffb") == 0)
485 prop2
= prom_getproperty("board_type", &len
, buf2
);
486 if (prop2
&& len
== 4)
487 btype
= *(int *)prop2
;
489 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
490 hd
->base_class
.id
= bc_display
;
491 hd
->sub_class
.id
= sc_dis_vga
;
492 hd
->bus
.id
= bus_sbus
;
493 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
498 ADD2LOG ("DISPLAY: Sun|FFB 67MHz Creator (ffb), depth=24\n");
499 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0017);
502 ADD2LOG ("DISPLAY: Sun|FFB 67MHz Creator 3D (ffb), depth=24\n");
503 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0018);
506 ADD2LOG ("DISPLAY: Sun|FFB 75MHz Creator 3D (ffb), depth=24\n");
507 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0019);
511 ADD2LOG ("DISPLAY: Sun|FFB2 Vertical Creator (ffb), depth=24\n");
512 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x001a);
516 ADD2LOG ("DISPLAY: Sun|FFB2 Vertical Creator 3D (ffb), depth=24\n");
517 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x001b);
520 ADD2LOG ("DISPLAY: Sun|FFB2+ Vertical Creator (ffb), depth=24\n");
521 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x001c);
524 ADD2LOG ("DISPLAY: Sun|FFB2+ Vertical Creator 3D (ffb), depth=24\n");
525 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x001d);
529 ADD2LOG ("DISPLAY: Sun|FFB2 Horizontal Creator (ffb), depth=24\n");
530 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x001e);
534 ADD2LOG ("DISPLAY: Sun|FFB2 Horizontal Creator 3D (ffb), depth=24\n");
535 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x001f);
538 ADD2LOG ("DISPLAY: Sun|FFB (ffb), type=%xi, depth=24\n",
540 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x0020);
545 ADD2LOG ("DISPLAY: Unknown SBUS device \"%s\"\n", prop2
);
548 ADD2LOG ("DISPLAY: Unknown device \"%s\"\n", prop2
);
550 else if (strcmp (prop1
, "cpu") == 0)
552 char *prop2
= prom_getproperty ("name", &len
, buf2
);
554 if (prop2
&& len
>= 0)
555 ADD2LOG ("CPU: %s\n", prop2
);
559 char *prop2
= prom_getproperty ("name", &len
, buf2
);
561 if (prop2
&& len
>= 0)
563 if (strcmp (prop2
, "audio") == 0)
565 ADD2LOG ("AUDIO: type=AMD7930, module=amd7930\n");
566 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
567 hd
->base_class
.id
= bc_multimedia
;
568 hd
->sub_class
.id
= sc_multi_audio
;
569 hd
->bus
.id
= bus_sbus
;
570 hd
->unix_dev_name
= new_str ("/dev/audio");
572 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
573 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x2001);
575 else if (strcmp (prop2
, "CS4231") == 0)
577 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
578 hd
->base_class
.id
= bc_multimedia
;
579 hd
->sub_class
.id
= sc_multi_audio
;
580 hd
->bus
.id
= bus_sbus
;
581 hd
->unix_dev_name
= new_str ("/dev/audio");
585 ADD2LOG ("AUDIO: type=CS4231 EB2 DMA (PCI), module=cs4231\n");
586 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x2002);
590 ADD2LOG ("AUDIO: type=CS4231 APC DMA (SBUS), module=cs4231\n");
591 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x2003);
593 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
595 else if (strcmp (prop2
, "DBRIe") == 0)
597 ADD2LOG ("AUDIO: type=SS10/SS20 DBRI, module=dbri\n");
598 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
599 hd
->base_class
.id
= bc_multimedia
;
600 hd
->sub_class
.id
= sc_multi_audio
;
601 hd
->bus
.id
= bus_sbus
;
602 hd
->unix_dev_name
= new_str ("/dev/audio");
604 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
605 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x2004);
607 else if (strcmp (prop2
, "bpp") == 0)
609 ADD2LOG ("PARPORT: type=bpp, module=unknown\n");
611 else if (strcmp (prop2
, "soc") == 0)
613 ADD2LOG ("SCSI: type=Sun SPARCStorage Array, module=fc4:soc:pluto\n");
614 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
615 hd
->base_class
.id
= bc_storage
;
616 hd
->sub_class
.id
= sc_sto_scsi
;
617 hd
->bus
.id
= bus_sbus
;
619 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
620 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1101);
622 else if (strcmp (prop2
, "socal") == 0)
624 ADD2LOG ("SCSI: type=Sun Enterprise Network Array, module=fc4:socal:fcal\n");
625 hd
= add_hd_entry (hd_data
, __LINE__
, 0);
626 hd
->base_class
.id
= bc_storage
;
627 hd
->sub_class
.id
= sc_sto_scsi
;
628 hd
->bus
.id
= bus_sbus
;
630 hd
->vendor
.id
= MAKE_ID(TAG_SPECIAL
, 0x4001);
631 hd
->device
.id
= MAKE_ID(TAG_SPECIAL
, 0x1102);
633 else if (strcmp(prop2
, "sbus") == 0 || strcmp(prop2
, "sbi") == 0)
635 else if (!strcmp(prop2
, "ebus"))
638 ADD2LOG ("%s: unknown device \"%s\"\n", prop1
, prop2
);
643 nextnode
= prom_getchild (node
);
645 prom_parse (nextnode
, nsbus
, nebus
, hd_data
);
646 nextnode
= prom_nextnode (node
);
648 prom_parse (nextnode
, sbus
, ebus
, hd_data
);
654 hd_scan_sbus (hd_data_t
*hd_data
)
658 if(!hd_probe_feature(hd_data
, pr_sbus
))
661 hd_data
->module
= mod_sbus
;
664 remove_hd_entries(hd_data
);
666 PROGRESS(1, 0, "sun sbus");
668 if((prom_fd
= open(DEV_OPENPROM
, O_RDWR
| O_NONBLOCK
| O_NOCTTY
)) < 0)
671 prom_root_node
= prom_nextnode(0);
675 prom_parse (prom_root_node
, 0, 0, hd_data
);
686 hd_scan_sbus (hd_data_t
*hd_data
)