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

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(-)
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

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,
participants (2)
-
Anton Vorontsov
-
Chenhui Zhao