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