Commit 9dae090f authored by Charles Keepax's avatar Charles Keepax Committed by Rob Herring
Browse files

mfd: lochnagar: Move binding over to dtschema

parent e0a99c55
Loading
Loading
Loading
Loading
+0 −85
Original line number Diff line number Diff line
Cirrus Logic Lochnagar Audio Development Board

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.txt
  [5] Pinctrl: ../pinctrl/cirrus,lochnagar.txt
  [6] Regulator: ../regulator/cirrus,lochnagar.txt
  [7] Sound: ../sound/cirrus,lochnagar.txt
  [8] Hardware Monitor: ../hwmon/cirrus,lochnagar.txt

Required properties:

  - compatible : One of the following strings:
                 "cirrus,lochnagar1"
                 "cirrus,lochnagar2"

  - reg : I2C slave address

  - reset-gpios : Reset line to the Lochnagar, see [1].

Required sub-nodes:

  - lochnagar-clk : Binding for the clocking components, see [4].

  - lochnagar-pinctrl : Binding for the pin control components, see [5].

Optional sub-nodes:

  - Bindings for the regulator components, see [6]. Only available on
    Lochnagar 2.

  - lochnagar-sc : Binding for the sound card components, see [7].
                   Only available on Lochnagar 2.
  - lochnagar-hwmon : Binding for the hardware monitor components, see [8].
                      Only available on Lochnagar 2.

Optional properties:

  - present-gpios : Host present line, indicating the presence of a
    host system, see [1]. This can be omitted if the present line is
    tied in hardware.

Example:

lochnagar: lochnagar@22 {
	compatible = "cirrus,lochnagar2";
	reg = <0x22>;

	reset-gpios = <&gpio0 55 0>;
	present-gpios = <&gpio0 60 0>;

	lochnagar-clk {
		compatible = "cirrus,lochnagar2-clk";
		...
	};

	lochnagar-pinctrl {
		compatible = "cirrus,lochnagar-pinctrl";
		...
	};

	lochnagar-sc {
		compatible = "cirrus,lochnagar2-soundcard";
		...
	};

	lochnagar-hwmon {
		compatible = "cirrus,lochnagar2-hwmon";
		...
	};
};
+352 −0
Original line number Diff line number Diff line
# 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@opensource.cirrus.com

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] Sound: ../sound/cirrus,lochnagar.yaml
    [7] Hardware Monitor: ../hwmon/cirrus,lochnagar.yaml

allOf:
  - if:
      properties:
        compatible:
          enum:
            - cirrus,lochnagar2
    then:
      properties:
        lochnagar-hwmon:
          type: object
          $ref: /schemas/hwmon/cirrus,lochnagar.yaml#

        lochnagar-sc:
          type: object
          $ref: /schemas/sound/cirrus,lochnagar.yaml#

properties:
  compatible:
    enum:
      - cirrus,lochnagar1
      - cirrus,lochnagar2

  reg:
    const: 0x22

  reset-gpios:
    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

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

  lochnagar-pmic32k:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 32768

  lochnagar-clk12m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 12288000

  lochnagar-clk11m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 11298600

  lochnagar-clk24m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 24576000

  lochnagar-clk22m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 22579200

  lochnagar-clk8m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 8192000

  lochnagar-usb24m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 24576000

  lochnagar-usb12m:
    type: object
    $ref: /schemas/clock/fixed-clock.yaml#
    properties:
      clock-frequency:
        const: 12288000

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

  VDDCORE:
    description:
      Initialisation data for the VDDCORE regulator, which supplies the
      CODECs digital core if not being provided by an internal regulator.
    type: object
    $ref: /schemas/regulator/regulator.yaml#
    properties:
      compatible:
        enum:
          - cirrus,lochnagar2-vddcore

      SYSVDD-supply:
        description:
          Primary power supply for the Lochnagar.
    required:
      - compatible

  MICVDD:
    description:
      Initialisation data for the MICVDD regulator, which supplies the
      CODECs MICVDD.
    type: object
    $ref: /schemas/regulator/regulator.yaml#
    properties:
      compatible:
        enum:
          - cirrus,lochnagar2-micvdd

      SYSVDD-supply:
        description:
          Primary power supply for the Lochnagar.
    required:
      - compatible

  MIC1VDD:
    description:
      Initialisation data for the MIC1VDD supplies.
    type: object
    $ref: /schemas/regulator/regulator.yaml#
    properties:
      compatible:
        enum:
          - cirrus,lochnagar2-mic1vdd

      cirrus,micbias-input:
        description:
          A property selecting which of the CODEC minicard micbias outputs
          should be used.
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 1
        maximum: 4

      MICBIAS1-supply:
        description:
          Regulator supplies for the MIC1VDD outputs, supplying the digital
          microphones, normally supplied from the attached CODEC.
    required:
      - compatible

  MIC2VDD:
    description:
      Initialisation data for the MIC2VDD supplies.
    type: object
    $ref: /schemas/regulator/regulator.yaml#
    properties:
      compatible:
        enum:
          - cirrus,lochnagar2-mic2vdd

      cirrus,micbias-input:
        description:
          A property selecting which of the CODEC minicard micbias outputs
          should be used.
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 1
        maximum: 4

      MICBIAS2-supply:
        description:
          Regulator supplies for the MIC2VDD outputs, supplying the digital
          microphones, normally supplied from the attached CODEC.
    required:
      - compatible

  VDD1V8:
    description:
      Recommended fixed regulator for the VDD1V8 regulator, which supplies
      the CODECs analog and 1.8V digital supplies.
    type: object
    $ref: /schemas/regulator/regulator.yaml#
    properties:
      compatible:
        enum:
          - regulator-fixed

      regulator-min-microvolt:
        const: 1800000

      regulator-max-microvolt:
        const: 1800000

      vin-supply:
        description:
          Should be set to same supply as SYSVDD
    required:
      - compatible
      - regulator-min-microvolt
      - regulator-max-microvolt
      - regulator-boot-on
      - regulator-always-on
      - vin-supply

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-pins {
                        input-enable;
                        groups = "gf-aif1";
                        function = "codec-aif3";
                    };
                    codec2aif-pins {
                        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";

                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>;
            };
        };
    };
