Inconsistent "compatible" string for Terasic DE0-Nano-SoC / Atlas SoC Kit
Ian Abbott
abbotti at mev.co.uk
Tue Nov 2 07:22:51 PDT 2021
Hi there!
I have a slight issue getting BootLoaderSpec entries for Terasic
DE0-Nano-SoC to work:
barebox at Terasic DE0-Nano-SoC/Atlas-SoC Kit:/ boot mmc0
blspec: ignoring entry with incompatible devicetree "terasic,de0-atlas"
Nothing bootable found on 'mmc0'
Nothing bootable found
From the (recent) Linux kernel sources
"arch/arm/boot/dts/socfpga_cyclone5_de0_nano_soc.dts":
model = "Terasic DE-0(Atlas)";
compatible = "terasic,de0-atlas", "altr,socfpga-cyclone5", "altr,socfpga";
Of course, the above compatible string matches the barebox source
"dts/src/arm/socfpga_cyclone5_de0_nano_soc.dts" file.
However the "model" and "compatible" strings get overridden by the
barebox source "arch/arm/dts/socfpga_cyclone5_de0_nano_soc.dts":
model = "Terasic DE0-Nano-SoC/Atlas-SoC Kit";
compatible = "terasic,de0-nano-soc","altr,socfpga-cyclone5",
"altr,socfpga";
The socfpga_init() function in
"arch/arm/boards/terasic-de0-nano-soc/board.c" also checks the
"compatible" string for registering a PHY fixup:
static int socfpga_init(void)
{
if (!of_machine_is_compatible("terasic,de0-nano-soc"))
return 0;
if (IS_ENABLED(CONFIG_PHYLIB))
phy_register_fixup_for_uid(PHY_ID_KSZ9031, MICREL_PHY_ID_MASK, phy_fixup);
return 0;
}
I think I can get everything working by changing barebox's "compatible"
string to the following:
compatible = "terasic,de0-atlas", "terasic,de0-nano-soc",
"altr,socfpga-cyclone5", "altr,socfpga";
Then the socfpga_init() function and the blspec loader should both be happy.
--
-=( Ian Abbott <abbotti at mev.co.uk> || MEV Ltd. is a company )=-
-=( registered in England & Wales. Regd. number: 02862268. )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || www.mev.co.uk )=-
More information about the barebox
mailing list