[RFC 2/5] riscv: set fdtfile on Milk-V Mars

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Fri Mar 8 23:57:12 CET 2024


On 3/8/24 23:37, E Shattow wrote:
> Sharing the info from Mars CM Lite 4GB:
> --------EEPROM INFO--------
> Vendor : MILK-V
> Product full SN: MARC-V10-2340-D004E016-000006DF
> data version: 0x2
> PCB revision: 0xc1
> BOM revision: A
> Ethernet MAC0 address: 6c:cf:39:00:83:11
> Ethernet MAC1 address: 6c:cf:39:00:83:12
> --------EEPROM INFO--------
> 
> I do not like this practice of force setting fdtfile environment 
> variable. If I set fdtfile from u-boot prompt and saveenv, I expect that 
> my action as the user will persist over a reboot but instead it gets 
> ignored and overwritten by this strategy. Is this necessary to happen 
> before the boot scripts?

We could check if $fdtfile is already set before the update.

This would require that the default environment does not include it. Cf.

include/configs/starfive-visionfive2.h:51:
	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \

Best regards

Heinrich

> 
> On Sun, Mar 3, 2024 at 5:02 AM Heinrich Schuchardt 
> <heinrich.schuchardt at canonical.com 
> <mailto:heinrich.schuchardt at canonical.com>> wrote:
> 
>     Set environment variable fdtfile to the correct value for the Milk-V
>     Mars
>     board.
> 
>     Signed-off-by: Heinrich Schuchardt
>     <heinrich.schuchardt at canonical.com
>     <mailto:heinrich.schuchardt at canonical.com>>
>     ---
>       .../visionfive2/starfive_visionfive2.c        | 43 +++++++++++++------
>       1 file changed, 30 insertions(+), 13 deletions(-)
> 
>     diff --git a/board/starfive/visionfive2/starfive_visionfive2.c
>     b/board/starfive/visionfive2/starfive_visionfive2.c
>     index 78e118d5a05..9970e309690 100644
>     --- a/board/starfive/visionfive2/starfive_visionfive2.c
>     +++ b/board/starfive/visionfive2/starfive_visionfive2.c
>     @@ -9,6 +9,7 @@
>       #include <dm.h>
>       #include <fdt_support.h>
>       #include <env.h>
>     +#include <log.h>
>       #include <asm/arch/eeprom.h>
>       #include <asm/io.h>
>       #include <asm/sections.h>
>     @@ -17,6 +18,8 @@
>       DECLARE_GLOBAL_DATA_PTR;
>       #define JH7110_L2_PREFETCHER_BASE_ADDR         0x2030000
>       #define JH7110_L2_PREFETCHER_HART_OFFSET       0x2000
>     +#define FDTFILE_MILK_V_MARS \
>     +       "starfive/jh7110-milkv-mars.dtb"
>       #define FDTFILE_VISIONFIVE2_1_2A \
>              "starfive/jh7110-starfive-visionfive-2-v1.2a.dtb"
>       #define FDTFILE_VISIONFIVE2_1_3B \
>     @@ -48,20 +51,34 @@ static void set_fdtfile(void)
>       {
>              u8 version;
>              const char *fdtfile;
>     +       const char *product_id;
> 
>     -       version = get_pcb_revision_from_eeprom();
>     -       switch (version) {
>     -       case 'a':
>     -       case 'A':
>     -               fdtfile = FDTFILE_VISIONFIVE2_1_2A;
>     -               break;
>     -
>     -       case 'b':
>     -       case 'B':
>     -       default:
>     -               fdtfile = FDTFILE_VISIONFIVE2_1_3B;
>     -               break;
>     -       };
>     +       product_id = get_product_id_from_eeprom();
>     +       if (!product_id) {
>     +               log_err("Can't read EEPROM\n");
>     +               return;
>     +       }
>     +       if (!strncmp(product_id, "MARS", 4)) {
>     +               fdtfile = FDTFILE_MILK_V_MARS;
>     +       } else if (!strncmp(product_id, "VF7110", 6)) {
>     +               version = get_pcb_revision_from_eeprom();
>     +
>     +               switch (version) {
>     +               case 'a':
>     +               case 'A':
>     +                       fdtfile = FDTFILE_VISIONFIVE2_1_2A;
>     +                       break;
>     +
>     +               case 'b':
>     +               case 'B':
>     +               default:
>     +                       fdtfile = FDTFILE_VISIONFIVE2_1_3B;
>     +                       break;
>     +               }
>     +       } else {
>     +               log_err("Unknown product\n");
>     +               return;
>     +       }
> 
>              env_set("fdtfile", fdtfile);
>       }
>     -- 
>     2.43.0
> 



More information about the U-Boot mailing list