[U-Boot] [PATCH 2/2] armv8: ls1012a: define esdhc_status_fixup for QDS board
Yangbo Lu
yangbo.lu at nxp.com
Wed Dec 7 09:20:37 CET 2016
The LS1012AQDS board has a hardware issue. When there is no eMMC
adapter card inserted, the command inhibit bits of eSDHC_PRSSTAT
register will never release. This would cause below continious
error messages in linux since it uses polling mode to detect card.
"mmc1: Controller never released inhibit bit(s)."
"mmc1: Controller never released inhibit bit(s)."
"mmc1: Controller never released inhibit bit(s)."
This patch is to define esdhc_status_fixup function to disable eSDHC2
status if no eMMC adapter card is detected.
Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
---
board/freescale/ls1012aqds/ls1012aqds.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/board/freescale/ls1012aqds/ls1012aqds.c b/board/freescale/ls1012aqds/ls1012aqds.c
index 94440b3..a3229f7 100644
--- a/board/freescale/ls1012aqds/ls1012aqds.c
+++ b/board/freescale/ls1012aqds/ls1012aqds.c
@@ -121,6 +121,25 @@ int board_eth_init(bd_t *bis)
return pci_eth_init(bis);
}
+int esdhc_status_fixup(void *blob, const char *compat)
+{
+ char esdhc0_path[] = "/soc/esdhc at 1560000";
+ char esdhc1_path[] = "/soc/esdhc at 1580000";
+ u8 card_id;
+
+ do_fixup_by_path(blob, esdhc0_path, "status", "okay",
+ sizeof("okay"), 1);
+
+ card_id = (QIXIS_READ(present2) & 0xe0) >> 5;
+
+ if (card_id == 0x7)
+ do_fixup_by_path(blob, esdhc1_path, "status", "disabled",
+ sizeof("disabled"), 1);
+ else
+ do_fixup_by_path(blob, esdhc1_path, "status", "okay",
+ sizeof("okay"), 1);
+}
+
#ifdef CONFIG_OF_BOARD_SETUP
int ft_board_setup(void *blob, bd_t *bd)
{
--
2.1.0.27.g96db324
More information about the U-Boot
mailing list