diff mbox series

dt-bindings: serial: Move omap-serial.txt to YAML schema

Message ID 20210527165636.939-1-vigneshr@ti.com (mailing list archive)
State New, archived
Headers show
Series dt-bindings: serial: Move omap-serial.txt to YAML schema | expand

Commit Message

Vignesh Raghavendra May 27, 2021, 4:56 p.m. UTC
Convert serial-omap.txt to YAML schema for better checks and documentation.

Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
---
 .../bindings/serial/omap_serial.txt           |  40 ------
 .../bindings/serial/ti,omap4-uart.yaml        | 116 ++++++++++++++++++
 2 files changed, 116 insertions(+), 40 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/serial/omap_serial.txt
 create mode 100644 Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml

Comments

Grygorii Strashko May 27, 2021, 5:49 p.m. UTC | #1
On 27/05/2021 19:56, Vignesh Raghavendra wrote:
> Convert serial-omap.txt to YAML schema for better checks and documentation.
> 
> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> ---
>   .../bindings/serial/omap_serial.txt           |  40 ------
>   .../bindings/serial/ti,omap4-uart.yaml        | 116 ++++++++++++++++++
>   2 files changed, 116 insertions(+), 40 deletions(-)
>   delete mode 100644 Documentation/devicetree/bindings/serial/omap_serial.txt
>   create mode 100644 Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml

Why omap4? Seems ti,omap-uart.yaml is more suitable.

> 
> diff --git a/Documentation/devicetree/bindings/serial/omap_serial.txt b/Documentation/devicetree/bindings/serial/omap_serial.txt
> deleted file mode 100644
> index c2db8cabf2ab..000000000000
> --- a/Documentation/devicetree/bindings/serial/omap_serial.txt
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -OMAP UART controller
> -

[...]

> diff --git a/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml b/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> new file mode 100644
> index 000000000000..b3e426c24a9e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> @@ -0,0 +1,116 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/serial/ti,omap4-uart.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Bindings for 8250 compliant UARTs on TI's OMAP and K3 SoCs
> +
> +maintainers:
> +  - Vignesh Raghavendra <vigneshr@ti.com>
> +
> +allOf:
> +  - $ref: /schemas/serial/serial.yaml#
> +  - $ref: /schemas/serial/rs485.yaml#
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - enum:
> +          - ti,am3352-uart
> +          - ti,am4372-uart
> +          - ti,am654-uart
> +          - ti,dra742-uart
> +          - ti,omap2-uart
> +          - ti,omap3-uart
> +          - ti,omap4-uart
> +      - items:
> +          - enum:
> +              - ti,am64-uart
> +              - ti,j721e-uart
> +          - const: ti,am654-uart
> +
> +  ti,hwmods:
> +    description:
> +      Must be "uart<n>", n being the instance number (1-based)
> +      This property is applicable only on legacy platforms mainly omap2/3
> +      and ti81xx and should not be used on other platforms.
> +    $ref: /schemas/types.yaml#/definitions/string
> +    deprecated: true
> +
> +  dmas:
> +    minItems: 1
> +    maxItems: 2
> +
> +  dma-names:
> +    items:
> +      - const: tx
> +      - const: rx
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    minItems: 1
> +    maxItems: 2

Could you add description for interrupts, pls?

