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

login
register
mail settings
Submitter Zhao Chenhui
Date Dec. 28, 2010, 6:40 a.m.
Message ID <1293518430-16318-1-git-send-email-b26998@freescale.com>
Download mbox | patch
Permalink /patch/76825/
State Superseded
Delegated to: Kumar Gala
Headers show

Comments

Zhao Chenhui - Dec. 28, 2010, 6:40 a.m.
Some 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.

The problem was introduced by this commit:
commit b33433a63fe08c9e723ea15a7c7c7143bf527c6d
Author: Anton Vorontsov <avorontsov@ru.mvista.com>
Date:   Wed Jun 10 00:25:29 2009 +0400

    fsl_esdhc: Add device tree fixups

Signed-off-by: Chenhui Zhao <b26998@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 drivers/mmc/fsl_esdhc.c       |    2 ++
 include/configs/MPC837XEMDS.h |    1 +
 include/configs/MPC837XERDB.h |    1 +
 include/configs/MPC8569MDS.h  |    1 +
 4 files changed, 5 insertions(+), 0 deletions(-)
Anton Vorontsov - Dec. 28, 2010, 3:54 p.m.
On Tue, Dec 28, 2010 at 02:40:30PM +0800, Chenhui Zhao wrote:
> Some 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.
> 
> The problem was introduced by this commit:

I would not say 'the problem was introduced'. ;-) Back in 2009
all platforms w/ eSDHC were using muxed eSDHC pins, so disabling
eSDHC was a sane choice.

Anyway, the patch looks mostly OK. One comment below though.

> commit b33433a63fe08c9e723ea15a7c7c7143bf527c6d
> Author: Anton Vorontsov <avorontsov@ru.mvista.com>
> Date:   Wed Jun 10 00:25:29 2009 +0400
> 
>     fsl_esdhc: Add device tree fixups
> 
> Signed-off-by: Chenhui Zhao <b26998@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
>  drivers/mmc/fsl_esdhc.c       |    2 ++
>  include/configs/MPC837XEMDS.h |    1 +
>  include/configs/MPC837XERDB.h |    1 +
>  include/configs/MPC8569MDS.h  |    1 +
>  4 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index cd78714..4c8caa9 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -527,10 +527,12 @@ 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;

Wouldn't gcc complain about unused "out" label?

>  	}
> +#endif
>  
>  	do_fixup_by_compat_u32(blob, compat, "clock-frequency",
>  			       gd->sdhc_clk, 1);

Thanks,

Patch

diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index cd78714..4c8caa9 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -527,10 +527,12 @@  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;
 	}
+#endif
 
 	do_fixup_by_compat_u32(blob, compat, "clock-frequency",
 			       gd->sdhc_clk, 1);
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