|
@@ -36,6 +36,11 @@
|
|
|
#include <asm/errno.h>
|
|
|
#include <hwconfig.h>
|
|
|
|
|
|
+#ifdef CONFIG_DAVINCI_MMC
|
|
|
+#include <mmc.h>
|
|
|
+#include <asm/arch/sdmmc_defs.h>
|
|
|
+#endif
|
|
|
+
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
#ifdef CONFIG_DRIVER_TI_EMAC
|
|
@@ -204,11 +209,32 @@ int misc_init_r(void)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_DAVINCI_MMC
|
|
|
+static struct davinci_mmc mmc_sd0 = {
|
|
|
+ .reg_base = (struct davinci_mmc_regs *)DAVINCI_MMC_SD0_BASE,
|
|
|
+ .host_caps = MMC_MODE_4BIT, /* DA850 supports only 4-bit SD/MMC */
|
|
|
+ .voltages = MMC_VDD_32_33 | MMC_VDD_33_34,
|
|
|
+ .version = MMC_CTLR_VERSION_2,
|
|
|
+};
|
|
|
+
|
|
|
+int board_mmc_init(bd_t *bis)
|
|
|
+{
|
|
|
+ mmc_sd0.input_clk = clk_get(DAVINCI_MMCSD_CLKID);
|
|
|
+
|
|
|
+ /* Add slot-0 to mmc subsystem */
|
|
|
+ return davinci_mmc_init(bis, &mmc_sd0);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
static const struct pinmux_config gpio_pins[] = {
|
|
|
#ifdef CONFIG_USE_NOR
|
|
|
/* GP0[11] is required for NOR to work on Rev 3 EVMs */
|
|
|
{ pinmux(0), 8, 4 }, /* GP0[11] */
|
|
|
#endif
|
|
|
+#ifdef CONFIG_DAVINCI_MMC
|
|
|
+ /* GP0[11] is required for SD to work on Rev 3 EVMs */
|
|
|
+ { pinmux(0), 8, 4 }, /* GP0[11] */
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
const struct pinmux_resource pinmuxes[] = {
|
|
@@ -236,6 +262,9 @@ const struct pinmux_resource pinmuxes[] = {
|
|
|
PINMUX_ITEM(emifa_pins_nor),
|
|
|
#endif
|
|
|
PINMUX_ITEM(gpio_pins),
|
|
|
+#ifdef CONFIG_DAVINCI_MMC
|
|
|
+ PINMUX_ITEM(mmc0_pins),
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
const int pinmuxes_size = ARRAY_SIZE(pinmuxes);
|
|
@@ -246,6 +275,9 @@ const struct lpsc_resource lpsc[] = {
|
|
|
{ DAVINCI_LPSC_EMAC }, /* image download */
|
|
|
{ DAVINCI_LPSC_UART2 }, /* console */
|
|
|
{ DAVINCI_LPSC_GPIO },
|
|
|
+#ifdef CONFIG_DAVINCI_MMC
|
|
|
+ { DAVINCI_LPSC_MMC_SD },
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
const int lpsc_size = ARRAY_SIZE(lpsc);
|