On Tue, 2005-12-13 at 13:38 +0000, Gavin Atkinson wrote: > On Mon, 2005-12-12 at 17:04 +0300, Gleb Smirnoff wrote: > > On Sun, Dec 11, 2005 at 06:22:40PM +0000, Gavin Atkinson wrote: > > G> I'm trying to use puc(4) under RELENG_6 to attach the two serial ports on > > G> a PCI card I have, but it's not working. It also fails under 6.0-RELEASE, > > G> I don't have the ability to test earlier versions. > > G> > > G> How can I further diagnose why this card is not getting recognised? > > > > Afaik, you need 'device uart', that will attach to your pucs. > > No, as far as I can tell, it's sio that should be attaching. I've > loaded the uart module anyway and it still fails. > > With BUS_DEBUG defined, I see the following: > > devclass_find_internal:761: looking for puc > devclass_add_device:1356: (null) in devclass puc > devclass_alloc_unit:1289: unit -1 in devclass puc > devclass_alloc_unit:1329: now: unit 0 in devclass puc > puc0: <Dolphin Peripherals 4036> port 0x18c0-0x18df irq 25 at device 9.0 > on pci0 > puc0: Reserved 0x20 bytes for rid 0x10 type 4 at 0x18c0 > port rid 16 bst 0, start 18c0, end 18df > puc0: i 0, type sio, ressz 8, type 1 > devclass_find_internal:761: looking for sio > puc: Using sio2 > device_add_child_ordered:1542: sio at puc with order 0 as unit 2 > make_device:1427: sio at puc as unit 2 > devclass_find_internal:761: looking for sio > devclass_add_device:1356: (null) in devclass sio > devclass_alloc_unit:1289: unit 2 in devclass sio > devclass_alloc_unit:1329: now: unit 2 in devclass sio > puc: type 1, bar 10, offset 0 > devclass_find_driver_internal:1019: sio in devclass puc > devclass_find_driver_internal:1026: not found > puc0: i 1, type sio, ressz 8, type 1 > devclass_find_internal:761: looking for sio > puc: Using sio3 > device_add_child_ordered:1542: sio at puc with order 0 as unit 3 > make_device:1427: sio at puc as unit 3 > devclass_find_internal:761: looking for sio > devclass_add_device:1356: (null) in devclass sio > devclass_alloc_unit:1289: unit 3 in devclass sio > devclass_alloc_unit:1329: now: unit 3 in devclass sio > puc: type 1, bar 10, offset 8 > devclass_find_driver_internal:1019: sio in devclass puc > devclass_find_driver_internal:1026: not found > > I'm sure somebody with more newbus knowledge will know exactly what that > means... Are we somehow missing a devclass_add_driver(9) call from the > puc initialisation? I'm almost at the point now where I can't > understand how it could possibly be working for anyone else. OK, I've cracked what's happening. Indeed we are somehow missing a call to devclass_add_driver(9). I was loading puc as a module, and in that case the following relevant calls to devclass_add_driver are made: devclass_add_driver: adding puc to cardbus devclass_add_driver: adding puc to pci devclass_add_driver: adding puc to pccard devclass_add_driver: adding uart to puc devclass_add_driver: adding sio to pccard devclass_add_driver: adding sio to pci devclass_add_driver: adding sio to cardbus devclass_add_driver: adding sio to isa devclass_add_driver: adding sio to acpi When compiling puc into the kernel as opposed to using the module, the following extra call is made: devclass_add_driver: adding sio to puc I don't understand why the DRIVER_METHOD(sio, puc, ...) is being ignored in the puc-as-a-module case. Is this expected behaviour? I'm guessing it's not. I do note also that ppc(4) is not added to the puc devclass, presumably for the same reason. I'm also guessing things would work if sio was a module too. It seems odd to me that a module cannot add an in-kernel driver to it's devclass, but at this point I'm out of my depth as far as figuring out how to fix it goes. Gavin GavinReceived on Tue Dec 13 2005 - 13:49:40 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:49 UTC