|
|
|
@ -25,6 +25,10 @@ |
|
|
|
|
#include <asm/arch/gpio_defs.h> |
|
|
|
|
#include <netdev.h> |
|
|
|
|
#include <asm/arch/davinci_misc.h> |
|
|
|
|
#ifdef CONFIG_DAVINCI_MMC |
|
|
|
|
#include <mmc.h> |
|
|
|
|
#include <asm/arch/sdmmc_defs.h> |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
@ -101,3 +105,48 @@ int board_nand_init(struct nand_chip *nand) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_DAVINCI_MMC |
|
|
|
|
static struct davinci_mmc mmc_sd0 = { |
|
|
|
|
.reg_base = (struct davinci_mmc_regs *)DAVINCI_MMC_SD0_BASE, |
|
|
|
|
.input_clk = 121500000, |
|
|
|
|
.host_caps = MMC_MODE_4BIT, |
|
|
|
|
.voltages = MMC_VDD_32_33 | MMC_VDD_33_34, |
|
|
|
|
.version = MMC_CTLR_VERSION_2, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_DAVINCI_MMC_SD1 |
|
|
|
|
static struct davinci_mmc mmc_sd1 = { |
|
|
|
|
.reg_base = (struct davinci_mmc_regs *)DAVINCI_MMC_SD1_BASE, |
|
|
|
|
.input_clk = 121500000, |
|
|
|
|
.host_caps = MMC_MODE_4BIT, |
|
|
|
|
.voltages = MMC_VDD_32_33 | MMC_VDD_33_34, |
|
|
|
|
.version = MMC_CTLR_VERSION_2, |
|
|
|
|
}; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
int board_mmc_init(bd_t *bis) |
|
|
|
|
{ |
|
|
|
|
int err; |
|
|
|
|
|
|
|
|
|
/* Add slot-0 to mmc subsystem */ |
|
|
|
|
err = davinci_mmc_init(bis, &mmc_sd0); |
|
|
|
|
if (err) |
|
|
|
|
return err; |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_DAVINCI_MMC_SD1 |
|
|
|
|
#define PUPDCTL1 0x01c4007c |
|
|
|
|
/* PINMUX(4)-DAT0-3/CMD; PINMUX(0)-CLK */ |
|
|
|
|
writel((readl(PINMUX4) | 0x55400000), PINMUX4); |
|
|
|
|
writel((readl(PINMUX0) | 0x00010000), PINMUX0); |
|
|
|
|
|
|
|
|
|
/* Configure MMC/SD pins as pullup */ |
|
|
|
|
writel((readl(PUPDCTL1) & ~0x07c0), PUPDCTL1); |
|
|
|
|
|
|
|
|
|
/* Add slot-1 to mmc subsystem */ |
|
|
|
|
err = davinci_mmc_init(bis, &mmc_sd1); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
return err; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|