CARDBUS(4) | Device Drivers Manual | CARDBUS(4) |
cardbus
, cardslot
,
cbb
— CardBus
driver
cbb* at pci? dev? function ?
cardslot* at cbb?
cardbus* at cardslot?
pcmcia* at cardslot?
XX* at cardbus? function ?
NetBSD provides machine-independent bus support and drivers for CardBus devices.
The cbb
device represents the CardBus
controller. Each controller has a number of slots, represented by the
cardslot
devices. A slot can have either a CardBus
card or a PCMCIA card, which are attached with the
cardbus
or pcmcia
devices,
respectively.
NetBSD includes the following machine-independent CardBus drivers, sorted by function and driver name:
cbb
devices may not be properly handled by
the system BIOS on i386-family systems. If, on an i386-family system, the
cbb
driver reports
cbb0: NOT USED because of
unconfigured interrupt
options PCI_ADDR_FIXUP
options PCI_BUS_FIXUP
options PCI_INTR_FIXUP
options PCI_INTR_FIXUP_DISABLED
The cardbus
driver appeared in
NetBSD 1.5.
NetBSD maps memory on Cardbus (and therefore PCMCIA cards behind Cardbus) in order to access the cards (including reading CIS tuples on PCMCIA cards) and access the devices using the RBUS abstraction. When the mapping does not work, PCMCIA cards are typically ignored on insert, and Cardbus cards are recognized but nonfunctional. On i386, the kernel has a heuristic to choose a memory address for mapping, defaulting to 1 GB, but choosing 0.5 GB on machines with less than 192 MB RAM and 2 GB on machines with more than 1 GB of RAM. The intent is to use an address that is larger than available RAM, but low enough to work; some systems seem to have trouble with addresses requiring more than 20 address lines. On i386, the following kernel configuration line disables the heuristics and forces Cardbus memory space to be mapped at 512M; this value makes Cardbus support (including PCMCIA attachment under a cbb) work on some notebook models, including the IBM Thinkpad 600E (2645-4AU) and the Compaq ARMADA M700:
options
RBUS_MIN_START="0x20000000"
By default, on i386 and amd64, the kernel uses
RBUS_IO_BASE
as 0x4000 and
RBUS_IO_SIZE
as 0x2000. On some machines, this
fails, due to a requirement that these addresses fit within 12 bits. The
following kernel options have been reported as helpful:
options RBUS_IO_BASE="0xa00"
options
RBUS_IO_SIZE="0x00ff"
December 31, 2014 | NetBSD 10.99 |