From aef30cdbf53f32930da68890b827ead2d54062cb Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Thu, 12 Mar 2009 06:30:59 +0000 Subject: [PATCH] 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... --- sys/dev/ata/ata-card.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/dev/ata/ata-card.c b/sys/dev/ata/ata-card.c index 09a2c9f71a32..599dea626a2d 100644 --- a/sys/dev/ata/ata-card.c +++ b/sys/dev/ata/ata-card.c @@ -90,6 +90,7 @@ ata_pccard_attach(device_t dev) struct ata_channel *ch = device_get_softc(dev); struct resource *io, *ctlio; int i, rid, err; + uint16_t funce; if (ch->attached) return (0); @@ -132,7 +133,11 @@ ata_pccard_attach(device_t dev) /* initialize softc for this channel */ 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); err = ata_probe(dev); if (err)