All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] Add support for custom names for AT24 EEPROMs
@ 2020-09-10 13:42 Jon Hunter
  2020-09-10 13:42 ` [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field Jon Hunter
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 13:42 UTC (permalink / raw)
  To: Bartosz Golaszewski, Rob Herring, Thierry Reding
  Cc: linux-i2c, linux-kernel, devicetree, linux-tegra, Jon Hunter

For platforms that have multiple boards and hence have multiple EEPROMs
for identifying the different boards, it is useful to label the EEPROMs
in device-tree so that they can be easily identified. For example, MAC
address information is stored in the EEPROM on the processor module for
some Jetson platforms which is not only required by the kernel but the
bootloader as well. So having a simple way to identify the EEPROM is
needed.

Jon Hunter (5):
  misc: eeprom: at24: Initialise AT24 NVMEM ID field
  dt-bindings: eeprom: at24: Add label property for AT24
  misc: eeprom: at24: Support custom device names for AT24 EEPROMs
  arm64: tegra: Add label properties for EEPROMs
  arm64: tegra: Populate EEPROMs for Jetson Xavier NX

 .../devicetree/bindings/eeprom/at24.yaml         |  4 ++++
 .../boot/dts/nvidia/tegra186-p2771-0000.dts      |  1 +
 arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi   |  1 +
 arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi   |  1 +
 .../boot/dts/nvidia/tegra194-p2972-0000.dts      |  1 +
 .../nvidia/tegra194-p3509-0000+p3668-0000.dts    | 14 ++++++++++++++
 .../boot/dts/nvidia/tegra194-p3668-0000.dtsi     | 16 ++++++++++++++++
 arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi   |  1 +
 .../boot/dts/nvidia/tegra210-p2371-2180.dts      |  1 +
 .../boot/dts/nvidia/tegra210-p3450-0000.dts      |  2 ++
 drivers/misc/eeprom/at24.c                       | 11 ++++++++++-
 11 files changed, 52 insertions(+), 1 deletion(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field
  2020-09-10 13:42 [PATCH 0/5] Add support for custom names for AT24 EEPROMs Jon Hunter
@ 2020-09-10 13:42 ` Jon Hunter
  2020-09-10 15:35   ` Bartosz Golaszewski
  2020-09-10 13:42 ` [PATCH 2/5] dt-bindings: eeprom: at24: Add label property for AT24 Jon Hunter
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 13:42 UTC (permalink / raw)
  To: Bartosz Golaszewski, Rob Herring, Thierry Reding
  Cc: linux-i2c, linux-kernel, devicetree, linux-tegra, Jon Hunter

The AT24 EEPROM driver does not initialise the 'id' field of the
nvmem_config structure and because the entire structure is not
initialised, it ends up with a random value. This causes the NVMEM
driver to append the device 'devid' value to name of the NVMEM
device. Although this is not a problem per-se, for I2C devices such as
the AT24, that already have a device unique name, there does not seem
much value in appending an additional 0 to the I2C name. For example,
appending a 0 to an I2C device name such as 1-0050 does not seem
necessary and maybe even a bit confusing. Therefore, fix this by
setting the NVMEM config.id to NVMEM_DEVID_NONE for AT24 EEPROMs.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 drivers/misc/eeprom/at24.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index e9df1ca251df..3f7a3bb6a36c 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -715,6 +715,7 @@ static int at24_probe(struct i2c_client *client)
 
 	nvmem_config.name = dev_name(dev);
 	nvmem_config.dev = dev;
+	nvmem_config.id = NVMEM_DEVID_NONE;
 	nvmem_config.read_only = !writable;
 	nvmem_config.root_only = !(flags & AT24_FLAG_IRUGO);
 	nvmem_config.owner = THIS_MODULE;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/5] dt-bindings: eeprom: at24: Add label property for AT24
  2020-09-10 13:42 [PATCH 0/5] Add support for custom names for AT24 EEPROMs Jon Hunter
  2020-09-10 13:42 ` [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field Jon Hunter
@ 2020-09-10 13:42 ` Jon Hunter
  2020-09-15 20:25   ` Rob Herring
  2020-09-10 13:42 ` [PATCH 3/5] misc: eeprom: at24: Support custom device names for AT24 EEPROMs Jon Hunter
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 13:42 UTC (permalink / raw)
  To: Bartosz Golaszewski, Rob Herring, Thierry Reding
  Cc: linux-i2c, linux-kernel, devicetree, linux-tegra, Jon Hunter

