]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
test: Load mac address using RTC
authorSean Anderson <sean.anderson@seco.com>
Thu, 5 May 2022 17:11:43 +0000 (13:11 -0400)
committerTom Rini <trini@konsulko.com>
Wed, 8 Jun 2022 18:00:22 +0000 (14:00 -0400)
This uses the nvmem API to load a mac address from an RTC.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/sandbox/dts/test.dts
drivers/rtc/i2c_rtc_emul.c

index 4d0fd474abe6c466cfcaeaff01efd5b5634d4d8d..afcdda944d40d4720c6831af0c2b79e2508164d3 100644 (file)
        dsa_eth0: dsa-test-eth {
                compatible = "sandbox,eth";
                reg = <0x10006000 0x1000>;
-               mac-address = [ 02 00 11 22 33 48 ];
+               nvmem-cells = <&eth4_addr>;
+               nvmem-cell-names = "mac-address";
        };
 
        dsa-test {
                };
 
                rtc_0: rtc@43 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
                        reg = <0x43>;
                        compatible = "sandbox-rtc";
                        sandbox,emul = <&emul0>;
+
+                       eth4_addr: mac-address@40 {
+                               reg = <0x40 6>;
+                       };
                };
 
                rtc_1: rtc@61 {
index ba418c25daf6b99fa6b692ca9decdba7294010a3..c307d6036dd5b87ca4fc256a47d3938ccdbb980e 100644 (file)
@@ -203,6 +203,15 @@ static int sandbox_i2c_rtc_bind(struct udevice *dev)
        return 0;
 }
 
+static int sandbox_i2c_rtc_probe(struct udevice *dev)
+{
+       const u8 mac[] = { 0x02, 0x00, 0x11, 0x22, 0x33, 0x48 };
+       struct sandbox_i2c_rtc_plat_data *plat = dev_get_plat(dev);
+
+       memcpy(&plat->reg[0x40], mac, sizeof(mac));
+       return 0;
+}
+
 static const struct udevice_id sandbox_i2c_rtc_ids[] = {
        { .compatible = "sandbox,i2c-rtc-emul" },
        { }
@@ -213,6 +222,7 @@ U_BOOT_DRIVER(sandbox_i2c_rtc_emul) = {
        .id             = UCLASS_I2C_EMUL,
        .of_match       = sandbox_i2c_rtc_ids,
        .bind           = sandbox_i2c_rtc_bind,
+       .probe          = sandbox_i2c_rtc_probe,
        .priv_auto      = sizeof(struct sandbox_i2c_rtc),
        .plat_auto      = sizeof(struct sandbox_i2c_rtc_plat_data),
        .ops            = &sandbox_i2c_rtc_emul_ops,