diff options
Diffstat (limited to 'package/boot/uboot-layerscape/patches/0056-mmc-fsl_esdhc-disable-sdhc2-when-no-card-inserted-fo.patch')
-rw-r--r-- | package/boot/uboot-layerscape/patches/0056-mmc-fsl_esdhc-disable-sdhc2-when-no-card-inserted-fo.patch | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/package/boot/uboot-layerscape/patches/0056-mmc-fsl_esdhc-disable-sdhc2-when-no-card-inserted-fo.patch b/package/boot/uboot-layerscape/patches/0056-mmc-fsl_esdhc-disable-sdhc2-when-no-card-inserted-fo.patch new file mode 100644 index 0000000..c95639f --- /dev/null +++ b/package/boot/uboot-layerscape/patches/0056-mmc-fsl_esdhc-disable-sdhc2-when-no-card-inserted-fo.patch @@ -0,0 +1,93 @@ +From 22424b4b25faefec704556d47751ad54c811ee09 Mon Sep 17 00:00:00 2001 +From: Yangbo Lu <yangbo.lu@nxp.com> +Date: Wed, 15 Jun 2016 15:45:12 +0800 +Subject: [PATCH 56/93] mmc: fsl_esdhc: disable sdhc2 when no card inserted + for ls1012aqds + +This is a temporary workaround patch for ls1012aqds becasue there +was host controller hardware issue found on some QDS boards when +there was no eMMC adapter card inserted. This would cause below +continious error messages in linux. So this patch is to disable +sdhc2 when finding there isn't card inserted. +"mmc1: Controller never released inhibit bit(s)." + +Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> +--- + board/freescale/ls1012aqds/ls1012aqds.c | 11 +++++++++++ + drivers/mmc/fsl_esdhc.c | 9 +++++++++ + include/fdt_support.h | 4 +++- + 3 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/board/freescale/ls1012aqds/ls1012aqds.c b/board/freescale/ls1012aqds/ls1012aqds.c +index b7365e8..56004ea 100644 +--- a/board/freescale/ls1012aqds/ls1012aqds.c ++++ b/board/freescale/ls1012aqds/ls1012aqds.c +@@ -161,6 +161,17 @@ int select_i2c_ch_pca9547(u8 ch) + return 0; + } + ++int mmc_check_sdhc2_card(void) ++{ ++ u8 card_id; ++ ++ card_id = (QIXIS_READ(present2) & 0xe0) >> 5; ++ if (card_id == 0x7) ++ return 0; ++ else ++ return 1; ++} ++ + int dram_init(void) + { + mmdc_init(); +diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c +index 2c6e175..98f3cca 100644 +--- a/drivers/mmc/fsl_esdhc.c ++++ b/drivers/mmc/fsl_esdhc.c +@@ -774,6 +774,11 @@ int fsl_esdhc_mmc_init(bd_t *bis) + #endif + } + ++__weak int mmc_check_sdhc2_card(void) ++{ ++ return 1; ++} ++ + #ifdef CONFIG_FSL_ESDHC_ADAPTER_IDENT + void mmc_adapter_card_type_ident(void) + { +@@ -817,6 +822,7 @@ void mmc_adapter_card_type_ident(void) + void fdt_fixup_esdhc(void *blob, bd_t *bd) + { + const char *compat = "fsl,esdhc"; ++ const char *compat1 = "fsl,ls1012a-esdhc1"; + + #ifdef CONFIG_FSL_ESDHC_PIN_MUX + if (!hwconfig("esdhc")) { +@@ -839,5 +845,8 @@ void fdt_fixup_esdhc(void *blob, bd_t *bd) + #endif + do_fixup_by_compat(blob, compat, "status", "okay", + 4 + 1, 1); ++ if (!mmc_check_sdhc2_card()) ++ do_fixup_by_compat(blob, compat1, "status", "disabled", ++ 4 + 1, 1); + } + #endif +diff --git a/include/fdt_support.h b/include/fdt_support.h +index 296add0..2e66eb1 100644 +--- a/include/fdt_support.h ++++ b/include/fdt_support.h +@@ -240,7 +240,9 @@ int arch_fixup_memory_node(void *blob); + + int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width, + u32 height, u32 stride, const char *format); +- ++#ifdef CONFIG_FSL_ESDHC ++int mmc_check_sdhc2_card(void); ++#endif + #endif /* ifdef CONFIG_OF_LIBFDT */ + + #ifdef USE_HOSTCC +-- +1.7.9.5 + |