[PATCH v3 1/3] dt-bindings: eeprom: Add ST M24LR support

Abd-Alrhman Masalkhi posted 3 patches 6 months, 2 weeks ago
There is a newer version of this series
[PATCH v3 1/3] dt-bindings: eeprom: Add ST M24LR support
Posted by Abd-Alrhman Masalkhi 6 months, 2 weeks ago
Add support for STMicroelectronics M24LR RFID/NFC EEPROM chips.
These devices use two I2C addresses: the primary address provides
access to control and system parameter registers, while the
secondary address is used for EEPROM access.

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
---
Changes in v3:
 - Dropped reference to the i2c-mux binding.
 - Added reference to the nvmem binding to reflect EEPROM usage.
 - Updated 'reg' property to represent the device using two I2C addresses.
 - Fixed DT schema errors and yamllint warnings.
 - Removed the unused 'pagesize' property.
---
 .../devicetree/bindings/misc/st,m24lr.yaml    | 54 +++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/misc/st,m24lr.yaml

diff --git a/Documentation/devicetree/bindings/misc/st,m24lr.yaml b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
new file mode 100644
index 000000000000..775d218381b7
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/st,m24lr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics M24LR NFC/RFID EEPROM
+
+maintainers:
+  - Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
+
+description:
+  STMicroelectronics M24LR series are dual-interface (RF + I2C)
+  EEPROM chips. These devices support I2C-based access to both
+  memory and a system area that controls authentication and configuration.
+  They expose two I2C addresses, one for the system parameter sector and
+  one for the EEPROM.
+
+allOf:
+  - $ref: /schemas/nvmem/nvmem.yaml#
+
+properties:
+  compatible:
+    enum:
+      - st,m24lr04e-r
+      - st,m24lr16e-r
+      - st,m24lr64e-r
+
+  reg:
+    description:
+      Two I2C address, the primary for control registers, the secondary
+      for EEPROM access.
+    minItems: 2
+    maxItems: 2
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      eeprom@57 {
+        compatible = "st,m24lr04e-r";
+        reg = <0x57>, /* primary-device */
+              <0x53>; /* secondary-device */
+      };
+    };
+...
-- 
2.43.0
Re: [PATCH v3 1/3] dt-bindings: eeprom: Add ST M24LR support
Posted by Krzysztof Kozlowski 6 months, 2 weeks ago
On 06/06/2025 14:06, Abd-Alrhman Masalkhi wrote:
> Add support for STMicroelectronics M24LR RFID/NFC EEPROM chips.
> These devices use two I2C addresses: the primary address provides
> access to control and system parameter registers, while the
> secondary address is used for EEPROM access.
> 
> Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
> ---
> Changes in v3:
>  - Dropped reference to the i2c-mux binding.
>  - Added reference to the nvmem binding to reflect EEPROM usage.
>  - Updated 'reg' property to represent the device using two I2C addresses.
>  - Fixed DT schema errors and yamllint warnings.
>  - Removed the unused 'pagesize' property.
> ---
>  .../devicetree/bindings/misc/st,m24lr.yaml    | 54 +++++++++++++++++++


How did you implement this feedback:

"That's not a misc device, but eeprom. Place it in appropriate directory."
?

There is no such device as a misc device.

>  1 file changed, 54 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/misc/st,m24lr.yaml
> 
> diff --git a/Documentation/devicetree/bindings/misc/st,m24lr.yaml b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
> new file mode 100644
> index 000000000000..775d218381b7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
> @@ -0,0 +1,54 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/misc/st,m24lr.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: STMicroelectronics M24LR NFC/RFID EEPROM
> +
> +maintainers:
> +  - Abd-Alrhman Masalkhi <abd.masalkhi@gmail.com>
> +
> +description:
> +  STMicroelectronics M24LR series are dual-interface (RF + I2C)
> +  EEPROM chips. These devices support I2C-based access to both
> +  memory and a system area that controls authentication and configuration.
> +  They expose two I2C addresses, one for the system parameter sector and
> +  one for the EEPROM.
> +
> +allOf:
> +  - $ref: /schemas/nvmem/nvmem.yaml#
> +
> +properties:
> +  compatible:
> +    enum:
> +      - st,m24lr04e-r
> +      - st,m24lr16e-r
> +      - st,m24lr64e-r
> +
> +  reg:
> +    description:
> +      Two I2C address, the primary for control registers, the secondary
> +      for EEPROM access.
> +    minItems: 2
> +    maxItems: 2

Replace this all with items and description:
items:
  - description: foo
  - description: bar


> +
> +required:
> +  - compatible
> +  - reg
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    i2c {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      eeprom@57 {
> +        compatible = "st,m24lr04e-r";
> +        reg = <0x57>, /* primary-device */
> +              <0x53>; /* secondary-device */

Where is the rest of at24 properties? Not relevant? Not correct? I had
impression this is fully at24 compatible.


Best regards,
Krzysztof
Re: [PATCH v3 1/3] dt-bindings: eeprom: Add ST M24LR support
Posted by Abd-Alrhman Masalkhi 6 months, 2 weeks ago
Hi Krzysztof,

thank you for the feedback.

> How did you implement this feedback:
>
> "That's not a misc device, but eeprom. Place it in appropriate directory."
> ?
>
> There is no such device as a misc device.

I will move it to the eeprom dirctory 

>> +  reg:
>> +    description:
>> +      Two I2C address, the primary for control registers, the secondary
>> +      for EEPROM access.
>> +    minItems: 2
>> +    maxItems: 2
>
> Replace this all with items and description:
> items:
>   - description: foo
>   - description: bar

I will do that.


>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +
>> +unevaluatedProperties: false
>> +
>> +examples:
>> +  - |
>> +    i2c {
>> +      #address-cells = <1>;
>> +      #size-cells = <0>;
>> +
>> +      eeprom@57 {
>> +        compatible = "st,m24lr04e-r";
>> +        reg = <0x57>, /* primary-device */
>> +              <0x53>; /* secondary-device */
>
> Where is the rest of at24 properties? Not relevant? Not correct? I had
> impression this is fully at24 compatible.

The driver does not currently accept at24-style configuration properties
(e.g., pagesize, address-width) because the EEPROM access is handled
internally using fixed parameters per device variant. Let me know if
adding support for these via DT is preferred, I'm happy to extend it
for flexibility.

Best regards,
Abd-Alrhman Masalkhi