Add a label property for the AT24 EEPROM to allow a custom name to be
used for identifying the EEPROM on a board. This is useful when there
is more than one EEPROM present.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 Documentation/devicetree/bindings/eeprom/at24.yaml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/eeprom/at24.yaml b/Documentation/devicetree/bindings/eeprom/at24.yaml
index 4cee72d53318..5c00d8a146b0 100644
--- a/Documentation/devicetree/bindings/eeprom/at24.yaml
+++ b/Documentation/devicetree/bindings/eeprom/at24.yaml
@@ -114,6 +114,10 @@ properties:
           - const: renesas,r1ex24128
           - const: atmel,24c128
 
+  label:
+    description: Descriptive name of the EEPROM.
+    maxItems: 1
+
   reg:
     maxItems: 1
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/5] misc: eeprom: at24: Support custom device names for AT24 EEPROMs
  2020-09-10 13:42 [PATCH 0/5] Add support for custom names for AT24 EEPROMs Jon Hunter
  2020-09-10 13:42 ` [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field Jon Hunter
  2020-09-10 13:42 ` [PATCH 2/5] dt-bindings: eeprom: at24: Add label property for AT24 Jon Hunter
@ 2020-09-10 13:42 ` Jon Hunter
  2020-09-10 13:42 ` [PATCH 4/5] arm64: tegra: Add label properties for EEPROMs Jon Hunter
  2020-09-10 13:42 ` [PATCH 5/5] arm64: tegra: Populate EEPROMs for Jetson Xavier NX Jon Hunter
  4 siblings, 0 replies; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 13:42 UTC (permalink / raw)
  To: Bartosz Golaszewski, Rob Herring, Thierry Reding
  Cc: linux-i2c, linux-kernel, devicetree, linux-tegra, Jon Hunter

By using the label property, a more descriptive name can be populated
for AT24 EEPROMs NVMEM device. Update the AT24 driver to check to see
if the label property is present and if so, use this as the name for
NVMEM device.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 drivers/misc/eeprom/at24.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index 3f7a3bb6a36c..058be08a9a40 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -713,7 +713,15 @@ static int at24_probe(struct i2c_client *client)
 			return err;
 	}
 
-	nvmem_config.name = dev_name(dev);
+	if (device_property_present(dev, "label")) {
+		err = device_property_read_string(dev, "label",
+						  &nvmem_config.name);
+		if (err)
+			return err;
+	} else {
+		nvmem_config.name = dev_name(dev);
+	}
+
 	nvmem_config.dev = dev;
 	nvmem_config.id = NVMEM_DEVID_NONE;
 	nvmem_config.read_only = !writable;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 4/5] arm64: tegra: Add label properties for EEPROMs
  2020-09-10 13:42 [PATCH 0/5] Add support for custom names for AT24 EEPROMs Jon Hunter
                   ` (2 preceding siblings ...)
  2020-09-10 13:42 ` [PATCH 3/5] misc: eeprom: at24: Support custom device names for AT24 EEPROMs Jon Hunter
@ 2020-09-10 13:42 ` Jon Hunter
  2020-09-10 13:42 ` [PATCH 5/5] arm64: tegra: Populate EEPROMs for Jetson Xavier NX Jon Hunter
  4 siblings, 0 replies; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 13:42 UTC (permalink / raw)
  To: Bartosz Golaszewski, Rob Herring, Thierry Reding
  Cc: linux-i2c, linux-kernel, devicetree, linux-tegra, Jon Hunter

Populate the label property for the AT24 EEPROMs on the various Jetson
platforms. Note that the name 'module' is used to identify the EEPROM
on the processor module board and the name 'system' is used to identify
the EEPROM on the main base board (which is sometimes referred to as
the carrier board).

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 1 +
 arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi     | 1 +
 arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi     | 1 +
 arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts | 1 +
 arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi     | 1 +
 arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 1 +
 arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 2 ++
 7 files changed, 8 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
index 802b8c52489a..381a84912ba8 100644
--- a/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
@@ -222,6 +222,7 @@ eeprom@57 {
 			compatible = "atmel,24c02";
 			reg = <0x57>;
 
+			label = "system";
 			vcc-supply = <&vdd_1v8>;
 			address-width = <8>;
 			pagesize = <8>;
diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi b/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi
index 53d92fdd7f06..fd9177447711 100644
--- a/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi
@@ -173,6 +173,7 @@ eeprom@50 {
 			compatible = "atmel,24c02";
 			reg = <0x50>;
 
+			label = "module";
 			vcc-supply = <&vdd_1v8>;
 			address-width = <8>;
 			pagesize = <8>;
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
index 0ea0bd83cb8e..d71b7a1140fe 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
@@ -64,6 +64,7 @@ eeprom@50 {
 				compatible = "atmel,24c02";
 				reg = <0x50>;
 
+				label = "module";
 				vcc-supply = <&vdd_1v8ls>;
 				address-width = <8>;
 				pagesize = <8>;
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts b/arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
index 4d8a0e10250f..54d057beec59 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
@@ -28,6 +28,7 @@ eeprom@56 {
 				compatible = "atmel,24c02";
 				reg = <0x56>;
 
+				label = "system";
 				vcc-supply = <&vdd_1v8ls>;
 				address-width = <8>;
 				pagesize = <8>;
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
index 85ee7e6b71ac..6077d572d828 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
@@ -273,6 +273,7 @@ eeprom@50 {
 			compatible = "atmel,24c02";
 			reg = <0x50>;
 
+			label = "module";
 			vcc-supply = <&vdd_1v8>;
 			address-width = <8>;
 			pagesize = <8>;
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
index 56adf287a82c..4c9c2a054642 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
@@ -86,6 +86,7 @@ eeprom@57 {
 			compatible = "atmel,24c02";
 			reg = <0x57>;
 
+			label = "system";
 			vcc-supply = <&vdd_1v8>;
 			address-width = <8>;
 			pagesize = <8>;
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
index ba892cd4b5a9..859241db4b4d 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
@@ -144,6 +144,7 @@ eeprom@50 {
 			compatible = "atmel,24c02";
 			reg = <0x50>;
 
+			label = "module";
 			vcc-supply = <&vdd_1v8>;
 			address-width = <8>;
 			pagesize = <8>;
@@ -155,6 +156,7 @@ eeprom@57 {
 			compatible = "atmel,24c02";
 			reg = <0x57>;
 
+			label = "system";
 			vcc-supply = <&vdd_1v8>;
 			address-width = <8>;
 			pagesize = <8>;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 5/5] arm64: tegra: Populate EEPROMs for Jetson Xavier NX
  2020-09-10 13:42 [PATCH 0/5] Add support for custom names for AT24 EEPROMs Jon Hunter
                   ` (3 preceding siblings ...)
  2020-09-10 13:42 ` [PATCH 4/5] arm64: tegra: Add label properties for EEPROMs Jon Hunter
@ 2020-09-10 13:42 ` Jon Hunter
  4 siblings, 0 replies; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 13:42 UTC (permalink / raw)
  To: Bartosz Golaszewski, Rob Herring, Thierry Reding
  Cc: linux-i2c, linux-kernel, devicetree, linux-tegra, Jon Hunter

