Inconsistent "compatible" string for Terasic DE0-Nano-SoC / Atlas SoC Kit

Ian Abbott abbotti at
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 

	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", 

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;

		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 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. || )=-

More information about the barebox mailing list