# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/mxs-lradc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale MXS Low-Resolution ADC (LRADC)

maintainers:
  - Dario Binacchi <dario.binacchi@amarulasolutions.com>

description:
  The LRADC provides 16 physical channels of 12-bit resolution for
  analog-to-digital conversion and includes an integrated 4-wire/5-wire
  touchscreen controller.

properties:
  compatible:
    items:
      - enum:
          - fsl,imx23-lradc
          - fsl,imx28-lradc

  reg:
    maxItems: 1

  clocks:
    minItems: 1

  interrupts:
    minItems: 9
    maxItems: 13

  fsl,lradc-touchscreen-wires:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [4, 5]
    description: >
      Number of wires used to connect the touchscreen to LRADC.

      If this property is not present, then the touchscreen is disabled.

  fsl,ave-ctrl:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    maximum: 32
    default: 4
    description:
      Number of samples per direction to calculate an average value.

  fsl,ave-delay:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 2
    maximum: 2048
    default: 2
    description: >
      Delay between consecutive samples.

      It is used if 'fsl,ave-ctrl' > 1, counts at 2 kHz and its default value (2)
      is 1 ms.

  fsl,settling:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    maximum: 2047
    default: 10
    description: >
      Delay between plate switch to next sample.

      It counts at 2 kHz and its default (10) is 5 ms.

  "#io-channel-cells":
    const: 1

required:
  - compatible
  - reg
  - clocks
  - interrupts

if:
  properties:
    compatible:
      contains:
        enum:
          - fsl,imx23-lradc
then:
  properties:
    interrupts:
      items:
        - description: channel 0
        - description: channel 1
        - description: channel 2
        - description: channel 3
        - description: channel 4
        - description: channel 5
        - description: touchscreen
        - description: channel 6
        - description: channel 7
    fsl,lradc-touchscreen-wires:
      const: 4
else:
  properties:
    interrupts:
      items:
        - description: threshold 0
        - description: threshold 1
        - description: channel 0
        - description: channel 1
        - description: channel 2
        - description: channel 3
        - description: channel 4
        - description: channel 5
        - description: button 0
        - description: button 1
        - description: touchscreen
        - description: channel 6
        - description: channel 7

additionalProperties: false

examples:
  - |
    lradc@80050000 {
        compatible = "fsl,imx23-lradc";
        reg = <0x80050000 0x2000>;
        interrupts = <36>, <37>, <38>, <39>, <40>,
                     <41>, <42>, <43>, <44>;
        clocks = <&clks 26>;
        #io-channel-cells = <1>;
        fsl,lradc-touchscreen-wires = <4>;
        fsl,ave-ctrl = <4>;
        fsl,ave-delay = <2>;
        fsl,settling = <10>;
    };
