For reasons which are not clear, r254263 broke some PCMCIA and CardBus

bridges in strange ways, either rendering them unable to detect
insertion and removal events, or possibly unable to read from the
device behind the bridge.

This fixes at least one laptop, a Toshiba Tecra M5 with a Texas
Instruments PCxx12 (d=0x8039 v=0c104c) bridge.  The very similar
Tecra M9 has the same bridge, but worked fine without this change.

The bridge chip has no I/O port BAR, and there is nothing in the spec
to suggest I/O decoding should be enabled; however enabling it fixes
the issue.  Add an XXX comment to this effect.

Discussed with:	jhb, imp
MFC after:	2 weeks
This commit is contained in:
Gavin Atkinson 2014-08-03 21:56:53 +00:00
parent 35bb1797a0
commit 7458a79a14

View File

@ -481,6 +481,8 @@ cbb_chipinit(struct cbb_softc *sc)
/* Enable memory access */
pci_enable_busmaster(sc->dev);
/* XXX: This should not be necessary, but some chipsets require it */
PCI_MASK_CONFIG(sc->dev, PCIR_COMMAND, | PCIM_CMD_PORTEN, 2);
/* disable Legacy IO */
switch (sc->chipset) {