Unverified Commit 7817eb1a authored by Nikita Shubin's avatar Nikita Shubin Committed by Mark Brown
Browse files

ASoC: dt-bindings: cirrus,cs4271: Convert to dtschema

Convert the Cirrus Logic CS4271 audio CODEC bindings to DT schema.

Add missing spi-cpha, spi-cpol, '#sound-dai-cells' and port, as they
are already being used in the DTS and the driver for this device.

Switch to 'reset-gpios' and drop legacy 'reset-gpio' used in original
bindings.

Based on Animesh Agarwal cs42xx8 conversion patch.

Cc: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Link: https://lore.kernel.org/all/20240715-ep93xx-v11-0-4e924efda795@maquefel.me


Signed-off-by: default avatarNikita Shubin <nikita.shubin@maquefel.me>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://patch.msgid.link/20240829-cs4271-yaml-v3-1-f1624cc838f6@maquefel.me


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 125b7492
Loading
Loading
Loading
Loading
+101 −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/sound/cirrus,cs4271.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic CS4271 audio CODEC

maintainers:
  - Alexander Sverdlin <alexander.sverdlin@gmail.com>
  - Nikita Shubin <nikita.shubin@maquefel.me>

description:
  The CS4271 is a stereo audio codec. This device supports both the I2C
  and the SPI bus.

allOf:
  - $ref: dai-common.yaml#
  - $ref: /schemas/spi/spi-peripheral-props.yaml#

properties:
  compatible:
    const: cirrus,cs4271

  reg:
    maxItems: 1

  spi-cpha: true

  spi-cpol: true

  '#sound-dai-cells':
    const: 0

  reset-gpios:
    description:
      This pin will be deasserted before communication to the codec starts.
    maxItems: 1

  va-supply:
    description: Analog power supply.

  vd-supply:
    description: Digital power supply.

  vl-supply:
    description: Serial Control Port power supply.

  port:
    $ref: audio-graph-port.yaml#
    unevaluatedProperties: false

  cirrus,amuteb-eq-bmutec:
    description:
      When given, the Codec's AMUTEB=BMUTEC flag is enabled.
    type: boolean

  cirrus,enable-soft-reset:
    description: |
      The CS4271 requires its LRCLK and MCLK to be stable before its RESET
      line is de-asserted. That also means that clocks cannot be changed
      without putting the chip back into hardware reset, which also requires
      a complete re-initialization of all registers.

      One (undocumented) workaround is to assert and de-assert the PDN bit
      in the MODE2 register. This workaround can be enabled with this DT
      property.

      Note that this is not needed in case the clocks are stable
      throughout the entire runtime of the codec.
    type: boolean

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    spi {
        #address-cells = <1>;
        #size-cells = <0>;
        codec@0 {
            compatible = "cirrus,cs4271";
            reg = <0>;
            #sound-dai-cells = <0>;
            spi-max-frequency = <6000000>;
            spi-cpol;
            spi-cpha;
            reset-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
            port {
                endpoint {
                    remote-endpoint = <&i2s_ep>;
                };
            };
        };
    };

...
+0 −57
Original line number Diff line number Diff line
Cirrus Logic CS4271 DT bindings

This driver supports both the I2C and the SPI bus.

Required properties:

 - compatible: "cirrus,cs4271"

For required properties on SPI, please consult
Documentation/devicetree/bindings/spi/spi-bus.txt

Required properties on I2C:

 - reg: the i2c address


Optional properties:

 - reset-gpio: 	a GPIO spec to define which pin is connected to the chip's
		!RESET pin
 - cirrus,amuteb-eq-bmutec:	When given, the Codec's AMUTEB=BMUTEC flag
				is enabled.
 - cirrus,enable-soft-reset:
	The CS4271 requires its LRCLK and MCLK to be stable before its RESET
	line is de-asserted. That also means that clocks cannot be changed
	without putting the chip back into hardware reset, which also requires
	a complete re-initialization of all registers.

	One (undocumented) workaround is to assert and de-assert the PDN bit
	in the MODE2 register. This workaround can be enabled with this DT
	property.

	Note that this is not needed in case the clocks are stable
	throughout the entire runtime of the codec.

 - vd-supply:	Digital power
 - vl-supply:	Logic power
 - va-supply:	Analog Power

Examples:

	codec_i2c: cs4271@10 {
		compatible = "cirrus,cs4271";
		reg = <0x10>;
		reset-gpio = <&gpio 23 0>;
		vd-supply = <&vdd_3v3_reg>;
		vl-supply = <&vdd_3v3_reg>;
		va-supply = <&vdd_3v3_reg>;
	};

	codec_spi: cs4271@0 {
		compatible = "cirrus,cs4271";
		reg = <0x0>;
		reset-gpio = <&gpio 23 0>;
		spi-max-frequency = <6000000>;
	};