Merge tag 'sound-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound updates from Takashi Iwai:
 "Nothing too thrilling here, but we see lots of driver updates and bug
  fixes, including quirk additions and refactoring works, while there
  have been little changes in the core functionality. Here are some
  highlights:

  Core:
   - Add validation for the control API put callback
   - Fixes in compress-offload API timestamp handling
   - Continued ASoC core API cleanups

  ASoC:
   - Add support for bus keepers (for Apple devices in future)
   - Enhancements to the SDCA support, including retaskable jacks
   - Test improvements for Cirrus Logic drivers
   - Lots of fixes for the NXP, nVidia and Qualcomm
   - Support for AMD RPL DMIC, Cirrus Logic CS42L43 and CS47L47, nVidia
     machines with CPCAP and WM8962

  USB-audio:
   - Quirks for Huawei Headset, Focusrite Novation, MV-Silicon, Studio
     1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus
     AudioBox, Moondrop Ju Jiu, Scarlett 18i20, etc
   - Extended mixer volume quirk handling
   - UAF and other fixes for us144mkii, 6fire and caiaq drivers

  HD-audio:
   - Add quirks or fixes for Acer, Lenovo, HP, ASUS machines
   - Fixes & cleanups of GPIO helper code

  Misc:
   - Add suspend/resume support for multiple legacy ISA and Apple
     drivers
   - Further regression fixes for ctxfi driver"

* tag 'sound-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (359 commits)
  ALSA: control: Validate buf_len before strnlen() in snd_ctl_elem_init_enum_names()
  ALSA: usb-audio: Fix missing error handling for get_min_max*()
  ALSA: hda/realtek - fixed speaker no sound update
  ALSA: hda/realtek: Add quirk for Acer PT316-51S headset mic
  ALSA: usb-audio: Exclude Scarlett 18i20 1st Gen from SKIP_IFACE_SETUP
  ALSA: hda/realtek: Add quirk for Legion S7 15IMH
  ALSA: hda/realtek: Add quirk for HP Spectre x360 14-ea
  ALSA: caiaq: take a reference on the USB device in create_card()
  ASoC: dt-bindings: rockchip: convert rk3399-gru-sound to DT Schema
  ALSA: sscape: Add suspend and resume support
  ALSA: sscape: Cache per-card resources for board reinitialization
  ALSA: usb-audio: Do not expose sticky mixers
  ALSA: usb-audio: Move volume control resolution check into a function
  ALSA: usb-audio: Add error checks against get_min_max*()
  ALSA: usb-audio: Add quirk for PreSonus AudioBox USB
  ALSA: interwave: guard PM-only restore helpers with CONFIG_PM
  ALSA: usb-audio: Evaluate packsize caps at the right place
  ALSA: sc6000: Restore board setup across suspend
  ALSA: sc6000: Keep the programmed board state in card-private data
  ALSA: 6fire: fix use-after-free on disconnect
  ...
This commit is contained in:
Linus Torvalds
2026-04-15 09:20:49 -07:00
376 changed files with 9045 additions and 3328 deletions

View File

@@ -1,14 +0,0 @@
Analog Devices SSM2305 Speaker Amplifier
========================================
Required properties:
- compatible : "adi,ssm2305"
- shutdown-gpios : The gpio connected to the shutdown pin.
The gpio signal is ACTIVE_LOW.
Example:
ssm2305: analog-amplifier {
compatible = "adi,ssm2305";
shutdown-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
};

View File

@@ -0,0 +1,46 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/adi,ssm2305.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices SSM2305 Class-D Speaker Amplifier
maintainers:
- Lars-Peter Clausen <lars@metafoo.de>
description:
The SSM2305 is a filterless, high efficiency, mono 2.8 W Class-D
audio amplifier with a micropower shutdown mode controlled via a
dedicated active-low GPIO pin.
allOf:
- $ref: dai-common.yaml#
properties:
compatible:
const: adi,ssm2305
shutdown-gpios:
maxItems: 1
description:
GPIO connected to the shutdown pin (SD) of the SSM2305.
The pin is active-low; asserting it puts the device into
micropower shutdown mode.
required:
- compatible
- shutdown-gpios
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
analog-amplifier {
compatible = "adi,ssm2305";
shutdown-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
};
...

View File

