[Midnightbsd-cvs] src [7230] trunk/sys/dev/ata: allow ata to compile with clang

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Tue Aug 11 20:17:21 EDT 2015


Revision: 7230
          http://svnweb.midnightbsd.org/src/?rev=7230
Author:   laffer1
Date:     2015-08-11 20:17:21 -0400 (Tue, 11 Aug 2015)
Log Message:
-----------
allow ata to compile with clang

Modified Paths:
--------------
    trunk/sys/dev/ata/ata-raid.c
    trunk/sys/dev/ata/chipsets/ata-intel.c
    trunk/sys/dev/ata/chipsets/ata-promise.c
    trunk/sys/dev/ata/chipsets/ata-serverworks.c
    trunk/sys/dev/ata/chipsets/ata-siliconimage.c

Modified: trunk/sys/dev/ata/ata-raid.c
===================================================================
--- trunk/sys/dev/ata/ata-raid.c	2015-08-12 00:12:48 UTC (rev 7229)
+++ trunk/sys/dev/ata/ata-raid.c	2015-08-12 00:17:21 UTC (rev 7230)
@@ -1351,10 +1351,11 @@
 ata_raid_read_metadata(device_t subdisk)
 {
     devclass_t pci_devclass = devclass_find("pci");
+    devclass_t atapci_devclass = devclass_find("atapci");
     devclass_t devclass=device_get_devclass(GRANDPARENT(GRANDPARENT(subdisk)));
 
     /* prioritize vendor native metadata layout if possible */
-    if (devclass == pci_devclass) {
+    if (devclass == pci_devclass || devclass == atapci_devclass) {
 	switch (pci_get_vendor(GRANDPARENT(device_get_parent(subdisk)))) {
 	case ATA_HIGHPOINT_ID: 
 	    if (ata_raid_hptv3_read_meta(subdisk, ata_raid_arrays))

Modified: trunk/sys/dev/ata/chipsets/ata-intel.c
===================================================================
--- trunk/sys/dev/ata/chipsets/ata-intel.c	2015-08-12 00:12:48 UTC (rev 7229)
+++ trunk/sys/dev/ata/chipsets/ata-intel.c	2015-08-12 00:17:21 UTC (rev 7230)
@@ -73,6 +73,7 @@
     int reg, u_int32_t result);
 static int ata_intel_sata_sidpr_write(device_t dev, int port,
     int reg, u_int32_t result);
+static int ata_intel_sata_sidpr_test(device_t dev);
 static int ata_intel_31244_ch_attach(device_t dev);
 static int ata_intel_31244_ch_detach(device_t dev);
 static int ata_intel_31244_status(device_t dev);
@@ -211,6 +212,18 @@
      { ATA_PPT_S4,       0, INTEL_6CH2, 0, ATA_SA300, "Panther Point" },
      { ATA_PPT_R5,       0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" },
      { ATA_PPT_R6,       0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" },
+     { ATA_LPT_S1,       0, INTEL_6CH,  0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_S2,       0, INTEL_6CH,  0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_AH1,      0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_AH2,      0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_R1,       0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_R2,       0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_R3,       0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_R4,       0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_S3,       0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_S4,       0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_R5,       0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
+     { ATA_LPT_R6,       0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" },
      { ATA_I31244,       0,          0, 2, ATA_SA150, "31244" },
      { ATA_ISCH,         0,          0, 1, ATA_UDMA5, "SCH" },
      { ATA_DH89XXCC,     0, INTEL_AHCI, 0, ATA_SA300, "DH89xxCC" },
@@ -405,22 +418,20 @@
 		}
 		if (ch->flags & ATA_SATA) {
 			if ((ctlr->chip->cfg1 & INTEL_ICH5)) {
-				ch->flags |= ATA_PERIODIC_POLL;
-				ch->hw.status = ata_intel_sata_status;
 				ch->hw.pm_read = ata_intel_sata_cscr_read;
 				ch->hw.pm_write = ata_intel_sata_cscr_write;
 			} else if (ctlr->r_res2) {
-				ch->flags |= ATA_PERIODIC_POLL;
-				ch->hw.status = ata_intel_sata_status;
 				if ((ctlr->chip->cfg1 & INTEL_ICH7)) {
 					ch->hw.pm_read = ata_intel_sata_ahci_read;
 					ch->hw.pm_write = ata_intel_sata_ahci_write;
-				} else {
+				} else if (ata_intel_sata_sidpr_test(dev)) {
 					ch->hw.pm_read = ata_intel_sata_sidpr_read;
 					ch->hw.pm_write = ata_intel_sata_sidpr_write;
 				};
 			}
 			if (ch->hw.pm_write != NULL) {
+				ch->flags |= ATA_PERIODIC_POLL;
+				ch->hw.status = ata_intel_sata_status;
 				ata_sata_scr_write(ch, 0,
 				    ATA_SERROR, 0xffffffff);
 				if ((ch->flags & ATA_NO_SLAVE) == 0) {
@@ -824,6 +835,32 @@
 }
 
 static int
+ata_intel_sata_sidpr_test(device_t dev)
+{
+	struct ata_channel *ch = device_get_softc(dev);
+	int port;
+	uint32_t val;
+
+	port = (ch->flags & ATA_NO_SLAVE) ? 0 : 1;
+	for (; port >= 0; port--) {
+		ata_intel_sata_sidpr_read(dev, port, ATA_SCONTROL, &val);
+		if ((val & ATA_SC_IPM_MASK) ==
+		    (ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER))
+			return (1);
+		val |= ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER;
+		ata_intel_sata_sidpr_write(dev, port, ATA_SCONTROL, val);
+		ata_intel_sata_sidpr_read(dev, port, ATA_SCONTROL, &val);
+		if ((val & ATA_SC_IPM_MASK) ==
+		    (ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER))
+			return (1);
+	}
+	if (bootverbose)
+		device_printf(dev,
+		    "SControl registers are not functional: %08x\n", val);
+	return (0);
+}
+
+static int
 ata_intel_31244_ch_attach(device_t dev)
 {
     struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));

Modified: trunk/sys/dev/ata/chipsets/ata-promise.c
===================================================================
--- trunk/sys/dev/ata/chipsets/ata-promise.c	2015-08-12 00:12:48 UTC (rev 7229)
+++ trunk/sys/dev/ata/chipsets/ata-promise.c	2015-08-12 00:17:21 UTC (rev 7230)
@@ -130,7 +130,7 @@
 {
     struct ata_pci_controller *ctlr = device_get_softc(dev);
     const struct ata_chip_id *idx;
-    static const struct ata_chip_id const ids[] =
+    static const struct ata_chip_id ids[] =
     {{ ATA_PDC20246,  0, PR_OLD, 0x00,     ATA_UDMA2, "PDC20246" },
      { ATA_PDC20262,  0, PR_NEW, 0x00,     ATA_UDMA4, "PDC20262" },
      { ATA_PDC20263,  0, PR_NEW, 0x00,     ATA_UDMA4, "PDC20263" },

Modified: trunk/sys/dev/ata/chipsets/ata-serverworks.c
===================================================================
--- trunk/sys/dev/ata/chipsets/ata-serverworks.c	2015-08-12 00:12:48 UTC (rev 7229)
+++ trunk/sys/dev/ata/chipsets/ata-serverworks.c	2015-08-12 00:17:21 UTC (rev 7230)
@@ -75,7 +75,7 @@
 ata_serverworks_probe(device_t dev)
 {
     struct ata_pci_controller *ctlr = device_get_softc(dev);
-    static const struct ata_chip_id const ids[] =
+    static const struct ata_chip_id ids[] =
     {{ ATA_ROSB4,     0x00, SWKS_33,  0, ATA_WDMA2, "ROSB4" },
      { ATA_CSB5,      0x92, SWKS_100, 0, ATA_UDMA5, "CSB5" },
      { ATA_CSB5,      0x00, SWKS_66,  0, ATA_UDMA4, "CSB5" },

Modified: trunk/sys/dev/ata/chipsets/ata-siliconimage.c
===================================================================
--- trunk/sys/dev/ata/chipsets/ata-siliconimage.c	2015-08-12 00:12:48 UTC (rev 7229)
+++ trunk/sys/dev/ata/chipsets/ata-siliconimage.c	2015-08-12 00:17:21 UTC (rev 7230)
@@ -87,7 +87,7 @@
 ata_sii_probe(device_t dev)
 {
     struct ata_pci_controller *ctlr = device_get_softc(dev);
-    static const struct ata_chip_id const ids[] =
+    static const struct ata_chip_id ids[] =
     {{ ATA_SII3114,   0x00, SII_MEMIO, SII_4CH,    ATA_SA150, "3114" },
      { ATA_SII3512,   0x02, SII_MEMIO, 0,          ATA_SA150, "3512" },
      { ATA_SII3112,   0x02, SII_MEMIO, 0,          ATA_SA150, "3112" },



More information about the Midnightbsd-cvs mailing list