Commit 1e6536ee authored by Jonathan Cameron's avatar Jonathan Cameron
Browse files

dt-bindings:iio:dac:adi,ad5758 yaml conversion



I have put Michael as maintainer on this one. Happy to change it to
someone else though.

One issue in here, is I cannot have an example with a negative
limit on the range.  There are very few such yaml bindings in existence
but the thermal-zones.yaml has the same problem.  If there is
any means of fixing this let me know.  For now I'm sticking to
positive range values in the example.

Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Cc: Michael Hennerich <Michael.Hennerich@analog.com>
Link: https://lore.kernel.org/r/20201031134110.724233-24-jic23@kernel.org
parent c15058d5
Loading
Loading
Loading
Loading
+0 −83
Original line number Diff line number Diff line
Analog Devices AD5758 DAC device driver

Required properties for the AD5758:
	- compatible: Must be "adi,ad5758"
	- reg: SPI chip select number for the device
	- spi-max-frequency: Max SPI frequency to use (< 50000000)
	- spi-cpha: is the only mode that is supported

Required properties:

 - adi,dc-dc-mode: Mode of operation of the dc-to-dc converter
		   Dynamic Power Control (DPC)
		   In this mode, the AD5758 circuitry senses the output
		   voltage and dynamically regulates the supply voltage,
		   VDPC+, to meet compliance requirements plus an optimized
		   headroom voltage for the output buffer.

		   Programmable Power Control (PPC)
		   In this mode, the VDPC+ voltage is user-programmable to
		   a fixed level that needs to accommodate the maximum output
		   load required.

		   The output of the DAC core is either converted to a
		   current or voltage output at the VIOUT pin. Only one mode
		   can be enabled at any one time.

		   The following values are currently supported:
			* 1: DPC current mode
			* 2: DPC voltage mode
			* 3: PPC current mode

 Depending on the selected output mode (voltage or current) one of the
 two properties must
 be present:

 - adi,range-microvolt: Voltage output range
		The array of voltage output ranges must contain two fields:
		* <0 5000000>: 0 V to 5 V voltage range
		* <0 10000000>: 0 V to 10 V voltage range
		* <(-5000000) 5000000>: ±5 V voltage range
		* <(-10000000) 10000000>: ±10 V voltage range
 - adi,range-microamp: Current output range
		The array of current output ranges must contain two fields:
		* <0 20000>: 0 mA to 20 mA current range
		* <0 24000>: 0 mA to 24 mA current range
		* <4 24000>: 4 mA to 20 mA current range
		* <(-20000) 20000>: ±20 mA current range
		* <(-24000) 24000>: ±24 mA current range
		* <(-1000) 22000>: −1 mA to +22 mA current range

Optional properties:

 - reset-gpios : GPIO spec for the RESET pin. If specified, it will be
		 asserted during driver probe.

 - adi,dc-dc-ilim-microamp: The dc-to-dc converter current limit
		   The following values are currently supported [uA]:
			* 150000
			* 200000
			* 250000
			* 300000
			* 350000
			* 400000

 - adi,slew-time-us: The time it takes for the output to reach the
 full scale [uS]
		     The supported range is between 133us up to 1023984375us

AD5758 Example:

	dac@0 {
		compatible = "adi,ad5758";
		reg = <0>;
		spi-max-frequency = <1000000>;
		spi-cpha;

		reset-gpios = <&gpio 22 0>;

		adi,dc-dc-mode = <2>;
		adi,range-microvolt = <0 10000000>;
		adi,dc-dc-ilim-microamp = <200000>;
		adi,slew-time-us = <125000>;
	};
+129 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/dac/adi,ad5758.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices AD5758 DAC

maintainers:
  - Michael Hennerich <Michael.Hennerich@analog.com>

properties:
  compatible:
    const: adi,ad5758

  reg:
    maxItems: 1

  spi-max-frequency: true
  spi-cpha: true

  adi,dc-dc-mode:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2, 3]
    description: |
      Mode of operation of the dc-to-dc converter
      Dynamic Power Control (DPC)
      In this mode, the AD5758 circuitry senses the output voltage and
      dynamically regulates the supply voltage, VDPC+, to meet compliance
      requirements plus an optimized headroom voltage for the output buffer.

      Programmable Power Control (PPC)
      In this mode, the VDPC+ voltage is user-programmable to a fixed level
      that needs to accommodate the maximum output load required.

      The output of the DAC core is either converted to a current or
      voltage output at the VIOUT pin. Only one mode can be enabled at
      any one time.

      The following values are currently supported:
      * 1: DPC current mode
      * 2: DPC voltage mode
      * 3: PPC current mode

      Depending on the selected output mode (voltage or current) one of the
      two properties must be present:

  adi,range-microvolt:
    $ref: /schemas/types.yaml#/definitions/int32-array
    description: |
      Voltage output range specified as <minimum, maximum>
    enum:
      - [[0, 5000000]]
      - [[0, 10000000]]
      - [[-5000000, 5000000]]
      - [[-10000000, 10000000]]

  adi,range-microamp:
    $ref: /schemas/types.yaml#/definitions/int32-array
    description: |
      Current output range specified as <minimum, maximum>
    enum:
      - [[0, 20000]]
      - [[0, 24000]]
      - [[4, 24000]]
      - [[-20000, 20000]]
      - [[-24000, 24000]]
      - [[-1000, 22000]]

  reset-gpios: true

  adi,dc-dc-ilim-microamp:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [150000, 200000, 250000, 300000, 350000, 400000]
    description: |
      The dc-to-dc converter current limit.

  adi,slew-time-us:
    description: |
      The time it takes for the output to reach the full scale [uS]
    minimum: 133
    maximum: 1023984375

required:
  - compatible
  - reg
  - spi-cpha
  - adi,dc-dc-mode

allOf:
  - if:
      properties:
        adi,dc-dc-mode:
          contains:
            enum: [1, 3]
    then:
      properties:
        adi,range-microvolt: false
      required:
        - adi,range-microamp
    else:
      properties:
        adi,range-microamp: false
      required:
        - adi,range-microvolt

additionalProperties: false

examples:
  - |
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        dac@0 {
            compatible = "adi,ad5758";
            reg = <0>;
            spi-max-frequency = <1000000>;
            spi-cpha;

            reset-gpios = <&gpio 22 0>;

            adi,dc-dc-mode = <2>;
            adi,range-microvolt = <0 10000000>;
            adi,dc-dc-ilim-microamp = <200000>;
            adi,slew-time-us = <125000>;
        };
    };
...