Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Mar 2009 06:30:59 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r189724 - head/sys/dev/ata
Message-ID:  <200903120630.n2C6UxT8019297@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Thu Mar 12 06:30:59 2009
New Revision: 189724
URL: http://svn.freebsd.org/changeset/base/189724

Log:
  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...

Modified:
  head/sys/dev/ata/ata-card.c

Modified: head/sys/dev/ata/ata-card.c
==============================================================================
--- head/sys/dev/ata/ata-card.c	Thu Mar 12 06:25:30 2009	(r189723)
+++ head/sys/dev/ata/ata-card.c	Thu Mar 12 06:30:59 2009	(r189724)
@@ -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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903120630.n2C6UxT8019297>