[PATCH] ARM: at91: sama5d27_som1_ek: populate MAC address from EEPROM

Alexander Dahl ada at thorsis.com
Tue Jun 22 01:35:08 PDT 2021


Hei hei,

Am Tue, Jun 22, 2021 at 10:08:11AM +0200 schrieb Ahmad Fatoum:
> With the latest NVMEM enhancements merged, barebox networking core now
> always consults NVMEM cells referenced in the network controller
> device tree node before it falls back to randomizing a new address.
> 
> The SAM5D27-SOM1 has a 256 byte EEPROM, which holds a MAC address in its
> last 6 bytes. Describe this in the device tree, so boards using the SoM
> will get an unique MAC address assigned and fixed up into the kernel
> device tree. 

I have access to such a device, but I can not promise I have time to
test this currently. :-/

> This change can be dropped again when/if the change is
> submitted and applied upstream.

What do you mean with "upstream" here? Linux kernel?

I just had a short look into u-boot for that board, there's the i2c
eeprom set in dts only, and dts is still the old u-boot way, not dts
from kernel plus fixups in a separate file. The mac is set in
board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c like this:

 87 #define MAC24AA_MAC_OFFSET      0xfa
 88
 89 #ifdef CONFIG_MISC_INIT_R
 90 int misc_init_r(void)
 91 {
 92 #ifdef CONFIG_I2C_EEPROM
 93         at91_set_ethaddr(MAC24AA_MAC_OFFSET);
 94 #endif
 95         return 0;
 96 }
 97 #endif

What would be the right way for kernel, u-boot, and barebox? Have i2c
eeprom defined in dts and an nvmem cell on top like you proposed for
barebox now? Not sure if u-boot can do that (already)? But it would
still work if only Linux and barebox did it that way, right?

Greets
Alex

> 
> Reported-by: Alexander Dahl <ada at thorsis.com>
> Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
> ---
>  arch/arm/dts/at91-sama5d27_som1.dtsi   | 18 ++++++++++++++++++
>  arch/arm/dts/at91-sama5d27_som1_ek.dts |  2 +-
>  2 files changed, 19 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/dts/at91-sama5d27_som1.dtsi
> 
> diff --git a/arch/arm/dts/at91-sama5d27_som1.dtsi b/arch/arm/dts/at91-sama5d27_som1.dtsi
> new file mode 100644
> index 000000000000..0d84c45f9263
> --- /dev/null
> +++ b/arch/arm/dts/at91-sama5d27_som1.dtsi
> @@ -0,0 +1,18 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +#include "sama5d2.dtsi"
> +
> +&macb0 {
> +	nvmem-cells = <&macaddr>;
> +	nvmem-cell-names = "mac-address";
> +};
> +
> +&{/ahb/apb/i2c at f8028000/at24 at 50} {
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +
> +	macaddr: mac-address at fa {
> +		reg = <0xfa 6>;
> +		label = "mac-address";
> +	};
> +};
> diff --git a/arch/arm/dts/at91-sama5d27_som1_ek.dts b/arch/arm/dts/at91-sama5d27_som1_ek.dts
> index 97a326dd2b26..1a704b42680f 100644
> --- a/arch/arm/dts/at91-sama5d27_som1_ek.dts
> +++ b/arch/arm/dts/at91-sama5d27_som1_ek.dts
> @@ -4,7 +4,7 @@
>   */
>  
>  #include <arm/at91-sama5d27_som1_ek.dts>
> -#include "sama5d2.dtsi"
> +#include "at91-sama5d27_som1.dtsi"
>  
>  / {
>  	chosen {
> -- 
> 2.29.2
> 
> 
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox



More information about the barebox mailing list