2022-03-10 12:50:33

by Sergiu Moga

[permalink] [raw]
Subject: [PATCH v2 0/3] dt-bindings: i2c: convert i2c-at91 to json-schema

This patch series addresses the conversion of the I2C DT binding
for Atmel/Microchip SoCs to Device Tree Schema format. The
SAMA7G5 compatible has also been added to the I2C DT binding. It also
ensures consistency across the SoC files regarding the ordering
of the `rx` and `tx` strings of the `dma-names` property of the
`i2c` nodes by changing it in the SoC file of `sama7g5`.

Changes since v1:
- Moved `allOf` after `required:`.
- Removed the `pinctrl` generic property.
- Replaced the undocumented `wm8731` compatible from `examples:` with
the documented `atmel,24c02`.
- Removed the unnecessary `oneOf` from the conditional `if` of `allOf`.
Instead the `sama7g5` compatible string is simply added to the `enum`.

Sergiu Moga (3):
ARM: dts: at91: sama7g5: Swap `rx` and `tx` for `i2c` nodes
dt-bindings: i2c: convert i2c-at91 to json-schema
dt-bindings: i2c: at91: Add SAMA7G5 compatible strings list

.../bindings/i2c/atmel,at91sam-i2c.yaml | 146 ++++++++++++++++++
.../devicetree/bindings/i2c/i2c-at91.txt | 82 ----------
arch/arm/boot/dts/sama7g5.dtsi | 18 +--
3 files changed, 155 insertions(+), 91 deletions(-)
create mode 100644 Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-at91.txt

--
2.25.1


2022-03-10 14:43:21

by Sergiu Moga

[permalink] [raw]
Subject: [PATCH v2 2/3] dt-bindings: i2c: convert i2c-at91 to json-schema

Convert I2C binding for Atmel/Microchip SoCs to Device Tree Schema
format.

Signed-off-by: Sergiu Moga <[email protected]>
---
.../bindings/i2c/atmel,at91sam-i2c.yaml | 140 ++++++++++++++++++
.../devicetree/bindings/i2c/i2c-at91.txt | 82 ----------
2 files changed, 140 insertions(+), 82 deletions(-)
create mode 100644 Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-at91.txt

