Re: [PATCH 6/6] mfd: lochnagar: Move binding over to dtschema

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 27, 2020 at 11:28:12AM +0100, Charles Keepax wrote:
> Signed-off-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
> ---
>  .../devicetree/bindings/mfd/cirrus,lochnagar.txt   |  85 ----------
>  .../devicetree/bindings/mfd/cirrus,lochnagar.yaml  | 183 +++++++++++++++++++++
>  MAINTAINERS                                        |  12 +-
>  3 files changed, 189 insertions(+), 91 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt
>  create mode 100644 Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml

> diff --git a/Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml b/Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml
> new file mode 100644
> index 0000000000000..b2967f141b2af
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml
> @@ -0,0 +1,183 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/cirrus,lochnagar.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Cirrus Logic Lochnagar Audio Development Board
> +
> +maintainers:
> +  - patches@xxxxxxxxxxxxxxxxxxxxx
> +
> +description: |
> +  Lochnagar is an evaluation and development board for Cirrus Logic
> +  Smart CODEC and Amp devices. It allows the connection of most Cirrus
> +  Logic devices on mini-cards, as well as allowing connection of
> +  various application processor systems to provide a full evaluation
> +  platform.  Audio system topology, clocking and power can all be
> +  controlled through the Lochnagar, allowing the device under test
> +  to be used in a variety of possible use cases.
> +
> +  Also see these documents for generic binding information:
> +    [1] GPIO : ../gpio/gpio.txt
> +
> +  And these for relevant defines:
> +    [2] include/dt-bindings/pinctrl/lochnagar.h
> +    [3] include/dt-bindings/clock/lochnagar.h
> +
> +  And these documents for the required sub-node binding details:
> +    [4] Clock: ../clock/cirrus,lochnagar.yaml
> +    [5] Pinctrl: ../pinctrl/cirrus,lochnagar.yaml
> +    [6] Regulator: ../regulator/cirrus,lochnagar.yaml
> +    [7] Sound: ../sound/cirrus,lochnagar.yaml
> +    [8] Hardware Monitor: ../hwmon/cirrus,lochnagar.yaml
> +
> +allOf:
> +  - $ref: /schemas/clock/cirrus,lochnagar.yaml#
> +  - $ref: /schemas/pinctrl/cirrus,lochnagar.yaml#
> +  - $ref: /schemas/regulator/cirrus,lochnagar.yaml#

The preferred form is to define the child nodes in this schema and then 
reference the child schema:

lochnagar-clk:
  type: object
  $ref: /schemas/clock/cirrus,lochnagar.yaml#

> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - cirrus,lochnagar2
> +    then:
> +      allOf:
> +        - $ref: /schemas/sound/cirrus,lochnagar.yaml#
> +        - $ref: /schemas/hwmon/cirrus,lochnagar.yaml#

That makes this part a bit more challenging:

then:
  required:
    - lochnagar-sc
else:
  not:
    required:
      - lochnagar-sc

> +
> +properties:
> +  compatible:
> +    contains:

So this is valid?

"foo", "cirrus,lochnagar1"

I think you just want to drop 'contains'.

> +      enum:
> +        - cirrus,lochnagar1
> +        - cirrus,lochnagar2
> +
> +  reg:
> +    description:
> +      I2C slave address.

No need for generic descriptions of common properties.

