[U-Boot] [linux-sunxi] Re: [RFC PATCH 08/11] sunxi: SPL: add FIT config selector for Pine64 boards

Icenowy Zheng icenowy at aosc.xyz
Tue Jan 24 07:30:24 CET 2017


2017年1月24日 01:29于 Maxime Ripard <maxime.ripard at free-electrons.com>写道:
>
> On Sat, Jan 21, 2017 at 03:15:27PM +0000, André Przywara wrote: 
> > >>> On Fri, Jan 20, 2017 at 01:53:28AM +0000, Andre Przywara wrote:  
> > >>>> For a board or platform to support FIT loading in the SPL, it has to 
> > >>>> provide a board_fit_config_name_match() routine, which helps to select 
> > >>>> one of possibly multiple DTBs contained in a FIT image. 
> > >>>> Provide a simple function to cover the two different Pine64 models, 
> > >>>> which can be easily told apart by looking at the amount of installed 
> > >>>> RAM. 
> > >>>> 
> > >>>> Signed-off-by: Andre Przywara <andre.przywara at arm.com> 
> > >>>> --- 
> > >>>>  board/sunxi/board.c | 13 +++++++++++++ 
> > >>>>  1 file changed, 13 insertions(+) 
> > >>>> 
> > >>>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c 
> > >>>> index 5365638..bbbb826 100644 
> > >>>> --- a/board/sunxi/board.c 
> > >>>> +++ b/board/sunxi/board.c 
> > >>>> @@ -726,3 +726,16 @@ int ft_board_setup(void *blob, bd_t *bd) 
> > >>>>  #endif 
> > >>>>  return 0; 
> > >>>>  } 
> > >>>> + 
> > >>>> +#ifdef CONFIG_SPL_LOAD_FIT 
> > >>>> +int board_fit_config_name_match(const char *name) 
> > >>>> +{ 
> > >>>> +#ifdef CONFIG_MACH_SUN50I 
> > >>>> + if ((gd->ram_size > 512 * 1024 * 1024)) 
> > >>>> + return !strcmp(name, "sun50i-a64-pine64-plus"); 
> > >>>> + else 
> > >>>> + return !strcmp(name, "sun50i-a64-pine64"); 
> > >>>> +#endif 
> > >>>> + return -1; 
> > >>>> +}  
> > >>> 
> > >>> That looks fishy. It means that any A64 board with CONFIG_SPL_LOAD_FIT 
> > >>> enabled will be considered a pine64 board?  
> > >> 
> > >> Yes, at least for now, because that's the only A64 board we officially 
> > >> support so far. 
> > >> And yes again, it is fishy. It is more a demo or a placeholder for now, 
> > >> because you _need_ an implementation of board_fit_config_name_match() 
> > >> once you enable CONFIG_SPL_LOAD_FIT. 
> > >> 
> > >> One solution would be to have only one DTB supported per build, so 
> > >> board_fit_config_name_match() always returns 0. 
> > >> 
> > >> Another (better) solution would be to store the board name in the SPL 
> > >> header, which could be done later when flashing the image. Then this 
> > >> function would just return strcmp(name, spl_header_name) or 0 if no name 
> > >> is found for whatever reason. 
> > > 
> > > Yes, this is a good solution in the case if we have some non-removable 
> > > storage on the board (SPI NOR flash, NAND, EEPROM or something else). 
> > > We can discuss it separately. 
> > 
> > I totally agree. I rebased your patch to latest mainline already and 
> > will send out something later. 
> > 
> > > But the current generation of Pine64 boards don't have any 
> > > non-removable storage yet. My understanding is that you tried to 
> > > provide the DTB selection, which is based on circumstantial evidences, 
> > > such as the RAM size. IMHO this is also a valid selection method, 
> > > because it can reduce the number of required OS image variants. 
> > 
> > Yes, the point is that for U-Boot's purposes the only difference between 
> > the Pine64 and Pine64+ (apart from DRAM size, which is autodetected) is 
> > using MII vs. RGMII for the Ethernet PHY. The sun8i_emac driver gets 
> > this information from the DT only, so there is no point at all for 
> > different defconfigs. And the DRAM size is a safe indicator for that 
> > difference, at least if we confine our view to Pine64 boards. 
> > 
> > Now how other boards fit in here is a separate discussion IMO, so let's 
> > solve one problem after the other. 
> > I just thought that we could use: 
> > 
> > #ifdef CONFIG_SPL_LOAD_FIT 
> > int board_fit_config_name_match(const char *name) 
> > { 
> > return strcmp(name, CONFIG_DEFAULT_DEVICE_TREE); 
> > } 
> > #endif 
>
> I guess an easy way around this would be to add a Kconfig option for 
> the pine64, like I tried to do for the CHIP (but never ended up 
> merging). That way, at least we won't impact the other board, and we 
> can have that default. 

For every alike, SPL-compatible, easily-detectable board groups?

>
> Maxime 
>
> -- 
> Maxime Ripard, Free Electrons 
> Embedded Linux and Kernel engineering 
> http://free-electrons.com 
>
> -- 
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group. 
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe at googlegroups.com. 
> For more options, visit https://groups.google.com/d/optout. 


More information about the U-Boot mailing list