@@ -35,6 +35,10 @@ properties:
dvdd-supply: true
firmware-name:
maxItems: 1
description: Name of the *_acf.bin file used for amplifier initialization
awinic,audio-channel:
description:
It is used to distinguish multiple PA devices, so that different

View File

@@ -16,6 +16,8 @@ description: |
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.
CS42L43B variant adds dedicated PDM interface, SoundWire Clock Gearing
support and more decimators to ISRCs.
allOf:
- $ref: dai-common.yaml#
@@ -24,6 +26,7 @@ properties:
compatible:
enum:
- cirrus,cs42l43
- cirrus,cs42l43b
reg:
maxItems: 1

View File

@@ -1,42 +0,0 @@
* Hisilicon 6210 i2s controller
Required properties:
- compatible: should be one of the following:
- "hisilicon,hi6210-i2s"
- reg: physical base address of the i2s controller unit and length of
memory mapped region.
- interrupts: should contain the i2s interrupt.
- clocks: a list of phandle + clock-specifier pairs, one for each entry
in clock-names.
- clock-names: should contain following:
- "dacodec"
- "i2s-base"
- dmas: DMA specifiers for tx dma. See the DMA client binding,
Documentation/devicetree/bindings/dma/dma.txt
- dma-names: should be "tx" and "rx"
- hisilicon,sysctrl-syscon: phandle to sysctrl syscon
- #sound-dai-cells: Should be set to 1 (for multi-dai)
- The dai cell indexes reference the following interfaces:
0: S2 interface
(Currently that is the only one available, but more may be
supported in the future)
Example for the hi6210 i2s controller:
i2s0: i2s@f7118000{
compatible = "hisilicon,hi6210-i2s";
reg = <0x0 0xf7118000 0x0 0x8000>; /* i2s unit */
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; /* 155 "DigACodec_intr"-32 */
clocks = <&sys_ctrl HI6220_DACODEC_PCLK>,
<&sys_ctrl HI6220_BBPPLL0_DIV>;
clock-names = "dacodec", "i2s-base";
dmas = <&dma0 15 &dma0 14>;
dma-names = "rx", "tx";
hisilicon,sysctrl-syscon = <&sys_ctrl>;
#sound-dai-cells = <1>;
};
Then when referencing the i2s controller:
sound-dai = <&i2s0 0>; /* index 0 => S2 interface */

View File

@@ -0,0 +1,80 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/hisilicon,hi6210-i2s.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: HiSilicon hi6210 I2S controller
maintainers:
- John Stultz <john.stultz@linaro.org>
allOf:
- $ref: dai-common.yaml#
properties:
compatible:
const: hisilicon,hi6210-i2s
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 2
clock-names:
items:
- const: dacodec
- const: i2s-base
dmas:
maxItems: 2
dma-names:
items:
- const: tx
- const: rx
hisilicon,sysctrl-syscon:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle to sysctrl syscon
"#sound-dai-cells":
const: 1
description: |
The dai cell indexes reference the following interfaces:
0: S2 interface
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- dmas
- dma-names
- hisilicon,sysctrl-syscon
- "#sound-dai-cells"
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/hi6220-clock.h>
i2s@f7118000 {
compatible = "hisilicon,hi6210-i2s";
reg = <0xf7118000 0x8000>;
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sys_ctrl HI6220_DACODEC_PCLK>,
<&sys_ctrl HI6220_BBPPLL0_DIV>;
clock-names = "dacodec", "i2s-base";
dmas = <&dma0 14>, <&dma0 15>;
dma-names = "tx", "rx";
hisilicon,sysctrl-syscon = <&sys_ctrl>;
#sound-dai-cells = <1>;
};

View File

@@ -24,6 +24,7 @@ patternProperties:
cpu/codec dais.
type: object
$ref: tdm-slot.yaml#
properties:
link-name:
@@ -38,13 +39,9 @@ patternProperties:
- i2s
- dsp_b
dai-tdm-slot-num:
description: see tdm-slot.txt.
$ref: /schemas/types.yaml#/definitions/uint32
dai-tdm-slot-num: true
dai-tdm-slot-width:
description: see tdm-slot.txt.
$ref: /schemas/types.yaml#/definitions/uint32
dai-tdm-slot-width: true
playback-only:
description: link is used only for playback

View File

