diff options
author | Eric Miao <eric.miao@linaro.org> | 2011-07-20 16:42:00 +0800 |
---|---|---|
committer | Eric Miao <eric.miao@linaro.org> | 2011-08-16 12:37:15 +0800 |
commit | bb2d9fef6a4d52c937e7baf60f51c4f1914e1716 (patch) | |
tree | 6c6ae12d491454535f5b499f543a648fd0e8fd3c | |
parent | 465a04fc741231f523bf5d5ac8c0b51340f34614 (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.c | 17 |
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); |