From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Grinberg Date: Sun, 6 Sep 2015 16:38:08 +0300 Subject: [U-Boot] [PATCH V2 4/4] arm: mx6: cm-fx6: modify device tree for old revisions of utilite In-Reply-To: <1441529318-23973-5-git-send-email-nikita@compulab.co.il> References: <1441529318-23973-1-git-send-email-nikita@compulab.co.il> <1441529318-23973-5-git-send-email-nikita@compulab.co.il> Message-ID: <55EC41C0.2010104@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > Cc: Igor Grinberg > Signed-off-by: Nikita Kiryanov > --- > 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 at 02100000/usdhc at 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.