summaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorSteffen Trumtrar <s.trumtrar@pengutronix.de>2022-01-18 15:04:51 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-01-20 09:30:06 +0100
commitc2983e6e915ab08517853b35eab6a6c334b3cbc3 (patch)
treee75bbc7f6ecd4bc7713ddb60d3e97877750974ad /drivers/ata
parent5e87daebe0b53bf62998c9e500227456745fdc98 (diff)
downloadbarebox-c2983e6e915ab08517853b35eab6a6c334b3cbc3.tar.gz
barebox-c2983e6e915ab08517853b35eab6a6c334b3cbc3.tar.xz
ata: sata_mv: enable Generation 2 speed support
The ARMADA-XP core supports the Gen2 speed. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Link: https://lore.barebox.org/20220118140453.1860909-5-s.trumtrar@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/sata_mv.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index b8d21525a7..dd326428f4 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -40,6 +40,9 @@ static void ata_ioports_init(struct ata_ioports *io,
#define EDMA_EN (1 << 0) /* enable EDMA */
#define EDMA_DS (1 << 1) /* disable EDMA; self-negated */
#define REG_EDMA_COMMAND__EATARST 0x00000004
+#define REG_EDMA_IORDY_TMOUT(n) ((n) * 0x2000 + 0x2034)
+#define REG_SATA_IFCFG(n) ((n) * 0x2000 + 0x2050)
+#define REG_SATA_IFCFG_GEN2EN (1 << 7)
#define REG_ATA_BASE 0x2100
#define REG_SSTATUS(n) ((n) * 0x2000 + 0x2300)
@@ -124,6 +127,13 @@ static int mv_sata_probe(struct device_d *dev)
return ret;
}
+ /* increase IORdy signal timeout */
+ writel(0x800, base + REG_EDMA_IORDY_TMOUT(0));
+ /* set GEN2i Speed */
+ tmp = readl(base + REG_SATA_IFCFG(0));
+ tmp |= REG_SATA_IFCFG_GEN2EN;
+ writel(tmp, base + REG_SATA_IFCFG(0));
+
mv_soc_65n_phy_errata(base);
writel(REG_EDMA_COMMAND__EATARST, base + REG_EDMA_COMMAND(0));