test: Load mac address with i2c eeprom
authorSean Anderson <sean.anderson@seco.com>
Thu, 5 May 2022 17:11:42 +0000 (13:11 -0400)
committerTom Rini <trini@konsulko.com>
Wed, 8 Jun 2022 18:00:22 +0000 (14:00 -0400)
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>
arch/sandbox/dts/test.dts
configs/sandbox_spl_defconfig
drivers/misc/i2c_eeprom_emul.c

index 13515dd..4d0fd47 100644 (file)
        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 {
                pinctrl-0 = <&pinmux_i2c0_pins>;
 
                eeprom@2c {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
                        reg = <0x2c>;
                        compatible = "i2c-eeprom";
                        sandbox,emul = <&emul_eeprom>;
                                        reg = <10 2>;
                                };
                        };
+
+                       eth3_addr: mac-address@24 {
+                               reg = <24 6>;
+                       };
                };
 
                rtc_0: rtc@43 {
index b45f478..ec2d26d 100644 (file)
@@ -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
index 85b127c..6f32087 100644 (file)
@@ -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;
 }