aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRichard Zhu <richard.zhu@linaro.org>2011-08-23 20:58:21 +0800
committerEric Miao <eric.miao@linaro.org>2011-11-15 14:10:16 +0800
commit53d5b17b7fc2db8b1ea3ceb6e03fe24d63d8c653 (patch)
treec346c45a256458dd0b493b40f29f403a04e8f9c4 /arch
parentd8c235cd3612b91135f465bace77348c6830b1b5 (diff)
mx53_smd: Enable the AHCI SATA on MX53 SMD board
Signed-off-by: Richard Zhu <richard.zhu@linaro.org> Signed-off-by: Eric Miao <eric.miao@linaro.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx5/board-mx53_smd.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/board-mx53_smd.c b/arch/arm/mach-mx5/board-mx53_smd.c
index bc02894eafe..3005c7c0c25 100644
--- a/arch/arm/mach-mx5/board-mx53_smd.c
+++ b/arch/arm/mach-mx5/board-mx53_smd.c
@@ -26,6 +26,7 @@
#include <mach/common.h>
#include <mach/hardware.h>
#include <mach/iomux-mx53.h>
+#include <mach/ahci_sata.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -35,6 +36,7 @@
#include "devices-imx53.h"
#define SMD_FEC_PHY_RST IMX_GPIO_NR(7, 6)
+#define MX53_SMD_SATA_PWR_EN IMX_GPIO_NR(3, 3)
static iomux_v3_cfg_t mx53_smd_pads[] = {
MX53_PAD_CSI0_DAT10__UART1_TXD_MUX,
@@ -111,6 +113,35 @@ static const struct imxi2c_platform_data mx53_smd_i2c_data __initconst = {
.bitrate = 100000,
};
+static int mx53_smd_sata_init(struct device *dev, void __iomem *addr)
+{
+ int ret;
+
+ /* Enable SATA PWR */
+ ret = gpio_request(MX53_SMD_SATA_PWR_EN, "ahci-sata-pwr");
+ if (ret) {
+ printk(KERN_ERR "failed to get SATA_PWR_EN: %d\n", ret);
+ return ret;
+ }
+ gpio_direction_output(MX53_SMD_SATA_PWR_EN, 1);
+
+ return sata_init(dev, addr);
+}
+
+void mx53_smd_sata_exit(struct device *dev)
+{
+ sata_exit(dev);
+
+ /* Disable SATA PWR */
+ gpio_direction_output(MX53_SMD_SATA_PWR_EN, 0);
+ gpio_free(MX53_SMD_SATA_PWR_EN);
+}
+
+static struct ahci_platform_data sata_data = {
+ .init = mx53_smd_sata_init,
+ .exit = mx53_smd_sata_exit,
+};
+
static void __init mx53_smd_board_init(void)
{
imx53_soc_init();
@@ -125,6 +156,7 @@ static void __init mx53_smd_board_init(void)
imx53_add_sdhci_esdhc_imx(0, NULL);
imx53_add_sdhci_esdhc_imx(1, NULL);
imx53_add_sdhci_esdhc_imx(2, NULL);
+ imx53_add_ahci_imx(0, &sata_data);
}
static void __init mx53_smd_timer_init(void)