The BPI-F3 contains a 24c02 eeprom, that contains among other things the
MAC addresses of the two network interfaces. For this reason, mark it as
read-only.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
index 3b6e4f52e9aad..574d10fdf9b82 100644
--- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
@@ -115,6 +115,15 @@ &i2c2 {
pinctrl-0 = <&i2c2_0_cfg>;
pinctrl-names = "default";
status = "okay";
+
+ eeprom@50 {
+ compatible = "atmel,24c02";
+ reg = <0x50>;
+ vcc-supply = <&vcc1v8_sys>;
+ pagesize = <16>;
+ read-only;
+ size = <256>;
+ };
};
&i2c8 {
@@ -143,7 +152,7 @@ buck2 {
regulator-always-on;
};
- buck3 {
+ vcc1v8_sys: buck3 {
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1800000>;
regulator-ramp-delay = <5000>;
--
2.47.2
Hi Aurelien, On 9/22/25 05:01, Aurelien Jarno wrote: > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > MAC addresses of the two network interfaces. For this reason, mark it as > read-only. > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > --- > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > index 3b6e4f52e9aad..574d10fdf9b82 100644 > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > @@ -115,6 +115,15 @@ &i2c2 { > pinctrl-0 = <&i2c2_0_cfg>; > pinctrl-names = "default"; > status = "okay"; > + > + eeprom@50 { > + compatible = "atmel,24c02"; > + reg = <0x50>; > + vcc-supply = <&vcc1v8_sys>; > + pagesize = <16>; > + read-only; > + size = <256>; > + }; > }; > I wonder if it would possibly make sense to specify a nvmem-layout here. The BPI-F3 I have here has this in the 24c02: 00000000 54 6c 76 49 6e 66 6f 00 01 00 20 24 06 fe fe fe |TlvInfo... $....| 00000010 XX XX XX 2a 02 00 02 23 0c XX XX XX XX XX XX XX |...*...#.XXXXXXX| 00000020 XX XX XX XX XX fe 04 XX XX XX XX ff ff ff ff ff |XXXXX..XXXX.....| 00000030 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 00000100 (... with variable parts replaced with X) And, AFAICT, this is a "onie,tlv-layout" with fields: 0x24 mac-adddress 0x2a num-macs 0x23 serial-number 0xfe crc32 As you can see the mac-address assignment looks bogus with fe:fe:fe (it is used by vendor code though, so at least it seems to be intended). It does appear at least to have useful information. Can you confirm on your hardware? What do you think about this: should we add it now or add it when we have users? Vivian "dramforever" Wang
Hi Vivian, On 2025-09-23 14:32, Vivian Wang wrote: > Hi Aurelien, > > On 9/22/25 05:01, Aurelien Jarno wrote: > > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > > MAC addresses of the two network interfaces. For this reason, mark it as > > read-only. > > > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > > --- > > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > index 3b6e4f52e9aad..574d10fdf9b82 100644 > > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > @@ -115,6 +115,15 @@ &i2c2 { > > pinctrl-0 = <&i2c2_0_cfg>; > > pinctrl-names = "default"; > > status = "okay"; > > + > > + eeprom@50 { > > + compatible = "atmel,24c02"; > > + reg = <0x50>; > > + vcc-supply = <&vcc1v8_sys>; > > + pagesize = <16>; > > + read-only; > > + size = <256>; > > + }; > > }; > > > > I wonder if it would possibly make sense to specify a nvmem-layout here. > The BPI-F3 I have here has this in the 24c02: > > 00000000 54 6c 76 49 6e 66 6f 00 01 00 20 24 06 fe fe fe |TlvInfo... $....| > 00000010 XX XX XX 2a 02 00 02 23 0c XX XX XX XX XX XX XX |...*...#.XXXXXXX| > 00000020 XX XX XX XX XX fe 04 XX XX XX XX ff ff ff ff ff |XXXXX..XXXX.....| > 00000030 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| > * > 00000100 > > (... with variable parts replaced with X) > > And, AFAICT, this is a "onie,tlv-layout" with fields: > > 0x24 mac-adddress > 0x2a num-macs > 0x23 serial-number > 0xfe crc32 > > As you can see the mac-address assignment looks bogus with fe:fe:fe (it > is used by vendor code though, so at least it seems to be intended). It > does appear at least to have useful information. The reason I initially tried to dump the content of the eeprom was to check the MAC addresses provided to the kernel by u-boot at they looked strange to me starting with fe:fe:fe... But at least they match. > Can you confirm on your hardware? What do you think about this: should > we add it now or add it when we have users? I also have the TlvInfo data on my board, but it misses the serial-number field. This is a good idea to use the "onie,tlv-layout" layout, I'll do that in the V2. Aurelien -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://aurel32.net
On Sun, Sep 21, 2025 at 11:01:42PM +0200, Aurelien Jarno wrote: > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > MAC addresses of the two network interfaces. For this reason, mark it as > read-only. > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > --- > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > index 3b6e4f52e9aad..574d10fdf9b82 100644 > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > @@ -115,6 +115,15 @@ &i2c2 { > pinctrl-0 = <&i2c2_0_cfg>; > pinctrl-names = "default"; > status = "okay"; > + > + eeprom@50 { > + compatible = "atmel,24c02"; > + reg = <0x50>; > + vcc-supply = <&vcc1v8_sys>; > + pagesize = <16>; I'm not sure this is 16.. Could you double check it? - Troy > + read-only; > + size = <256>; > + }; > }; > > &i2c8 { > @@ -143,7 +152,7 @@ buck2 { > regulator-always-on; > }; > > - buck3 { > + vcc1v8_sys: buck3 { > regulator-min-microvolt = <500000>; > regulator-max-microvolt = <1800000>; > regulator-ramp-delay = <5000>; > -- > 2.47.2 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Hi, On 2025-09-23 10:00, Troy Mitchell wrote: > On Sun, Sep 21, 2025 at 11:01:42PM +0200, Aurelien Jarno wrote: > > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > > MAC addresses of the two network interfaces. For this reason, mark it as > > read-only. > > > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > > --- > > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > index 3b6e4f52e9aad..574d10fdf9b82 100644 > > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > @@ -115,6 +115,15 @@ &i2c2 { > > pinctrl-0 = <&i2c2_0_cfg>; > > pinctrl-names = "default"; > > status = "okay"; > > + > > + eeprom@50 { > > + compatible = "atmel,24c02"; > > + reg = <0x50>; > > + vcc-supply = <&vcc1v8_sys>; > > + pagesize = <16>; > I'm not sure this is 16.. > Could you double check it? Yes, this matches the datasheet: https://www.giantec-semi.com/juchen1123/uploads/pdf/GT24C02_DS_Au.pdf It says "Page Size: 16 bytes" Aurelien -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://aurel32.net
Hi Aurelien, On 23:01 Sun 21 Sep , Aurelien Jarno wrote: > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > MAC addresses of the two network interfaces. For this reason, mark it as > read-only. > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > --- > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > index 3b6e4f52e9aad..574d10fdf9b82 100644 > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > @@ -115,6 +115,15 @@ &i2c2 { > pinctrl-0 = <&i2c2_0_cfg>; > pinctrl-names = "default"; > status = "okay"; > + > + eeprom@50 { > + compatible = "atmel,24c02"; > + reg = <0x50>; > + vcc-supply = <&vcc1v8_sys>; > + pagesize = <16>; .. > + read-only; so you're sure there is no demand to write data to eeprom? (update info at linux env) > + size = <256>; > + }; > }; > > &i2c8 { > @@ -143,7 +152,7 @@ buck2 { > regulator-always-on; > }; > > - buck3 { > + vcc1v8_sys: buck3 { I'm not sure if adding an alias here is a good idea, it occurs buck3 serve the suppy for many devices, besides, to me it's more proper to name it as eeprom_vcc1v8 for the eeprom according to schematics in this case.. > regulator-min-microvolt = <500000>; > regulator-max-microvolt = <1800000>; > regulator-ramp-delay = <5000>; > -- > 2.47.2 > -- Yixun Lan (dlan)
Hi, On 2025-09-22 11:21, Yixun Lan wrote: > Hi Aurelien, > > On 23:01 Sun 21 Sep , Aurelien Jarno wrote: > > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > > MAC addresses of the two network interfaces. For this reason, mark it as > > read-only. > > > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > > --- > > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > index 3b6e4f52e9aad..574d10fdf9b82 100644 > > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > @@ -115,6 +115,15 @@ &i2c2 { > > pinctrl-0 = <&i2c2_0_cfg>; > > pinctrl-names = "default"; > > status = "okay"; > > + > > + eeprom@50 { > > + compatible = "atmel,24c02"; > > + reg = <0x50>; > > + vcc-supply = <&vcc1v8_sys>; > > + pagesize = <16>; > .. > > + read-only; > so you're sure there is no demand to write data to eeprom? > (update info at linux env) It seems to only contains board infos (mac addresses), but if there are other use cases, that can indeed be dropped. > > + size = <256>; > > + }; > > }; > > > > &i2c8 { > > @@ -143,7 +152,7 @@ buck2 { > > regulator-always-on; > > }; > > > > - buck3 { > > + vcc1v8_sys: buck3 { > I'm not sure if adding an alias here is a good idea, it occurs buck3 > serve the suppy for many devices, besides, to me it's more proper to > name it as eeprom_vcc1v8 for the eeprom according to schematics in > this case.. We need to add a label to be able to reference it for the eeprom vcc-supply, but we'll have to also reference it for other devices (e.g. emmc, wifi, phys, etc... It tried to choose a common name, ie the right most one on the schematics. Another option could be to call it buck3, but other name suggestions are welcome. -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://aurel32.net
On Mon, Sep 22, 2025 at 06:49:35AM +0200, Aurelien Jarno wrote: > Hi, > > On 2025-09-22 11:21, Yixun Lan wrote: > > Hi Aurelien, > > > > On 23:01 Sun 21 Sep , Aurelien Jarno wrote: > > > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > > > MAC addresses of the two network interfaces. For this reason, mark it as > > > read-only. > > > > > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > > > --- > > > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > index 3b6e4f52e9aad..574d10fdf9b82 100644 > > > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > @@ -115,6 +115,15 @@ &i2c2 { > > > pinctrl-0 = <&i2c2_0_cfg>; > > > pinctrl-names = "default"; > > > status = "okay"; > > > + > > > + eeprom@50 { > > > + compatible = "atmel,24c02"; > > > + reg = <0x50>; > > > + vcc-supply = <&vcc1v8_sys>; > > > + pagesize = <16>; > > .. > > > + read-only; > > so you're sure there is no demand to write data to eeprom? > > (update info at linux env) > > It seems to only contains board infos (mac addresses), but if there are > other use cases, that can indeed be dropped. Then you can split the EEPROM into different parts. Each part can be described as an individual nvmem cell in the device tree. Some of them can be marked as read-only, while others remain writable. Documentation/devicetree/bindings/eeprom/at24.yaml +15: ``` - $ref: /schemas/nvmem/nvmem-deprecated-cells.yaml ``` - Troy > > > > + size = <256>; > > > + }; > > > }; > > > > > > &i2c8 { > > > @@ -143,7 +152,7 @@ buck2 { > > > regulator-always-on; > > > }; > > > > > > - buck3 { > > > + vcc1v8_sys: buck3 { > > I'm not sure if adding an alias here is a good idea, it occurs buck3 > > serve the suppy for many devices, besides, to me it's more proper to > > name it as eeprom_vcc1v8 for the eeprom according to schematics in > > this case.. > > We need to add a label to be able to reference it for the eeprom > vcc-supply, but we'll have to also reference it for other devices (e.g. > emmc, wifi, phys, etc... It tried to choose a common name, ie the right > most one on the schematics. Another option could be to call it buck3, > but other name suggestions are welcome. > > -- > Aurelien Jarno GPG: 4096R/1DDD8C9B > aurelien@aurel32.net http://aurel32.net > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Hi Troy, On 2025-09-23 09:42, Troy Mitchell wrote: > On Mon, Sep 22, 2025 at 06:49:35AM +0200, Aurelien Jarno wrote: > > On 2025-09-22 11:21, Yixun Lan wrote: > > It seems to only contains board infos (mac addresses), but if there are > > other use cases, that can indeed be dropped. > Then you can split the EEPROM into different parts. > Each part can be described as an individual nvmem cell in the device tree. > Some of them can be marked as read-only, while others remain writable. > > Documentation/devicetree/bindings/eeprom/at24.yaml +15: > ``` > - $ref: /schemas/nvmem/nvmem-deprecated-cells.yaml > ``` As pointed by Vivian the best for that is to use "onie,tlv-layout". I'll do that in the V2. Aurelien -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://aurel32.net
Hi Aurelien, On 06:49 Mon 22 Sep , Aurelien Jarno wrote: > Hi, > > On 2025-09-22 11:21, Yixun Lan wrote: > > Hi Aurelien, > > > > On 23:01 Sun 21 Sep , Aurelien Jarno wrote: > > > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > > > MAC addresses of the two network interfaces. For this reason, mark it as > > > read-only. > > > > > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > > > --- > > > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > index 3b6e4f52e9aad..574d10fdf9b82 100644 > > > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > @@ -115,6 +115,15 @@ &i2c2 { > > > pinctrl-0 = <&i2c2_0_cfg>; > > > pinctrl-names = "default"; > > > status = "okay"; > > > + > > > + eeprom@50 { > > > + compatible = "atmel,24c02"; > > > + reg = <0x50>; > > > + vcc-supply = <&vcc1v8_sys>; > > > + pagesize = <16>; > > .. > > > + read-only; > > so you're sure there is no demand to write data to eeprom? > > (update info at linux env) > > It seems to only contains board infos (mac addresses), but if there are > other use cases, that can indeed be dropped. > On my second thought, I'm ok with it being "read-only", as we flash these infos during firmware burning stage, then never alter them later. > > > + size = <256>; > > > + }; > > > }; > > > > > > &i2c8 { > > > @@ -143,7 +152,7 @@ buck2 { > > > regulator-always-on; > > > }; > > > > > > - buck3 { > > > + vcc1v8_sys: buck3 { > > I'm not sure if adding an alias here is a good idea, it occurs buck3 > > serve the suppy for many devices, besides, to me it's more proper to > > name it as eeprom_vcc1v8 for the eeprom according to schematics in > > this case.. > > We need to add a label to be able to reference it for the eeprom > vcc-supply, but we'll have to also reference it for other devices (e.g. > emmc, wifi, phys, etc... It tried to choose a common name, ie the right > most one on the schematics. Another option could be to call it buck3, > but other name suggestions are welcome. how about simply making it "buck3_1v8", then probably add a comment later in the eeprom node? to mapping to the shecmatics vcc-supply = <&buck3_1v8>; /* EEPROM_VCC1V8 */ > > -- > Aurelien Jarno GPG: 4096R/1DDD8C9B > aurelien@aurel32.net http://aurel32.net -- Yixun Lan (dlan)
On 2025-09-22 16:01, Yixun Lan wrote: > Hi Aurelien, > > On 06:49 Mon 22 Sep , Aurelien Jarno wrote: > > Hi, > > > > On 2025-09-22 11:21, Yixun Lan wrote: > > > Hi Aurelien, > > > > > > On 23:01 Sun 21 Sep , Aurelien Jarno wrote: > > > > The BPI-F3 contains a 24c02 eeprom, that contains among other things the > > > > MAC addresses of the two network interfaces. For this reason, mark it as > > > > read-only. > > > > > > > > Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> > > > > --- > > > > arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 ++++++++++- > > > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > > index 3b6e4f52e9aad..574d10fdf9b82 100644 > > > > --- a/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > > +++ b/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts > > > > @@ -115,6 +115,15 @@ &i2c2 { > > > > pinctrl-0 = <&i2c2_0_cfg>; > > > > pinctrl-names = "default"; > > > > status = "okay"; > > > > + > > > > + eeprom@50 { > > > > + compatible = "atmel,24c02"; > > > > + reg = <0x50>; > > > > + vcc-supply = <&vcc1v8_sys>; > > > > + pagesize = <16>; > > > .. > > > > + read-only; > > > so you're sure there is no demand to write data to eeprom? > > > (update info at linux env) > > > > It seems to only contains board infos (mac addresses), but if there are > > other use cases, that can indeed be dropped. > > > On my second thought, I'm ok with it being "read-only", as we flash these > infos during firmware burning stage, then never alter them later. > > > > > + size = <256>; > > > > + }; > > > > }; > > > > > > > > &i2c8 { > > > > @@ -143,7 +152,7 @@ buck2 { > > > > regulator-always-on; > > > > }; > > > > > > > > - buck3 { > > > > + vcc1v8_sys: buck3 { > > > I'm not sure if adding an alias here is a good idea, it occurs buck3 > > > serve the suppy for many devices, besides, to me it's more proper to > > > name it as eeprom_vcc1v8 for the eeprom according to schematics in > > > this case.. > > > > We need to add a label to be able to reference it for the eeprom > > vcc-supply, but we'll have to also reference it for other devices (e.g. > > emmc, wifi, phys, etc... It tried to choose a common name, ie the right > > most one on the schematics. Another option could be to call it buck3, > > but other name suggestions are welcome. > how about simply making it "buck3_1v8", then probably add a comment > later in the eeprom node? to mapping to the shecmatics > vcc-supply = <&buck3_1v8>; /* EEPROM_VCC1V8 */ Thanks that sounds good. I'll send an updated patchset with that change. -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurelien@aurel32.net http://aurel32.net
© 2016 - 2025 Red Hat, Inc.