diff options
| author | Lad, Prabhakar <prabhakar.lad@ti.com> | 2012-06-24 21:35:15 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-09-01 14:58:09 +0200 | 
| commit | ecc98ec18c5b23b399e4aa12d252b719ea4aedb1 (patch) | |
| tree | ba42ce492fe3d7bf9db81f4f03f8b942427aea99 | |
| parent | 3b97152b63da024e3547c76ac9f7912fceb876c3 (diff) | |
| download | olio-uboot-2014.01-ecc98ec18c5b23b399e4aa12d252b719ea4aedb1.tar.xz olio-uboot-2014.01-ecc98ec18c5b23b399e4aa12d252b719ea4aedb1.zip | |
da850/omap-l138: Add MMC support for DA850/OMAP-L138
This patch adds support for MMC/SD on DA850/OMAP-L138.
Tested-by: Christian Riesch <christian.riesch@omicron.at>
Signed-off-by: Lad, Prabhakar <prabhakar.lad@ti.com>
Signed-off-by: Rajashekhara, Sudhakar <sudhakar.raj@ti.com>
Signed-off-by: Hadli, Manjunath <manjunath.hadli@ti.com>
| -rw-r--r-- | arch/arm/cpu/arm926ejs/davinci/da850_pinmux.c | 11 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-davinci/hardware.h | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-davinci/pinmux_defs.h | 3 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/da850evm.c | 32 | ||||
| -rw-r--r-- | include/configs/da850evm.h | 17 | 
5 files changed, 64 insertions, 0 deletions
| diff --git a/arch/arm/cpu/arm926ejs/davinci/da850_pinmux.c b/arch/arm/cpu/arm926ejs/davinci/da850_pinmux.c index fa07fb591..ad600b2b7 100644 --- a/arch/arm/cpu/arm926ejs/davinci/da850_pinmux.c +++ b/arch/arm/cpu/arm926ejs/davinci/da850_pinmux.c @@ -169,3 +169,14 @@ const struct pinmux_config emifa_pins_nor[] = {  	{ pinmux(12), 1, 6 }, /* EMA_A[1] */  	{ pinmux(12), 1, 7 }, /* EMA_A[0] */  }; + +/* MMC0 pin muxer settings */ +const struct pinmux_config mmc0_pins[] = { +	{ pinmux(10), 2, 0 },	/* MMCSD0_CLK */ +	{ pinmux(10), 2, 1 },	/* MMCSD0_CMD */ +	{ pinmux(10), 2, 2 },	/* MMCSD0_DAT_0 */ +	{ pinmux(10), 2, 3 },	/* MMCSD0_DAT_1 */ +	{ pinmux(10), 2, 4 },	/* MMCSD0_DAT_2 */ +	{ pinmux(10), 2, 5 },	/* MMCSD0_DAT_3 */ +	/* DA850 supports only 4-bit mode, remaining pins are not configured */ +}; diff --git a/arch/arm/include/asm/arch-davinci/hardware.h b/arch/arm/include/asm/arch-davinci/hardware.h index b145c6e7f..f6b7a2cae 100644 --- a/arch/arm/include/asm/arch-davinci/hardware.h +++ b/arch/arm/include/asm/arch-davinci/hardware.h @@ -446,6 +446,7 @@ struct davinci_pllc_regs {  #define DAVINCI_SPI1_CLKID  (cpu_is_da830() ? 2 : ASYNC3)  /* Clock IDs */  enum davinci_clk_ids { +	DAVINCI_MMCSD_CLKID = 2,  	DAVINCI_SPI0_CLKID = 2,  	DAVINCI_UART2_CLKID = 2,  	DAVINCI_MMC_CLKID = 2, diff --git a/arch/arm/include/asm/arch-davinci/pinmux_defs.h b/arch/arm/include/asm/arch-davinci/pinmux_defs.h index 07aceaab0..0db1e401a 100644 --- a/arch/arm/include/asm/arch-davinci/pinmux_defs.h +++ b/arch/arm/include/asm/arch-davinci/pinmux_defs.h @@ -48,4 +48,7 @@ extern const struct pinmux_config emifa_pins_cs4[1];  extern const struct pinmux_config emifa_pins_nand[12];  extern const struct pinmux_config emifa_pins_nor[43]; +/* MMC pin muxer settings */ +extern const struct pinmux_config mmc0_pins[6]; +  #endif diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c index 004d5ad6d..88337ffce 100644 --- a/board/davinci/da8xxevm/da850evm.c +++ b/board/davinci/da8xxevm/da850evm.c @@ -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); diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h index e6adb1fe5..dfbc67406 100644 --- a/include/configs/da850evm.h +++ b/include/configs/da850evm.h @@ -311,6 +311,23 @@  #undef CONFIG_CMD_ENV  #endif +/* SD/MMC configuration */ +#define CONFIG_MMC +#define CONFIG_DAVINCI_MMC_SD1 +#define CONFIG_GENERIC_MMC +#define CONFIG_DAVINCI_MMC + +/* + * Enable MMC commands only when + * MMC support is present + */ +#ifdef CONFIG_MMC +#define CONFIG_DOS_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT +#define CONFIG_CMD_MMC +#endif +  /* defines for SPL */  #define CONFIG_SPL  #define CONFIG_SPL_SPI_SUPPORT |