Hi Troy, On 29/03/2014 23:34, Troy Kisky wrote: > This removes one block in the move toward 1 u-boot > for both a mx6q (quad) and mx6dl (duallite) processor. > > Now fdt_file hardcoded value can be removed. > > Signed-off-by: Troy Kisky <troy.ki...@boundarydevices.com> > ---
I have a general problem with this implementation. I am ok if, as you proposed some times ago, there is a general rule for the "default" dtb file in the CONFIG_EXTRA_ENV. However, you are binding in code naming conventions. In U-boot, it must be allowed to set the environment as the user wants, and this must be not overwritten by such an internal code. I mean: a board user, if he wants, should be allowed to do something as setenv fdt_file my_preferred_dtb_name.dtb and this must work when the file is loaded from storage - this is not possible if the rule chosen from user is overwritten by code. This makes the environment useless and generates headaches for a lot of users. They will ask themselves why the wrong file is taken when they tried in any way to set it differently... > arch/arm/imx-common/cpu.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ > arch/arm/lib/board.c | 7 +++++++ > 2 files changed, 51 insertions(+) > > diff --git a/arch/arm/imx-common/cpu.c b/arch/arm/imx-common/cpu.c > index a77c4de..5d48011 100644 > --- a/arch/arm/imx-common/cpu.c > +++ b/arch/arm/imx-common/cpu.c > @@ -180,3 +180,47 @@ void arch_preboot_os(void) > ipuv3_fb_shutdown(); > } > #endif > + > +const char *get_dtb_prefix(u32 imxtype) > +{ > + switch (imxtype) { > + case MXC_CPU_MX6Q: > + case MXC_CPU_MX6D: > + return "imx6q"; /* Quad/Dual-core version of the mx6 */ > + case MXC_CPU_MX6DL: > + case MXC_CPU_MX6SOLO: > + return "imx6dl"; /* Dual Lite/Solo version of the mx6 */ > + case MXC_CPU_MX6SL: > + return "imx6sl"; /* Solo-Lite version of the mx6 */ > + case MXC_CPU_MX51: > + return "imx51"; > + case MXC_CPU_MX53: > + return "imx53"; > + } > + return "??"; > +} > + > +int cpu_late_init(void) > +{ > + char buf[128]; > + const char *board; > + u32 imxtype = (get_cpu_rev() >> 12) & 0xff; > + > + if (getenv("fdt_file")) > + return 0; > + board = getenv("board"); > + if (!board) { > + board = CONFIG_SYS_BOARD; > + if ((board[0] == 'm') && (board[1] == 'x')) { > + if (board[2] == '6') { > + board += 3; > + } else if (board[2] == '5') { > + if ((board[3] == '1') || (board[3] == '3')) > + board += 4; > + } > + } > + } > + sprintf(buf, "%s-%s.dtb", get_dtb_prefix(imxtype), board); > + setenv("fdt_file", buf); > + return 0; > +} > diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c > index e9a7708..61cee98 100644 > --- a/arch/arm/lib/board.c > +++ b/arch/arm/lib/board.c > @@ -496,6 +496,11 @@ static void display_fdt_model(const void *blob) > } > #endif > > +int __weak cpu_late_init(void) > +{ > + return 0; > +} > + > /************************************************************************ > * > * This is the next part if the initialization sequence: we are now > @@ -649,6 +654,8 @@ void board_init_r(gd_t *id, ulong dest_addr) > board_late_init(); > #endif > > + cpu_late_init(); > + > #ifdef CONFIG_BITBANGMII > bb_miiphy_init(); > #endif > Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot