Dan Mick wrote:
>
>> But, there's a bug in the Open Solaris 10 (build 72) enumeration code in
>> /usr/src/uts/i86pc/io/isa.c, isa_alloc_nodes(), line 611:
>>     /* serial ports */
>>     for (i = 0; i < 2; i++) {
>>         ndi_devi_alloc_sleep(isa_dip, "asy",
>>             (pnode_t)DEVI_SID_NODEID, &xdip);
>>         (void) ndi_prop_update_int_array(DDI_DEV_T_NONE, xdip,
>>             "reg", (int *)&asy_regs[i], 3);
>>         (void) ndi_prop_update_int(DDI_DEV_T_NONE, xdip,
>>             "interrupts", asy_intrs[i]);
>>         (void) ndi_devi_bind_driver(xdip, 0);
>>     }
>
> That code is only executed if ACPI enumeration is not enabled (which 
> is quite abnormal) and, in that case, is a best hope that the 
> "standard COM1 and COM2" are available.
>
>> There's a similar bug in /usr/src/uts/i86pc/io/isa.c,
>> enumerate_BIOS_serial() where they assume only 2 serial ports, also.
>
> BIOS serial 'standards' were such a joke that we consciously chose to 
> only use the first two slots in the table at 40:0.  This is an 
> antiquated method of serial discovery that, again, is a final hope.  
> ACPI will override this
> and the loop above if it exists.
>
>> They hardcode the number of serial ports that they will build properties
>> for!!!  I need six, they'll only give me 2!!  Ooops.  I guess this is
>> why my 'reg' value was 'FFFF'.  Nice!
>
> Not all information is in yet, but no, the explanation above is not 
> correct.  Somehow, either the ACPI tables actually say port 0xFFFF, or 
> we're misreading the addresses they do say (since you're getting more 
> than 2 ports, and they have I/O addresses that came from somewhere).
>
>
I think the "reg" property as specified in the original .conf file that 
Dave was using was specified incorrectly.
He was using, for instance:

name="asy" parent="isa" instance=0 reg=0x3f8 interrupts=4 
interrupt-priorities=12;

and changed it to:

name="asy" parent="isa" instance=0 reg=1,0x3f8,8 interrupts=4
interrupt-priorities=12;

I would concentrate on the handling of the "reg" property from the .conf 
file if I wanted to
figure out why he got 3 instances (instead of 0).

max


_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to