Check the Disk FUNCE recorded in the CIS to see if we should probe for

both disks, or if we should suppress the slave drive.  Default to
suppressing the slave, in the case that this REQIURED tuple turns out
to not actually be present...
This commit is contained in:
Warner Losh 2009-03-12 06:30:59 +00:00
parent bca6fb928e
commit aef30cdbf5

View File

@ -90,6 +90,7 @@ ata_pccard_attach(device_t dev)
struct ata_channel *ch = device_get_softc(dev); struct ata_channel *ch = device_get_softc(dev);
struct resource *io, *ctlio; struct resource *io, *ctlio;
int i, rid, err; int i, rid, err;
uint16_t funce;
if (ch->attached) if (ch->attached)
return (0); return (0);
@ -132,7 +133,11 @@ ata_pccard_attach(device_t dev)
/* initialize softc for this channel */ /* initialize softc for this channel */
ch->unit = 0; ch->unit = 0;
ch->flags |= (ATA_USE_16BIT | ATA_NO_SLAVE); ch->flags |= ATA_USE_16BIT;
funce = 0; /* Default to sane setting of FUNCE */
pccard_get_funce_disk(dev, &funce);
if (!(funce & PFD_I_D))
ch-> flags |= ATA_NO_SLAVE;
ata_generic_hw(dev); ata_generic_hw(dev);
err = ata_probe(dev); err = ata_probe(dev);
if (err) if (err)