Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ahci: qoriq: added ls1046a platform support

Ls1046a is a new introduced soc which supports ATA3.0.

Signed-off-by: Tang Yuantian <yuantian.tang@nxp.com>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

Tang Yuantian and committed by
Tejun Heo
2facc6da 1001354c

+13 -3
+13 -3
drivers/ata/ahci_qoriq.c
··· 46 46 #define LS1021A_AXICC_ADDR 0xC0 47 47 48 48 #define SATA_ECC_DISABLE 0x00020000 49 + #define LS1046A_SATA_ECC_DIS 0x80000000 49 50 50 51 enum ahci_qoriq_type { 51 52 AHCI_LS1021A, 52 53 AHCI_LS1043A, 53 54 AHCI_LS2080A, 55 + AHCI_LS1046A, 54 56 }; 55 57 56 58 struct ahci_qoriq_priv { ··· 65 63 { .compatible = "fsl,ls1021a-ahci", .data = (void *)AHCI_LS1021A}, 66 64 { .compatible = "fsl,ls1043a-ahci", .data = (void *)AHCI_LS1043A}, 67 65 { .compatible = "fsl,ls2080a-ahci", .data = (void *)AHCI_LS2080A}, 66 + { .compatible = "fsl,ls1046a-ahci", .data = (void *)AHCI_LS1046A}, 68 67 {}, 69 68 }; 70 69 MODULE_DEVICE_TABLE(of, ahci_qoriq_of_match); ··· 178 175 writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS); 179 176 writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC); 180 177 break; 178 + 179 + case AHCI_LS1046A: 180 + writel(LS1046A_SATA_ECC_DIS, qpriv->ecc_addr); 181 + writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1); 182 + writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS); 183 + writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC); 184 + break; 181 185 } 182 186 183 187 return 0; ··· 214 204 215 205 qoriq_priv->type = (enum ahci_qoriq_type)of_id->data; 216 206 217 - if (qoriq_priv->type == AHCI_LS1021A) { 218 - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, 219 - "sata-ecc"); 207 + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, 208 + "sata-ecc"); 209 + if (res) { 220 210 qoriq_priv->ecc_addr = devm_ioremap_resource(dev, res); 221 211 if (IS_ERR(qoriq_priv->ecc_addr)) 222 212 return PTR_ERR(qoriq_priv->ecc_addr);