|
@@ -24,7 +24,10 @@
|
|
#include <common.h>
|
|
#include <common.h>
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch/tegra2.h>
|
|
#include <asm/arch/tegra2.h>
|
|
-#include <asm/arch/gpio.h>
|
|
|
|
|
|
+#include <asm/gpio.h>
|
|
|
|
+#ifdef CONFIG_TEGRA2_MMC
|
|
|
|
+#include <mmc.h>
|
|
|
|
+#endif
|
|
|
|
|
|
/*
|
|
/*
|
|
* Routine: gpio_config_uart
|
|
* Routine: gpio_config_uart
|
|
@@ -50,3 +53,33 @@ void gpio_config_uart(void)
|
|
val |= 1 << GPIO_BIT(gp);
|
|
val |= 1 << GPIO_BIT(gp);
|
|
writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]);
|
|
writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_TEGRA2_MMC
|
|
|
|
+/*
|
|
|
|
+ * Routine: gpio_config_mmc
|
|
|
|
+ * Description: Set GPIOs for SDMMC3 SDIO slot.
|
|
|
|
+ */
|
|
|
|
+void gpio_config_mmc(void)
|
|
|
|
+{
|
|
|
|
+ /* Set EN_VDDIO_SD (GPIO I6) */
|
|
|
|
+ gpio_direction_output(GPIO_PI6, 1);
|
|
|
|
+
|
|
|
|
+ /* Config pin as GPI for Card Detect (GPIO I5) */
|
|
|
|
+ gpio_direction_input(GPIO_PI5);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* this is a weak define that we are overriding */
|
|
|
|
+int board_mmc_getcd(u8 *cd, struct mmc *mmc)
|
|
|
|
+{
|
|
|
|
+ debug("board_mmc_getcd called\n");
|
|
|
|
+ *cd = 1; /* Assume card is inserted, or eMMC */
|
|
|
|
+
|
|
|
|
+ if (IS_SD(mmc)) {
|
|
|
|
+ /* Seaboard SDMMC3 = SDIO3_CD = GPIO_PI5 */
|
|
|
|
+ if (gpio_get_value(GPIO_PI5))
|
|
|
|
+ *cd = 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+#endif
|