@@ -28,8 +28,6 @@ properties:
$ref: /schemas/types.yaml#/definitions/phandle
description: The phandle of the WM8960 audio codec.
unevaluatedProperties: false
required:
- compatible
- mediatek,platform
@@ -38,6 +36,8 @@ required:
- pinctrl-names
- pinctrl-0
additionalProperties: false
examples:
- |
sound {

View File

@@ -36,14 +36,14 @@ properties:
required:
- sound-dai
unevaluatedProperties: false
required:
- compatible
- audio-routing
- platform
- codec
unevaluatedProperties: false
examples:
- |
sound {

View File

@@ -0,0 +1,41 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/mediatek,mt8173-rt5650-rt5514.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Mediatek MT8173 with RT5650 and RT5514 audio codecs
maintainers:
- Koro Chen <koro.chen@mediatek.com>
properties:
compatible:
const: mediatek,mt8173-rt5650-rt5514
mediatek,audio-codec:
$ref: /schemas/types.yaml#/definitions/phandle-array
description: Phandles of rt5650 and rt5514 codecs
items:
- description: phandle of rt5650 codec
- description: phandle of rt5514 codec
mediatek,platform:
$ref: /schemas/types.yaml#/definitions/phandle
description: The phandle of MT8173 ASoC platform.
required:
- compatible
- mediatek,audio-codec
- mediatek,platform
additionalProperties: false
examples:
- |
sound {
compatible = "mediatek,mt8173-rt5650-rt5514";
mediatek,audio-codec = <&rt5650>, <&rt5514>;
mediatek,platform = <&afe>;
};
...

View File

@@ -105,12 +105,12 @@ patternProperties:
required:
- link-name
unevaluatedProperties: false
required:
- compatible
- mediatek,platform
unevaluatedProperties: false
examples:
- |
sound {

View File

@@ -1,15 +0,0 @@
MT8173 with RT5650 RT5514 CODECS
Required properties:
- compatible : "mediatek,mt8173-rt5650-rt5514"
- mediatek,audio-codec: the phandles of rt5650 and rt5514 codecs
- mediatek,platform: the phandle of MT8173 ASoC platform
Example:
sound {
compatible = "mediatek,mt8173-rt5650-rt5514";
mediatek,audio-codec = <&rt5650 &rt5514>;
mediatek,platform = <&afe>;
};

View File

@@ -0,0 +1,90 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-cpcap.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra audio complex with CPCAP CODEC
maintainers:
- Svyatoslav Ryhel <clamor95@gmail.com>
allOf:
- $ref: nvidia,tegra-audio-common.yaml#
properties:
compatible:
items:
- pattern: '^motorola,tegra-audio-cpcap(-[a-z0-9]+)+$'
- const: nvidia,tegra-audio-cpcap
nvidia,audio-routing:
$ref: /schemas/types.yaml#/definitions/non-unique-string-array
description:
A list of the connections between audio components. Each entry is a
pair of strings, the first being the connection's sink, the second
being the connection's source. Valid names for sources and sinks are
the pins (documented in the binding document), and the jacks on the
board.
minItems: 2
items:
enum:
# Board Connectors
- Speakers
- Int Spk
- Earpiece
- Int Mic
- Headset Mic
- Internal Mic 1
- Internal Mic 2
- Headphone
- Headphones
- Headphone Jack
- Mic Jack
# CODEC Pins
- MICR
- HSMIC
- EMUMIC
- MICL
- EXTR
- EXTL
- EP
- SPKR
- SPKL
- LINER
- LINEL
- HSR
- HSL
- EMUR
- EMUL
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/tegra20-car.h>
#include <dt-bindings/soc/tegra-pmc.h>
sound {
compatible = "motorola,tegra-audio-cpcap-olympus",
"nvidia,tegra-audio-cpcap";
nvidia,model = "Motorola Atrix 4G (MB860) CPCAP";
nvidia,audio-routing =
"Headphones", "HSR",
"Headphones", "HSL",
"Int Spk", "SPKR",
"Int Spk", "SPKL",
"Earpiece", "EP",
"HSMIC", "Mic Jack",
"MICR", "Internal Mic 1",
"MICL", "Internal Mic 2";
nvidia,i2s-controller = <&tegra_i2s1>;
nvidia,audio-codec = <&cpcap_audio>;
clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
<&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
<&tegra_car TEGRA20_CLK_CDEV1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
};

View File

@@ -35,10 +35,15 @@ properties:
items:
enum:
# Board Connectors
- Speakers
- Int Spk
- Headphone
- Headphones
- Headphone Jack
- Earpiece
- Headset Mic
- Mic Jack
- Int Mic
- Internal Mic 1
- Internal Mic 2

View File

@@ -0,0 +1,88 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/nvidia,tegra-audio-wm8962.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra audio complex with WM8962 CODEC
maintainers:
- Svyatoslav Ryhel <clamor95@gmail.com>
allOf:
- $ref: nvidia,tegra-audio-common.yaml#
properties:
compatible:
items:
- pattern: '^[a-z0-9]+,tegra-audio-wm8962(-[a-z0-9]+)+$'
- const: nvidia,tegra-audio-wm8962
nvidia,audio-routing:
$ref: /schemas/types.yaml#/definitions/non-unique-string-array
description:
A list of the connections between audio components. Each entry is a
pair of strings, the first being the connection's sink, the second
being the connection's source. Valid names for sources and sinks are
the pins (documented in the binding document), and the jacks on the
board.
minItems: 2
items:
enum:
# Board Connectors
- Speakers
- Int Spk
- Earpiece
- Int Mic
- Headset Mic
- Internal Mic 1
- Internal Mic 2
- Headphone
- Headphones
- Headphone Jack
- Mic Jack
# CODEC Pins
- IN1L
- IN1R
- IN2L
- IN2R
- IN3L
- IN3R
- IN4L
- IN4R
- DMICDAT
- HPOUTL
- HPOUTR
- SPKOUT
- SPKOUTL
- SPKOUTR
required:
- nvidia,i2s-controller
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/tegra30-car.h>
#include <dt-bindings/soc/tegra-pmc.h>
sound {
compatible = "microsoft,tegra-audio-wm8962-surface-rt",
"nvidia,tegra-audio-wm8962";
nvidia,model = "Microsoft Surface RT WM8962";
nvidia,audio-routing =
"Headphone Jack", "HPOUTR",
"Headphone Jack", "HPOUTL",
"Int Spk", "SPKOUTR",
"Int Spk", "SPKOUTL";
nvidia,i2s-controller = <&tegra_i2s1>;
nvidia,audio-codec = <&wm8962>;
clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
<&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
<&tegra_pmc TEGRA_PMC_CLK_OUT_1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
};

View File

@@ -126,13 +126,16 @@ patternProperties:
reg:
contains:
# MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX and
# QUINARY_MI2S_RX - QUINARY_MI2S_TX
# QUINARY_MI2S_RX - QUINARY_MI2S_TX and
# LPI_MI2S_RX_0 - SENARY_MI2S_TX
items:
oneOf:
- minimum: 16
maximum: 23
- minimum: 127
maximum: 128
- minimum: 137
maximum: 148
then:
required:
- qcom,sd-lines

View File

@@ -1,22 +0,0 @@
ROCKCHIP with MAX98357A/RT5514/DA7219 codecs on GRU boards
Required properties:
- compatible: "rockchip,rk3399-gru-sound"
- rockchip,cpu: The phandle of the Rockchip I2S controller that's
connected to the codecs
- rockchip,codec: The phandle of the audio codecs
Optional properties:
- dmic-wakeup-delay-ms : specify delay time (ms) for DMIC ready.
If this option is specified, which means it's required dmic need
delay for DMIC to ready so that rt5514 can avoid recording before
DMIC send valid data
Example:
sound {
compatible = "rockchip,rk3399-gru-sound";
rockchip,cpu = <&i2s0>;
rockchip,codec = <&max98357a &rt5514 &da7219>;
dmic-wakeup-delay-ms = <20>;
};

View File

@@ -0,0 +1,60 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/rockchip,rk3399-gru-sound.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Rockchip with MAX98357A/RT5514/DA7219 codecs on GRU boards
maintainers:
- Heiko Stuebner <heiko@sntech.de>
properties:
compatible:
const: rockchip,rk3399-gru-sound
rockchip,cpu:
$ref: /schemas/types.yaml#/definitions/phandle-array
description: |
List of phandles to the Rockchip CPU DAI controllers connected to codecs
minItems: 1
items:
- items:
- description: Phandle to the Rockchip I2S controllers
- items:
- description: |
Phandle to the Rockchip SPDIF controller. Required when a
DisplayPort audio codec is referenced in rockchip,codec
rockchip,codec:
$ref: /schemas/types.yaml#/definitions/phandle-array
description: |
The phandles of the audio codecs connected to the Rockchip CPU DAI
controllers
minItems: 1
maxItems: 6
items:
maxItems: 1
dmic-wakeup-delay-ms:
description: |
specify delay time (ms) for DMIC ready.
If this option is specified, a delay is required for DMIC to get ready
so that rt5514 can avoid recording before DMIC sends valid data
required:
- compatible
- rockchip,cpu
- rockchip,codec
additionalProperties: false
examples:
- |
sound {
compatible = "rockchip,rk3399-gru-sound";
rockchip,cpu = <&i2s0 &spdif>;
rockchip,codec = <&max98357a &rt5514 &da7219 &cdn_dp>;
dmic-wakeup-delay-ms = <20>;
};

View File

@@ -0,0 +1,59 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/rockchip,rockchip-audio-max98090.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Rockchip audio complex with MAX98090 codec
maintainers:
- Fabio Estevam <festevam@gmail.com>
properties:
compatible:
const: rockchip,rockchip-audio-max98090
rockchip,model:
$ref: /schemas/types.yaml#/definitions/string
description: The user-visible name of this sound complex.
rockchip,i2s-controller:
$ref: /schemas/types.yaml#/definitions/phandle
description: Phandle to the Rockchip I2S controller.
rockchip,audio-codec:
$ref: /schemas/types.yaml#/definitions/phandle
description: Phandle to the MAX98090 audio codec.
rockchip,headset-codec:
$ref: /schemas/types.yaml#/definitions/phandle
description: Phandle to the external chip for jack detection.
rockchip,hdmi-codec:
$ref: /schemas/types.yaml#/definitions/phandle
description: Phandle to the HDMI device for HDMI codec.
required:
- compatible
- rockchip,model
- rockchip,i2s-controller
allOf:
- if:
required:
- rockchip,audio-codec
then:
required:
- rockchip,headset-codec
unevaluatedProperties: false
examples:
- |
sound {
compatible = "rockchip,rockchip-audio-max98090";
rockchip,model = "ROCKCHIP-I2S";
rockchip,i2s-controller = <&i2s>;
rockchip,audio-codec = <&max98090>;
rockchip,headset-codec = <&headsetcodec>;
};

View File

@@ -1,42 +0,0 @@
ROCKCHIP with MAX98090 CODEC
Required properties:
- compatible: "rockchip,rockchip-audio-max98090"
- rockchip,model: The user-visible name of this sound complex
- rockchip,i2s-controller: The phandle of the Rockchip I2S controller that's
connected to the CODEC
Optional properties:
- rockchip,audio-codec: The phandle of the MAX98090 audio codec.
- rockchip,headset-codec: The phandle of Ext chip for jack detection. This is
required if there is rockchip,audio-codec.
- rockchip,hdmi-codec: The phandle of HDMI device for HDMI codec.
Example:
/* For max98090-only board. */
sound {
compatible = "rockchip,rockchip-audio-max98090";
rockchip,model = "ROCKCHIP-I2S";
rockchip,i2s-controller = <&i2s>;
rockchip,audio-codec = <&max98090>;
rockchip,headset-codec = <&headsetcodec>;
};
/* For HDMI-only board. */
sound {
compatible = "rockchip,rockchip-audio-max98090";
rockchip,model = "ROCKCHIP-I2S";
rockchip,i2s-controller = <&i2s>;
rockchip,hdmi-codec = <&hdmi>;
};
/* For max98090 plus HDMI board. */
sound {
compatible = "rockchip,rockchip-audio-max98090";
rockchip,model = "ROCKCHIP-I2S";
rockchip,i2s-controller = <&i2s>;
rockchip,audio-codec = <&max98090>;
rockchip,headset-codec = <&headsetcodec>;
rockchip,hdmi-codec = <&hdmi>;
};

View File

@@ -27,14 +27,6 @@ definitions:
description: dai-link uses bit clock inversion
$ref: /schemas/types.yaml#/definitions/flag
dai-tdm-slot-num:
description: see tdm-slot.txt.
$ref: /schemas/types.yaml#/definitions/uint32
dai-tdm-slot-width:
description: see tdm-slot.txt.
$ref: /schemas/types.yaml#/definitions/uint32
system-clock-frequency:
description: |
If a clock is specified and a multiplication factor is given with
@@ -115,6 +107,8 @@ definitions:
dai:
type: object
$ref: tdm-slot.yaml#
properties:
sound-dai:
maxItems: 1
@@ -133,10 +127,6 @@ definitions:
bitclock-master:
$ref: /schemas/types.yaml#/definitions/flag
dai-tdm-slot-num:
$ref: "#/definitions/dai-tdm-slot-num"
dai-tdm-slot-width:
$ref: "#/definitions/dai-tdm-slot-width"
clocks:
maxItems: 1
system-clock-frequency:

View File

@@ -1,29 +0,0 @@
TDM slot:
This specifies audio DAI's TDM slot.
TDM slot properties:
dai-tdm-slot-num : Number of slots in use.
dai-tdm-slot-width : Width in bits for each slot.
dai-tdm-slot-tx-mask : Transmit direction slot mask, optional
dai-tdm-slot-rx-mask : Receive direction slot mask, optional
For instance:
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <8>;
dai-tdm-slot-tx-mask = <0 1>;
dai-tdm-slot-rx-mask = <1 0>;
And for each specified driver, there could be one .of_xlate_tdm_slot_mask()
to specify an explicit mapping of the channels and the slots. If it's absent
the default snd_soc_of_xlate_tdm_slot_mask() will be used to generating the
tx and rx masks.
For snd_soc_of_xlate_tdm_slot_mask(), the tx and rx masks will use a 1 bit
for an active slot as default, and the default active bits are at the LSB of
the masks.
The explicit masks are given as array of integers, where the first
number presents bit-0 (LSB), second presents bit-1, etc. Any non zero
number is considered 1 and 0 is 0. snd_soc_of_xlate_tdm_slot_mask()
does not do anything, if either mask is set non zero value.

View File

@@ -0,0 +1,52 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/tdm-slot.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Time Division Multiplexing (TDM) Slot Parameters
maintainers:
- Liam Girdwood <lgirdwood@gmail.com>
select: false
properties:
dai-tdm-slot-num:
$ref: /schemas/types.yaml#/definitions/uint32
description: Number of slots in use
dai-tdm-slot-width:
$ref: /schemas/types.yaml#/definitions/uint32
description: Width, in bits, of each slot
dai-tdm-idle-mode:
$ref: /schemas/types.yaml#/definitions/string
enum:
- none
- off
- zero
- pulldown
- hiz
- pullup
- drivehigh
description: Drive mode for inactive/idle TDM slots. For hardware that
implements .set_tdm_idle(). Optional. "None" represents undefined
behaviour and is the same as not setting this property.
patternProperties:
'^dai-tdm-slot-[rt]x-mask$':
$ref: /schemas/types.yaml#/definitions/uint32-array
description: Slot mask for active TDM slots. Optional. Drivers may
specify .xlate_tdm_slot_mask() to generate a slot mask dynamically. If
neither this property nor a driver-specific function are specified, the
default snd_soc_xlate_tdm_slot_mask() function will be used to generate
a mask. The first element of the array is slot 0 (LSB). Any nonzero
value will be treated as 1.
'^dai-tdm-slot-[rt]x-idle-mask$':
$ref: /schemas/types.yaml#/definitions/uint32
description: Idle slot mask. Optional. A bit being set to 1 indicates
that the corresponding TDM slot is inactive/idle.
additionalProperties: true

View File

@@ -30,7 +30,7 @@ properties:
description: |
I2C address of the device can be between 0x41 to 0x48.
reset-gpio:
reset-gpios:
maxItems: 1
description: GPIO used to reset the device.
@@ -82,7 +82,7 @@ examples:
#sound-dai-cells = <0>;
interrupt-parent = <&gpio1>;
interrupts = <14>;
reset-gpio = <&gpio1 15 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
shutdown-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
ti,imon-slot-no = <0>;
ti,vmon-slot-no = <2>;

View File

@@ -2376,6 +2376,13 @@ quirk_flags
Skip the probe-time interface setup (usb_set_interface,
init_pitch, init_sample_rate); redundant with
snd_usb_endpoint_prepare() at stream-open time
* bit 27: ``mixer_playback_linear_vol``
Set linear volume mapping for devices where the playback volume
control value is mapped to voltage (instead of dB) level linearly.
In short: ``x(raw) = (raw - raw_min) / (raw_max - raw_min)``;
``V(x) = k * x``; ``dB(x) = 20 * log10(x)``. Overrides bit 24
* bit 28: ``mixer_capture_linear_vol``
Similar to bit 27 but for capture streams. Overrides bit 25
This module supports multiple devices, autoprobe and hotplugging.