diff options
author | Sekhar Nori <nsekhar@ti.com> | 2009-10-21 11:48:21 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2009-11-25 13:21:35 -0500 |
commit | b5ebe4e198e595cad412a9de2d7b253693545d30 (patch) | |
tree | 70723cb07fe43cfb074e9a84dffba32db5d4c4c5 /arch/arm/mach-davinci/board-da830-evm.c | |
parent | 77316f0575264c56fb0c8f241b946a91e3a00602 (diff) |
davinci: DA830/OMAP-L137 EVM: do not configure NAND on UI card when MMC/SD is selected
On the DA830, AEMIF and MMC/SD pins are shared. On the EVM, when
the mux_mode signal is low MMC/SD works and when mux_mode signal
is high, NAND works.
When MMC/SD driver is configured in the kernel, do not let NAND
get registered and drive mux_mode high. Instead, print a warning
for user to understand why the platform device for NAND did not
get registered.
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/board-da830-evm.c')
-rw-r--r-- | arch/arm/mach-davinci/board-da830-evm.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index e7e97c90d4d0..537a048c84be 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c | |||
@@ -282,6 +282,12 @@ static const short da830_evm_emif25_pins[] = { | |||
282 | -1 | 282 | -1 |
283 | }; | 283 | }; |
284 | 284 | ||
285 | #if defined(CONFIG_MMC_DAVINCI) || defined(CONFIG_MMC_DAVINCI_MODULE) | ||
286 | #define HAS_MMC 1 | ||
287 | #else | ||
288 | #define HAS_MMC 0 | ||
289 | #endif | ||
290 | |||
285 | #ifdef CONFIG_DA830_UI_NAND | 291 | #ifdef CONFIG_DA830_UI_NAND |
286 | static struct mtd_partition da830_evm_nand_partitions[] = { | 292 | static struct mtd_partition da830_evm_nand_partitions[] = { |
287 | /* bootloader (U-Boot, etc) in first sector */ | 293 | /* bootloader (U-Boot, etc) in first sector */ |
@@ -377,6 +383,13 @@ static inline void da830_evm_init_nand(int mux_mode) | |||
377 | { | 383 | { |
378 | int ret; | 384 | int ret; |
379 | 385 | ||
386 | if (HAS_MMC) { | ||
387 | pr_warning("WARNING: both MMC/SD and NAND are " | ||
388 | "enabled, but they share AEMIF pins.\n" | ||
389 | "\tDisable MMC/SD for NAND support.\n"); | ||
390 | return; | ||
391 | } | ||
392 | |||
380 | ret = da8xx_pinmux_setup(da830_evm_emif25_pins); | 393 | ret = da8xx_pinmux_setup(da830_evm_emif25_pins); |
381 | if (ret) | 394 | if (ret) |
382 | pr_warning("da830_evm_init: emif25 mux setup failed: %d\n", | 395 | pr_warning("da830_evm_init: emif25 mux setup failed: %d\n", |
@@ -425,6 +438,9 @@ static int da830_evm_ui_expander_setup(struct i2c_client *client, int gpio, | |||
425 | { | 438 | { |
426 | gpio_request(gpio + 6, "UI MUX_MODE"); | 439 | gpio_request(gpio + 6, "UI MUX_MODE"); |
427 | 440 | ||
441 | /* Drive mux mode low to match the default without UI card */ | ||
442 | gpio_direction_output(gpio + 6, 0); | ||
443 | |||
428 | da830_evm_init_lcdc(gpio + 6); | 444 | da830_evm_init_lcdc(gpio + 6); |
429 | 445 | ||
430 | da830_evm_init_nand(gpio + 6); | 446 | da830_evm_init_nand(gpio + 6); |