Subject: Re: [PATCH 2/3] dt-bindings: net: wireless: ti,wlcore: Convert to json-schema

From: Rob Herring <[email-masked]>
Date: Tue, 19 Oct 2021 16:05:05 -0500

On Tue, Oct 19, 2021 at 02:43:12PM +0200, Geert Uytterhoeven wrote:
> The Texas Instruments Wilink 6/7/8 (wl12xx/wl18xx) Wireless LAN
> Controllers can be connected via SPI or via SDIO.
> Convert the two Device Tree binding documents to json-schema, and merge
> them into a single document.
> 
> Add missing ti,wl1285 compatible value.
> Add missing interrupt-names property.
> 
> Signed-off-by: Geert Uytterhoeven <[email-masked]>
> ---
>   - The wlcore driver is marked orphan in MAINTAINERS.  Both Tony and
>     Russell made recent bugfixes, and my not-so-random coin picked Tony
>     as a suitable maintainer.  Please scream if not appropriate.
>   - How to express if a property is required when connected to a
>     specific bus type?

There isn't a (simple) way within this schema, but IIRC the spi bus 
schema already requires 'reg' in child nodes.

Otherwise, looks good and I'll queue.

> ---
>  .../devicetree/bindings/net/ti-bluetooth.txt  |   2 +-
>  .../bindings/net/wireless/ti,wlcore,spi.txt   |  57 --------
>  .../bindings/net/wireless/ti,wlcore.txt       |  45 ------
>  .../bindings/net/wireless/ti,wlcore.yaml      | 134 ++++++++++++++++++
>  arch/arm/boot/dts/omap3-gta04a5.dts           |   2 +-
>  5 files changed, 136 insertions(+), 104 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/net/wireless/ti,wlcore,spi.txt
>  delete mode 100644 Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
>  create mode 100644 Documentation/devicetree/bindings/net/wireless/ti,wlcore.yaml
> 
> diff --git a/Documentation/devicetree/bindings/net/ti-bluetooth.txt b/Documentation/devicetree/bindings/net/ti-bluetooth.txt
> index f48c17b38f5851de..3c01cfc1e12dc132 100644
> --- a/Documentation/devicetree/bindings/net/ti-bluetooth.txt
> +++ b/Documentation/devicetree/bindings/net/ti-bluetooth.txt
> @@ -13,7 +13,7 @@ and GPS over what's called "shared transport". The shared transport is
>  standard BT HCI protocol with additional channels for the other functions.
>  
>  TI WiLink devices also have a separate WiFi interface as described in
> -wireless/ti,wlcore.txt.
> +wireless/ti,wlcore.yaml.
>  
>  This bindings follows the UART slave device binding in ../serial/serial.yaml.
>  
> diff --git a/Documentation/devicetree/bindings/net/wireless/ti,wlcore,spi.txt b/Documentation/devicetree/bindings/net/wireless/ti,wlcore,spi.txt
> deleted file mode 100644
> index cb5c9e1569ca5300..0000000000000000
> --- a/Documentation/devicetree/bindings/net/wireless/ti,wlcore,spi.txt
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -* Texas Instruments wl12xx/wl18xx wireless lan controller
> -
> -The wl12xx/wl18xx chips can be connected via SPI or via SDIO. This
> -document describes the binding for the SPI connected chip.
> -
> -Required properties:
> -- compatible :          Should be one of the following:
> -    * "ti,wl1271"
> -    * "ti,wl1273"
> -    * "ti,wl1281"
> -    * "ti,wl1283"
> -    * "ti,wl1801"
> -    * "ti,wl1805"
> -    * "ti,wl1807"
> -    * "ti,wl1831"
> -    * "ti,wl1835"
> -    * "ti,wl1837"
> -- reg :                 Chip select address of device
> -- spi-max-frequency :   Maximum SPI clocking speed of device in Hz
> -- interrupts :          Should contain parameters for 1 interrupt line.
> -- vwlan-supply :        Point the node of the regulator that powers/enable the
> -                        wl12xx/wl18xx chip
> -
> -Optional properties:
> -- ref-clock-frequency : Reference clock frequency (should be set for wl12xx)
> -- clock-xtal :          boolean, clock is generated from XTAL
> -
> -- Please consult Documentation/devicetree/bindings/spi/spi-bus.txt
> -  for optional SPI connection related properties,
> -
> -Examples:
> -
> -For wl12xx family:
> -&spi1 {
> -	wlcore: wlcore@1 {
> -		compatible = "ti,wl1271";
> -		reg = <1>;
> -		spi-max-frequency = <48000000>;
> -		interrupt-parent = <&gpio3>;
> -		interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
> -		vwlan-supply = <&vwlan_fixed>;
> -		clock-xtal;
> -		ref-clock-frequency = <38400000>;
> -	};
> -};
> -
> -For wl18xx family:
> -&spi0 {
> -	wlcore: wlcore@0 {
> -		compatible = "ti,wl1835";
> -		reg = <0>;
> -		spi-max-frequency = <48000000>;
> -		interrupt-parent = <&gpio0>;
> -		interrupts = <27 IRQ_TYPE_EDGE_RISING>;
> -		vwlan-supply = <&vwlan_fixed>;
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
> deleted file mode 100644
> index 9306c4dadd46aea7..0000000000000000
> --- a/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
> +++ /dev/null
> @@ -1,45 +0,0 @@
> -TI Wilink 6/7/8 (wl12xx/wl18xx) SDIO devices
> -
> -This node provides properties for controlling the wilink wireless device. The
> -node is expected to be specified as a child node to the SDIO controller that
> -connects the device to the system.
> -
> -Required properties:
> - - compatible: should be one of the following:
> -    * "ti,wl1271"
> -    * "ti,wl1273"
> -    * "ti,wl1281"
> -    * "ti,wl1283"
> -    * "ti,wl1285"
> -    * "ti,wl1801"
> -    * "ti,wl1805"
> -    * "ti,wl1807"
> -    * "ti,wl1831"
> -    * "ti,wl1835"
> -    * "ti,wl1837"
> - - interrupts : specifies attributes for the out-of-band interrupt.
> -
> -Optional properties:
> - - ref-clock-frequency : ref clock frequency in Hz
> - - tcxo-clock-frequency : tcxo clock frequency in Hz
> -
> -Note: the *-clock-frequency properties assume internal clocks. In case of external
> -clock, new bindings (for parsing the clock nodes) have to be added.
> -
> -Example:
> -
> -&mmc3 {
> -	vmmc-supply = <&wlan_en_reg>;
> -	bus-width = <4>;
> -	cap-power-off-card;
> -	keep-power-in-suspend;
> -
> -	#address-cells = <1>;
> -	#size-cells = <0>;
> -	wlcore: wlcore@2 {
> -		compatible = "ti,wl1835";
> -		reg = <2>;
> -		interrupt-parent = <&gpio0>;
> -		interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/net/wireless/ti,wlcore.yaml b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.yaml
> new file mode 100644
> index 0000000000000000..8dd164d10290082a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.yaml
> @@ -0,0 +1,134 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/wireless/ti,wlcore.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments Wilink 6/7/8 (wl12xx/wl18xx) Wireless LAN Controller
> +
> +maintainers:
> +  - Tony Lindgren <[email-masked]>
> +
> +description:
> +  The wl12xx/wl18xx chips can be connected via SPI or via SDIO.
> +  Note that the *-clock-frequency properties assume internal clocks.  In case
> +  of external clocks, new bindings (for parsing the clock nodes) have to be
> +  added.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - ti,wl1271
> +      - ti,wl1273
> +      - ti,wl1281
> +      - ti,wl1283
> +      - ti,wl1285
> +      - ti,wl1801
> +      - ti,wl1805
> +      - ti,wl1807
> +      - ti,wl1831
> +      - ti,wl1835
> +      - ti,wl1837
> +
> +  reg:
> +    maxItems: 1
> +    description:
> +      This is required when connected via SPI, and optional when connected via
> +      SDIO.
> +
> +  spi-max-frequency: true
> +
> +  interrupts:
> +    minItems: 1
> +    maxItems: 2
> +
> +  interrupt-names:
> +    items:
> +      - const: irq
> +      - const: wakeup
> +
> +  vwlan-supply:
> +    description:
> +      Points to the node of the regulator that powers/enable the wl12xx/wl18xx
> +      chip.  This is required when connected via SPI.
> +
> +
> +  ref-clock-frequency:
> +    description: Reference clock frequency.
> +
> +  tcxo-clock-frequency:
> +    description: TCXO clock frequency.
> +
> +  clock-xtal:
> +    $ref: /schemas/types.yaml#/definitions/flag
> +    description: Indicates that the clock is generated from XTAL.
> +
> +required:
> +  - compatible
> +  - interrupts
> +
> +if:
> +  properties:
> +    compatible:
> +      contains:
> +        enum:
> +          - ti,wl1271
> +          - ti,wl1273
> +          - ti,wl1281
> +          - ti,wl1283
> +then:
> +  required:
> +    - ref-clock-frequency
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +
> +    // For wl12xx family:
> +    spi1 {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            wlcore1: wlcore@1 {
> +                    compatible = "ti,wl1271";
> +                    reg = <1>;
> +                    spi-max-frequency = <48000000>;
> +                    interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
> +                    vwlan-supply = <&vwlan_fixed>;
> +                    clock-xtal;
> +                    ref-clock-frequency = <38400000>;
> +            };
> +    };
> +
> +    // For wl18xx family:
> +    spi2 {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            wlcore2: wlcore@0 {
> +                    compatible = "ti,wl1835";
> +                    reg = <0>;
> +                    spi-max-frequency = <48000000>;
> +                    interrupts = <27 IRQ_TYPE_EDGE_RISING>;
> +                    vwlan-supply = <&vwlan_fixed>;
> +            };
> +    };
> +
> +    // SDIO example:
> +    mmc3 {
> +            vmmc-supply = <&wlan_en_reg>;
> +            bus-width = <4>;
> +            cap-power-off-card;
> +            keep-power-in-suspend;
> +
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            wlcore3: wlcore@2 {
> +                    compatible = "ti,wl1835";
> +                    reg = <2>;
> +                    interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
> +            };
> +    };
> diff --git a/arch/arm/boot/dts/omap3-gta04a5.dts b/arch/arm/boot/dts/omap3-gta04a5.dts
> index a2ba4030cf279683..0b5bd73888771438 100644
> --- a/arch/arm/boot/dts/omap3-gta04a5.dts
> +++ b/arch/arm/boot/dts/omap3-gta04a5.dts
> @@ -79,7 +79,7 @@ OMAP3_CORE1_IOPAD(0x2138, PIN_INPUT | MUX_MODE4) /* gpin114 */
>  
>  /*
>   * for WL183x module see
> - * Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
> + * Documentation/devicetree/bindings/net/wireless/ti,wlcore.yaml
>   */
>  
>  &wifi_pwrseq {
> -- 
> 2.25.1
> 
>