armv8: ls1012a: define esdhc_status_fixup for QDS board
The LS1012AQDS board has a hardware issue. When there is no eMMC adapter card inserted in SDHC2 adapter slot, the command inhibit bits of eSDHC2_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 for QDS to disable SDHC2 status if no eMMC adapter card is detected. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
fce1e16c55
commit
208e1ae8d1
1 changed files with 28 additions and 0 deletions
|
@ -121,6 +121,34 @@ 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@1560000";
|
||||
char esdhc1_path[] = "/soc/esdhc@1580000";
|
||||
u8 card_id;
|
||||
|
||||
do_fixup_by_path(blob, esdhc0_path, "status", "okay",
|
||||
sizeof("okay"), 1);
|
||||
|
||||
/*
|
||||
* The Presence Detect 2 register detects the installation
|
||||
* of cards in various PCI Express or SGMII slots.
|
||||
*
|
||||
* STAT_PRS2[7:5]: Specifies the type of card installed in the
|
||||
* SDHC2 Adapter slot. 0b111 indicates no adapter is installed.
|
||||
*/
|
||||
card_id = (QIXIS_READ(present2) & 0xe0) >> 5;
|
||||
|
||||
/* If no adapter is installed in SDHC2, disable SDHC2 */
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF_BOARD_SETUP
|
||||
int ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue