aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Miao <eric.miao@linaro.org>2011-07-20 16:42:00 +0800
committerEric Miao <eric.miao@linaro.org>2011-08-16 12:37:15 +0800
commitbb2d9fef6a4d52c937e7baf60f51c4f1914e1716 (patch)
tree6c6ae12d491454535f5b499f543a648fd0e8fd3c
parent465a04fc741231f523bf5d5ac8c0b51340f34614 (diff)
SAUCE: mx53_loco: fix SATA clock fuse setting
Signed-off-by: Eric Miao <eric.miao@linaro.org>
-rw-r--r--arch/arm/mach-mx5/board-mx53_loco.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/board-mx53_loco.c b/arch/arm/mach-mx5/board-mx53_loco.c
index d51a92c7cacb..200eb6f01a1f 100644
--- a/arch/arm/mach-mx5/board-mx53_loco.c
+++ b/arch/arm/mach-mx5/board-mx53_loco.c
@@ -461,6 +461,21 @@ static int sata_init(struct device *dev, void __iomem *addr)
int ret = 0;
u32 tmpdata;
+ /* configure the sata source clk from internal usb_phy1 clk */
+ clk = clk_get(NULL, "iim_clk");
+ if (IS_ERR(clk)) {
+ pr_err("AHCI can't get IIM clock.\n");
+ return PTR_ERR(clk);
+ }
+ clk_enable(clk);
+
+ /* Fuse bank4 row3 bit2 */
+ mmio = ioremap(MX53_IIM_BASE_ADDR, SZ_8K);
+ writel((readl(mmio + 0x180C) & (~0x7)) | 0x4, mmio + 0x180C);
+ iounmap(mmio);
+ clk_disable(clk);
+ clk_put(clk);
+
clk = clk_get(dev, "imx_sata_clk");
ret = IS_ERR(clk);
if (ret) {
@@ -514,6 +529,8 @@ static int sata_init(struct device *dev, void __iomem *addr)
goto no_ahb_clk;
}
+ msleep(15);
+
/* Release resources when there is no device on the port */
if ((readl(mmio + PORT_SATA_SR) & 0xF) == 0) {
iounmap(mmio);