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; > + } > + } > +} > +