Hi Heinrich,

On Thu, Mar 21, 2024 at 07:11:47PM +0100, Heinrich Schuchardt wrote:
> The differences between the Milk-V Mars board and the VisionFive 2 board
> are small enough that we can support both using the same U-Boot build.
> 
> * The model and compatible property are taken from proposed Linux patches.
> * The EEPROM is atmel,24c02 according to the vendor U-Boot.
> * The second Ethernet port is not available.
> 
> Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
> ---
> v2:
>       do not overwrite /soc/i2c@12050000/eeprom@50/compatible
>       
> ---
>  board/starfive/visionfive2/spl.c | 99 ++++++++++++++++++++++++++++----
>  1 file changed, 87 insertions(+), 12 deletions(-)
> 
> diff --git a/board/starfive/visionfive2/spl.c 
> b/board/starfive/visionfive2/spl.c
> index 1b49945d11b..e0e33cb37ba 100644
> --- a/board/starfive/visionfive2/spl.c
> +++ b/board/starfive/visionfive2/spl.c
> @@ -67,6 +87,49 @@ static const struct starfive_vf2_pro starfive_verb[] = {
>               "tx-internal-delay-ps", "0"},
>  };
>  
> +void spl_fdt_fixup_mars(void *fdt)
> +{
> +     static const char compat[] = "milkv,mars\0starfive,jh7110";
> +     u32 phandle;
> +     u8 i;
> +     int offset;
> +     int ret;
> +
> +     fdt_setprop(fdt, fdt_path_offset(fdt, "/"), "compatible", compat, 
> sizeof(compat));
> +     fdt_setprop_string(fdt, fdt_path_offset(fdt, "/"), "model",
> +                        "Milk-V Mars");
> +
> +     /* gmac0 */
> +     offset = fdt_path_offset(fdt, "/soc/clock-controller@17000000");
> +     phandle = fdt_get_phandle(fdt, offset);
> +     offset = fdt_path_offset(fdt, "/soc/ethernet@16030000");
> +
> +     fdt_setprop_u32(fdt, offset, "assigned-clocks", phandle);
> +     fdt_appendprop_u32(fdt, offset, "assigned-clocks", 
> JH7110_AONCLK_GMAC0_TX);
> +     fdt_setprop_u32(fdt, offset,  "assigned-clock-parents", phandle);
> +     fdt_appendprop_u32(fdt, offset,  "assigned-clock-parents",
> +                        JH7110_AONCLK_GMAC0_RMII_RTX);
> +
> +     /* gmac1 */
> +     fdt_setprop_string(fdt, fdt_path_offset(fdt, "/soc/ethernet@16040000"),
> +                        "status", "disabled");
> +
> +     for (i = 0; i < ARRAY_SIZE(milk_v_mars); i++) {
> +             offset = fdt_path_offset(fdt, milk_v_mars[i].path);
> +
> +             if (starfive_verb[i].value)

Should this be milk_v_mars[i].value ?

> +                     ret = fdt_setprop_u32(fdt, offset, milk_v_mars[i].name,
> +                                           dectoul(milk_v_mars[i].value, 
> NULL));
> +             else
> +                     ret = fdt_setprop_empty(fdt, offset, 
> milk_v_mars[i].name);
> +
> +             if (ret) {
> +                     pr_err("%s set prop %s fail.\n", __func__, 
> milk_v_mars[i].name);
> +                             break;
> +             }
> +     }
> +}
> +

Reply via email to