[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