Populate the EEPROMs that are present on the Jetson Xavier NX developer
platform.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
 .../nvidia/tegra194-p3509-0000+p3668-0000.dts    | 14 ++++++++++++++
 .../boot/dts/nvidia/tegra194-p3668-0000.dtsi     | 16 ++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts b/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts
index c1c589805d6b..7f97b34216a0 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p3509-0000+p3668-0000.dts
@@ -27,6 +27,20 @@ ddc: i2c@3190000 {
 			status = "okay";
 		};
 
+		i2c@3160000 {
+			eeprom@57 {
+				compatible = "atmel,24c02";
+				reg = <0x57>;
+
+				label = "system";
+				vcc-supply = <&vdd_1v8>;
+				address-width = <8>;
+				pagesize = <8>;
+				size = <256>;
+				read-only;
+			};
+		};
+
 		hda@3510000 {
 			nvidia,model = "jetson-xavier-nx-hda";
 			status = "okay";
diff --git a/arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi b/arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi
index 10cb836aea7e..a2893be80507 100644
--- a/arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra194-p3668-0000.dtsi
@@ -58,6 +58,22 @@ serial@c280000 {
 			status = "okay";
 		};
 
+		i2c@3160000 {
+			status = "okay";
+
+			eeprom@50 {
+				compatible = "atmel,24c02";
+				reg = <0x50>;
+
+				label = "module";
+				vcc-supply = <&vdd_1v8ls>;
+				address-width = <8>;
+				pagesize = <8>;
+				size = <256>;
+				read-only;
+			};
+		};
+
 		/* SDMMC1 (SD/MMC) */
 		mmc@3400000 {
 			status = "okay";
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field
  2020-09-10 13:42 ` [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field Jon Hunter
@ 2020-09-10 15:35   ` Bartosz Golaszewski
  2020-09-10 18:15     ` Jon Hunter
  0 siblings, 1 reply; 11+ messages in thread
From: Bartosz Golaszewski @ 2020-09-10 15:35 UTC (permalink / raw)
  To: Jon Hunter
  Cc: Rob Herring, Thierry Reding, linux-i2c, LKML, linux-devicetree,
	linux-tegra

On Thu, Sep 10, 2020 at 3:43 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>
> The AT24 EEPROM driver does not initialise the 'id' field of the
> nvmem_config structure and because the entire structure is not
> initialised, it ends up with a random value. This causes the NVMEM
> driver to append the device 'devid' value to name of the NVMEM
> device. Although this is not a problem per-se, for I2C devices such as
> the AT24, that already have a device unique name, there does not seem
> much value in appending an additional 0 to the I2C name. For example,
> appending a 0 to an I2C device name such as 1-0050 does not seem
> necessary and maybe even a bit confusing. Therefore, fix this by
> setting the NVMEM config.id to NVMEM_DEVID_NONE for AT24 EEPROMs.
>
> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
> ---
>  drivers/misc/eeprom/at24.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
> index e9df1ca251df..3f7a3bb6a36c 100644
> --- a/drivers/misc/eeprom/at24.c
> +++ b/drivers/misc/eeprom/at24.c
> @@ -715,6 +715,7 @@ static int at24_probe(struct i2c_client *client)
>
>         nvmem_config.name = dev_name(dev);
>         nvmem_config.dev = dev;
> +       nvmem_config.id = NVMEM_DEVID_NONE;
>         nvmem_config.read_only = !writable;
>         nvmem_config.root_only = !(flags & AT24_FLAG_IRUGO);
>         nvmem_config.owner = THIS_MODULE;
> --
> 2.25.1
>

This patch is correct and thanks for catching it. I vaguely recall
wondering at some point why the appended 0 in the nvmem name for at24.
Unfortunately this change would affect how the device is visible in
user-space in /sys/bus/nvmem/devices/ and this could break existing
users. Also: there are many in-kernel users that would need to be
updated. I'm afraid we'll need some sort of backward compatibility.

Bartosz

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field
  2020-09-10 15:35   ` Bartosz Golaszewski
@ 2020-09-10 18:15     ` Jon Hunter
  2020-09-10 18:19       ` Jon Hunter
  0 siblings, 1 reply; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 18:15 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Rob Herring, Thierry Reding, linux-i2c, LKML, linux-devicetree,
	linux-tegra


On 10/09/2020 16:35, Bartosz Golaszewski wrote:
> On Thu, Sep 10, 2020 at 3:43 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>>
>> The AT24 EEPROM driver does not initialise the 'id' field of the
>> nvmem_config structure and because the entire structure is not
>> initialised, it ends up with a random value. This causes the NVMEM
>> driver to append the device 'devid' value to name of the NVMEM
>> device. Although this is not a problem per-se, for I2C devices such as
>> the AT24, that already have a device unique name, there does not seem
>> much value in appending an additional 0 to the I2C name. For example,
>> appending a 0 to an I2C device name such as 1-0050 does not seem
>> necessary and maybe even a bit confusing. Therefore, fix this by
>> setting the NVMEM config.id to NVMEM_DEVID_NONE for AT24 EEPROMs.
>>
>> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
>> ---
>>  drivers/misc/eeprom/at24.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
>> index e9df1ca251df..3f7a3bb6a36c 100644
>> --- a/drivers/misc/eeprom/at24.c
>> +++ b/drivers/misc/eeprom/at24.c
>> @@ -715,6 +715,7 @@ static int at24_probe(struct i2c_client *client)
>>
>>         nvmem_config.name = dev_name(dev);
>>         nvmem_config.dev = dev;
>> +       nvmem_config.id = NVMEM_DEVID_NONE;
>>         nvmem_config.read_only = !writable;
>>         nvmem_config.root_only = !(flags & AT24_FLAG_IRUGO);
>>         nvmem_config.owner = THIS_MODULE;
>> --
>> 2.25.1
>>
> 
> This patch is correct and thanks for catching it. I vaguely recall
> wondering at some point why the appended 0 in the nvmem name for at24.
> Unfortunately this change would affect how the device is visible in
> user-space in /sys/bus/nvmem/devices/ and this could break existing
> users. Also: there are many in-kernel users that would need to be
> updated. I'm afraid we'll need some sort of backward compatibility.


Thanks, yes that is a problem. I guess for now we could explicitly init
to NVMEM_DEVID_AUTO or maybe just 0 so that it defaults to the same path
in the NVMEM driver. However, I am not sure how we can make allow some
devices to use NVMEM_DEVID_NONE and others use something else. This is
not really something that we can describe in DT because it has nothing
to do with h/w.

Cheers
Jon

-- 
nvpublic

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field
  2020-09-10 18:15     ` Jon Hunter
@ 2020-09-10 18:19       ` Jon Hunter
  2020-09-11  7:45         ` Bartosz Golaszewski
  0 siblings, 1 reply; 11+ messages in thread
From: Jon Hunter @ 2020-09-10 18:19 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Rob Herring, Thierry Reding, linux-i2c, LKML, linux-devicetree,
	linux-tegra


On 10/09/2020 19:15, Jon Hunter wrote:
> 
> On 10/09/2020 16:35, Bartosz Golaszewski wrote:
>> On Thu, Sep 10, 2020 at 3:43 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>>>
>>> The AT24 EEPROM driver does not initialise the 'id' field of the
>>> nvmem_config structure and because the entire structure is not
>>> initialised, it ends up with a random value. This causes the NVMEM
>>> driver to append the device 'devid' value to name of the NVMEM
>>> device. Although this is not a problem per-se, for I2C devices such as
>>> the AT24, that already have a device unique name, there does not seem
>>> much value in appending an additional 0 to the I2C name. For example,
>>> appending a 0 to an I2C device name such as 1-0050 does not seem
>>> necessary and maybe even a bit confusing. Therefore, fix this by
>>> setting the NVMEM config.id to NVMEM_DEVID_NONE for AT24 EEPROMs.
>>>
>>> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
>>> ---
>>>  drivers/misc/eeprom/at24.c | 1 +
>>>  1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
>>> index e9df1ca251df..3f7a3bb6a36c 100644
>>> --- a/drivers/misc/eeprom/at24.c
>>> +++ b/drivers/misc/eeprom/at24.c
>>> @@ -715,6 +715,7 @@ static int at24_probe(struct i2c_client *client)
>>>
>>>         nvmem_config.name = dev_name(dev);
>>>         nvmem_config.dev = dev;
>>> +       nvmem_config.id = NVMEM_DEVID_NONE;
>>>         nvmem_config.read_only = !writable;
>>>         nvmem_config.root_only = !(flags & AT24_FLAG_IRUGO);
>>>         nvmem_config.owner = THIS_MODULE;
>>> --
>>> 2.25.1
>>>
>>
>> This patch is correct and thanks for catching it. I vaguely recall
>> wondering at some point why the appended 0 in the nvmem name for at24.
>> Unfortunately this change would affect how the device is visible in
>> user-space in /sys/bus/nvmem/devices/ and this could break existing
>> users. Also: there are many in-kernel users that would need to be
>> updated. I'm afraid we'll need some sort of backward compatibility.
> 
> 
> Thanks, yes that is a problem. I guess for now we could explicitly init
> to NVMEM_DEVID_AUTO or maybe just 0 so that it defaults to the same path
> in the NVMEM driver. However, I am not sure how we can make allow some
> devices to use NVMEM_DEVID_NONE and others use something else. This is
> not really something that we can describe in DT because it has nothing
> to do with h/w.


Unless we make the configuration of the 'id' dependent on the 'label'
property so something like ...

	if (device_property_present(dev, "label")) {
                nvmem_config.id = NVMEM_DEVID_NONE;
		err = device_property_read_string(dev, "label",
						  &nvmem_config.name);
		if (err)
			return err;
	} else {
                nvmem_config.id = NVMEM_DEVID_AUTO;
		nvmem_config.name = dev_name(dev);
	}

Cheers
Jon

-- 
nvpublic

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field
  2020-09-10 18:19       ` Jon Hunter
@ 2020-09-11  7:45         ` Bartosz Golaszewski
  0 siblings, 0 replies; 11+ messages in thread
From: Bartosz Golaszewski @ 2020-09-11  7:45 UTC (permalink / raw)
  To: Jon Hunter
  Cc: Rob Herring, Thierry Reding, linux-i2c, LKML, linux-devicetree,
	linux-tegra

On Thu, Sep 10, 2020 at 8:19 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>
>
> On 10/09/2020 19:15, Jon Hunter wrote:
> >
> > On 10/09/2020 16:35, Bartosz Golaszewski wrote:
> >> On Thu, Sep 10, 2020 at 3:43 PM Jon Hunter <jonathanh@nvidia.com> wrote:
> >>>
> >>> The AT24 EEPROM driver does not initialise the 'id' field of the
> >>> nvmem_config structure and because the entire structure is not
> >>> initialised, it ends up with a random value. This causes the NVMEM
> >>> driver to append the device 'devid' value to name of the NVMEM
> >>> device. Although this is not a problem per-se, for I2C devices such as
> >>> the AT24, that already have a device unique name, there does not seem
> >>> much value in appending an additional 0 to the I2C name. For example,
> >>> appending a 0 to an I2C device name such as 1-0050 does not seem
> >>> necessary and maybe even a bit confusing. Therefore, fix this by
> >>> setting the NVMEM config.id to NVMEM_DEVID_NONE for AT24 EEPROMs.
> >>>
> >>> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
> >>> ---
> >>>  drivers/misc/eeprom/at24.c | 1 +
> >>>  1 file changed, 1 insertion(+)
> >>>
> >>> diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
> >>> index e9df1ca251df..3f7a3bb6a36c 100644
> >>> --- a/drivers/misc/eeprom/at24.c
> >>> +++ b/drivers/misc/eeprom/at24.c
> >>> @@ -715,6 +715,7 @@ static int at24_probe(struct i2c_client *client)
> >>>
> >>>         nvmem_config.name = dev_name(dev);
> >>>         nvmem_config.dev = dev;
> >>> +       nvmem_config.id = NVMEM_DEVID_NONE;
> >>>         nvmem_config.read_only = !writable;
> >>>         nvmem_config.root_only = !(flags & AT24_FLAG_IRUGO);
> >>>         nvmem_config.owner = THIS_MODULE;
> >>> --
> >>> 2.25.1
> >>>
> >>
> >> This patch is correct and thanks for catching it. I vaguely recall
> >> wondering at some point why the appended 0 in the nvmem name for at24.
> >> Unfortunately this change would affect how the device is visible in
> >> user-space in /sys/bus/nvmem/devices/ and this could break existing
> >> users. Also: there are many in-kernel users that would need to be
> >> updated. I'm afraid we'll need some sort of backward compatibility.
> >
> >
> > Thanks, yes that is a problem. I guess for now we could explicitly init
> > to NVMEM_DEVID_AUTO or maybe just 0 so that it defaults to the same path
> > in the NVMEM driver. However, I am not sure how we can make allow some
> > devices to use NVMEM_DEVID_NONE and others use something else. This is
> > not really something that we can describe in DT because it has nothing
> > to do with h/w.
>
>
> Unless we make the configuration of the 'id' dependent on the 'label'
> property so something like ...
>
>         if (device_property_present(dev, "label")) {
>                 nvmem_config.id = NVMEM_DEVID_NONE;
>                 err = device_property_read_string(dev, "label",
>                                                   &nvmem_config.name);
>                 if (err)
>                         return err;
>         } else {
>                 nvmem_config.id = NVMEM_DEVID_AUTO;
>                 nvmem_config.name = dev_name(dev);
>         }
>
> Cheers
> Jon
>
> --
> nvpublic

Yes, this looks like the best compromise we can get for now. Please
make sure to document why we do this in the code.

Bartosz

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/5] dt-bindings: eeprom: at24: Add label property for AT24
  2020-09-10 13:42 ` [PATCH 2/5] dt-bindings: eeprom: at24: Add label property for AT24 Jon Hunter
@ 2020-09-15 20:25   ` Rob Herring
  0 siblings, 0 replies; 11+ messages in thread
From: Rob Herring @ 2020-09-15 20:25 UTC (permalink / raw)
  To: Jon Hunter
  Cc: Bartosz Golaszewski, Thierry Reding, linux-i2c, linux-kernel,
	devicetree, linux-tegra

On Thu, Sep 10, 2020 at 02:42:36PM +0100, Jon Hunter wrote:
> Add a label property for the AT24 EEPROM to allow a custom name to be
> used for identifying the EEPROM on a board. This is useful when there
> is more than one EEPROM present.
> 
> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
> ---
>  Documentation/devicetree/bindings/eeprom/at24.yaml | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/eeprom/at24.yaml b/Documentation/devicetree/bindings/eeprom/at24.yaml
> index 4cee72d53318..5c00d8a146b0 100644
> --- a/Documentation/devicetree/bindings/eeprom/at24.yaml
> +++ b/Documentation/devicetree/bindings/eeprom/at24.yaml
> @@ -114,6 +114,10 @@ properties:
>            - const: renesas,r1ex24128
>            - const: atmel,24c128
>  
> +  label:
> +    description: Descriptive name of the EEPROM.
> +    maxItems: 1

label is always a single string, so drop 'maxItems'.

> +
>    reg:
>      maxItems: 1
>  
> -- 
> 2.25.1
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-09-15 22:06 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-10 13:42 [PATCH 0/5] Add support for custom names for AT24 EEPROMs Jon Hunter
2020-09-10 13:42 ` [PATCH 1/5] misc: eeprom: at24: Initialise AT24 NVMEM ID field Jon Hunter
2020-09-10 15:35   ` Bartosz Golaszewski
2020-09-10 18:15     ` Jon Hunter
2020-09-10 18:19       ` Jon Hunter
2020-09-11  7:45         ` Bartosz Golaszewski
2020-09-10 13:42 ` [PATCH 2/5] dt-bindings: eeprom: at24: Add label property for AT24 Jon Hunter
2020-09-15 20:25   ` Rob Herring
2020-09-10 13:42 ` [PATCH 3/5] misc: eeprom: at24: Support custom device names for AT24 EEPROMs Jon Hunter
2020-09-10 13:42 ` [PATCH 4/5] arm64: tegra: Add label properties for EEPROMs Jon Hunter
2020-09-10 13:42 ` [PATCH 5/5] arm64: tegra: Populate EEPROMs for Jetson Xavier NX Jon Hunter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.