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

E Shattow lucent at gmail.com
Fri Mar 8 23:37:36 CET 2024


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?

On Sun, Mar 3, 2024 at 5:02 AM Heinrich Schuchardt <
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>
> ---
>  .../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