On 12/07/2016 12:34 AM, Yangbo Lu wrote:
> 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...@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@1560000";
> +     char esdhc1_path[] = "/soc/esdhc@1580000";
> +     u8 card_id;
> +
> +     do_fixup_by_path(blob, esdhc0_path, "status", "okay",
> +                      sizeof("okay"), 1);
> +

This controller is always "okay", isn't it?

> +     card_id = (QIXIS_READ(present2) & 0xe0) >> 5;
> +
> +     if (card_id == 0x7)

Please put a comment here to explain what present2 has and what 0x7 is.

> +             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);
> +}
> +

York
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to