aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Anderson2022-05-05 13:11:42 -0400
committerTom Rini2022-06-08 14:00:22 -0400
commit472caa69e3480dc8e3fe1dd929b528a599341768 (patch)
treee82b1ea4c9f312463ec7b9da9932867852778318
parent97d0f9bfdd025f0e7db8ff09238fe88d039c2a70 (diff)
test: Load mac address with i2c eeprom
This uses an i2c eeprom to load a mac address using the nvmem interface. Enable I2C_EEPROM for sandbox SPL since it is the only sandbox config which doesn't enable it eeprom. Signed-off-by: Sean Anderson <sean.anderson@seco.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--arch/sandbox/dts/test.dts9
-rw-r--r--configs/sandbox_spl_defconfig1
-rw-r--r--drivers/misc/i2c_eeprom_emul.c4
3 files changed, 13 insertions, 1 deletions
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 13515dd7ecf..4d0fd474abe 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -538,7 +538,8 @@
eth_3: sbe5 {
compatible = "sandbox,eth";
reg = <0x10005000 0x1000>;
- mac-address = [ 02 00 11 22 33 45 ];
+ nvmem-cells = <&eth3_addr>;
+ nvmem-cell-names = "mac-address";
};
eth@10004000 {
@@ -701,6 +702,8 @@
pinctrl-0 = <&pinmux_i2c0_pins>;
eeprom@2c {
+ #address-cells = <1>;
+ #size-cells = <1>;
reg = <0x2c>;
compatible = "i2c-eeprom";
sandbox,emul = <&emul_eeprom>;
@@ -712,6 +715,10 @@
reg = <10 2>;
};
};
+
+ eth3_addr: mac-address@24 {
+ reg = <24 6>;
+ };
};
rtc_0: rtc@43 {
diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig
index b45f4782fd0..ec2d26d4436 100644
--- a/configs/sandbox_spl_defconfig
+++ b/configs/sandbox_spl_defconfig
@@ -155,6 +155,7 @@ CONFIG_CROS_EC_SPI=y
CONFIG_P2SB=y
CONFIG_PWRSEQ=y
CONFIG_SPL_PWRSEQ=y
+CONFIG_I2C_EEPROM=y
CONFIG_MMC_SANDBOX=y
CONFIG_SPI_FLASH_SANDBOX=y
CONFIG_SPI_FLASH_ATMEL=y
diff --git a/drivers/misc/i2c_eeprom_emul.c b/drivers/misc/i2c_eeprom_emul.c
index 85b127c406c..6f32087ede5 100644
--- a/drivers/misc/i2c_eeprom_emul.c
+++ b/drivers/misc/i2c_eeprom_emul.c
@@ -171,11 +171,15 @@ static int sandbox_i2c_eeprom_probe(struct udevice *dev)
{
struct sandbox_i2c_flash_plat_data *plat = dev_get_plat(dev);
struct sandbox_i2c_flash *priv = dev_get_priv(dev);
+ /* For eth3 */
+ const u8 mac[] = { 0x02, 0x00, 0x11, 0x22, 0x33, 0x45 };
priv->data = calloc(1, plat->size);
if (!priv->data)
return -ENOMEM;
+ memcpy(&priv->data[24], mac, sizeof(mac));
+
return 0;
}