diff --git a/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml b/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
new file mode 100644
index 000000000000..a64b7d0ce6bf
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (C) 2022 Microchip Technology, Inc. and its subsidiaries
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/atmel,at91sam-i2c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: I2C for Atmel/Microchip platforms
+
+maintainers:
+ - Alexandre Belloni <[email protected]>
+
+properties:
+ compatible:
+ enum:
+ - atmel,at91rm9200-i2c
+ - atmel,at91sam9261-i2c
+ - atmel,at91sam9260-i2c
+ - atmel,at91sam9g20-i2c
+ - atmel,at91sam9g10-i2c
+ - atmel,at91sam9x5-i2c
+ - atmel,sama5d4-i2c
+ - atmel,sama5d2-i2c
+ - microchip,sam9x60-i2c
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ clocks:
+ maxItems: 1
+
+ clock-frequency:
+ default: 100000
+
+ dmas:
+ items:
+ - description: TX DMA Channel Specifier
+ - description: RX DMA Channel Specifier
+
+ dma-names:
+ items:
+ - const: tx
+ - const: rx
+
+ atmel,fifo-size:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ Maximum number of data the RX and TX FIFOs can store for
+ FIFO capable I2C controllers.
+
+ scl-gpios: true
+
+ sda-gpios: true
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - "#address-cells"
+ - "#size-cells"
+ - clocks
+
+allOf:
+ - $ref: "i2c-controller.yaml"
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - atmel,sama5d4-i2c
+ - atmel,sama5d2-i2c
+ - microchip,sam9x60-i2c
+ then:
+ properties:
+ i2c-sda-hold-time-ns:
+ description:
+ TWD hold time
+ maxItems: 1
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/dma/at91.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c0: i2c@fff84000 {
+ compatible = "atmel,at91sam9g20-i2c";
+ reg = <0xfff84000 0x100>;
+ interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&twi0_clk>;
+ clock-frequency = <400000>;
+
+ eeprom@50 {
+ compatible = "atmel,24c512";
+ reg = <0x50>;
+ pagesize = <128>;
+ };
+ };
+
+ i2c1: i2c@f8034600 {
+ compatible = "atmel,sama5d2-i2c";
+ reg = <0xf8034600 0x100>;
+ interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
+ dmas = <&dma0
+ (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
+ AT91_XDMAC_DT_PERID(11)>,
+ <&dma0
+ (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
+ AT91_XDMAC_DT_PERID(12)>;
+ dma-names = "tx", "rx";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clocks = <&flx0>;
+ atmel,fifo-size = <16>;
+ i2c-sda-hold-time-ns = <336>;
+ pinctrl-names = "default", "gpio";
+ pinctrl-0 = <&pinctrl_i2c0>;
+ pinctrl-1 = <&pinctrl_i2c0_gpio>;
+ sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>;
+ scl-gpios = <&pioA 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+
+ eeprom@54 {
+ compatible = "atmel,24c02";
+ reg = <0x54>;
+ pagesize = <16>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/i2c/i2c-at91.txt b/Documentation/devicetree/bindings/i2c/i2c-at91.txt
deleted file mode 100644
index 2015f50aed0f..000000000000
--- a/Documentation/devicetree/bindings/i2c/i2c-at91.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-I2C for Atmel platforms
-
-Required properties :
-- compatible : Must be one of:
- "atmel,at91rm9200-i2c",
- "atmel,at91sam9261-i2c",
- "atmel,at91sam9260-i2c",
- "atmel,at91sam9g20-i2c",
- "atmel,at91sam9g10-i2c",
- "atmel,at91sam9x5-i2c",
- "atmel,sama5d4-i2c",
- "atmel,sama5d2-i2c",
- "microchip,sam9x60-i2c".
-- reg: physical base address of the controller and length of memory mapped
- region.
-- interrupts: interrupt number to the cpu.
-- #address-cells = <1>;
-- #size-cells = <0>;
-- clocks: phandles to input clocks.
-
-Optional properties:
-- clock-frequency: Desired I2C bus frequency in Hz, otherwise defaults to 100000
-- dmas: A list of two dma specifiers, one for each entry in dma-names.
-- dma-names: should contain "tx" and "rx".
-- atmel,fifo-size: maximum number of data the RX and TX FIFOs can store for FIFO
- capable I2C controllers.
-- i2c-sda-hold-time-ns: TWD hold time, only available for:
- "atmel,sama5d4-i2c",
- "atmel,sama5d2-i2c",
- "microchip,sam9x60-i2c".
-- scl-gpios: specify the gpio related to SCL pin
-- sda-gpios: specify the gpio related to SDA pin
-- pinctrl: add extra pinctrl to configure i2c pins to gpio function for i2c
- bus recovery, call it "gpio" state
-- Child nodes conforming to i2c bus binding
-
-
-Examples :
-
-i2c0: i2c@fff84000 {
- compatible = "atmel,at91sam9g20-i2c";
- reg = <0xfff84000 0x100>;
- interrupts = <12 4 6>;
- #address-cells = <1>;
- #size-cells = <0>;
- clocks = <&twi0_clk>;
- clock-frequency = <400000>;
-
- 24c512@50 {
- compatible = "atmel,24c512";
- reg = <0x50>;
- pagesize = <128>;
- }
-}
-
-i2c0: i2c@f8034600 {
- compatible = "atmel,sama5d2-i2c";
- reg = <0xf8034600 0x100>;
- interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
- dmas = <&dma0
- (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
- AT91_XDMAC_DT_PERID(11)>,
- <&dma0
- (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
- AT91_XDMAC_DT_PERID(12)>;
- dma-names = "tx", "rx";
- #address-cells = <1>;
- #size-cells = <0>;
- clocks = <&flx0>;
- atmel,fifo-size = <16>;
- i2c-sda-hold-time-ns = <336>;
- pinctrl-names = "default", "gpio";
- pinctrl-0 = <&pinctrl_i2c0>;
- pinctrl-1 = <&pinctrl_i2c0_gpio>;
- sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>;
- scl-gpios = <&pioA 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-
- wm8731: wm8731@1a {
- compatible = "wm8731";
- reg = <0x1a>;
- };
-};
--
2.25.1

2022-03-10 14:53:21

by Sergiu Moga

[permalink] [raw]
Subject: [PATCH v2 1/3] ARM: dts: at91: sama7g5: Swap `rx` and `tx` for `i2c` nodes

Swap `rx` and `tx` for the `dma-names` property of the `i2c` nodes
in order to maintain consistency across Microchip/Atmel SoC files.

Signed-off-by: Sergiu Moga <[email protected]>
Reviewed-by: Tudor Ambarus <[email protected]>
---
arch/arm/boot/dts/sama7g5.dtsi | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/arch/arm/boot/dts/sama7g5.dtsi b/arch/arm/boot/dts/sama7g5.dtsi
index 4decd3a91a76..f691c8f08d04 100644
--- a/arch/arm/boot/dts/sama7g5.dtsi
+++ b/arch/arm/boot/dts/sama7g5.dtsi
@@ -601,9 +601,9 @@ i2c1: i2c@600 {
#size-cells = <0>;
clocks = <&pmc PMC_TYPE_PERIPHERAL 39>;
atmel,fifo-size = <32>;
- dmas = <&dma0 AT91_XDMAC_DT_PERID(7)>,
- <&dma0 AT91_XDMAC_DT_PERID(8)>;
- dma-names = "rx", "tx";
+ dmas = <&dma0 AT91_XDMAC_DT_PERID(8)>,
+ <&dma0 AT91_XDMAC_DT_PERID(7)>;
+ dma-names = "tx", "rx";
status = "disabled";
};
};
@@ -786,9 +786,9 @@ i2c8: i2c@600 {
#size-cells = <0>;
clocks = <&pmc PMC_TYPE_PERIPHERAL 46>;
atmel,fifo-size = <32>;
- dmas = <&dma0 AT91_XDMAC_DT_PERID(21)>,
- <&dma0 AT91_XDMAC_DT_PERID(22)>;
- dma-names = "rx", "tx";
+ dmas = <&dma0 AT91_XDMAC_DT_PERID(22)>,
+ <&dma0 AT91_XDMAC_DT_PERID(21)>;
+ dma-names = "tx", "rx";
status = "disabled";
};
};
@@ -810,9 +810,9 @@ i2c9: i2c@600 {
#size-cells = <0>;
clocks = <&pmc PMC_TYPE_PERIPHERAL 47>;
atmel,fifo-size = <32>;
- dmas = <&dma0 AT91_XDMAC_DT_PERID(23)>,
- <&dma0 AT91_XDMAC_DT_PERID(24)>;
- dma-names = "rx", "tx";
+ dmas = <&dma0 AT91_XDMAC_DT_PERID(24)>,
+ <&dma0 AT91_XDMAC_DT_PERID(23)>;
+ dma-names = "tx", "rx";
status = "disabled";
};
};
--
2.25.1

2022-03-11 23:17:51

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] dt-bindings: i2c: convert i2c-at91 to json-schema

On Thu, 10 Mar 2022 13:45:52 +0200, Sergiu Moga wrote:
> Convert I2C binding for Atmel/Microchip SoCs to Device Tree Schema
> format.
>
> Signed-off-by: Sergiu Moga <[email protected]>
> ---
> .../bindings/i2c/atmel,at91sam-i2c.yaml | 140 ++++++++++++++++++
> .../devicetree/bindings/i2c/i2c-at91.txt | 82 ----------
> 2 files changed, 140 insertions(+), 82 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml
> delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-at91.txt
>

Applied, thanks!

2022-04-14 12:38:36

by Nicolas Ferre

[permalink] [raw]
Subject: Re: [PATCH v2 1/3] ARM: dts: at91: sama7g5: Swap `rx` and `tx` for `i2c` nodes

On 10/03/2022 at 12:45, Sergiu Moga wrote:
> Swap `rx` and `tx` for the `dma-names` property of the `i2c` nodes
> in order to maintain consistency across Microchip/Atmel SoC files.
>
> Signed-off-by: Sergiu Moga <[email protected]>
> Reviewed-by: Tudor Ambarus <[email protected]>

Acked-by: Nicolas Ferre <[email protected]>
As it fixes some of the warning in dt schema check in 5.18-rc1, I queue
this patch in "fixes" branch for 5.18.

Thanks, best regards,
Nicolas

> ---
> arch/arm/boot/dts/sama7g5.dtsi | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/boot/dts/sama7g5.dtsi b/arch/arm/boot/dts/sama7g5.dtsi
> index 4decd3a91a76..f691c8f08d04 100644
> --- a/arch/arm/boot/dts/sama7g5.dtsi
> +++ b/arch/arm/boot/dts/sama7g5.dtsi
> @@ -601,9 +601,9 @@ i2c1: i2c@600 {
> #size-cells = <0>;
> clocks = <&pmc PMC_TYPE_PERIPHERAL 39>;
> atmel,fifo-size = <32>;
> - dmas = <&dma0 AT91_XDMAC_DT_PERID(7)>,
> - <&dma0 AT91_XDMAC_DT_PERID(8)>;
> - dma-names = "rx", "tx";
> + dmas = <&dma0 AT91_XDMAC_DT_PERID(8)>,
> + <&dma0 AT91_XDMAC_DT_PERID(7)>;
> + dma-names = "tx", "rx";
> status = "disabled";
> };
> };
> @@ -786,9 +786,9 @@ i2c8: i2c@600 {
> #size-cells = <0>;
> clocks = <&pmc PMC_TYPE_PERIPHERAL 46>;
> atmel,fifo-size = <32>;
> - dmas = <&dma0 AT91_XDMAC_DT_PERID(21)>,
> - <&dma0 AT91_XDMAC_DT_PERID(22)>;
> - dma-names = "rx", "tx";
> + dmas = <&dma0 AT91_XDMAC_DT_PERID(22)>,
> + <&dma0 AT91_XDMAC_DT_PERID(21)>;
> + dma-names = "tx", "rx";
> status = "disabled";
> };
> };
> @@ -810,9 +810,9 @@ i2c9: i2c@600 {
> #size-cells = <0>;
> clocks = <&pmc PMC_TYPE_PERIPHERAL 47>;
> atmel,fifo-size = <32>;
> - dmas = <&dma0 AT91_XDMAC_DT_PERID(23)>,
> - <&dma0 AT91_XDMAC_DT_PERID(24)>;
> - dma-names = "rx", "tx";
> + dmas = <&dma0 AT91_XDMAC_DT_PERID(24)>,
> + <&dma0 AT91_XDMAC_DT_PERID(23)>;
> + dma-names = "tx", "rx";
> status = "disabled";
> };
> };


--
Nicolas Ferre