mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 05:33:09 +00:00
10eb0d3314
'gpio-ranges' is a phandle-array which is really a matrix. The schema in cirrus,cs42l43 is incomplete as it doesn't define there's only a single entry. Add the outer array constraints that there is a single entry. Signed-off-by: Rob Herring <robh@kernel.org> Link: https://msgid.link/r/20240311222554.1940567-1-robh@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
315 lines
7.8 KiB
YAML
315 lines
7.8 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/sound/cirrus,cs42l43.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Cirrus Logic CS42L43 Audio CODEC
|
|
|
|
maintainers:
|
|
- patches@opensource.cirrus.com
|
|
|
|
description: |
|
|
The CS42L43 is an audio CODEC with integrated MIPI SoundWire interface
|
|
(Version 1.2.1 compliant), I2C, SPI, and I2S/TDM interfaces designed
|
|
for portable applications. It provides a high dynamic range, stereo
|
|
DAC for headphone output, two integrated Class D amplifiers for
|
|
loudspeakers, and two ADCs for wired headset microphone input or
|
|
stereo line input. PDM inputs are provided for digital microphones.
|
|
|
|
allOf:
|
|
- $ref: dai-common.yaml#
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- cirrus,cs42l43
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
vdd-p-supply:
|
|
description:
|
|
Power supply for the high voltage interface.
|
|
|
|
vdd-a-supply:
|
|
description:
|
|
Power supply for internal analog circuits.
|
|
|
|
vdd-d-supply:
|
|
description:
|
|
Power supply for internal digital circuits. Can be internally supplied.
|
|
|
|
vdd-io-supply:
|
|
description:
|
|
Power supply for external interface and internal digital logic.
|
|
|
|
vdd-cp-supply:
|
|
description:
|
|
Power supply for the amplifier 3 and 4 charge pump.
|
|
|
|
vdd-amp-supply:
|
|
description:
|
|
Power supply for amplifier 1 and 2.
|
|
|
|
reset-gpios:
|
|
maxItems: 1
|
|
|
|
interrupt-controller: true
|
|
|
|
"#interrupt-cells":
|
|
const: 2
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
"#sound-dai-cells":
|
|
const: 1
|
|
|
|
clocks:
|
|
items:
|
|
- description: Synchronous audio clock provided on mclk_in.
|
|
|
|
clock-names:
|
|
const: mclk
|
|
|
|
cirrus,bias-low:
|
|
type: boolean
|
|
description:
|
|
Select a 1.8V headset micbias rather than 2.8V.
|
|
|
|
cirrus,bias-sense-microamp:
|
|
description:
|
|
Current at which the headset micbias sense clamp will engage, 0 to
|
|
disable.
|
|
enum: [ 0, 14, 24, 43, 52, 61, 71, 90, 99 ]
|
|
default: 14
|
|
|
|
cirrus,bias-ramp-ms:
|
|
description:
|
|
Time in milliseconds the hardware allows for the headset micbias to
|
|
ramp up.
|
|
enum: [ 10, 40, 90, 170 ]
|
|
default: 170
|
|
|
|
cirrus,detect-us:
|
|
description:
|
|
Time in microseconds the type detection will run for. Long values will
|
|
cause more audible effects, but give more accurate detection.
|
|
enum: [ 20, 100, 1000, 10000, 50000, 75000, 100000, 200000 ]
|
|
default: 1000
|
|
|
|
cirrus,button-automute:
|
|
type: boolean
|
|
description:
|
|
Enable the hardware automuting of decimator 1 when a headset button is
|
|
pressed.
|
|
|
|
cirrus,buttons-ohms:
|
|
description:
|
|
Impedance in Ohms for each headset button, these should be listed in
|
|
ascending order.
|
|
minItems: 1
|
|
maxItems: 6
|
|
|
|
cirrus,tip-debounce-ms:
|
|
description:
|
|
Software debounce on tip sense triggering in milliseconds.
|
|
default: 0
|
|
|
|
cirrus,tip-invert:
|
|
type: boolean
|
|
description:
|
|
Indicates tip detect polarity, inverted implies open-circuit whilst the
|
|
jack is inserted.
|
|
|
|
cirrus,tip-disable-pullup:
|
|
type: boolean
|
|
description:
|
|
Indicates if the internal pullup on the tip detect should be disabled.
|
|
|
|
cirrus,tip-fall-db-ms:
|
|
description:
|
|
Time in milliseconds a falling edge on the tip detect should be hardware
|
|
debounced for. Note the falling edge is considered after the invert.
|
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
|
default: 500
|
|
|
|
cirrus,tip-rise-db-ms:
|
|
description:
|
|
Time in milliseconds a rising edge on the tip detect should be hardware
|
|
debounced for. Note the rising edge is considered after the invert.
|
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
|
default: 500
|
|
|
|
cirrus,use-ring-sense:
|
|
type: boolean
|
|
description:
|
|
Indicates if the ring sense should be used.
|
|
|
|
cirrus,ring-invert:
|
|
type: boolean
|
|
description:
|
|
Indicates ring detect polarity, inverted implies open-circuit whilst the
|
|
jack is inserted.
|
|
|
|
cirrus,ring-disable-pullup:
|
|
type: boolean
|
|
description:
|
|
Indicates if the internal pullup on the ring detect should be disabled.
|
|
|
|
cirrus,ring-fall-db-ms:
|
|
description:
|
|
Time in milliseconds a falling edge on the ring detect should be hardware
|
|
debounced for. Note the falling edge is considered after the invert.
|
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
|
default: 500
|
|
|
|
cirrus,ring-rise-db-ms:
|
|
description:
|
|
Time in milliseconds a rising edge on the ring detect should be hardware
|
|
debounced for. Note the rising edge is considered after the invert.
|
|
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
|
default: 500
|
|
|
|
pinctrl:
|
|
type: object
|
|
$ref: /schemas/pinctrl/pinctrl.yaml#
|
|
additionalProperties: false
|
|
|
|
properties:
|
|
gpio-controller: true
|
|
|
|
"#gpio-cells":
|
|
const: 2
|
|
|
|
gpio-ranges:
|
|
items:
|
|
- items:
|
|
- description: A phandle to the CODEC pinctrl node
|
|
minimum: 0
|
|
- const: 0
|
|
- const: 0
|
|
- const: 3
|
|
|
|
patternProperties:
|
|
"-state$":
|
|
oneOf:
|
|
- $ref: "#/$defs/cirrus-cs42l43-state"
|
|
- patternProperties:
|
|
"-pins$":
|
|
$ref: "#/$defs/cirrus-cs42l43-state"
|
|
additionalProperties: false
|
|
|
|
spi:
|
|
type: object
|
|
$ref: /schemas/spi/spi-controller.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
$defs:
|
|
cirrus-cs42l43-state:
|
|
type: object
|
|
|
|
allOf:
|
|
- $ref: /schemas/pinctrl/pincfg-node.yaml#
|
|
- $ref: /schemas/pinctrl/pinmux-node.yaml#
|
|
|
|
oneOf:
|
|
- required: [ groups ]
|
|
- required: [ pins ]
|
|
|
|
additionalProperties: false
|
|
|
|
properties:
|
|
groups:
|
|
enum: [ gpio1, gpio2, gpio3, asp, pdmout2, pdmout1, i2c, spi ]
|
|
|
|
pins:
|
|
enum: [ gpio1, gpio2, gpio3,
|
|
asp_dout, asp_fsync, asp_bclk,
|
|
pdmout2_clk, pdmout2_data, pdmout1_clk, pdmout1_data,
|
|
i2c_sda, i2c_scl,
|
|
spi_miso, spi_sck, spi_ssb ]
|
|
|
|
function:
|
|
enum: [ gpio, spdif, irq, mic-shutter, spk-shutter ]
|
|
|
|
drive-strength:
|
|
description: Set drive strength in mA
|
|
enum: [ 1, 2, 4, 8, 9, 10, 12, 16 ]
|
|
|
|
input-debounce:
|
|
description: Set input debounce in uS
|
|
enum: [ 0, 85 ]
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- vdd-p-supply
|
|
- vdd-a-supply
|
|
- vdd-io-supply
|
|
- vdd-cp-supply
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
|
|
i2c {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
cs42l43: codec@1a {
|
|
compatible = "cirrus,cs42l43";
|
|
reg = <0x1a>;
|
|
|
|
vdd-p-supply = <&vdd5v0>;
|
|
vdd-a-supply = <&vdd1v8>;
|
|
vdd-io-supply = <&vdd1v8>;
|
|
vdd-cp-supply = <&vdd1v8>;
|
|
vdd-amp-supply = <&vdd5v0>;
|
|
|
|
reset-gpios = <&gpio 0>;
|
|
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
interrupt-parent = <&gpio>;
|
|
interrupts = <56 IRQ_TYPE_LEVEL_LOW>;
|
|
|
|
#sound-dai-cells = <1>;
|
|
|
|
clocks = <&clks 0>;
|
|
clock-names = "mclk";
|
|
|
|
cs42l43_pins: pinctrl {
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
gpio-ranges = <&cs42l43_pins 0 0 3>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinsettings>;
|
|
|
|
pinsettings: default-state {
|
|
shutter-pins {
|
|
groups = "gpio3";
|
|
function = "mic-shutter";
|
|
};
|
|
};
|
|
};
|
|
|
|
spi {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
cs-gpios = <&cs42l43_pins 1 0>;
|
|
|
|
sensor@0 {
|
|
compatible = "bosch,bme680";
|
|
reg = <0>;
|
|
spi-max-frequency = <1400000>;
|
|
};
|
|
};
|
|
};
|
|
};
|