> +
> +  clocks:
> +    maxItems: 1
> +
> +  clock-names:
> +    const: fclk
> +
> +  reg-shift:
> +    const: 2
> +  reg-io-width:
> +    const: 4
> +
> +  rts-gpios: true
> +  cts-gpios: true
> +  dtr-gpios: true
> +  dsr-gpios: true
> +  rng-gpios: true
> +  dcd-gpios: true
> +  rs485-rts-delay: true
> +  rs485-rts-active-low: true
> +  rs485-rx-during-tx: true
> +  rs485-rts-active-high: true
> +  linux,rs485-enabled-at-boot-time: true
> +  rts-gpio: true
> +  power-domains: true
> +  clock-frequency: true
> +  current-speed: true
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +
> +additionalProperties: false
> +
> +if:
> +  properties:
> +    compatible:
> +      oneOf:
> +        - const: ti,omap2-uart
> +        - const: ti,omap3-uart
> +        - const: ti,omap4-uart
> +
> +then:
> +  properties:
> +    ti,hwmods:
> +      items:
> +        - pattern: "^uart([1-9])$"
> +
> +else:
> +  properties:
> +    ti,hwmods: false
> +
> +examples:
> +  - |
> +          uart4: serial@49042000 {
> +                  compatible = "ti,omap3-uart";
> +                  reg = <0x49042000 0x400>;
> +                  interrupts = <80>;
> +                  clock-frequency = <48000000>;
> +          };
>
Tony Lindgren May 28, 2021, 7:05 a.m. UTC | #2
* Grygorii Strashko <grygorii.strashko@ti.com> [210527 17:49]:
> 
> 
> On 27/05/2021 19:56, Vignesh Raghavendra wrote:
> > Convert serial-omap.txt to YAML schema for better checks and documentation.
> > 
> > Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> > ---
> >   .../bindings/serial/omap_serial.txt           |  40 ------
> >   .../bindings/serial/ti,omap4-uart.yaml        | 116 ++++++++++++++++++
> >   2 files changed, 116 insertions(+), 40 deletions(-)
> >   delete mode 100644 Documentation/devicetree/bindings/serial/omap_serial.txt
> >   create mode 100644 Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> 
> Why omap4? Seems ti,omap-uart.yaml is more suitable.

Additionally omap-serial should be deprecated in favor of 8250_omap and
omap-serial not used at all in general.

It seems some folks still stick to omap-serial for legacy reasons when
using an old .config. That's easy to fix by just changing inittab to
use ttyS instead of ttyO, the kernel cmdline is already fixed up on
init to use ttyS, but might as well update the bootloader cmdline too.

But why do we even allow using this driver on newer SoCs when we have
already planned to deprecate omap-serial.c years before the new SoCs?

I suggest we make omap-serial deprecated for all SoCs, and not even
allow it for am6, omap-serial.c only lists these:

        { .compatible = "ti,omap2-uart" },
        { .compatible = "ti,omap3-uart" },
        { .compatible = "ti,omap4-uart" },

And folks are also using it for some rs485 cases that should just be
really fixed for 8250_omap instead.. Adding Dario to Cc because of
these omap-serial patches:

e2a5e8448e73 ("serial: omap: fix rs485 half-duplex filtering")
45f6b6db53c8 ("serial: omap: don't disable rs485 if rts gpio is missing")

Dario, why not use 8250_omap instead?

Regards,

Tony
Rob Herring June 4, 2021, 8:48 p.m. UTC | #3
On Fri, May 28, 2021 at 10:05:47AM +0300, Tony Lindgren wrote:
> * Grygorii Strashko <grygorii.strashko@ti.com> [210527 17:49]:
> > 
> > 
> > On 27/05/2021 19:56, Vignesh Raghavendra wrote:
> > > Convert serial-omap.txt to YAML schema for better checks and documentation.
> > > 
> > > Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> > > ---
> > >   .../bindings/serial/omap_serial.txt           |  40 ------
> > >   .../bindings/serial/ti,omap4-uart.yaml        | 116 ++++++++++++++++++
> > >   2 files changed, 116 insertions(+), 40 deletions(-)
> > >   delete mode 100644 Documentation/devicetree/bindings/serial/omap_serial.txt
> > >   create mode 100644 Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> > 
> > Why omap4? Seems ti,omap-uart.yaml is more suitable.
> 
> Additionally omap-serial should be deprecated in favor of 8250_omap and
> omap-serial not used at all in general.

