aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTang Yuantian <Yuantian.Tang@freescale.com>2015-12-16 01:00:35 -0500
committerTejun Heo <tj@kernel.org>2015-12-16 10:24:35 -0500
commitdfcdc5fe0379d5650c9306ecc6fcc5cb6cb8982a (patch)
treeb71d866db15f6013908b3668f2b699a98af1d0bd
parente3a6dadc6dca64f464238f8a36876c610400eef9 (diff)
ahci: qoriq: Adjust the default register values on ls1021a
Updated the registers' values to enhance SATA performance and reliability on ls1021a soc. Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com> Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r--drivers/ata/ahci_qoriq.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
index 256d9114a194..7bdee9bd8786 100644
--- a/drivers/ata/ahci_qoriq.c
+++ b/drivers/ata/ahci_qoriq.c
@@ -34,16 +34,20 @@
34 34
35/* port register default value */ 35/* port register default value */
36#define AHCI_PORT_PHY_1_CFG 0xa003fffe 36#define AHCI_PORT_PHY_1_CFG 0xa003fffe
37#define AHCI_PORT_PHY_2_CFG 0x28183411
38#define AHCI_PORT_PHY_3_CFG 0x0e081004
39#define AHCI_PORT_PHY_4_CFG 0x00480811
40#define AHCI_PORT_PHY_5_CFG 0x192c96a4
41#define AHCI_PORT_TRANS_CFG 0x08000029 37#define AHCI_PORT_TRANS_CFG 0x08000029
42#define LS1043A_PORT_PHY2 0x28184d1f 38
43#define LS1043A_PORT_PHY3 0x0e081509 39/* for ls1021a */
40#define LS1021A_PORT_PHY2 0x28183414
41#define LS1021A_PORT_PHY3 0x0e080e06
42#define LS1021A_PORT_PHY4 0x064a080b
43#define LS1021A_PORT_PHY5 0x2aa86470
44 44
45#define SATA_ECC_DISABLE 0x00020000 45#define SATA_ECC_DISABLE 0x00020000
46 46
47/* for ls1043a */
48#define LS1043A_PORT_PHY2 0x28184d1f
49#define LS1043A_PORT_PHY3 0x0e081509
50
47enum ahci_qoriq_type { 51enum ahci_qoriq_type {
48 AHCI_LS1021A, 52 AHCI_LS1021A,
49 AHCI_LS1043A, 53 AHCI_LS1043A,
@@ -153,10 +157,10 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
153 case AHCI_LS1021A: 157 case AHCI_LS1021A:
154 writel(SATA_ECC_DISABLE, qpriv->ecc_addr); 158 writel(SATA_ECC_DISABLE, qpriv->ecc_addr);
155 writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1); 159 writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
156 writel(AHCI_PORT_PHY_2_CFG, reg_base + PORT_PHY2); 160 writel(LS1021A_PORT_PHY2, reg_base + PORT_PHY2);
157 writel(AHCI_PORT_PHY_3_CFG, reg_base + PORT_PHY3); 161 writel(LS1021A_PORT_PHY3, reg_base + PORT_PHY3);
158 writel(AHCI_PORT_PHY_4_CFG, reg_base + PORT_PHY4); 162 writel(LS1021A_PORT_PHY4, reg_base + PORT_PHY4);
159 writel(AHCI_PORT_PHY_5_CFG, reg_base + PORT_PHY5); 163 writel(LS1021A_PORT_PHY5, reg_base + PORT_PHY5);
160 writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS); 164 writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
161 break; 165 break;
162 166