+0 −82
Original line number Diff line number Diff line
Cirrus Logic Lochnagar Audio Development Board

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.

This binding document describes the binding for the regulator portion
of the driver.

Also see these documents for generic binding information:
  [1] Regulator: ../regulator/regulator.txt

This binding must be part of the Lochnagar MFD binding:
  [2] ../mfd/cirrus,lochnagar.txt

Optional sub-nodes:

  - VDDCORE : Initialisation data for the VDDCORE regulator, which
    supplies the CODECs digital core if it has no build regulator for that
    purpose.
      Required Properties:
      - compatible : One of the following strings:
                     "cirrus,lochnagar2-vddcore"
      - SYSVDD-supply: Primary power supply for the Lochnagar.

  - MICVDD : Initialisation data for the MICVDD regulator, which
    supplies the CODECs MICVDD.
      Required Properties:
      - compatible : One of the following strings:
                     "cirrus,lochnagar2-micvdd"
      - SYSVDD-supply: Primary power supply for the Lochnagar.

  - MIC1VDD, MIC2VDD : Initialisation data for the MICxVDD supplies.
      Required Properties:
      - compatible : One of the following strings:
                     "cirrus,lochnagar2-mic1vdd", "cirrus,lochnagar2-mic2vdd"
      Optional Properties:
      - cirrus,micbias-input : A property selecting which of the CODEC
        minicard micbias outputs should be used, valid values are 1 - 4.
      - MICBIAS1-supply, MICBIAS2-supply: Regulator supplies for the
        MICxVDD outputs, supplying the digital microphones, normally
        supplied from the attached CODEC.

  - VDD1V8 : Recommended fixed regulator for the VDD1V8 regulator, which supplies the
    CODECs analog and 1.8V digital supplies.
      Required Properties:
      - compatible : Should be set to "regulator-fixed"
      - regulator-min-microvolt : Should be set to 1.8V
      - regulator-max-microvolt : Should be set to 1.8V
      - regulator-boot-on
      - regulator-always-on
      - vin-supply : Should be set to same supply as SYSVDD

Example:

lochnagar {
	lochnagar-micvdd: MICVDD {
		compatible = "cirrus,lochnagar2-micvdd";

		SYSVDD-supply = <&wallvdd>;

		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	lochnagar-vdd1v8: VDD1V8 {
		compatible = "regulator-fixed";

		regulator-name = "VDD1V8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-boot-on;
		regulator-always-on;

		vin-supply = <&wallvdd>;
	};
};
+5 −6
Original line number Diff line number Diff line
@@ -4065,12 +4065,11 @@ M: Charles Keepax <ckeepax@opensource.cirrus.com>
M:	Richard Fitzgerald <rf@opensource.cirrus.com>
L:	patches@opensource.cirrus.com
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/sound/cirrus,lochnagar.yaml
F:	Documentation/hwmon/lochnagar.rst
F:	drivers/clk/clk-lochnagar.c
F:	drivers/hwmon/lochnagar-hwmon.c