That's the driver, I assume the binding works with either?
Rob Herring June 4, 2021, 8:52 p.m. UTC | #4
On Thu, May 27, 2021 at 10:26:36PM +0530, Vignesh Raghavendra wrote:
> Convert serial-omap.txt to YAML schema for better checks and documentation.
> 
> Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> ---
>  .../bindings/serial/omap_serial.txt           |  40 ------
>  .../bindings/serial/ti,omap4-uart.yaml        | 116 ++++++++++++++++++
>  2 files changed, 116 insertions(+), 40 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/serial/omap_serial.txt
>  create mode 100644 Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> 
> diff --git a/Documentation/devicetree/bindings/serial/omap_serial.txt b/Documentation/devicetree/bindings/serial/omap_serial.txt
> deleted file mode 100644
> index c2db8cabf2ab..000000000000
> --- a/Documentation/devicetree/bindings/serial/omap_serial.txt
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -OMAP UART controller
> -
> -Required properties:
> -- compatible : should be "ti,am64-uart", "ti,am654-uart" for AM64 controllers
> -- compatible : should be "ti,j721e-uart", "ti,am654-uart" for J721E controllers
> -- compatible : should be "ti,am654-uart" for AM654 controllers
> -- compatible : should be "ti,omap2-uart" for OMAP2 controllers
> -- compatible : should be "ti,omap3-uart" for OMAP3 controllers
> -- compatible : should be "ti,omap4-uart" for OMAP4 controllers
> -- compatible : should be "ti,am4372-uart" for AM437x controllers
> -- compatible : should be "ti,am3352-uart" for AM335x controllers
> -- compatible : should be "ti,dra742-uart" for DRA7x controllers
> -- reg : address and length of the register space
> -- interrupts or interrupts-extended : Should contain the uart interrupt
> -                                      specifier or both the interrupt
> -                                      controller phandle and interrupt
> -                                      specifier.
> -- ti,hwmods : Must be "uart<n>", n being the instance number (1-based)
> -
> -Optional properties:
> -- clock-frequency : frequency of the clock input to the UART
> -- dmas : DMA specifier, consisting of a phandle to the DMA controller
> -         node and a DMA channel number.
> -- dma-names : "rx" for receive channel, "tx" for transmit channel.
> -- rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt
> -- rs485-rts-active-high: drive RTS high when sending (default is low).
> -- clocks: phandle to the functional clock as per
> -  Documentation/devicetree/bindings/clock/clock-bindings.txt
> -
> -Example:
> -
> -                uart4: serial@49042000 {
> -                        compatible = "ti,omap3-uart";
> -                        reg = <0x49042000 0x400>;
> -                        interrupts = <80>;
> -                        dmas = <&sdma 81 &sdma 82>;
> -                        dma-names = "tx", "rx";
> -                        ti,hwmods = "uart4";
> -                        clock-frequency = <48000000>;
> -                };
> diff --git a/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml b/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> new file mode 100644
> index 000000000000..b3e426c24a9e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> @@ -0,0 +1,116 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/serial/ti,omap4-uart.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Bindings for 8250 compliant UARTs on TI's OMAP and K3 SoCs
> +
> +maintainers:
> +  - Vignesh Raghavendra <vigneshr@ti.com>
> +
> +allOf:
> +  - $ref: /schemas/serial/serial.yaml#
> +  - $ref: /schemas/serial/rs485.yaml#
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - enum:
> +          - ti,am3352-uart
> +          - ti,am4372-uart
> +          - ti,am654-uart
> +          - ti,dra742-uart
> +          - ti,omap2-uart
> +          - ti,omap3-uart
> +          - ti,omap4-uart
> +      - items:
> +          - enum:
> +              - ti,am64-uart
> +              - ti,j721e-uart
> +          - const: ti,am654-uart
> +
> +  ti,hwmods:
> +    description:
> +      Must be "uart<n>", n being the instance number (1-based)
> +      This property is applicable only on legacy platforms mainly omap2/3
> +      and ti81xx and should not be used on other platforms.
> +    $ref: /schemas/types.yaml#/definitions/string
> +    deprecated: true
> +
> +  dmas:
> +    minItems: 1
> +    maxItems: 2
> +
> +  dma-names:
> +    items:
> +      - const: tx
> +      - const: rx
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    minItems: 1
> +    maxItems: 2
> +
> +  clocks:
> +    maxItems: 1
> +
> +  clock-names:
> +    const: fclk
> +
> +  reg-shift:
> +    const: 2

