diff options
Diffstat (limited to 'drivers/ata/sata_mv.c')
-rw-r--r-- | drivers/ata/sata_mv.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index acf347f71a2f..60391e9a84db 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -224,6 +224,11 @@ enum { | |||
224 | 224 | ||
225 | PHY_MODE3 = 0x310, | 225 | PHY_MODE3 = 0x310, |
226 | PHY_MODE4 = 0x314, | 226 | PHY_MODE4 = 0x314, |
227 | PHY_MODE4_CFG_MASK = 0x00000003, /* phy internal config field */ | ||
228 | PHY_MODE4_CFG_VALUE = 0x00000001, /* phy internal config field */ | ||
229 | PHY_MODE4_RSVD_ZEROS = 0x5de3fffa, /* Gen2e always write zeros */ | ||
230 | PHY_MODE4_RSVD_ONES = 0x00000005, /* Gen2e always write ones */ | ||
231 | |||
227 | PHY_MODE2 = 0x330, | 232 | PHY_MODE2 = 0x330, |
228 | SATA_IFCTL_OFS = 0x344, | 233 | SATA_IFCTL_OFS = 0x344, |
229 | SATA_TESTCTL_OFS = 0x348, | 234 | SATA_TESTCTL_OFS = 0x348, |
@@ -2563,17 +2568,16 @@ static void mv6_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio, | |||
2563 | m3 &= ~0x1c; | 2568 | m3 &= ~0x1c; |
2564 | 2569 | ||
2565 | if (fix_phy_mode4) { | 2570 | if (fix_phy_mode4) { |
2566 | u32 m4; | 2571 | u32 m4 = readl(port_mmio + PHY_MODE4); |
2567 | 2572 | /* | |
2568 | m4 = readl(port_mmio + PHY_MODE4); | 2573 | * Enforce reserved-bit restrictions on GenIIe devices only. |
2569 | 2574 | * For earlier chipsets, force only the internal config field | |
2570 | /* workaround for errata FEr SATA#10 (part 1) */ | 2575 | * (workaround for errata FEr SATA#10 part 1). |
2571 | m4 = (m4 & ~(1 << 1)) | (1 << 0); | 2576 | */ |
2572 | |||
2573 | /* enforce bit restrictions on GenIIe devices */ | ||
2574 | if (IS_GEN_IIE(hpriv)) | 2577 | if (IS_GEN_IIE(hpriv)) |
2575 | m4 = (m4 & ~0x5DE3FFFC) | (1 << 2); | 2578 | m4 = (m4 & ~PHY_MODE4_RSVD_ZEROS) | PHY_MODE4_RSVD_ONES; |
2576 | 2579 | else | |
2580 | m4 = (m4 & ~PHY_MODE4_CFG_MASK) | PHY_MODE4_CFG_VALUE; | ||
2577 | writel(m4, port_mmio + PHY_MODE4); | 2581 | writel(m4, port_mmio + PHY_MODE4); |
2578 | } | 2582 | } |
2579 | /* | 2583 | /* |