On 09/06/15 11:48, Nikita Kiryanov wrote:
> Old revisions of Utilite (a miniature PC based on cm-fx6) do not have
> a card detect for mmc, and thus the kernel needs to be told that
> there's a persistent storage on usdhc3 to force it to probe the mmc
> card.
> 
> Check the baseboard revision and modify the device tree accordingly
> if needed.
> 
> Cc: Stefano Babic <sba...@denx.de>
> Cc: Igor Grinberg <grinb...@compulab.co.il>
> Signed-off-by: Nikita Kiryanov <nik...@compulab.co.il>
> ---
> Changes in V2:
>       - #define USDHC3_PATH instead of const variable usdhc3_path
>       - Do not update device tree on eeprom read failures in a more explicit
>         way
> 
>  board/compulab/cm_fx6/cm_fx6.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
> index 572111d..a21e7b0 100644
> --- a/board/compulab/cm_fx6/cm_fx6.c
> +++ b/board/compulab/cm_fx6/cm_fx6.c
> @@ -580,9 +580,14 @@ int cm_fx6_setup_ecspi(void) { return 0; }
>  #endif
>  
>  #ifdef CONFIG_OF_BOARD_SETUP
> +#define USDHC3_PATH  "/soc/aips-bus@02100000/usdhc@02198000/"
>  int ft_board_setup(void *blob, bd_t *bd)
>  {
> +     u32 baseboard_rev;
> +     int nodeoffset;
>       uint8_t enetaddr[6];
> +     char baseboard_name[16];

That would probably have the actual size (macro).

> +     int err;
>  
>       /* MAC addr */
>       if (eth_getenv_enetaddr("ethaddr", enetaddr)) {
> @@ -596,6 +601,21 @@ int ft_board_setup(void *blob, bd_t *bd)
>                                    enetaddr, 6, 1);
>       }
>  
> +     baseboard_rev = cl_eeprom_get_board_rev(0);
> +     err = cl_eeprom_get_product_name((uchar *)baseboard_name, 0);

I would replace the 0 with a define explaining what that is.

> +     if (err || baseboard_rev == 0)
> +             return 0; /* Assume not an early revision SB-FX6m baseboard */
> +
> +     if (!strncmp("SB-FX6m", baseboard_name, 7) && baseboard_rev <= 120) {
> +             fdt_shrink_to_minimum(blob); /* Make room for new properties */
> +             nodeoffset = fdt_path_offset(blob, USDHC3_PATH);
> +             fdt_delprop(blob, nodeoffset, "cd-gpios");
> +             fdt_find_and_setprop(blob, USDHC3_PATH, "non-removable",
> +                                  NULL, 0, 1);
> +             fdt_find_and_setprop(blob, USDHC3_PATH, "keep-power-in-suspend",
> +                                  NULL, 0, 1);
> +     }
> +
>       return 0;
>  }
>  #endif
> 

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

Reply via email to