ASoC: madera: Move binding over to dtschema

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
Charles Keepax 2020-05-13 10:57:18 +01:00 committed by Rob Herring
parent fc543f5367
commit 8b3f0ed9e0
2 changed files with 113 additions and 67 deletions

View File

@ -0,0 +1,113 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/cirrus,madera.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cirrus Logic Madera class audio CODECs
maintainers:
- patches@opensource.cirrus.com
description: |
This describes audio configuration bindings for these codecs.
See also the core bindings for the parent MFD driver:
Documentation/devicetree/bindings/mfd/cirrus,madera.yaml
and defines for values used in these bindings:
include/dt-bindings/sound/madera.h
The properties are all contained in the parent MFD node.
properties:
'#sound-dai-cells':
description:
The first cell indicating the audio interface.
const: 1
cirrus,inmode:
description:
A list of input mode settings for each input. A maximum
of 24 cells, with four cells per input in the order INnAL,
INnAR INnBL INnBR. For non-muxed inputs the first two cells
for that input set the mode for the left and right channel
and the second two cells must be 0. For muxed inputs the
first two cells for that input set the mode of the left and
right A inputs and the second two cells set the mode of the
left and right B inputs. Valid mode values are one of the
MADERA_INMODE_xxx. If the array is shorter than the number
of inputs the unspecified inputs default to MADERA_INMODE_DIFF.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 24
items:
minimum: 0
maximum: 1
default: 0
cirrus,out-mono:
description:
Mono bit for each output, maximum of six cells if the array
is shorter outputs will be set to stereo.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 6
items:
minimum: 0
maximum: 1
default: 0
cirrus,dmic-ref:
description: |
Indicates how the MICBIAS pins have been externally connected
to DMICs on each input, one cell per input.
<IN1 IN2 IN3 ...>
A value of 0 indicates MICVDD and is the default,
other values depend on the codec: For CS47L35 one of the
CS47L35_DMIC_REF_xxx values For all other codecs one of
the MADERA_DMIC_REF_xxx values Also see the datasheet for a
description of the INn_DMIC_SUP field.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 6
items:
minimum: 0
maximum: 3
default: 0
cirrus,max-channels-clocked:
description:
Maximum number of channels that I2S clocks will be generated
for. Useful when clock master for systems where the I2S bus
has multiple data lines. One cell for each AIF, use a value
of zero for AIFs that should be handled normally.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 4
items:
default: 0
cirrus,pdm-fmt:
description:
PDM speaker data format, must contain 2 cells (OUT5 and
OUT6). See the PDM_SPKn_FMT field in the datasheet for a
description of this value. The second cell is ignored for
codecs that do not have OUT6.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 2
maxItems: 2
cirrus,pdm-mute:
description: |
PDM mute format, must contain 2 cells (OUT5 and OUT6). See the
PDM_SPKn_CTRL_1 register in the datasheet for a description
of this value. The second cell is ignored for codecs that
do not have OUT6.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 2
maxItems: 2

View File

@ -1,67 +0,0 @@
Cirrus Logic Madera class audio codecs
This describes audio configuration bindings for these codecs.
See also the core bindings for the parent MFD driver:
See Documentation/devicetree/bindings/mfd/madera.txt
and defines for values used in these bindings:
include/dt-bindings/sound/madera.h
These properties are all contained in the parent MFD node.
Optional properties:
- cirrus,dmic-ref : Indicates how the MICBIAS pins have been externally
connected to DMICs on each input, one cell per input.
<IN1 IN2 IN3 ...>
A value of 0 indicates MICVDD and is the default, other values depend on the
codec:
For CS47L35 one of the CS47L35_DMIC_REF_xxx values
For all other codecs one of the MADERA_DMIC_REF_xxx values
Also see the datasheet for a description of the INn_DMIC_SUP field.
- cirrus,inmode : A list of input mode settings for each input. A maximum of
16 cells, with four cells per input in the order INnAL, INnAR INnBL INnBR.
For non-muxed inputs the first two cells for that input set the mode for
the left and right channel and the second two cells must be 0.
For muxed inputs the first two cells for that input set the mode of the
left and right A inputs and the second two cells set the mode of the left
and right B inputs.
Valid mode values are one of the MADERA_INMODE_xxx. If the array is shorter
than the number of inputs the unspecified inputs default to
MADERA_INMODE_DIFF.
- cirrus,out-mono : Mono bit for each output, maximum of six cells if the
array is shorter outputs will be set to stereo.
- cirrus,max-channels-clocked : Maximum number of channels that I2S clocks
will be generated for. Useful when clock master for systems where the I2S
bus has multiple data lines.
One cell for each AIF, use a value of zero for AIFs that should be handled
normally.
- cirrus,pdm-fmt : PDM speaker data format, must contain 2 cells
(OUT5 and OUT6). See the PDM_SPKn_FMT field in the datasheet for a
description of this value.
The second cell is ignored for codecs that do not have OUT6.
- cirrus,pdm-mute : PDM mute format, must contain 2 cells
(OUT5 and OUT6). See the PDM_SPKn_CTRL_1 register in the datasheet for a
description of this value.
The second cell is ignored for codecs that do not have OUT6.
Example:
cs47l35@0 {
compatible = "cirrus,cs47l35";
cirrus,dmic-ref = <0 0 CS47L35_DMIC_REF_MICBIAS1B 0>;
cirrus,inmode = <
MADERA_INMODE_DMIC MADERA_INMODE_DMIC /* IN1A digital */
MADERA_INMODE_SE MADERA_INMODE_SE /* IN1B single-ended */
MADERA_INMODE_DIFF MADERA_INMODE_DIFF /* IN2 differential */
0 0 /* not used on this codec */
>;
cirrus,out-mono = <0 0 0 0 0 0>;
cirrus,max-channels-clocked = <2 0 0>;
};