blank line

> +  reg-io-width:
> +    const: 4

How are these 2 optional?

> +
> +  rts-gpios: true
> +  cts-gpios: true
> +  dtr-gpios: true
> +  dsr-gpios: true
> +  rng-gpios: true
> +  dcd-gpios: true
> +  rs485-rts-delay: true
> +  rs485-rts-active-low: true
> +  rs485-rx-during-tx: true
> +  rs485-rts-active-high: true
> +  linux,rs485-enabled-at-boot-time: true
> +  rts-gpio: true
> +  power-domains: true
> +  clock-frequency: true
> +  current-speed: true
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +
> +additionalProperties: false
> +
> +if:
> +  properties:
> +    compatible:
> +      oneOf:
> +        - const: ti,omap2-uart
> +        - const: ti,omap3-uart
> +        - const: ti,omap4-uart
> +
> +then:
> +  properties:
> +    ti,hwmods:
> +      items:
> +        - pattern: "^uart([1-9])$"
> +
> +else:
> +  properties:
> +    ti,hwmods: false
> +
> +examples:
> +  - |
> +          uart4: serial@49042000 {

Drop unused label.

> +                  compatible = "ti,omap3-uart";
> +                  reg = <0x49042000 0x400>;
> +                  interrupts = <80>;
> +                  clock-frequency = <48000000>;
> +          };
> -- 
> 2.31.1
Tony Lindgren June 7, 2021, 7:25 a.m. UTC | #5
* Rob Herring <robh@kernel.org> [210604 20:49]:
> On Fri, May 28, 2021 at 10:05:47AM +0300, Tony Lindgren wrote:
> > * Grygorii Strashko <grygorii.strashko@ti.com> [210527 17:49]:
> > > 
> > > 
> > > On 27/05/2021 19:56, Vignesh Raghavendra wrote:
> > > > Convert serial-omap.txt to YAML schema for better checks and documentation.
> > > > 
> > > > Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
> > > > ---
> > > >   .../bindings/serial/omap_serial.txt           |  40 ------
> > > >   .../bindings/serial/ti,omap4-uart.yaml        | 116 ++++++++++++++++++
> > > >   2 files changed, 116 insertions(+), 40 deletions(-)
> > > >   delete mode 100644 Documentation/devicetree/bindings/serial/omap_serial.txt
> > > >   create mode 100644 Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
> > > 
> > > Why omap4? Seems ti,omap-uart.yaml is more suitable.
> > 
> > Additionally omap-serial should be deprecated in favor of 8250_omap and
> > omap-serial not used at all in general.
> 
> That's the driver, I assume the binding works with either?

Yes both drivers work with this driver.

Regards,

