mirror of
https://github.com/torvalds/linux.git
synced 2026-05-03 14:02:43 -04:00
Pull sound fixes from Takashi Iwai: "This became fairly large, containing mostly the collection of ASoC fixes that slipped from the previous request, so I sent now a bit earlier than usual. But all changes look small and mostly device-specific, hence nothing to worry too much. Majority of changes are for x86 based platforms and their CODEC drivers, in order to address some issues hit by their recent tests and fuzzing. The rest are other ASoC device-specific fixes (imx, qcom, wm8974, amd, rockchip) as well as a trivial fix for a kernel WARNING hit by syzkaller" * tag 'sound-5.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (28 commits) ALSA: hda/realtek: Fixed ALC298 sound bug by adding quirk for Samsung Notebook Pen S ALSA: info: Drop WARN_ON() from buffer NULL sanity check ASoC: rt5682: Report the button event in the headset type only ASoC: Intel: bytcht_es8316: Add missed put_device() ASoC: rt5682: Enable Vref2 under using PLL2 ASoC: rt286: fix unexpected interrupt happens ASoC: wm8974: remove unsupported clock mode ASoC: wm8974: fix Boost Mixer Aux Switch ASoC: SOF: core: fix null-ptr-deref bug during device removal ASoc: codecs: max98373: remove Idle_bias_on to let codec suspend ASoC: codecs: max98373: Removed superfluous volume control from chip default ASoC: topology: fix tlvs in error handling for widget_dmixer ASoC: topology: fix kernel oops on route addition error ASoC: SOF: imx: add min/max channels for SAI/ESAI on i.MX8/i.MX8M ASoC: Intel: bdw-rt5677: fix non BE conversion ASoC: soc-dai: set dai_link dpcm_ flags with a helper MAINTAINERS: Add Shengjiu to reviewer list of sound/soc/fsl ASoC: core: Remove only the registered component in devm functions MAINTAINERS: Change Maintainer for some at91 drivers ASoC: dt-bindings: simple-card: Fix 'make dt_binding_check' warnings ...
492 lines
13 KiB
YAML
492 lines
13 KiB
YAML
# SPDX-License-Identifier: GPL-2.0
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/sound/simple-card.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Simple Audio Card Driver Device Tree Bindings
|
|
|
|
maintainers:
|
|
- Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
|
|
|
definitions:
|
|
|
|
frame-master:
|
|
description: Indicates dai-link frame master.
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
maxItems: 1
|
|
|
|
bitclock-master:
|
|
description: Indicates dai-link bit clock master
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
maxItems: 1
|
|
|
|
frame-inversion:
|
|
description: dai-link uses frame clock inversion
|
|
$ref: /schemas/types.yaml#/definitions/flag
|
|
|
|
bitclock-inversion:
|
|
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
|
|
mclk-fs, the clock will be set to the calculated mclk frequency
|
|
when the stream starts.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
system-clock-direction-out:
|
|
description: |
|
|
specifies clock direction as 'out' on initialization.
|
|
It is useful for some aCPUs with fixed clocks.
|
|
$ref: /schemas/types.yaml#/definitions/flag
|
|
|
|
mclk-fs:
|
|
description: |
|
|
Multiplication factor between stream rate and codec mclk.
|
|
When defined, mclk-fs property defined in dai-link sub nodes are ignored.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
aux-devs:
|
|
description: |
|
|
List of phandles pointing to auxiliary devices, such
|
|
as amplifiers, to be added to the sound card.
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
|
|
convert-rate:
|
|
description: CPU to Codec rate convert.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
convert-channels:
|
|
description: CPU to Codec rate channels.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
prefix:
|
|
description: "device name prefix"
|
|
$ref: /schemas/types.yaml#/definitions/string
|
|
|
|
label:
|
|
maxItems: 1
|
|
|
|
routing:
|
|
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.
|
|
$ref: /schemas/types.yaml#/definitions/non-unique-string-array
|
|
|
|
widgets:
|
|
description: User specified audio sound widgets.
|
|
$ref: /schemas/types.yaml#/definitions/non-unique-string-array
|
|
|
|
pin-switches:
|
|
description: the widget names for which pin switches must be created.
|
|
$ref: /schemas/types.yaml#/definitions/string-array
|
|
|
|
format:
|
|
description: audio format.
|
|
items:
|
|
enum:
|
|
- i2s
|
|
- right_j
|
|
- left_j
|
|
- dsp_a
|
|
- dsp_b
|
|
- ac97
|
|
- pdm
|
|
- msb
|
|
- lsb
|
|
|
|
dai:
|
|
type: object
|
|
properties:
|
|
sound-dai:
|
|
maxItems: 1
|
|
|
|
# common properties
|
|
mclk-fs:
|
|
$ref: "#/definitions/mclk-fs"
|
|
prefix:
|
|
$ref: "#/definitions/prefix"
|
|
frame-inversion:
|
|
$ref: "#/definitions/frame-inversion"
|
|
bitclock-inversion:
|
|
$ref: "#/definitions/bitclock-inversion"
|
|
frame-master:
|
|
$ref: /schemas/types.yaml#/definitions/flag
|
|
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:
|
|
$ref: "#/definitions/system-clock-frequency"
|
|
system-clock-direction-out:
|
|
$ref: "#/definitions/system-clock-direction-out"
|
|
required:
|
|
- sound-dai
|
|
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- simple-audio-card
|
|
- simple-scu-audio-card
|
|
|
|
"#address-cells":
|
|
const: 1
|
|
"#size-cells":
|
|
const: 0
|
|
|
|
label:
|
|
$ref: "#/definitions/label"
|
|
|
|
simple-audio-card,name:
|
|
description: User specified audio sound card name.
|
|
$ref: /schemas/types.yaml#/definitions/string
|
|
|
|
# use patternProperties to avoid naming "xxx,yyy" issue
|
|
patternProperties:
|
|
"^simple-audio-card,widgets$":
|
|
$ref: "#/definitions/widgets"
|
|
"^simple-audio-card,routing$":
|
|
$ref: "#/definitions/routing"
|
|
"^simple-audio-card,cpu(@[0-9a-f]+)?":
|
|
$ref: "#/definitions/dai"
|
|
"^simple-audio-card,codec(@[0-9a-f]+)?":
|
|
$ref: "#/definitions/dai"
|
|
|
|
# common properties
|
|
"^simple-audio-card,frame-master$":
|
|
$ref: "#/definitions/frame-master"
|
|
"^simple-audio-card,bitclock-master$":
|
|
$ref: "#/definitions/bitclock-master"
|
|
"^simple-audio-card,frame-inversion$":
|
|
$ref: "#/definitions/frame-inversion"
|
|
"^simple-audio-card,bitclock-inversion$":
|
|
$ref: "#/definitions/bitclock-inversion"
|
|
"^simple-audio-card,format$":
|
|
$ref: "#/definitions/format"
|
|
"^simple-audio-card,mclk-fs$":
|
|
$ref: "#/definitions/mclk-fs"
|
|
"^simple-audio-card,aux-devs$":
|
|
$ref: "#/definitions/aux-devs"
|
|
"^simple-audio-card,convert-rate$":
|
|
$ref: "#/definitions/convert-rate"
|
|
"^simple-audio-card,convert-channels$":
|
|
$ref: "#/definitions/convert-channels"
|
|
"^simple-audio-card,prefix$":
|
|
$ref: "#/definitions/prefix"
|
|
"^simple-audio-card,pin-switches$":
|
|
$ref: "#/definitions/pin-switches"
|
|
"^simple-audio-card,hp-det-gpio$":
|
|
maxItems: 1
|
|
"^simple-audio-card,mic-det-gpio$":
|
|
maxItems: 1
|
|
|
|
"^simple-audio-card,dai-link(@[0-9a-f]+)?$":
|
|
description: |
|
|
Container for dai-link level properties and the CPU and CODEC sub-nodes.
|
|
This container may be omitted when the card has only one DAI link.
|
|
type: object
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
|
|
# common properties
|
|
frame-master:
|
|
$ref: "#/definitions/frame-master"
|
|
bitclock-master:
|
|
$ref: "#/definitions/bitclock-master"
|
|
frame-inversion:
|
|
$ref: "#/definitions/frame-inversion"
|
|
bitclock-inversion:
|
|
$ref: "#/definitions/bitclock-inversion"
|
|
format:
|
|
$ref: "#/definitions/format"
|
|
mclk-fs:
|
|
$ref: "#/definitions/mclk-fs"
|
|
aux-devs:
|
|
$ref: "#/definitions/aux-devs"
|
|
convert-rate:
|
|
$ref: "#/definitions/convert-rate"
|
|
convert-channels:
|
|
$ref: "#/definitions/convert-channels"
|
|
prefix:
|
|
$ref: "#/definitions/prefix"
|
|
pin-switches:
|
|
$ref: "#/definitions/pin-switches"
|
|
hp-det-gpio:
|
|
maxItems: 1
|
|
mic-det-gpio:
|
|
maxItems: 1
|
|
|
|
patternProperties:
|
|
"^cpu(@[0-9a-f]+)?":
|
|
$ref: "#/definitions/dai"
|
|
"^codec(@[0-9a-f]+)?":
|
|
$ref: "#/definitions/dai"
|
|
additionalProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
#--------------------
|
|
# single DAI link
|
|
#--------------------
|
|
- |
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
simple-audio-card,name = "VF610-Tower-Sound-Card";
|
|
simple-audio-card,format = "left_j";
|
|
simple-audio-card,bitclock-master = <&dailink0_master>;
|
|
simple-audio-card,frame-master = <&dailink0_master>;
|
|
simple-audio-card,widgets =
|
|
"Microphone", "Microphone Jack",
|
|
"Headphone", "Headphone Jack",
|
|
"Speaker", "External Speaker";
|
|
simple-audio-card,routing =
|
|
"MIC_IN", "Microphone Jack",
|
|
"Headphone Jack", "HP_OUT",
|
|
"External Speaker", "LINE_OUT";
|
|
|
|
simple-audio-card,cpu {
|
|
sound-dai = <&sh_fsi2 0>;
|
|
};
|
|
|
|
dailink0_master: simple-audio-card,codec {
|
|
sound-dai = <&ak4648>;
|
|
clocks = <&osc>;
|
|
};
|
|
};
|
|
|
|
#--------------------
|
|
# Multi DAI links
|
|
#--------------------
|
|
- |
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
simple-audio-card,name = "Cubox Audio";
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
simple-audio-card,dai-link@0 { /* I2S - HDMI */
|
|
reg = <0>;
|
|
format = "i2s";
|
|
cpu {
|
|
sound-dai = <&audio0>;
|
|
};
|
|
codec {
|
|
sound-dai = <&tda998x0>;
|
|
};
|
|
};
|
|
|
|
simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */
|
|
reg = <1>;
|
|
cpu {
|
|
sound-dai = <&audio1>;
|
|
};
|
|
codec {
|
|
sound-dai = <&tda998x1>;
|
|
};
|
|
};
|
|
|
|
simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */
|
|
reg = <2>;
|
|
cpu {
|
|
sound-dai = <&audio2>;
|
|
};
|
|
codec {
|
|
sound-dai = <&spdif_codec>;
|
|
};
|
|
};
|
|
};
|
|
|
|
#--------------------
|
|
# route audio from IMX6 SSI2 through TLV320DAC3100 codec
|
|
# through TPA6130A2 amplifier to headphones:
|
|
#--------------------
|
|
- |
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
|
|
simple-audio-card,widgets =
|
|
"Headphone", "Headphone Jack";
|
|
simple-audio-card,routing =
|
|
"Headphone Jack", "HPLEFT",
|
|
"Headphone Jack", "HPRIGHT",
|
|
"LEFTIN", "HPL",
|
|
"RIGHTIN", "HPR";
|
|
simple-audio-card,aux-devs = <&>;
|
|
simple-audio-card,cpu {
|
|
sound-dai = <&ssi2>;
|
|
};
|
|
simple-audio-card,codec {
|
|
sound-dai = <&codec>;
|
|
clocks = <&clocks>;
|
|
};
|
|
};
|
|
|
|
#--------------------
|
|
# Sampling Rate Conversion
|
|
#--------------------
|
|
- |
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
|
|
simple-audio-card,name = "rsnd-ak4643";
|
|
simple-audio-card,format = "left_j";
|
|
simple-audio-card,bitclock-master = <&sndcodec>;
|
|
simple-audio-card,frame-master = <&sndcodec>;
|
|
|
|
simple-audio-card,convert-rate = <48000>;
|
|
|
|
simple-audio-card,prefix = "ak4642";
|
|
simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
|
|
"DAI0 Capture", "ak4642 Capture";
|
|
|
|
sndcpu: simple-audio-card,cpu {
|
|
sound-dai = <&rcar_sound>;
|
|
};
|
|
|
|
sndcodec: simple-audio-card,codec {
|
|
sound-dai = <&ak4643>;
|
|
system-clock-frequency = <11289600>;
|
|
};
|
|
};
|
|
|
|
#--------------------
|
|
# 2 CPU 1 Codec (Mixing)
|
|
#--------------------
|
|
- |
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
simple-audio-card,name = "rsnd-ak4643";
|
|
simple-audio-card,format = "left_j";
|
|
simple-audio-card,bitclock-master = <&dpcmcpu>;
|
|
simple-audio-card,frame-master = <&dpcmcpu>;
|
|
|
|
simple-audio-card,convert-rate = <48000>;
|
|
simple-audio-card,convert-channels = <2>;
|
|
|
|
simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
|
|
"ak4642 Playback", "DAI1 Playback";
|
|
|
|
dpcmcpu: simple-audio-card,cpu@0 {
|
|
reg = <0>;
|
|
sound-dai = <&rcar_sound 0>;
|
|
};
|
|
|
|
simple-audio-card,cpu@1 {
|
|
reg = <1>;
|
|
sound-dai = <&rcar_sound 1>;
|
|
};
|
|
|
|
simple-audio-card,codec {
|
|
prefix = "ak4642";
|
|
sound-dai = <&ak4643>;
|
|
clocks = <&audio_clock>;
|
|
};
|
|
};
|
|
|
|
#--------------------
|
|
# Multi DAI links with DPCM:
|
|
#
|
|
# CPU0 ------ ak4613
|
|
# CPU1 ------ PCM3168A-p /* DPCM 1ch/2ch */
|
|
# CPU2 --/ /* DPCM 3ch/4ch */
|
|
# CPU3 --/ /* DPCM 5ch/6ch */
|
|
# CPU4 --/ /* DPCM 7ch/8ch */
|
|
# CPU5 ------ PCM3168A-c
|
|
#--------------------
|
|
- |
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
simple-audio-card,routing =
|
|
"pcm3168a Playback", "DAI1 Playback",
|
|
"pcm3168a Playback", "DAI2 Playback",
|
|
"pcm3168a Playback", "DAI3 Playback",
|
|
"pcm3168a Playback", "DAI4 Playback";
|
|
|
|
simple-audio-card,dai-link@0 {
|
|
reg = <0>;
|
|
format = "left_j";
|
|
bitclock-master = <&sndcpu0>;
|
|
frame-master = <&sndcpu0>;
|
|
|
|
sndcpu0: cpu {
|
|
sound-dai = <&rcar_sound 0>;
|
|
};
|
|
codec {
|
|
sound-dai = <&ak4613>;
|
|
};
|
|
};
|
|
|
|
simple-audio-card,dai-link@1 {
|
|
reg = <1>;
|
|
format = "i2s";
|
|
bitclock-master = <&sndcpu1>;
|
|
frame-master = <&sndcpu1>;
|
|
|
|
convert-channels = <8>; /* TDM Split */
|
|
|
|
sndcpu1: cpu0 {
|
|
sound-dai = <&rcar_sound 1>;
|
|
};
|
|
cpu1 {
|
|
sound-dai = <&rcar_sound 2>;
|
|
};
|
|
cpu2 {
|
|
sound-dai = <&rcar_sound 3>;
|
|
};
|
|
cpu3 {
|
|
sound-dai = <&rcar_sound 4>;
|
|
};
|
|
codec {
|
|
mclk-fs = <512>;
|
|
prefix = "pcm3168a";
|
|
dai-tdm-slot-num = <8>;
|
|
sound-dai = <&pcm3168a 0>;
|
|
};
|
|
};
|
|
|
|
simple-audio-card,dai-link@2 {
|
|
reg = <2>;
|
|
format = "i2s";
|
|
bitclock-master = <&sndcpu2>;
|
|
frame-master = <&sndcpu2>;
|
|
|
|
sndcpu2: cpu {
|
|
sound-dai = <&rcar_sound 5>;
|
|
};
|
|
codec {
|
|
mclk-fs = <512>;
|
|
prefix = "pcm3168a";
|
|
sound-dai = <&pcm3168a 1>;
|
|
};
|
|
};
|
|
};
|