[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