Tony
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/serial/omap_serial.txt b/Documentation/devicetree/bindings/serial/omap_serial.txt
deleted file mode 100644
index c2db8cabf2ab..000000000000
--- a/Documentation/devicetree/bindings/serial/omap_serial.txt
+++ /dev/null
@@ -1,40 +0,0 @@ 
-OMAP UART controller
-
-Required properties:
-- compatible : should be "ti,am64-uart", "ti,am654-uart" for AM64 controllers
-- compatible : should be "ti,j721e-uart", "ti,am654-uart" for J721E controllers
-- compatible : should be "ti,am654-uart" for AM654 controllers
-- compatible : should be "ti,omap2-uart" for OMAP2 controllers
-- compatible : should be "ti,omap3-uart" for OMAP3 controllers
-- compatible : should be "ti,omap4-uart" for OMAP4 controllers
-- compatible : should be "ti,am4372-uart" for AM437x controllers
-- compatible : should be "ti,am3352-uart" for AM335x controllers
-- compatible : should be "ti,dra742-uart" for DRA7x controllers
-- reg : address and length of the register space
-- interrupts or interrupts-extended : Should contain the uart interrupt
-                                      specifier or both the interrupt
-                                      controller phandle and interrupt
-                                      specifier.
-- ti,hwmods : Must be "uart<n>", n being the instance number (1-based)
-
-Optional properties:
-- clock-frequency : frequency of the clock input to the UART
-- dmas : DMA specifier, consisting of a phandle to the DMA controller
-         node and a DMA channel number.
-- dma-names : "rx" for receive channel, "tx" for transmit channel.
-- rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt
-- rs485-rts-active-high: drive RTS high when sending (default is low).
-- clocks: phandle to the functional clock as per
-  Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Example:
-
-                uart4: serial@49042000 {
-                        compatible = "ti,omap3-uart";
-                        reg = <0x49042000 0x400>;
-                        interrupts = <80>;
-                        dmas = <&sdma 81 &sdma 82>;
-                        dma-names = "tx", "rx";
-                        ti,hwmods = "uart4";
-                        clock-frequency = <48000000>;
-                };
diff --git a/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml b/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
new file mode 100644
index 000000000000..b3e426c24a9e
--- /dev/null
+++ b/Documentation/devicetree/bindings/serial/ti,omap4-uart.yaml
@@ -0,0 +1,116 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/ti,omap4-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Bindings for 8250 compliant UARTs on TI's OMAP and K3 SoCs
+
+maintainers:
+  - Vignesh Raghavendra <vigneshr@ti.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+  - $ref: /schemas/serial/rs485.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - ti,am3352-uart
+          - ti,am4372-uart
+          - ti,am654-uart
+          - ti,dra742-uart
+          - ti,omap2-uart
+          - ti,omap3-uart
+          - ti,omap4-uart
+      - items:
+          - enum:
+              - ti,am64-uart
+              - ti,j721e-uart
+          - const: ti,am654-uart
+
+  ti,hwmods:
+    description:
+      Must be "uart<n>", n being the instance number (1-based)
+      This property is applicable only on legacy platforms mainly omap2/3
+      and ti81xx and should not be used on other platforms.
+    $ref: /schemas/types.yaml#/definitions/string
+    deprecated: true
+
+  dmas:
+    minItems: 1
+    maxItems: 2
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    minItems: 1
+    maxItems: 2
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: fclk
+
+  reg-shift:
+    const: 2
+  reg-io-width:
+    const: 4
+
+  rts-gpios: true
+  cts-gpios: true
+  dtr-gpios: true
+  dsr-gpios: true
+  rng-gpios: true
+  dcd-gpios: true
+  rs485-rts-delay: true
+  rs485-rts-active-low: true
+  rs485-rx-during-tx: true
+  rs485-rts-active-high: true
+  linux,rs485-enabled-at-boot-time: true
+  rts-gpio: true
+  power-domains: true
+  clock-frequency: true
+  current-speed: true
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+if:
+  properties:
+    compatible:
+      oneOf:
+        - const: ti,omap2-uart
+        - const: ti,omap3-uart
+        - const: ti,omap4-uart
+
+then:
+  properties:
+    ti,hwmods:
+      items:
+        - pattern: "^uart([1-9])$"
+
+else:
+  properties:
+    ti,hwmods: false
+
+examples:
+  - |
+          uart4: serial@49042000 {
+                  compatible = "ti,omap3-uart";
+                  reg = <0x49042000 0x400>;
+                  interrupts = <80>;
+                  clock-frequency = <48000000>;
+          };