How disable attachment of sio(4) driver to device?

Frank Behrens frank at pinky.sax.de
Fri Oct 21 01:35:55 PDT 2005


Hi,

I'm writing a device driver for UART with a protocol, that can not be 
handled by the default sio(4) driver. The driver works fine - the 
only problem I have is to disable the attachment of sio(4) driver to 
the device.

Example:
I'm using FreeBSD 6.0-BETA3 on a new machine with 2 UART interfaces 
on motherboard. I use the 1st port as console, it is initialialized 
as
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A, console

I want to use the second port  with my driver. I had no luck with
hint.sio.1.disabled="1", but hint.sio.1.flags="0x40"
gave me the desired result:
sio1: reserved for low-level i/o

It looks fine, but now come my problems. When I load my driver a new 
ISA probe is executed. Now there is a sio4 or sio5 device, that is 
probed and because there are no hints to disable this, the sio(4) 
driver attaches to the port.

One partly working workaround I found is to patch the sio driver. If 
it does in DEVICE_PROBE(9) not return (0), but the value 
BUS_PROBE_DEFAULT, then my driver has a chance to attach.
If my driver does not attach or another driver is loaded, the sio(4) 
attaches again and I have lost. Then I see only a reboot as solution 
to try my driver again.

Now comes my question: 
How can I disable permanently, that sio(4) attaches to a specified 
interface? 
In FreeBSD-4 it was very easy, I removed the line from kernel 
configuration file and it worked.
I think I did miss some important information, e.g. I could not find 
how the associations between PCI selectors (pciconf(8)) and device 
numers are made and what to insert in device.hints to modify this 
associations.

Regards,
   Frank
-- 
Frank Behrens, Osterwieck, Germany
PGP-key 0x5B7C47ED on public servers available.



More information about the freebsd-hackers mailing list