Patchwork [U-Boot,v2] fsl_esdhc: Fix esdhc disabled problem on some platforms

login
register
mail settings
Submitter Zhao Chenhui
Date Jan. 4, 2011, 9:23 a.m.
Message ID <1294132985-29559-1-git-send-email-b26998@freescale.com>
Download mbox | patch
Permalink /patch/77441/
State Accepted
Commit a6da8b8195f47a70106f743948f2729d94157b32
Delegated to: Kumar Gala
Headers show

Comments

Zhao Chenhui - Jan. 4, 2011, 9:23 a.m.
Some new platform's esdhc pins don't share with other function.
The eSDHC shouldn't be disabled, even if "esdhc" isn't defined
in hwconfig env variable.

Use CONFIG_FSL_ESDHC_PIN_MUX to fix this problem.

Signed-off-by: Chenhui Zhao <b26998@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
Changes for v2:
    Incoperated Anton Vorontsov's review comments

 drivers/mmc/fsl_esdhc.c       |   14 ++++++++------
 include/configs/MPC837XEMDS.h |    1 +
 include/configs/MPC837XERDB.h |    1 +
 include/configs/MPC8569MDS.h  |    1 +
 4 files changed, 11 insertions(+), 6 deletions(-)
Kumar Gala - Jan. 5, 2011, 12:14 a.m.
On Jan 4, 2011, at 3:23 AM, Chenhui Zhao wrote:

> Some new platform's esdhc pins don't share with other function.
> The eSDHC shouldn't be disabled, even if "esdhc" isn't defined
> in hwconfig env variable.
> 
> Use CONFIG_FSL_ESDHC_PIN_MUX to fix this problem.
> 
> Signed-off-by: Chenhui Zhao <b26998@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> Changes for v2:
>    Incoperated Anton Vorontsov's review comments
> 
> drivers/mmc/fsl_esdhc.c       |   14 ++++++++------
> include/configs/MPC837XEMDS.h |    1 +
> include/configs/MPC837XERDB.h |    1 +
> include/configs/MPC8569MDS.h  |    1 +
> 4 files changed, 11 insertions(+), 6 deletions(-)

applied to 85xx

- k

Patch

diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index 40b136c..cef2859 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -508,17 +508,19 @@  int fsl_esdhc_mmc_init(bd_t *bis)
 void fdt_fixup_esdhc(void *blob, bd_t *bd)
 {
 	const char *compat = "fsl,esdhc";
-	const char *status = "okay";
 
+#ifdef CONFIG_FSL_ESDHC_PIN_MUX
 	if (!hwconfig("esdhc")) {
-		status = "disabled";
-		goto out;
+		do_fixup_by_compat(blob, compat, "status", "disabled",
+				8 + 1, 1);
+		return;
 	}
+#endif
 
 	do_fixup_by_compat_u32(blob, compat, "clock-frequency",
 			       gd->sdhc_clk, 1);
-out:
-	do_fixup_by_compat(blob, compat, "status", status,
-			   strlen(status) + 1, 1);
+
+	do_fixup_by_compat(blob, compat, "status", "okay",
+			   4 + 1, 1);
 }
 #endif
diff --git a/include/configs/MPC837XEMDS.h b/include/configs/MPC837XEMDS.h
index c237991..abccfd6 100644
--- a/include/configs/MPC837XEMDS.h
+++ b/include/configs/MPC837XEMDS.h
@@ -509,6 +509,7 @@  extern int board_pci_host_broken(void);
 
 #ifdef CONFIG_MMC
 #define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_ESDHC_PIN_MUX
 #define CONFIG_SYS_FSL_ESDHC_ADDR	CONFIG_SYS_MPC83xx_ESDHC_ADDR
 #define CONFIG_CMD_MMC
 #define CONFIG_GENERIC_MMC
diff --git a/include/configs/MPC837XERDB.h b/include/configs/MPC837XERDB.h
index 385c7c3..ea3056b 100644
--- a/include/configs/MPC837XERDB.h
+++ b/include/configs/MPC837XERDB.h
@@ -517,6 +517,7 @@ 
 
 #ifdef CONFIG_MMC
 #define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_ESDHC_PIN_MUX
 #define CONFIG_SYS_FSL_ESDHC_ADDR	CONFIG_SYS_MPC83xx_ESDHC_ADDR
 #define CONFIG_CMD_MMC
 #define CONFIG_GENERIC_MMC
diff --git a/include/configs/MPC8569MDS.h b/include/configs/MPC8569MDS.h
index 9620fd0..f4a3c2f 100644
--- a/include/configs/MPC8569MDS.h
+++ b/include/configs/MPC8569MDS.h
@@ -561,6 +561,7 @@  extern unsigned long get_clock_freq(void);
 
 #ifdef CONFIG_MMC
 #define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_ESDHC_PIN_MUX
 #define CONFIG_SYS_FSL_ESDHC_ADDR	CONFIG_SYS_MPC85xx_ESDHC_ADDR
 #define CONFIG_CMD_MMC
 #define CONFIG_GENERIC_MMC