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

title: Cirrus Logic CS42L42 audio CODEC

maintainers:
  - patches@opensource.cirrus.com

description:
  The CS42L42 is a low-power audio codec designed for portable applications.
  It provides a high-dynamic range, stereo DAC for audio playback and a mono
  high-dynamic-range ADC for audio capture. There is an integrated headset
  detection block.

properties:
  compatible:
    enum:
      - cirrus,cs42l42
      - cirrus,cs42l83

  reg:
    description:
      The I2C address of the CS42L42.
    maxItems: 1

  VP-supply:
    description:
      VP power supply.

  VCP-supply:
    description:
      Charge pump power supply.

  VD_FILT-supply:
    description:
      FILT+ power supply.

  VL-supply:
    description:
      Logic power supply.

  VA-supply:
    description:
      Analog power supply.

  reset-gpios:
    description:
      This pin will be asserted and then deasserted to reset the
      CS42L42 before communication starts.
    maxItems: 1

  interrupts:
    description:
      Interrupt for CS42L42 IRQ line.
    maxItems: 1

  cirrus,ts-inv:
    description: |
      Sets the behaviour of the jack plug detect switch.

      0 - (Default) Shorted to tip when unplugged, open when plugged.
      This is "inverted tip sense (ITS)" in the datasheet.

      1 - Open when unplugged, shorted to tip when plugged.
      This is "normal tip sense (TS)" in the datasheet.

      The CS42L42_TS_INV_* defines are available for this.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 1

  cirrus,ts-dbnc-rise:
    description: |
      Debounce the rising edge of TIP_SENSE_PLUG. With no
      debounce, the tip sense pin might be noisy on a plug event.

      0 - 0ms
      1 - 125ms
      2 - 250ms
      3 - 500ms
      4 - 750ms
      5 - 1s (Default)
      6 - 1.25s
      7 - 1.5s

      The CS42L42_TS_DBNCE_* defines are available for this.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 7

  cirrus,ts-dbnc-fall:
    description: |
      Debounce the falling edge of TIP_SENSE_UNPLUG. With no
      debounce, the tip sense pin might be noisy on an unplug event.

      0 - 0ms
      1 - 125ms
      2 - 250ms
      3 - 500ms
      4 - 750ms
      5 - 1s (Default)
      6 - 1.25s
      7 - 1.5s

      The CS42L42_TS_DBNCE_* defines are available for this.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 7

  cirrus,btn-det-init-dbnce:
    description: |
      This sets how long to wait after enabling button detection
      interrupts before servicing button interrupts, to allow the
      HS bias time to settle. Value is in milliseconds.
      There may be erroneous button interrupts if this debounce time
      is too short.

      0ms - 200ms,
      Default = 100ms
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 200

  cirrus,btn-det-event-dbnce:
    description: |
      This sets how long to wait after receiving a button press
      interrupt before processing it. Allows time for the button
      press to make a clean connection with the bias resistors.
      Value is in milliseconds.

      0ms - 20ms,
      Default = 10ms
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 20

  cirrus,bias-lvls:
    description: |
      For a level-detect headset button scheme, each button will bias
      the mic pin to a certain voltage. To determine which button was
      pressed, the voltage is compared to sequential, decreasing
      voltages, until the compared voltage < bias voltage.
      For different hardware setups, a designer might want to tweak this.
      This is an array of descending values for the comparator voltage,
      given as percent of the HSBIAS voltage.

      Array of 4 values, each 0-63
      < x1 x2 x3 x4 >
      Default = < 15 8 4 1 >
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 4
    maxItems: 4
    items:
      minimum: 0
      maximum: 63

  cirrus,hs-bias-ramp-rate:
    description: |
      If present this sets the rate that the HS bias should rise and fall.
      The actual rise and fall times depend on external hardware (the
      datasheet gives several rise and fall time examples).

      0 - Fast rise time; slow, load-dependent fall time
      1 - Fast
      2 - Slow (default)
      3 - Slowest

      The CS42L42_HSBIAS_RAMP_* defines are available for this.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 3

  cirrus,hs-bias-sense-disable:
    description: |
      If present the HSBIAS sense is disabled. Configures HSBIAS output
      current sense through the external 2.21-k resistor. HSBIAS_SENSE
      is a hardware feature to reduce the potential pop noise when the
      headset plug is removed slowly. But on some platforms ESD voltage
      will affect it causing plug detection to fail, especially with CTIA
      headset type. For different hardware setups, a designer might want
      to tweak default behavior.
    type: boolean

required:
  - compatible
  - reg
  - VP-supply
  - VCP-supply
  - VD_FILT-supply
  - VL-supply
  - VA-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/sound/cs42l42.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;

      cs42l42: cs42l42@48 {
          compatible = "cirrus,cs42l42";
          reg = <0x48>;
          VA-supply = <&dummy_vreg>;
          VP-supply = <&dummy_vreg>;
          VCP-supply = <&dummy_vreg>;
          VD_FILT-supply = <&dummy_vreg>;
          VL-supply = <&dummy_vreg>;

          reset-gpios = <&axi_gpio_0 1 0>;
          interrupt-parent = <&gpio0>;
          interrupts = <55 8>;

          cirrus,ts-inv = <CS42L42_TS_INV_DIS>;
          cirrus,ts-dbnc-rise = <CS42L42_TS_DBNCE_1000>;
          cirrus,ts-dbnc-fall = <CS42L42_TS_DBNCE_0>;
          cirrus,btn-det-init-dbnce = <100>;
          cirrus,btn-det-event-dbnce = <10>;
          cirrus,bias-lvls = <0x0F 0x08 0x04 0x01>;
          cirrus,hs-bias-ramp-rate = <CS42L42_HSBIAS_RAMP_SLOW>;
      };
    };