> +    const: 0x22
> +
> +  reset-gpios:
> +    description: |
> +      Reset line to the Lochnagar, see [1].
> +    maxItems: 1
> +
> +  present-gpios:
> +    description: |
> +      Host present line, indicating the presence of a
> +      host system, see [1]. This can be omitted if the present line is
> +      tied in hardware.
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - reset-gpios
> +  - lochnagar-clk
> +  - lochnagar-pinctrl
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clk/lochnagar.h>
> +    #include <dt-bindings/pinctrl/lochnagar.h>
> +    i2c@e0004000 {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        reg = <0xe0004000 0x1000>;
> +
> +        lochnagar: lochnagar@22 {
> +            compatible = "cirrus,lochnagar2";
> +            reg = <0x22>;
> +
> +            reset-gpios = <&gpio0 55 0>;
> +            present-gpios = <&gpio0 60 0>;
> +
> +            lochnagarclk: lochnagar-clk {
> +                compatible = "cirrus,lochnagar2-clk";
> +
> +                #clock-cells = <1>;
> +                clocks = <&clkaudio>, <&clkpmic>;
> +                clock-names = "ln-gf-mclk2", "ln-pmic-32k";
> +
> +                assigned-clocks = <&lochnagarclk LOCHNAGAR_CDC_MCLK1>,
> +                                  <&lochnagarclk LOCHNAGAR_CDC_MCLK2>;
> +                assigned-clock-parents = <&clkaudio>, <&clkpmic>;
> +            };
> +
> +            clkpmic: lochnagar-pmic32k {
> +                compatible = "fixed-clock";
> +                #clock-cells = <0>;
> +                clock-frequency = <32768>;
> +            };
> +
> +            lochnagar-pinctrl {
> +                compatible = "cirrus,lochnagar-pinctrl";
> +
> +                gpio-controller;
> +                #gpio-cells = <2>;
> +                gpio-ranges = <&lochnagar 0 0 LOCHNAGAR2_PIN_NUM_GPIOS>;
> +
> +                pinctrl-names = "default";
> +                pinctrl-0 = <&pinsettings>;
> +
> +                pinsettings: pin-settings {
> +                    ap2aif {
> +                        input-enable;
> +                        groups = "gf-aif1";
> +                        function = "codec-aif3";
> +                    };
> +                    codec2aif {
> +                        output-enable;
> +                        groups = "codec-aif3";
> +                        function = "gf-aif1";
> +                    };
> +                };
> +            };
> +
> +            lochnagar-sc {
> +                compatible = "cirrus,lochnagar2-soundcard";
> +
> +                #sound-dai-cells = <1>;
> +
> +                clocks = <&lochnagarclk LOCHNAGAR_SOUNDCARD_MCLK>;
> +                clock-names = "mclk";
> +            };
> +
> +            lochnagar-hwmon {
> +                compatible = "cirrus,lochnagar2-hwmon";
> +            };
> +
> +            MIC1VDD {
> +                compatible = "cirrus,lochnagar2-mic1vdd";
> +
> +                MICBIAS1-supply = <&eric>;
> +
> +                cirrus,micbias-input = <3>;
> +            };
> +
> +            MICVDD {
> +                compatible = "cirrus,lochnagar2-micvdd";
> +
> +                SYSVDD-supply = <&wallvdd>;
> +
> +                regulator-min-microvolt = <3300000>;
> +                regulator-max-microvolt = <3300000>;
> +            };
> +
> +            VDD1V8 {
> +                compatible = "regulator-fixed";
> +
> +                regulator-name = "VDD1V8";
> +                regulator-min-microvolt = <1800000>;
> +                regulator-max-microvolt = <1800000>;
> +                regulator-boot-on;
> +                regulator-always-on;
> +
> +                vin-supply = <&wallvdd>;
> +            };
> +        };
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e64e5db314976..a2b94e8cf585c 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -4062,12 +4062,12 @@ M:	Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
>  M:	Richard Fitzgerald <rf@xxxxxxxxxxxxxxxxxxxxx>
>  L:	patches@xxxxxxxxxxxxxxxxxxxxx
>  S:	Supported
> -F:	Documentation/devicetree/bindings/clock/cirrus,lochnagar.txt
> -F:	Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.txt
> -F:	Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt
> -F:	Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt
> -F:	Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt
> -F:	Documentation/devicetree/bindings/sound/cirrus,lochnagar.txt
> +F:	Documentation/devicetree/bindings/clock/cirrus,lochnagar.yaml
> +F:	Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.yaml
> +F:	Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml
> +F:	Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.yaml
> +F:	Documentation/devicetree/bindings/regulator/cirrus,lochnagar.yaml
> +F:	Documentation/devicetree/bindings/sound/cirrus,lochnagar.yaml
>  F:	Documentation/hwmon/lochnagar.rst
>  F:	drivers/clk/clk-lochnagar.c
>  F:	drivers/hwmon/lochnagar-hwmon.c
> -- 
> 2.11.0
> 



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux