* [PATCH 00/83] ASoC: use .auto_selectable_formats
@ 2026-05-26 1:58 Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 01/83] ASoC: remove SND_SOC_POSSIBLE_xBx_xFx Kuninori Morimoto
` (83 more replies)
0 siblings, 84 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:58 UTC (permalink / raw)
To: Zhang Yi, Yixun Lan, Xiubo Li, Vladimir Zapolskiy,
Vishwas A Deshpande, Vijendar Mukunda, Venkata Prasad Potturu,
Uwe Kleine-König, Tzung-Bi Shih, Troy Mitchell, Tim Bird,
Thierry Reding, Takashi Iwai, Sylwester Nawrocki,
Support Opensource, Steven Eckhoff, Shengjiu Wang, Shenghao Ding,
Sharique Mohammad, Sen Wang, Scott Branden, Sascha Hauer,
Samuel Holland, Robert Jarzmik, Richard Fitzgerald, Ray Jui,
Qianfeng Rong, Piotr Wojtaszczyk, Peter Rosin, Paul Cercueil,
Olivier Moysan, Oder Chiou, Nuno Sá, Nicolin Chen,
Nicolas Frattaroli, Nicolas Ferre, Neil Armstrong,
Maxime Coquelin, Max Filippov, Matthias Brugger, Masami Hiramatsu,
Martin Povišer, Martin Blumenstingl, Mark Brown,
M R Swami Reddy, Luca Ceresoli, Linux-Renesas, Linux-ARM,
Linux-ALSA, Liam Girdwood, Lars-Peter, Lad Prabhakar,
Kunihiko Hayashi, Krzysztof Kozlowski, Kiseok Jo,
Kirill Marinushkin, Kevin Lu, Kevin Hilman, Kevin Cernekee,
Jonathan Hunter, Jihed Chaibi, Jerome Brunet, Jernej Skrabec,
Jaroslav Kysela, Jarkko Nikula, James Ogletree, J.M.B. Downing,
Hsieh Hung-En, Herve Codina, Heiko Stuebner, HariKrishna Sagala,
Haojian Zhuang, Guoqing Jiang, Guenter Roeck, Geert Uytterhoeven,
Fred Treven, Frank Li, Florian Fainelli, Fabio Estevam,
David Rhodes, Dario Binacchi, Daniel Mack, Cristian Ciocaltea,
Claudiu Beznea, Cheng-Yi Chiang, Chen-Yu Tsai, Charles Keepax,
Bram Vlerick, Binbin Zhou, Biju Das, Benson Leung, Ben Bright,
Bartosz Golaszewski, Baojun Xu, Arnaud Pouliquen,
AngeloGioacchino Del Regno, Alvin Šipraga, Alexandre Torgue,
Alexandre Belloni, spacemit, linux-riscv, linux-mips, imx,
chrome-platform
Hi Mark, all
I have posted this patch as [RFC] when below. There was no objection
until today, so I post full patch-set.
Date: Wed, 13 May 2026 00:11:35 +0000
Current ASoC supports snd_soc_daifmt_parse_format() which can specify DAI
format by "dai-format" property from DT.
But strictly speaking, it is SW settings, so doesn't match to DT's policy.
Current ASoC is supporting auto format select via
snd_soc_dai_ops :: .auto_selectable_formats.
But the user is very few today.
DT doesn't need to specify the DAI format via "dai-format", if both CPU
and Codec drivers were supporting .auto_selectable_formats. It will be
automatically selected from .auto_selectable_formats.
But, I noticed that current auto format select method can't handle all cases.
For example, current .auto_selectable_formats is like below
static u64 xxx_auto_formats[] = {
(A) /* First Priority */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_NB_NF |
SND_SOC_POSSIBLE_DAIFMT_NB_IF | (x)
SND_SOC_POSSIBLE_DAIFMT_IB_NF |
SND_SOC_POSSIBLE_DAIFMT_IB_IF, (x)
/* Second Priority */
(B) SND_SOC_POSSIBLE_DAIFMT_DSP_A | (y)
SND_SOC_POSSIBLE_DAIFMT_DSP_B, (y)
};
It try to find DAI format from (A) first, and next it will use (A | B).
But it can't handle the format if some format were independent.
For example, DSP_x (y) can't use with xB_IF (x), etc.
So, I would like to update the method. New method doesn't use OR.
It try to find DAI format from (a), next it will use (b).
static u64 xxx_auto_formats[] = {
(a) /* First Priority */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_NB_NF |
SND_SOC_POSSIBLE_DAIFMT_NB_IF |
SND_SOC_POSSIBLE_DAIFMT_IB_NF |
SND_SOC_POSSIBLE_DAIFMT_IB_IF,
/* Second Priority */
(b) SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B |
SND_SOC_POSSIBLE_DAIFMT_NB_NF |
SND_SOC_POSSIBLE_DAIFMT_IB_NF,
};
Switch old method to new method, Current auto select user need to update
.auto_selectable_formats. Fortunately, current few users doesn't have
above limitation. update (A)(B) to (a)(b) style is possible.
a = A
b = A | B
I would like to update method, and add .auto_selectable_formats
support on all drivers.
One note is that auto select might not find best format on some CPU/Codec
combination. So "dai-format" is necessary anyway.
And, there haven't been any big problems on .auto_selectable_formats,
because there were few users.
But if all drivers try to use this, it cannot be denied that they may
encounter unknown problems... In such case, "dai-format" can help, though.
Kuninori Morimoto (83):
ASoC: remove SND_SOC_POSSIBLE_xBx_xFx
ASoC: codecs: framer-codec: don't use array if single pattarn
ASoC: codecs: idt821034: don't use array if single pattarn
ASoC: codecs: peb2466: don't use array if single pattarn
ASoC: codecs: ak4619: update auto select format
ASoC: codecs: pcm3168a: update auto select format
ASoC: renesas: rcar: update auto select format
ASoC: update auto format selection method
ASoC: audio-graph-card2: recommend to use auto select DAI format
ASoC: amd: use .auto_selectable_formats
ASoC: apple: use .auto_selectable_formats
ASoC: atmel: use .auto_selectable_formats
ASoC: au1x: use .auto_selectable_formats
ASoC: bcm: use .auto_selectable_formats
ASoC: cirrus: use .auto_selectable_formats
ASoC: codecs: 88pm860x: use .auto_selectable_formats
ASoC: codecs: ad1*: use .auto_selectable_formats
ASoC: codecs: ab8500: use .auto_selectable_formats
ASoC: codecs: adau*: use .auto_selectable_formats
ASoC: codecs: adav80x: use .auto_selectable_formats
ASoC: codecs: ak4*: use .auto_selectable_formats
ASoC: codecs: ak5*: use .auto_selectable_formats
ASoC: codecs: alc56*: use .auto_selectable_formats
ASoC: codecs: arizona: use .auto_selectable_formats
ASoC: codecs: cpcap: use .auto_selectable_formats
ASoC: codecs: cros_ec_codec: use .auto_selectable_formats
ASoC: codecs: cs35l*: use .auto_selectable_formats
ASoC: codecs: cs42*: use .auto_selectable_formats
ASoC: codecs: cs5*: use .auto_selectable_formats
ASoC: codecs: cx2072x: use .auto_selectable_formats
ASoC: codecs: da*: use .auto_selectable_formats
ASoC: codecs: es*: use .auto_selectable_formats
ASoC: codecs: inno_rk3036: use .auto_selectable_formats
ASoC: codecs: isabelle: use .auto_selectable_formats
ASoC: codecs: lm49453: use .auto_selectable_formats
ASoC: codecs: lochnagar-sc: use .auto_selectable_formats
ASoC: codecs: madera: use .auto_selectable_formats
ASoC: codecs: max*: use .auto_selectable_formats
ASoC: codecs: mc13783: use .auto_selectable_formats
ASoC: codecs: ml26124: use .auto_selectable_formats
ASoC: codecs: nau*: use .auto_selectable_formats
ASoC: codecs: ntp8*: use .auto_selectable_formats
ASoC: codecs: pcm*: use .auto_selectable_formats
ASoC: codecs: rk33*: use .auto_selectable_formats
ASoC: codecs: rtq912*: use .auto_selectable_formats
ASoC: codecs: rt*: use .auto_selectable_formats
ASoC: codecs: sgtl5000: use .auto_selectable_formats
ASoC: codecs: si476x: use .auto_selectable_formats
ASoC: codecs: sma130*: use .auto_selectable_formats
ASoC: codecs: src4xxx: use .auto_selectable_formats
ASoC: codecs: ssm*: use .auto_selectable_formats
ASoC: codecs: sta*: use .auto_selectable_formats
ASoC: codecs: tas*: use .auto_selectable_formats
ASoC: codecs: tfa9879: use .auto_selectable_formats
ASoC: codecs: tlv320*: use .auto_selectable_formats
ASoC: codecs: tscs454: use .auto_selectable_formats
ASoC: codecs: twl4030: use .auto_selectable_formats
ASoC: codecs: uda13*: use .auto_selectable_formats
ASoC: codecs: wm*: use .auto_selectable_formats
ASoC: codecs: zl38060: use .auto_selectable_formats
ASoC: dwc: use .auto_selectable_formats
ASoC: fsl: use .auto_selectable_formats
ASoC: hisilicon: use .auto_selectable_formats
ASoC: img: use .auto_selectable_formats
ASoC: jz4740: use .auto_selectable_formats
ASoC: kirkwood: use .auto_selectable_formats
ASoC: loongson: use .auto_selectable_formats
ASoC: mediatek: use .auto_selectable_formats
ASoC: meson: use .auto_selectable_formats
ASoC: mxs: use .auto_selectable_formats
ASoC: pxa: use .auto_selectable_formats
ASoC: renesas: use .auto_selectable_formats
ASoC: rockchip: use .auto_selectable_formats
ASoC: samsung: use .auto_selectable_formats
ASoC: spacemit: use .auto_selectable_formats
ASoC: sti: use .auto_selectable_formats
ASoC: stm: use .auto_selectable_formats
ASoC: sunxi: use .auto_selectable_formats
ASoC: tegra: use .auto_selectable_formats
ASoC: ti: use .auto_selectable_formats
ASoC: uniphier: use .auto_selectable_formats
ASoC: ux500: use .auto_selectable_formats
ASoC: xtensa: use .auto_selectable_formats
include/sound/soc-dai.h | 15 +-
sound/soc/amd/acp/acp-i2s.c | 6 +
sound/soc/amd/raven/acp3x-i2s.c | 6 +
sound/soc/amd/vangogh/acp5x-i2s.c | 6 +
sound/soc/apple/mca.c | 10 +
sound/soc/atmel/atmel-i2s.c | 4 +
sound/soc/atmel/atmel_ssc_dai.c | 7 +
sound/soc/atmel/mchp-i2s-mcc.c | 9 +
sound/soc/atmel/mchp-pdmc.c | 4 +
sound/soc/au1x/i2sc.c | 11 ++
sound/soc/au1x/psc-i2s.c | 11 ++
sound/soc/bcm/bcm2835-i2s.c | 13 ++
sound/soc/bcm/cygnus-ssp.c | 7 +
sound/soc/cirrus/ep93xx-i2s.c | 11 ++
sound/soc/codecs/88pm860x-codec.c | 6 +
sound/soc/codecs/ab8500-codec.c | 13 ++
sound/soc/codecs/ad1836.c | 6 +
sound/soc/codecs/ad193x.c | 10 +
sound/soc/codecs/adau1372.c | 12 ++
sound/soc/codecs/adau1373.c | 12 ++
sound/soc/codecs/adau1701.c | 11 ++
sound/soc/codecs/adau17x1.c | 13 ++
sound/soc/codecs/adau1977.c | 13 ++
sound/soc/codecs/adau7118.c | 12 ++
sound/soc/codecs/adav80x.c | 8 +
sound/soc/codecs/ak4104.c | 7 +
sound/soc/codecs/ak4118.c | 7 +
sound/soc/codecs/ak4458.c | 9 +
sound/soc/codecs/ak4535.c | 6 +
sound/soc/codecs/ak4613.c | 5 -
sound/soc/codecs/ak4619.c | 8 +-
sound/soc/codecs/ak4642.c | 6 +
sound/soc/codecs/ak4671.c | 7 +
sound/soc/codecs/ak5386.c | 6 +
sound/soc/codecs/ak5558.c | 7 +
sound/soc/codecs/alc5623.c | 11 ++
sound/soc/codecs/alc5632.c | 13 ++
sound/soc/codecs/arizona.c | 12 ++
sound/soc/codecs/cpcap.c | 18 ++
sound/soc/codecs/cros_ec_codec.c | 8 +
sound/soc/codecs/cs35l33.c | 6 +
sound/soc/codecs/cs35l35.c | 8 +
sound/soc/codecs/cs35l36.c | 12 ++
sound/soc/codecs/cs35l41.c | 10 +
sound/soc/codecs/cs35l45.c | 10 +
sound/soc/codecs/cs35l56.c | 10 +
sound/soc/codecs/cs40l50-codec.c | 9 +
sound/soc/codecs/cs4234.c | 9 +
sound/soc/codecs/cs4265.c | 7 +
sound/soc/codecs/cs4270.c | 6 +
sound/soc/codecs/cs4271.c | 6 +
sound/soc/codecs/cs42l42.c | 9 +
sound/soc/codecs/cs42l43.c | 12 ++
sound/soc/codecs/cs42l51.c | 7 +
sound/soc/codecs/cs42l52.c | 13 ++
sound/soc/codecs/cs42l56.c | 8 +
sound/soc/codecs/cs42l73.c | 7 +
sound/soc/codecs/cs42l84.c | 6 +
sound/soc/codecs/cs42xx8.c | 8 +
sound/soc/codecs/cs43130.c | 14 ++
sound/soc/codecs/cs4341.c | 8 +
sound/soc/codecs/cs4349.c | 7 +
sound/soc/codecs/cs48l32.c | 12 ++
sound/soc/codecs/cs530x.c | 9 +
sound/soc/codecs/cs53l30.c | 8 +
sound/soc/codecs/cx2072x.c | 12 ++
sound/soc/codecs/da7210.c | 7 +
sound/soc/codecs/da7213.c | 5 -
sound/soc/codecs/da7218.c | 12 ++
sound/soc/codecs/da7219.c | 12 ++
sound/soc/codecs/da732x.c | 18 ++
sound/soc/codecs/da9055.c | 8 +
sound/soc/codecs/es7134.c | 6 +
sound/soc/codecs/es7241.c | 7 +
sound/soc/codecs/es8311.c | 19 ++
sound/soc/codecs/es8316.c | 9 +
sound/soc/codecs/es8323.c | 13 ++
sound/soc/codecs/es8326.c | 9 +
sound/soc/codecs/es8328.c | 7 +
sound/soc/codecs/es8375.c | 12 ++
sound/soc/codecs/es8389.c | 9 +
sound/soc/codecs/framer-codec.c | 8 +-
sound/soc/codecs/idt821034.c | 9 +-
sound/soc/codecs/inno_rk3036.c | 12 ++
sound/soc/codecs/isabelle.c | 13 ++
sound/soc/codecs/lm49453.c | 15 ++
sound/soc/codecs/lochnagar-sc.c | 8 +
sound/soc/codecs/madera.c | 12 ++
sound/soc/codecs/max98088.c | 12 ++
sound/soc/codecs/max98090.c | 12 ++
sound/soc/codecs/max98095.c | 14 ++
sound/soc/codecs/max98371.c | 7 +
sound/soc/codecs/max98373-i2c.c | 10 +
sound/soc/codecs/max98388.c | 10 +
sound/soc/codecs/max98390.c | 10 +
sound/soc/codecs/max98396.c | 12 ++
sound/soc/codecs/max9850.c | 11 ++
sound/soc/codecs/max98520.c | 10 +
sound/soc/codecs/max9860.c | 12 ++
sound/soc/codecs/max9867.c | 10 +
sound/soc/codecs/max98925.c | 8 +
sound/soc/codecs/max98926.c | 8 +
sound/soc/codecs/max98927.c | 10 +
sound/soc/codecs/mc13783.c | 12 ++
sound/soc/codecs/ml26124.c | 6 +
sound/soc/codecs/nau8325.c | 11 ++
sound/soc/codecs/nau8540.c | 11 ++
sound/soc/codecs/nau8810.c | 12 ++
sound/soc/codecs/nau8821.c | 11 ++
sound/soc/codecs/nau8822.c | 12 ++
sound/soc/codecs/nau8824.c | 11 ++
sound/soc/codecs/nau8825.c | 11 ++
sound/soc/codecs/ntp8835.c | 7 +
sound/soc/codecs/ntp8918.c | 7 +
sound/soc/codecs/pcm1681.c | 7 +
sound/soc/codecs/pcm1754.c | 6 +
sound/soc/codecs/pcm1789.c | 7 +
sound/soc/codecs/pcm179x.c | 6 +
sound/soc/codecs/pcm186x.c | 9 +
sound/soc/codecs/pcm3060.c | 7 +
sound/soc/codecs/pcm3168a.c | 8 +-
sound/soc/codecs/pcm512x.c | 9 +
sound/soc/codecs/peb2466.c | 9 +-
sound/soc/codecs/rk3308_codec.c | 11 ++
sound/soc/codecs/rk3328_codec.c | 9 +
sound/soc/codecs/rt1011.c | 10 +
sound/soc/codecs/rt1015.c | 10 +
sound/soc/codecs/rt1016.c | 10 +
sound/soc/codecs/rt1019.c | 10 +
sound/soc/codecs/rt1305.c | 10 +
sound/soc/codecs/rt1308.c | 10 +
sound/soc/codecs/rt1318.c | 10 +
sound/soc/codecs/rt274.c | 8 +
sound/soc/codecs/rt286.c | 8 +
sound/soc/codecs/rt298.c | 8 +
sound/soc/codecs/rt5514.c | 12 ++
sound/soc/codecs/rt5616.c | 10 +
sound/soc/codecs/rt5631.c | 10 +
sound/soc/codecs/rt5640.c | 10 +
sound/soc/codecs/rt5645.c | 10 +
sound/soc/codecs/rt5651.c | 10 +
sound/soc/codecs/rt5659.c | 10 +
sound/soc/codecs/rt5660.c | 10 +
sound/soc/codecs/rt5663.c | 10 +
sound/soc/codecs/rt5665.c | 10 +
sound/soc/codecs/rt5668.c | 14 ++
sound/soc/codecs/rt5670.c | 10 +
sound/soc/codecs/rt5677.c | 10 +
sound/soc/codecs/rt5682.c | 14 ++
sound/soc/codecs/rt5682s.c | 14 ++
sound/soc/codecs/rt9120.c | 9 +
sound/soc/codecs/rt9123.c | 9 +
sound/soc/codecs/rtq9124.c | 9 +
sound/soc/codecs/rtq9128.c | 9 +
sound/soc/codecs/sgtl5000.c | 11 ++
sound/soc/codecs/si476x.c | 19 ++
sound/soc/codecs/sma1303.c | 13 ++
sound/soc/codecs/sma1307.c | 13 ++
sound/soc/codecs/src4xxx.c | 8 +
sound/soc/codecs/ssm2518.c | 13 ++
sound/soc/codecs/ssm2602.c | 13 ++
sound/soc/codecs/ssm3515.c | 10 +
sound/soc/codecs/ssm4567.c | 13 ++
sound/soc/codecs/sta32x.c | 9 +
sound/soc/codecs/sta350.c | 9 +
sound/soc/codecs/sta529.c | 7 +
sound/soc/codecs/tas2552.c | 14 ++
sound/soc/codecs/tas2562.c | 10 +
sound/soc/codecs/tas2764.c | 12 ++
sound/soc/codecs/tas2770.c | 12 ++
sound/soc/codecs/tas2780.c | 10 +
sound/soc/codecs/tas5086.c | 7 +
sound/soc/codecs/tas571x.c | 7 +
sound/soc/codecs/tas5720.c | 9 +
sound/soc/codecs/tas6424.c | 9 +
sound/soc/codecs/tfa9879.c | 9 +
sound/soc/codecs/tlv320adc3xxx.c | 15 ++
sound/soc/codecs/tlv320adcx140.c | 12 ++
sound/soc/codecs/tlv320aic23.c | 9 +
sound/soc/codecs/tlv320aic26.c | 8 +
sound/soc/codecs/tlv320aic31xx.c | 11 ++
sound/soc/codecs/tlv320aic32x4.c | 8 +
sound/soc/codecs/tlv320aic3x.c | 15 ++
sound/soc/codecs/tlv320dac33.c | 8 +
sound/soc/codecs/tscs454.c | 15 ++
sound/soc/codecs/twl4030.c | 12 ++
sound/soc/codecs/uda1334.c | 6 +
sound/soc/codecs/uda1342.c | 7 +
sound/soc/codecs/uda1380.c | 11 ++
sound/soc/codecs/wm2200.c | 10 +
sound/soc/codecs/wm5100.c | 10 +
sound/soc/codecs/wm8350.c | 13 ++
sound/soc/codecs/wm8400.c | 9 +
sound/soc/codecs/wm8510.c | 12 ++
sound/soc/codecs/wm8523.c | 13 ++
sound/soc/codecs/wm8524.c | 6 +
sound/soc/codecs/wm8580.c | 15 ++
sound/soc/codecs/wm8711.c | 13 ++
sound/soc/codecs/wm8728.c | 9 +
sound/soc/codecs/wm8731.c | 13 ++
sound/soc/codecs/wm8737.c | 17 ++
sound/soc/codecs/wm8741.c | 13 ++
sound/soc/codecs/wm8750.c | 13 ++
sound/soc/codecs/wm8753.c | 21 ++
sound/soc/codecs/wm8770.c | 11 ++
sound/soc/codecs/wm8776.c | 13 ++
sound/soc/codecs/wm8804.c | 15 +-
sound/soc/codecs/wm8900.c | 19 ++
sound/soc/codecs/wm8903.c | 19 ++
sound/soc/codecs/wm8904.c | 19 ++
sound/soc/codecs/wm8940.c | 13 ++
sound/soc/codecs/wm8955.c | 19 ++
sound/soc/codecs/wm8960.c | 13 ++
sound/soc/codecs/wm8961.c | 19 ++
sound/soc/codecs/wm8962.c | 13 ++
sound/soc/codecs/wm8971.c | 13 ++
sound/soc/codecs/wm8974.c | 12 ++
sound/soc/codecs/wm8978.c | 12 ++
sound/soc/codecs/wm8983.c | 12 ++
sound/soc/codecs/wm8985.c | 19 ++
sound/soc/codecs/wm8988.c | 13 ++
sound/soc/codecs/wm8990.c | 9 +
sound/soc/codecs/wm8991.c | 9 +
sound/soc/codecs/wm8993.c | 19 ++
sound/soc/codecs/wm8994.c | 21 ++
sound/soc/codecs/wm8995.c | 21 ++
sound/soc/codecs/wm8996.c | 12 ++
sound/soc/codecs/wm9081.c | 18 ++
sound/soc/codecs/wm9713.c | 13 ++
sound/soc/codecs/zl38060.c | 6 +
sound/soc/dwc/dwc-i2s.c | 9 +
sound/soc/fsl/fsl_audmix.c | 7 +
sound/soc/fsl/fsl_esai.c | 13 ++
sound/soc/fsl/fsl_mqs.c | 6 +
sound/soc/fsl/fsl_sai.c | 18 ++
sound/soc/fsl/fsl_ssi.c | 13 ++
sound/soc/fsl/lpc3xxx-i2s.c | 4 +
sound/soc/fsl/mpc5200_psc_i2s.c | 4 +
sound/soc/generic/audio-graph-card2.c | 12 ++
sound/soc/generic/test-component.c | 7 -
sound/soc/hisilicon/hi6210-i2s.c | 7 +
sound/soc/img/img-i2s-in.c | 12 +-
sound/soc/img/img-i2s-out.c | 13 +-
sound/soc/img/img-parallel-out.c | 8 +-
sound/soc/jz4740/jz4740-i2s.c | 7 +
sound/soc/kirkwood/kirkwood-i2s.c | 7 +
sound/soc/loongson/loongson_i2s.c | 6 +
sound/soc/mediatek/mt7986/mt7986-dai-etdm.c | 11 ++
sound/soc/mediatek/mt8183/mt8183-dai-i2s.c | 6 +
sound/soc/mediatek/mt8183/mt8183-dai-tdm.c | 10 +
sound/soc/mediatek/mt8186/mt8186-dai-pcm.c | 12 ++
sound/soc/mediatek/mt8186/mt8186-dai-tdm.c | 13 ++
sound/soc/mediatek/mt8188/mt8188-dai-etdm.c | 15 ++
sound/soc/mediatek/mt8188/mt8188-dai-pcm.c | 11 ++
sound/soc/mediatek/mt8192/mt8192-dai-tdm.c | 11 ++
sound/soc/mediatek/mt8195/mt8195-dai-etdm.c | 17 ++
sound/soc/mediatek/mt8195/mt8195-dai-pcm.c | 11 ++
sound/soc/mediatek/mt8365/mt8365-dai-i2s.c | 10 +
sound/soc/mediatek/mt8365/mt8365-dai-pcm.c | 11 ++
sound/soc/meson/t9015.c | 6 +
sound/soc/mxs/mxs-saif.c | 10 +
sound/soc/pxa/mmp-sspa.c | 6 +
sound/soc/pxa/pxa-ssp.c | 11 ++
sound/soc/pxa/pxa2xx-i2s.c | 6 +
sound/soc/renesas/fsi.c | 5 -
sound/soc/renesas/rcar/core.c | 12 +-
sound/soc/renesas/rcar/msiof.c | 5 -
sound/soc/renesas/rz-ssi.c | 9 +
sound/soc/renesas/siu_dai.c | 6 +
sound/soc/renesas/ssi.c | 13 ++
sound/soc/rockchip/rockchip_i2s.c | 25 ++-
sound/soc/rockchip/rockchip_i2s_tdm.c | 27 ++-
sound/soc/rockchip/rockchip_pdm.c | 14 +-
sound/soc/rockchip/rockchip_sai.c | 31 ++-
sound/soc/samsung/i2s.c | 29 ++-
sound/soc/samsung/pcm.c | 9 +
sound/soc/soc-core.c | 160 +---------------
sound/soc/soc-dai.c | 201 +++++++++++++++-----
sound/soc/soc-utils.c | 7 -
sound/soc/spacemit/k1_i2s.c | 7 +
sound/soc/sti/uniperif_player.c | 29 ++-
sound/soc/sti/uniperif_reader.c | 27 ++-
sound/soc/stm/stm32_i2s.c | 12 ++
sound/soc/stm/stm32_sai_sub.c | 15 ++
sound/soc/sunxi/sun4i-i2s.c | 13 ++
sound/soc/sunxi/sun8i-codec.c | 13 ++
sound/soc/tegra/tegra20_i2s.c | 10 +
sound/soc/tegra/tegra210_i2s.c | 13 ++
sound/soc/tegra/tegra30_i2s.c | 10 +
sound/soc/ti/davinci-i2s.c | 14 +-
sound/soc/ti/davinci-mcasp.c | 14 ++
sound/soc/ti/omap-mcbsp.c | 12 ++
sound/soc/uniphier/aio-cpu.c | 9 +
sound/soc/ux500/ux500_msp_dai.c | 33 ++--
sound/soc/xtensa/xtfpga-i2s.c | 12 +-
295 files changed, 3191 insertions(+), 356 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 100+ messages in thread
* [PATCH 01/83] ASoC: remove SND_SOC_POSSIBLE_xBx_xFx
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
@ 2026-05-26 1:58 ` Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn Kuninori Morimoto
` (82 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:58 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Clock provider / consumer selection is based on board, we can't select
automatically from software. Let's remove SND_SOC_POSSIBLE_xBx_xFx.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
include/sound/soc-dai.h | 8 --------
sound/soc/codecs/ak4613.c | 5 -----
sound/soc/codecs/ak4619.c | 6 ------
sound/soc/codecs/da7213.c | 5 -----
sound/soc/codecs/pcm3168a.c | 6 ------
sound/soc/generic/test-component.c | 7 -------
sound/soc/renesas/fsi.c | 5 -----
sound/soc/renesas/rcar/core.c | 3 ---
sound/soc/renesas/rcar/msiof.c | 5 -----
sound/soc/soc-core.c | 15 ---------------
sound/soc/soc-utils.c | 7 -------
11 files changed, 72 deletions(-)
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index 6a42812bba8ca..06ed6774229bc 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -139,14 +139,6 @@ struct snd_compr_stream;
#define SND_SOC_DAIFMT_BP_FC SND_SOC_DAIFMT_CBP_CFC
#define SND_SOC_DAIFMT_BC_FC SND_SOC_DAIFMT_CBC_CFC
-/* Describes the possible PCM format */
-#define SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_SHIFT 48
-#define SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_MASK (0xFFFFULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_SHIFT)
-#define SND_SOC_POSSIBLE_DAIFMT_CBP_CFP (0x1ULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_SHIFT)
-#define SND_SOC_POSSIBLE_DAIFMT_CBC_CFP (0x2ULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_SHIFT)
-#define SND_SOC_POSSIBLE_DAIFMT_CBP_CFC (0x4ULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_SHIFT)
-#define SND_SOC_POSSIBLE_DAIFMT_CBC_CFC (0x8ULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_PROVIDER_SHIFT)
-
#define SND_SOC_DAIFMT_FORMAT_MASK 0x000f
#define SND_SOC_DAIFMT_CLOCK_MASK 0x00f0
#define SND_SOC_DAIFMT_INV_MASK 0x0f00
diff --git a/sound/soc/codecs/ak4613.c b/sound/soc/codecs/ak4613.c
index 3b198b9b46051..3e0696b5abf52 100644
--- a/sound/soc/codecs/ak4613.c
+++ b/sound/soc/codecs/ak4613.c
@@ -748,11 +748,6 @@ static int ak4613_dai_trigger(struct snd_pcm_substream *substream, int cmd,
return 0;
}
-/*
- * Select below from Sound Card, not Auto
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
- */
static const u64 ak4613_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
diff --git a/sound/soc/codecs/ak4619.c b/sound/soc/codecs/ak4619.c
index 755c002f0f159..192b0c3413968 100644
--- a/sound/soc/codecs/ak4619.c
+++ b/sound/soc/codecs/ak4619.c
@@ -778,12 +778,6 @@ static int ak4619_dai_startup(struct snd_pcm_substream *substream,
}
static u64 ak4619_dai_formats[] = {
- /*
- * Select below from Sound Card, not here
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
- */
-
/* First Priority */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J,
diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c
index 98b8858ded025..4bf91ab2553a2 100644
--- a/sound/soc/codecs/da7213.c
+++ b/sound/soc/codecs/da7213.c
@@ -1720,11 +1720,6 @@ static int da7213_set_component_pll(struct snd_soc_component *component,
return _da7213_set_component_pll(component, pll_id, source, fref, fout);
}
-/*
- * Select below from Sound Card, not Auto
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
- */
static const u64 da7213_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c
index c8617a488b11c..7c570efaa1ea3 100644
--- a/sound/soc/codecs/pcm3168a.c
+++ b/sound/soc/codecs/pcm3168a.c
@@ -563,12 +563,6 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream,
}
static const u64 pcm3168a_dai_formats[] = {
- /*
- * Select below from Sound Card, not here
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
- */
-
/*
* First Priority
*/
diff --git a/sound/soc/generic/test-component.c b/sound/soc/generic/test-component.c
index fc40d024152e6..6f9f498c4c5c1 100644
--- a/sound/soc/generic/test-component.c
+++ b/sound/soc/generic/test-component.c
@@ -191,13 +191,6 @@ static int test_dai_trigger(struct snd_pcm_substream *substream, int cmd, struct
}
static const u64 test_dai_formats =
- /*
- * Select below from Sound Card, not auto
- * SND_SOC_POSSIBLE_DAIFMT_BP_FP
- * SND_SOC_POSSIBLE_DAIFMT_BC_FP
- * SND_SOC_POSSIBLE_DAIFMT_BP_FC
- * SND_SOC_POSSIBLE_DAIFMT_BC_FC
- */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
diff --git a/sound/soc/renesas/fsi.c b/sound/soc/renesas/fsi.c
index 8cbd7acc26f49..1eb3e83c0616c 100644
--- a/sound/soc/renesas/fsi.c
+++ b/sound/soc/renesas/fsi.c
@@ -1694,11 +1694,6 @@ static int fsi_dai_hw_params(struct snd_pcm_substream *substream,
return 0;
}
-/*
- * Select below from Sound Card, not auto
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
- */
static const u64 fsi_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
diff --git a/sound/soc/renesas/rcar/core.c b/sound/soc/renesas/rcar/core.c
index 2dc078358612d..abf2059985162 100644
--- a/sound/soc/renesas/rcar/core.c
+++ b/sound/soc/renesas/rcar/core.c
@@ -1042,9 +1042,6 @@ static const u64 rsnd_soc_dai_formats[] = {
* 1st Priority
*
* Well tested formats.
- * Select below from Sound Card, not auto
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
*/
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
diff --git a/sound/soc/renesas/rcar/msiof.c b/sound/soc/renesas/rcar/msiof.c
index 2671abc028cce..128543fc4fc97 100644
--- a/sound/soc/renesas/rcar/msiof.c
+++ b/sound/soc/renesas/rcar/msiof.c
@@ -363,11 +363,6 @@ static int msiof_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
-/*
- * Select below from Sound Card, not auto
- * SND_SOC_DAIFMT_CBC_CFC
- * SND_SOC_DAIFMT_CBP_CFP
- */
static const u64 msiof_dai_formats = SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_NB_NF;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 2c05299604b33..04a2d64d977b3 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1401,21 +1401,6 @@ static void snd_soc_runtime_get_dai_fmt(struct snd_soc_pcm_runtime *rtd)
case SND_SOC_POSSIBLE_DAIFMT_IB_IF:
dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_IB_IF;
break;
- /*
- * for clock provider / consumer
- */
- case SND_SOC_POSSIBLE_DAIFMT_CBP_CFP:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) | SND_SOC_DAIFMT_CBP_CFP;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_CBC_CFP:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) | SND_SOC_DAIFMT_CBC_CFP;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_CBP_CFC:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) | SND_SOC_DAIFMT_CBP_CFC;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_CBC_CFC:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) | SND_SOC_DAIFMT_CBC_CFC;
- break;
}
}
diff --git a/sound/soc/soc-utils.c b/sound/soc/soc-utils.c
index c8adfff826bd4..d1937fc217dc7 100644
--- a/sound/soc/soc-utils.c
+++ b/sound/soc/soc-utils.c
@@ -182,13 +182,6 @@ static const struct snd_soc_component_driver dummy_codec = {
SNDRV_PCM_FMTBIT_U32_LE | \
SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
-/*
- * Select these from Sound Card Manually
- * SND_SOC_POSSIBLE_DAIFMT_CBP_CFP
- * SND_SOC_POSSIBLE_DAIFMT_CBP_CFC
- * SND_SOC_POSSIBLE_DAIFMT_CBC_CFP
- * SND_SOC_POSSIBLE_DAIFMT_CBC_CFC
- */
static const u64 dummy_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 01/83] ASoC: remove SND_SOC_POSSIBLE_xBx_xFx Kuninori Morimoto
@ 2026-05-26 1:58 ` Kuninori Morimoto
2026-06-03 12:09 ` Herve Codina
2026-05-26 1:58 ` [PATCH 03/83] ASoC: codecs: idt821034: " Kuninori Morimoto
` (81 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:58 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Because it is confusable during debugging ASoC FW update, tidyup
auto format style not to use array if single pattern case.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/framer-codec.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/sound/soc/codecs/framer-codec.c b/sound/soc/codecs/framer-codec.c
index 6f57a3aeecc89..a87a78390172d 100644
--- a/sound/soc/codecs/framer-codec.c
+++ b/sound/soc/codecs/framer-codec.c
@@ -238,15 +238,13 @@ static int framer_dai_startup(struct snd_pcm_substream *substream,
return 0;
}
-static const u64 framer_dai_formats[] = {
- SND_SOC_POSSIBLE_DAIFMT_DSP_B,
-};
+static const u64 framer_dai_formats = SND_SOC_POSSIBLE_DAIFMT_DSP_B;
static const struct snd_soc_dai_ops framer_dai_ops = {
.startup = framer_dai_startup,
.set_tdm_slot = framer_dai_set_tdm_slot,
- .auto_selectable_formats = framer_dai_formats,
- .num_auto_selectable_formats = ARRAY_SIZE(framer_dai_formats),
+ .auto_selectable_formats = &framer_dai_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver framer_dai_driver = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 03/83] ASoC: codecs: idt821034: don't use array if single pattarn
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 01/83] ASoC: remove SND_SOC_POSSIBLE_xBx_xFx Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn Kuninori Morimoto
@ 2026-05-26 1:58 ` Kuninori Morimoto
2026-06-03 12:11 ` Herve Codina
2026-05-26 1:59 ` [PATCH 04/83] ASoC: codecs: peb2466: " Kuninori Morimoto
` (80 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:58 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Because it is confusable during debugging ASoC FW update, tidyup
auto format style not to use array if single pattern case.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/idt821034.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/sound/soc/codecs/idt821034.c b/sound/soc/codecs/idt821034.c
index 39bafefa6a186..084090ccef77a 100644
--- a/sound/soc/codecs/idt821034.c
+++ b/sound/soc/codecs/idt821034.c
@@ -860,18 +860,17 @@ static int idt821034_dai_startup(struct snd_pcm_substream *substream,
return 0;
}
-static const u64 idt821034_dai_formats[] = {
+static const u64 idt821034_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
- SND_SOC_POSSIBLE_DAIFMT_DSP_B,
-};
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
static const struct snd_soc_dai_ops idt821034_dai_ops = {
.startup = idt821034_dai_startup,
.hw_params = idt821034_dai_hw_params,
.set_tdm_slot = idt821034_dai_set_tdm_slot,
.set_fmt = idt821034_dai_set_fmt,
- .auto_selectable_formats = idt821034_dai_formats,
- .num_auto_selectable_formats = ARRAY_SIZE(idt821034_dai_formats),
+ .auto_selectable_formats = &idt821034_dai_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver idt821034_dai_driver = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 04/83] ASoC: codecs: peb2466: don't use array if single pattarn
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (2 preceding siblings ...)
2026-05-26 1:58 ` [PATCH 03/83] ASoC: codecs: idt821034: " Kuninori Morimoto
@ 2026-05-26 1:59 ` Kuninori Morimoto
2026-06-03 12:17 ` Herve Codina
2026-05-26 1:59 ` [PATCH 05/83] ASoC: codecs: ak4619: update auto select format Kuninori Morimoto
` (79 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:59 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Because it is confusable during debugging ASoC FW update, tidyup
auto format style not to use array if single pattern case.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/peb2466.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/sound/soc/codecs/peb2466.c b/sound/soc/codecs/peb2466.c
index 2d5163c15d0d1..2d71d204d8fa2 100644
--- a/sound/soc/codecs/peb2466.c
+++ b/sound/soc/codecs/peb2466.c
@@ -817,18 +817,17 @@ static int peb2466_dai_startup(struct snd_pcm_substream *substream,
&peb2466_sample_bits_constr);
}
-static const u64 peb2466_dai_formats[] = {
+static const u64 peb2466_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
- SND_SOC_POSSIBLE_DAIFMT_DSP_B,
-};
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
static const struct snd_soc_dai_ops peb2466_dai_ops = {
.startup = peb2466_dai_startup,
.hw_params = peb2466_dai_hw_params,
.set_tdm_slot = peb2466_dai_set_tdm_slot,
.set_fmt = peb2466_dai_set_fmt,
- .auto_selectable_formats = peb2466_dai_formats,
- .num_auto_selectable_formats = ARRAY_SIZE(peb2466_dai_formats),
+ .auto_selectable_formats = &peb2466_dai_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver peb2466_dai_driver = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 05/83] ASoC: codecs: ak4619: update auto select format
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (3 preceding siblings ...)
2026-05-26 1:59 ` [PATCH 04/83] ASoC: codecs: peb2466: " Kuninori Morimoto
@ 2026-05-26 1:59 ` Kuninori Morimoto
2026-05-26 1:59 ` [PATCH 06/83] ASoC: codecs: pcm3168a: " Kuninori Morimoto
` (78 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:59 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Current auto select format start with the highest priority format and
gradually add lower priority formats one by one, and search matched
format. Like A+X -> A+B+X -> A+B+C+X+Y... (a)
But in this method, we can't handle format if HW has some kind of
patterns, like A+X or B+Y etc (b).
Current drivers are using (a) style, this patch switch to use (b) style.
This is needed before update auto select format method.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ak4619.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/codecs/ak4619.c b/sound/soc/codecs/ak4619.c
index 192b0c3413968..d9c9f6b200284 100644
--- a/sound/soc/codecs/ak4619.c
+++ b/sound/soc/codecs/ak4619.c
@@ -783,6 +783,8 @@ static u64 ak4619_dai_formats[] = {
SND_SOC_POSSIBLE_DAIFMT_LEFT_J,
/* Second Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 06/83] ASoC: codecs: pcm3168a: update auto select format
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (4 preceding siblings ...)
2026-05-26 1:59 ` [PATCH 05/83] ASoC: codecs: ak4619: update auto select format Kuninori Morimoto
@ 2026-05-26 1:59 ` Kuninori Morimoto
2026-05-26 2:00 ` [PATCH 07/83] ASoC: renesas: rcar: " Kuninori Morimoto
` (77 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 1:59 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Current auto select format start with the highest priority format and
gradually add lower priority formats one by one, and search matched
format. Like A+X -> A+B+X -> A+B+C+X+Y... (a)
But in this method, we can't handle format if HW has some kind of
patterns, like A+X or B+Y etc (b).
Current drivers are using (a) style, this patch switch to use (b) style.
This is needed before update auto select format method.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/pcm3168a.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c
index 7c570efaa1ea3..05c06068ee245 100644
--- a/sound/soc/codecs/pcm3168a.c
+++ b/sound/soc/codecs/pcm3168a.c
@@ -575,6 +575,8 @@ static const u64 pcm3168a_dai_formats[] = {
* see
* pcm3168a_hw_params()
*/
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 07/83] ASoC: renesas: rcar: update auto select format
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (5 preceding siblings ...)
2026-05-26 1:59 ` [PATCH 06/83] ASoC: codecs: pcm3168a: " Kuninori Morimoto
@ 2026-05-26 2:00 ` Kuninori Morimoto
2026-05-26 2:00 ` [PATCH 08/83] ASoC: update auto format selection method Kuninori Morimoto
` (76 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:00 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Current auto select format start with the highest priority format and
gradually add lower priority formats one by one, and search matched
format. Like A+X -> A+B+X -> A+B+C+X+Y... (a)
But in this method, we can't handle format if HW has some kind of
patterns, like A+X or B+Y etc (b).
Current drivers are using (a) style, this patch switch to use (b) style.
This is needed before update auto select format method.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/renesas/rcar/core.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/sound/soc/renesas/rcar/core.c b/sound/soc/renesas/rcar/core.c
index abf2059985162..7afa3892f50e5 100644
--- a/sound/soc/renesas/rcar/core.c
+++ b/sound/soc/renesas/rcar/core.c
@@ -1055,8 +1055,15 @@ static const u64 rsnd_soc_dai_formats[] = {
*
* Supported, but not well tested
*/
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
- SND_SOC_POSSIBLE_DAIFMT_DSP_B,
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
};
static void rsnd_parse_tdm_split_mode(struct rsnd_priv *priv,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 08/83] ASoC: update auto format selection method
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (6 preceding siblings ...)
2026-05-26 2:00 ` [PATCH 07/83] ASoC: renesas: rcar: " Kuninori Morimoto
@ 2026-05-26 2:00 ` Kuninori Morimoto
2026-05-26 2:01 ` [PATCH 09/83] ASoC: audio-graph-card2: recommend to use auto select DAI format Kuninori Morimoto
` (75 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:00 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Current DAI supports auto format selection. It allow to have array like
below.
(X) static u64 xxx_auto_formats[] = {
(A) /* First Priority */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J,
/* Second Priority */
(B) SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B,
};
It try to find available format from I2S/LEFT_J first (A).
Then, try to find from I2S/LEFT_J/DSP_A/DSP_B if couldn't find (A)+(B).
(OR:ed)
In this method, it can't handle if there is format combination.
For example, some driver has pattern.
Pattern1
I2S/RIFHT_J/LEFT_J (FORMAT) and NB_NF/IB_IF/IB_NF/NB_IF (INV)_
Pattern2
DSP_A/DSP_B (FORMAT) and NB_NF/ IB_NF
Because it will try to OR Pattern1 and Pattern2, un-supported
pattern might be selected.
This patch update method not to use OR, and assumes full format array.
Above sample (X) need to be
static u64 xxx_auto_formats[] = {
/* First Priority */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J,
/* Second Priority */
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B,
};
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
include/sound/soc-dai.h | 7 +-
sound/soc/soc-core.c | 145 +----------------------------
sound/soc/soc-dai.c | 201 +++++++++++++++++++++++++++++++---------
3 files changed, 159 insertions(+), 194 deletions(-)
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index 06ed6774229bc..d9947a4595d74 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -80,10 +80,10 @@ struct snd_compr_stream;
/*
* define GATED -> CONT. GATED will be selected if both are selected.
* see
- * snd_soc_runtime_get_dai_fmt()
+ * soc_dai_convert_possiblefmt_to_daifmt()
*/
#define SND_SOC_POSSIBLE_DAIFMT_CLOCK_SHIFT 16
-#define SND_SOC_POSSIBLE_DAIFMT_CLOCK_MASK (0xFFFF << SND_SOC_POSSIBLE_DAIFMT_CLOCK_SHIFT)
+#define SND_SOC_POSSIBLE_DAIFMT_CLOCK_MASK (0xFFFFULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_SHIFT)
#define SND_SOC_POSSIBLE_DAIFMT_GATED (0x1ULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_SHIFT)
#define SND_SOC_POSSIBLE_DAIFMT_CONT (0x2ULL << SND_SOC_POSSIBLE_DAIFMT_CLOCK_SHIFT)
@@ -181,8 +181,7 @@ int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
int snd_soc_dai_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio);
/* Digital Audio interface formatting */
-int snd_soc_dai_get_fmt_max_priority(const struct snd_soc_pcm_runtime *rtd);
-u64 snd_soc_dai_get_fmt(const struct snd_soc_dai *dai, int priority);
+unsigned int snd_soc_dai_auto_select_format(const struct snd_soc_pcm_runtime *rtd);
int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt);
int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 04a2d64d977b3..691fd7fc5030d 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1284,148 +1284,6 @@ int snd_soc_add_pcm_runtimes(struct snd_soc_card *card,
}
EXPORT_SYMBOL_GPL(snd_soc_add_pcm_runtimes);
-static void snd_soc_runtime_get_dai_fmt(struct snd_soc_pcm_runtime *rtd)
-{
- struct snd_soc_dai_link *dai_link = rtd->dai_link;
- struct snd_soc_dai *dai, *not_used;
- u64 pos, possible_fmt;
- unsigned int mask = 0, dai_fmt = 0;
- int i, j, priority, pri, until;
-
- /*
- * Get selectable format from each DAIs.
- *
- ****************************
- * NOTE
- * Using .auto_selectable_formats is not mandatory,
- * we can select format manually from Sound Card.
- * When use it, driver should list well tested format only.
- ****************************
- *
- * ex)
- * auto_selectable_formats (= SND_SOC_POSSIBLE_xxx)
- * (A) (B) (C)
- * DAI0_: { 0x000F, 0x00F0, 0x0F00 };
- * DAI1 : { 0xF000, 0x0F00 };
- * (X) (Y)
- *
- * "until" will be 3 in this case (MAX array size from DAI0 and DAI1)
- * Here is dev_dbg() message and comments
- *
- * priority = 1
- * DAI0: (pri, fmt) = (1, 000000000000000F) // 1st check (A) DAI1 is not selected
- * DAI1: (pri, fmt) = (0, 0000000000000000) // Necessary Waste
- * DAI0: (pri, fmt) = (1, 000000000000000F) // 2nd check (A)
- * DAI1: (pri, fmt) = (1, 000000000000F000) // (X)
- * priority = 2
- * DAI0: (pri, fmt) = (2, 00000000000000FF) // 3rd check (A) + (B)
- * DAI1: (pri, fmt) = (1, 000000000000F000) // (X)
- * DAI0: (pri, fmt) = (2, 00000000000000FF) // 4th check (A) + (B)
- * DAI1: (pri, fmt) = (2, 000000000000FF00) // (X) + (Y)
- * priority = 3
- * DAI0: (pri, fmt) = (3, 0000000000000FFF) // 5th check (A) + (B) + (C)
- * DAI1: (pri, fmt) = (2, 000000000000FF00) // (X) + (Y)
- * found auto selected format: 0000000000000F00
- */
- until = snd_soc_dai_get_fmt_max_priority(rtd);
- for (priority = 1; priority <= until; priority++) {
- for_each_rtd_dais(rtd, j, not_used) {
-
- possible_fmt = ULLONG_MAX;
- for_each_rtd_dais(rtd, i, dai) {
- u64 fmt = 0;
-
- pri = (j >= i) ? priority : priority - 1;
- fmt = snd_soc_dai_get_fmt(dai, pri);
- possible_fmt &= fmt;
- }
- if (possible_fmt)
- goto found;
- }
- }
- /* Not Found */
- return;
-found:
- /*
- * convert POSSIBLE_DAIFMT to DAIFMT
- *
- * Some basic/default settings on each is defined as 0.
- * see
- * SND_SOC_DAIFMT_NB_NF
- * SND_SOC_DAIFMT_GATED
- *
- * SND_SOC_DAIFMT_xxx_MASK can't notice it if Sound Card specify
- * these value, and will be overwrite to auto selected value.
- *
- * To avoid such issue, loop from 63 to 0 here.
- * Small number of SND_SOC_POSSIBLE_xxx will be Hi priority.
- * Basic/Default settings of each part and above are defined
- * as Hi priority (= small number) of SND_SOC_POSSIBLE_xxx.
- */
- for (i = 63; i >= 0; i--) {
- pos = 1ULL << i;
- switch (possible_fmt & pos) {
- /*
- * for format
- */
- case SND_SOC_POSSIBLE_DAIFMT_I2S:
- case SND_SOC_POSSIBLE_DAIFMT_RIGHT_J:
- case SND_SOC_POSSIBLE_DAIFMT_LEFT_J:
- case SND_SOC_POSSIBLE_DAIFMT_DSP_A:
- case SND_SOC_POSSIBLE_DAIFMT_DSP_B:
- case SND_SOC_POSSIBLE_DAIFMT_AC97:
- case SND_SOC_POSSIBLE_DAIFMT_PDM:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_FORMAT_MASK) | i;
- break;
- /*
- * for clock
- */
- case SND_SOC_POSSIBLE_DAIFMT_CONT:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_CLOCK_MASK) | SND_SOC_DAIFMT_CONT;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_GATED:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_CLOCK_MASK) | SND_SOC_DAIFMT_GATED;
- break;
- /*
- * for clock invert
- */
- case SND_SOC_POSSIBLE_DAIFMT_NB_NF:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_NB_NF;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_NB_IF:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_NB_IF;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_IB_NF:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_IB_NF;
- break;
- case SND_SOC_POSSIBLE_DAIFMT_IB_IF:
- dai_fmt = (dai_fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_IB_IF;
- break;
- }
- }
-
- /*
- * Some driver might have very complex limitation.
- * In such case, user want to auto-select non-limitation part,
- * and want to manually specify complex part.
- *
- * Or for example, if both CPU and Codec can be clock provider,
- * but because of its quality, user want to specify it manually.
- *
- * Use manually specified settings if sound card did.
- */
- if (!(dai_link->dai_fmt & SND_SOC_DAIFMT_FORMAT_MASK))
- mask |= SND_SOC_DAIFMT_FORMAT_MASK;
- if (!(dai_link->dai_fmt & SND_SOC_DAIFMT_CLOCK_MASK))
- mask |= SND_SOC_DAIFMT_CLOCK_MASK;
- if (!(dai_link->dai_fmt & SND_SOC_DAIFMT_INV_MASK))
- mask |= SND_SOC_DAIFMT_INV_MASK;
- if (!(dai_link->dai_fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK))
- mask |= SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK;
-
- dai_link->dai_fmt |= (dai_fmt & mask);
-}
-
/**
* snd_soc_runtime_set_dai_fmt() - Change DAI link format for a ASoC runtime
* @rtd: The runtime for which the DAI link format should be changed
@@ -1504,8 +1362,7 @@ static int soc_init_pcm_runtime(struct snd_soc_card *card,
if (ret < 0)
return ret;
- snd_soc_runtime_get_dai_fmt(rtd);
- ret = snd_soc_runtime_set_dai_fmt(rtd, dai_link->dai_fmt);
+ ret = snd_soc_runtime_set_dai_fmt(rtd, snd_soc_dai_auto_select_format(rtd));
if (ret)
goto err;
diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c
index 2f370fda12665..21943d7b5ef35 100644
--- a/sound/soc/soc-dai.c
+++ b/sound/soc/soc-dai.c
@@ -120,68 +120,177 @@ int snd_soc_dai_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
}
EXPORT_SYMBOL_GPL(snd_soc_dai_set_bclk_ratio);
-int snd_soc_dai_get_fmt_max_priority(const struct snd_soc_pcm_runtime *rtd)
+static int soc_dai_fmt_match_cnt(u64 fmt)
{
- struct snd_soc_dai *dai;
- int i, max = 0;
+ int cnt = 0;
- /*
- * return max num if *ALL* DAIs have .auto_selectable_formats
- */
- for_each_rtd_dais(rtd, i, dai) {
- if (dai->driver->ops &&
- dai->driver->ops->num_auto_selectable_formats)
- max = max(max, dai->driver->ops->num_auto_selectable_formats);
- else
- return 0;
- }
+ if (fmt & SND_SOC_POSSIBLE_DAIFMT_FORMAT_MASK)
+ cnt++;
+ if (fmt & SND_SOC_POSSIBLE_DAIFMT_CLOCK_MASK)
+ cnt++;
+ if (fmt & SND_SOC_POSSIBLE_DAIFMT_INV_MASK)
+ cnt++;
- return max;
+ return cnt;
}
-/**
- * snd_soc_dai_get_fmt - get supported audio format.
- * @dai: DAI
- * @priority: priority level of supported audio format.
- *
- * This should return only formats implemented with high
- * quality by the DAI so that the core can configure a
- * format which will work well with other devices.
- * For example devices which don't support both edges of the
- * LRCLK signal in I2S style formats should only list DSP
- * modes. This will mean that sometimes fewer formats
- * are reported here than are supported by set_fmt().
- */
-u64 snd_soc_dai_get_fmt(const struct snd_soc_dai *dai, int priority)
+static void soc_dai_auto_select_format(u64 fmt, const struct snd_soc_pcm_runtime *rtd,
+ int idx, u64 *best_fmt)
{
- const struct snd_soc_dai_ops *ops = dai->driver->ops;
- u64 fmt = 0;
- int i, max = 0, until = priority;
+ struct snd_soc_dai *dai;
+ const struct snd_soc_dai_ops *ops;
+ int max_idx = rtd->dai_link->num_cpus + rtd->dai_link->num_codecs;
+ u64 available_fmt;
+
+ if (idx >= max_idx)
+ return;
+
+ dai = rtd->dais[idx];
+ ops = dai->driver->ops;
+
+ /* zero chance of auto select format */
+ if (!ops || !ops->num_auto_selectable_formats)
+ return;
/*
- * Collect auto_selectable_formats until priority
+ ****************************
+ * NOTE
+ ****************************
+ * Using .auto_selectable_formats is not mandatory,
+ * It try to find best formats as much as possible, but automatically selecting the
+ * perfect format is impossible. So you can select full or missing format manually
+ * from Sound Card.
*
* ex)
- * auto_selectable_formats[] = { A, B, C };
- * (A, B, C = SND_SOC_POSSIBLE_DAIFMT_xxx)
+ * CPU Codec
+ * (A)[0] I2S/LEFT_J : IB_NF/IB_IF (X)[0] I2S/DSP_A: NB_NF : GATED
+ * (B)[1] DSP_A/DSP_B: NB_NF/IB_NF (Y)[1] LEFT_J: NB_NF : GATED
+ * (C)[2] ...
*
- * priority = 1 : A
- * priority = 2 : A | B
- * priority = 3 : A | B | C
- * priority = 4 : A | B | C
+ * 1. (A) -> (X) : I2S :update best format
+ * 2. (A) -> (Y) : LEFT_J
+ * 3. (B) -> (X) : DSP_A/NB_NF :update best format
+ * 4. (B) -> (Y) : NB_NF
+ * 5. (C) -> (X) ...
+ * 6. (C) -> (Y) ...
* ...
+ *
+ * In above case GATED will not be selected
*/
- if (ops)
- max = ops->num_auto_selectable_formats;
- if (max < until)
- until = max;
+ /* find best formats */
+ for (int i = 0; i < ops->num_auto_selectable_formats; i++) {
+ available_fmt = fmt & ops->auto_selectable_formats[i];
- if (ops && ops->auto_selectable_formats)
- for (i = 0; i < until; i++)
- fmt |= ops->auto_selectable_formats[i];
+ /* In case of last DAI */
+ if (idx + 1 >= max_idx) {
+ int cnt1 = soc_dai_fmt_match_cnt(*best_fmt);
+ int cnt2 = soc_dai_fmt_match_cnt(available_fmt);
- return fmt;
+ if (cnt1 < cnt2)
+ *best_fmt = available_fmt;
+ }
+ /* parse with next DAI */
+ else {
+ soc_dai_auto_select_format(available_fmt, rtd, idx + 1, best_fmt);
+ }
+ }
+}
+
+static unsigned int soc_dai_convert_possiblefmt_to_daifmt(u64 possible_fmt, unsigned int configured_fmt)
+{
+ unsigned int fmt = 0;
+ unsigned int mask = 0;
+
+ /*
+ * convert POSSIBLE_DAIFMT to DAIFMT
+ *
+ * Some basic/default settings on each is defined as 0.
+ * see
+ * SND_SOC_DAIFMT_NB_NF
+ * SND_SOC_DAIFMT_GATED
+ *
+ * SND_SOC_DAIFMT_xxx_MASK can't notice it if Sound Card specify
+ * these value, and will be overwrite to auto selected value.
+ *
+ * To avoid such issue, loop from 63 to 0 here.
+ * Small number of SND_SOC_POSSIBLE_xxx will be Hi priority.
+ * Basic/Default settings of each part and above are defined
+ * as Hi priority (= small number) of SND_SOC_POSSIBLE_xxx.
+ */
+ for (int i = 63; i >= 0; i--) {
+ u64 pos = 1ULL << i;
+
+ switch (possible_fmt & pos) {
+ /*
+ * for format
+ */
+ case SND_SOC_POSSIBLE_DAIFMT_I2S:
+ case SND_SOC_POSSIBLE_DAIFMT_RIGHT_J:
+ case SND_SOC_POSSIBLE_DAIFMT_LEFT_J:
+ case SND_SOC_POSSIBLE_DAIFMT_DSP_A:
+ case SND_SOC_POSSIBLE_DAIFMT_DSP_B:
+ case SND_SOC_POSSIBLE_DAIFMT_AC97:
+ case SND_SOC_POSSIBLE_DAIFMT_PDM:
+ fmt = (fmt & ~SND_SOC_DAIFMT_FORMAT_MASK) | i;
+ break;
+ /*
+ * for clock
+ */
+ case SND_SOC_POSSIBLE_DAIFMT_CONT:
+ fmt = (fmt & ~SND_SOC_DAIFMT_CLOCK_MASK) | SND_SOC_DAIFMT_CONT;
+ break;
+ case SND_SOC_POSSIBLE_DAIFMT_GATED:
+ fmt = (fmt & ~SND_SOC_DAIFMT_CLOCK_MASK) | SND_SOC_DAIFMT_GATED;
+ break;
+ /*
+ * for clock invert
+ */
+ case SND_SOC_POSSIBLE_DAIFMT_NB_NF:
+ fmt = (fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_NB_NF;
+ break;
+ case SND_SOC_POSSIBLE_DAIFMT_NB_IF:
+ fmt = (fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_NB_IF;
+ break;
+ case SND_SOC_POSSIBLE_DAIFMT_IB_NF:
+ fmt = (fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_IB_NF;
+ break;
+ case SND_SOC_POSSIBLE_DAIFMT_IB_IF:
+ fmt = (fmt & ~SND_SOC_DAIFMT_INV_MASK) | SND_SOC_DAIFMT_IB_IF;
+ break;
+ }
+ }
+
+ /*
+ * Some driver might have very complex limitation.
+ * In such case, user want to auto-select non-limitation part,
+ * and want to manually specify complex part.
+ *
+ * Or for example, if both CPU and Codec can be clock provider,
+ * but because of its quality, user want to specify it manually.
+ *
+ * Ignore already configured format if exist
+ */
+ if (!(configured_fmt & SND_SOC_DAIFMT_FORMAT_MASK))
+ mask |= SND_SOC_DAIFMT_FORMAT_MASK;
+ if (!(configured_fmt & SND_SOC_DAIFMT_CLOCK_MASK))
+ mask |= SND_SOC_DAIFMT_CLOCK_MASK;
+ if (!(configured_fmt & SND_SOC_DAIFMT_INV_MASK))
+ mask |= SND_SOC_DAIFMT_INV_MASK;
+ if (!(configured_fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK))
+ mask |= SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK;
+
+ return configured_fmt | (fmt & mask);
+}
+
+unsigned int snd_soc_dai_auto_select_format(const struct snd_soc_pcm_runtime *rtd)
+{
+ struct snd_soc_dai_link *dai_link = rtd->dai_link;
+ u64 possible_fmt = 0;
+
+ soc_dai_auto_select_format(~0, rtd, 0, &possible_fmt);
+
+ return soc_dai_convert_possiblefmt_to_daifmt(possible_fmt, dai_link->dai_fmt);
}
/**
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 09/83] ASoC: audio-graph-card2: recommend to use auto select DAI format
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (7 preceding siblings ...)
2026-05-26 2:00 ` [PATCH 08/83] ASoC: update auto format selection method Kuninori Morimoto
@ 2026-05-26 2:01 ` Kuninori Morimoto
2026-05-26 2:02 ` [PATCH 10/83] ASoC: amd: use .auto_selectable_formats Kuninori Morimoto
` (74 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:01 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
"Simple Audio Card", "Audio Graph Card", "Audio Graph Card2" are
possible to set DAI format via DT.
OTOH, ASoC is supporting .auto_selectable_formats to select DAI
format automatically. Let's recommend to use it on "Audio Graph Card2".
One note is that it keeps supporting DAI format setting via DT.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/generic/audio-graph-card2.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c
index 0202ed0ee78e8..6894bb936cfd2 100644
--- a/sound/soc/generic/audio-graph-card2.c
+++ b/sound/soc/generic/audio-graph-card2.c
@@ -778,6 +778,18 @@ static void graph_link_init(struct simple_util_priv *priv,
graph_parse_daifmt(ports_cpu, &daifmt);
graph_parse_daifmt(ports_codec, &daifmt);
graph_parse_daifmt(lnk, &daifmt);
+ if (daifmt) {
+ struct device *dev = simple_priv_to_dev(priv);
+
+ /*
+ * Recommend to use Auto Select by using .auto_selectable_formats.
+ * linux/sound/soc/renesas/rcar/core.c can be good sample for it.
+ *
+ * One note is that Audio Graph Card2 still keeps compatible to set
+ * DAI format via DT.
+ */
+ dev_warn_once(dev, "use .auto_selectable_formats on each corresponding CPU/Codec driver");
+ }
graph_util_parse_link_direction(lnk, &playback_only, &capture_only);
graph_util_parse_link_direction(ports_cpu, &playback_only, &capture_only);
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 10/83] ASoC: amd: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (8 preceding siblings ...)
2026-05-26 2:01 ` [PATCH 09/83] ASoC: audio-graph-card2: recommend to use auto select DAI format Kuninori Morimoto
@ 2026-05-26 2:02 ` Kuninori Morimoto
2026-06-03 11:47 ` Mukunda,Vijendar
2026-05-26 2:03 ` [PATCH 11/83] ASoC: apple: " Kuninori Morimoto
` (73 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:02 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/amd/acp/acp-i2s.c | 6 ++++++
sound/soc/amd/raven/acp3x-i2s.c | 6 ++++++
sound/soc/amd/vangogh/acp5x-i2s.c | 6 ++++++
3 files changed, 18 insertions(+)
diff --git a/sound/soc/amd/acp/acp-i2s.c b/sound/soc/amd/acp/acp-i2s.c
index 283a674c7e2c3..bb58a9d34993b 100644
--- a/sound/soc/amd/acp/acp-i2s.c
+++ b/sound/soc/amd/acp/acp-i2s.c
@@ -686,6 +686,10 @@ static int acp_i2s_startup(struct snd_pcm_substream *substream, struct snd_soc_d
return 0;
}
+static const u64 acp_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
const struct snd_soc_dai_ops asoc_acp_cpu_dai_ops = {
.startup = acp_i2s_startup,
.hw_params = acp_i2s_hwparams,
@@ -693,6 +697,8 @@ const struct snd_soc_dai_ops asoc_acp_cpu_dai_ops = {
.trigger = acp_i2s_trigger,
.set_fmt = acp_i2s_set_fmt,
.set_tdm_slot = acp_i2s_set_tdm_slot,
+ .auto_selectable_formats = &acp_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_NS_GPL(asoc_acp_cpu_dai_ops, "SND_SOC_ACP_COMMON");
diff --git a/sound/soc/amd/raven/acp3x-i2s.c b/sound/soc/amd/raven/acp3x-i2s.c
index 352485dd98b14..b0147e88ba54c 100644
--- a/sound/soc/amd/raven/acp3x-i2s.c
+++ b/sound/soc/amd/raven/acp3x-i2s.c
@@ -250,11 +250,17 @@ static int acp3x_i2s_trigger(struct snd_pcm_substream *substream,
return ret;
}
+static const u64 acp3x_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops acp3x_i2s_dai_ops = {
.hw_params = acp3x_i2s_hwparams,
.trigger = acp3x_i2s_trigger,
.set_fmt = acp3x_i2s_set_fmt,
.set_tdm_slot = acp3x_i2s_set_tdm_slot,
+ .auto_selectable_formats = &acp3x_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_component_driver acp3x_dai_component = {
diff --git a/sound/soc/amd/vangogh/acp5x-i2s.c b/sound/soc/amd/vangogh/acp5x-i2s.c
index bf719f6286174..dbfb87e2fe929 100644
--- a/sound/soc/amd/vangogh/acp5x-i2s.c
+++ b/sound/soc/amd/vangogh/acp5x-i2s.c
@@ -337,11 +337,17 @@ static int acp5x_i2s_trigger(struct snd_pcm_substream *substream,
return ret;
}
+static const u64 acp5x_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops acp5x_i2s_dai_ops = {
.hw_params = acp5x_i2s_hwparams,
.trigger = acp5x_i2s_trigger,
.set_fmt = acp5x_i2s_set_fmt,
.set_tdm_slot = acp5x_i2s_set_tdm_slot,
+ .auto_selectable_formats = &acp5x_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_component_driver acp5x_dai_component = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 11/83] ASoC: apple: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (9 preceding siblings ...)
2026-05-26 2:02 ` [PATCH 10/83] ASoC: amd: use .auto_selectable_formats Kuninori Morimoto
@ 2026-05-26 2:03 ` Kuninori Morimoto
2026-05-26 2:05 ` [PATCH 12/83] ASoC: atmel: " Kuninori Morimoto
` (72 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:03 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/apple/mca.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/sound/soc/apple/mca.c b/sound/soc/apple/mca.c
index 492165c0e1ea9..1954192a789f1 100644
--- a/sound/soc/apple/mca.c
+++ b/sound/soc/apple/mca.c
@@ -699,6 +699,14 @@ static int mca_fe_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 mca_fe_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mca_fe_ops = {
.startup = mca_fe_startup,
.set_fmt = mca_fe_set_fmt,
@@ -706,6 +714,8 @@ static const struct snd_soc_dai_ops mca_fe_ops = {
.set_tdm_slot = mca_fe_set_tdm_slot,
.hw_params = mca_fe_hw_params,
.trigger = mca_fe_trigger,
+ .auto_selectable_formats = &mca_fe_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static bool mca_be_started(struct mca_cluster *cl)
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 12/83] ASoC: atmel: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (10 preceding siblings ...)
2026-05-26 2:03 ` [PATCH 11/83] ASoC: apple: " Kuninori Morimoto
@ 2026-05-26 2:05 ` Kuninori Morimoto
2026-05-26 2:06 ` [PATCH 13/83] ASoC: au1x: " Kuninori Morimoto
` (71 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:05 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/atmel/atmel-i2s.c | 4 ++++
sound/soc/atmel/atmel_ssc_dai.c | 7 +++++++
sound/soc/atmel/mchp-i2s-mcc.c | 9 +++++++++
sound/soc/atmel/mchp-pdmc.c | 4 ++++
4 files changed, 24 insertions(+)
diff --git a/sound/soc/atmel/atmel-i2s.c b/sound/soc/atmel/atmel-i2s.c
index 762199faf872e..d9ad262ec44de 100644
--- a/sound/soc/atmel/atmel-i2s.c
+++ b/sound/soc/atmel/atmel-i2s.c
@@ -540,12 +540,16 @@ static int atmel_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 atmel_i2s_selectable_formats = SND_SOC_POSSIBLE_DAIFMT_I2S;
+
static const struct snd_soc_dai_ops atmel_i2s_dai_ops = {
.probe = atmel_i2s_dai_probe,
.prepare = atmel_i2s_prepare,
.trigger = atmel_i2s_trigger,
.hw_params = atmel_i2s_hw_params,
.set_fmt = atmel_i2s_set_dai_fmt,
+ .auto_selectable_formats = &atmel_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver atmel_i2s_dai = {
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c
index 89098f41679c0..f4f886bf678d2 100644
--- a/sound/soc/atmel/atmel_ssc_dai.c
+++ b/sound/soc/atmel/atmel_ssc_dai.c
@@ -825,6 +825,11 @@ static int atmel_ssc_resume(struct snd_soc_component *component)
#define ATMEL_SSC_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE |\
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 atmel_ssc_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops atmel_ssc_dai_ops = {
.startup = atmel_ssc_startup,
.shutdown = atmel_ssc_shutdown,
@@ -833,6 +838,8 @@ static const struct snd_soc_dai_ops atmel_ssc_dai_ops = {
.hw_params = atmel_ssc_hw_params,
.set_fmt = atmel_ssc_set_dai_fmt,
.set_clkdiv = atmel_ssc_set_dai_clkdiv,
+ .auto_selectable_formats = &atmel_ssc_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver atmel_ssc_dai = {
diff --git a/sound/soc/atmel/mchp-i2s-mcc.c b/sound/soc/atmel/mchp-i2s-mcc.c
index 17d138bb90648..a832dee73ac78 100644
--- a/sound/soc/atmel/mchp-i2s-mcc.c
+++ b/sound/soc/atmel/mchp-i2s-mcc.c
@@ -912,6 +912,13 @@ static int mchp_i2s_mcc_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 mchp_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops mchp_i2s_mcc_dai_ops = {
.probe = mchp_i2s_mcc_dai_probe,
.set_sysclk = mchp_i2s_mcc_set_sysclk,
@@ -922,6 +929,8 @@ static const struct snd_soc_dai_ops mchp_i2s_mcc_dai_ops = {
.hw_free = mchp_i2s_mcc_hw_free,
.set_fmt = mchp_i2s_mcc_set_dai_fmt,
.set_tdm_slot = mchp_i2s_mcc_set_dai_tdm_slot,
+ .auto_selectable_formats = &mchp_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define MCHP_I2SMCC_RATES SNDRV_PCM_RATE_8000_192000
diff --git a/sound/soc/atmel/mchp-pdmc.c b/sound/soc/atmel/mchp-pdmc.c
index ec7233ce1f78b..a6a9b5e6cd95e 100644
--- a/sound/soc/atmel/mchp-pdmc.c
+++ b/sound/soc/atmel/mchp-pdmc.c
@@ -741,6 +741,8 @@ static int mchp_pdmc_pcm_new(struct snd_soc_pcm_runtime *rtd,
return ret;
}
+static const u64 mchp_selectable_formats = SND_SOC_POSSIBLE_DAIFMT_PDM;
+
static const struct snd_soc_dai_ops mchp_pdmc_dai_ops = {
.probe = mchp_pdmc_dai_probe,
.set_fmt = mchp_pdmc_set_fmt,
@@ -748,6 +750,8 @@ static const struct snd_soc_dai_ops mchp_pdmc_dai_ops = {
.hw_params = mchp_pdmc_hw_params,
.trigger = mchp_pdmc_trigger,
.pcm_new = &mchp_pdmc_pcm_new,
+ .auto_selectable_formats = &mchp_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver mchp_pdmc_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 13/83] ASoC: au1x: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (11 preceding siblings ...)
2026-05-26 2:05 ` [PATCH 12/83] ASoC: atmel: " Kuninori Morimoto
@ 2026-05-26 2:06 ` Kuninori Morimoto
2026-05-26 2:06 ` [PATCH 14/83] ASoC: bcm: " Kuninori Morimoto
` (70 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:06 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/au1x/i2sc.c | 11 +++++++++++
sound/soc/au1x/psc-i2s.c | 11 +++++++++++
2 files changed, 22 insertions(+)
diff --git a/sound/soc/au1x/i2sc.c b/sound/soc/au1x/i2sc.c
index 57735004f4166..0e9c7eef9ee84 100644
--- a/sound/soc/au1x/i2sc.c
+++ b/sound/soc/au1x/i2sc.c
@@ -202,11 +202,22 @@ static int au1xi2s_startup(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 au1xi2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops au1xi2s_dai_ops = {
.startup = au1xi2s_startup,
.trigger = au1xi2s_trigger,
.hw_params = au1xi2s_hw_params,
.set_fmt = au1xi2s_set_fmt,
+ .auto_selectable_formats = &au1xi2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver au1xi2s_dai_driver = {
diff --git a/sound/soc/au1x/psc-i2s.c b/sound/soc/au1x/psc-i2s.c
index bf59105fcb7a6..72aa5177147f7 100644
--- a/sound/soc/au1x/psc-i2s.c
+++ b/sound/soc/au1x/psc-i2s.c
@@ -262,11 +262,22 @@ static int au1xpsc_i2s_startup(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 au1xpsc_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops au1xpsc_i2s_dai_ops = {
.startup = au1xpsc_i2s_startup,
.trigger = au1xpsc_i2s_trigger,
.hw_params = au1xpsc_i2s_hw_params,
.set_fmt = au1xpsc_i2s_set_fmt,
+ .auto_selectable_formats = &au1xpsc_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver au1xpsc_i2s_dai_template = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 14/83] ASoC: bcm: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (12 preceding siblings ...)
2026-05-26 2:06 ` [PATCH 13/83] ASoC: au1x: " Kuninori Morimoto
@ 2026-05-26 2:06 ` Kuninori Morimoto
2026-05-26 2:06 ` [PATCH 15/83] ASoC: cirrus: " Kuninori Morimoto
` (69 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:06 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/bcm/bcm2835-i2s.c | 13 +++++++++++++
sound/soc/bcm/cygnus-ssp.c | 7 +++++++
2 files changed, 20 insertions(+)
diff --git a/sound/soc/bcm/bcm2835-i2s.c b/sound/soc/bcm/bcm2835-i2s.c
index 87d2f06c2f53a..2089778282541 100644
--- a/sound/soc/bcm/bcm2835-i2s.c
+++ b/sound/soc/bcm/bcm2835-i2s.c
@@ -748,6 +748,17 @@ static int bcm2835_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 bcm2835_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops bcm2835_i2s_dai_ops = {
.probe = bcm2835_i2s_dai_probe,
.startup = bcm2835_i2s_startup,
@@ -758,6 +769,8 @@ static const struct snd_soc_dai_ops bcm2835_i2s_dai_ops = {
.set_fmt = bcm2835_i2s_set_dai_fmt,
.set_bclk_ratio = bcm2835_i2s_set_dai_bclk_ratio,
.set_tdm_slot = bcm2835_i2s_set_dai_tdm_slot,
+ .auto_selectable_formats = &bcm2835_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver bcm2835_i2s_dai = {
diff --git a/sound/soc/bcm/cygnus-ssp.c b/sound/soc/bcm/cygnus-ssp.c
index e0ce0232eb1ef..7eeda16c7f4b1 100644
--- a/sound/soc/bcm/cygnus-ssp.c
+++ b/sound/soc/bcm/cygnus-ssp.c
@@ -1133,6 +1133,11 @@ static int cygnus_ssp_resume(struct snd_soc_component *component)
#define cygnus_ssp_resume NULL
#endif
+static const u64 cygnus_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops cygnus_ssp_dai_ops = {
.startup = cygnus_ssp_startup,
.shutdown = cygnus_ssp_shutdown,
@@ -1141,6 +1146,8 @@ static const struct snd_soc_dai_ops cygnus_ssp_dai_ops = {
.set_fmt = cygnus_ssp_set_fmt,
.set_sysclk = cygnus_ssp_set_sysclk,
.set_tdm_slot = cygnus_set_dai_tdm_slot,
+ .auto_selectable_formats = &cygnus_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops cygnus_spdif_dai_ops = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 15/83] ASoC: cirrus: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (13 preceding siblings ...)
2026-05-26 2:06 ` [PATCH 14/83] ASoC: bcm: " Kuninori Morimoto
@ 2026-05-26 2:06 ` Kuninori Morimoto
2026-05-26 2:07 ` [PATCH 16/83] ASoC: codecs: 88pm860x: " Kuninori Morimoto
` (68 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:06 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/cirrus/ep93xx-i2s.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/sound/soc/cirrus/ep93xx-i2s.c b/sound/soc/cirrus/ep93xx-i2s.c
index 5dba741594fab..8195ed7c6dd69 100644
--- a/sound/soc/cirrus/ep93xx-i2s.c
+++ b/sound/soc/cirrus/ep93xx-i2s.c
@@ -401,6 +401,15 @@ static int ep93xx_i2s_resume(struct snd_soc_component *component)
#define ep93xx_i2s_resume NULL
#endif
+static const u64 ep93xx_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ep93xx_i2s_dai_ops = {
.probe = ep93xx_i2s_dai_probe,
.startup = ep93xx_i2s_startup,
@@ -408,6 +417,8 @@ static const struct snd_soc_dai_ops ep93xx_i2s_dai_ops = {
.hw_params = ep93xx_i2s_hw_params,
.set_sysclk = ep93xx_i2s_set_sysclk,
.set_fmt = ep93xx_i2s_set_dai_fmt,
+ .auto_selectable_formats = &ep93xx_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define EP93XX_I2S_FORMATS (SNDRV_PCM_FMTBIT_S32_LE)
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 16/83] ASoC: codecs: 88pm860x: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (14 preceding siblings ...)
2026-05-26 2:06 ` [PATCH 15/83] ASoC: cirrus: " Kuninori Morimoto
@ 2026-05-26 2:07 ` Kuninori Morimoto
2026-05-26 2:08 ` [PATCH 17/83] ASoC: codecs: ad1*: " Kuninori Morimoto
` (67 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:07 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/88pm860x-codec.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/soc/codecs/88pm860x-codec.c b/sound/soc/codecs/88pm860x-codec.c
index b4f5b24cde456..7596227fbccfc 100644
--- a/sound/soc/codecs/88pm860x-codec.c
+++ b/sound/soc/codecs/88pm860x-codec.c
@@ -1136,11 +1136,15 @@ static int pm860x_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 pm860x_selectable_formats = SND_SOC_POSSIBLE_DAIFMT_I2S;
+
static const struct snd_soc_dai_ops pm860x_pcm_dai_ops = {
.mute_stream = pm860x_mute_stream,
.hw_params = pm860x_pcm_hw_params,
.set_fmt = pm860x_pcm_set_dai_fmt,
.set_sysclk = pm860x_set_dai_sysclk,
+ .auto_selectable_formats = &pm860x_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1149,6 +1153,8 @@ static const struct snd_soc_dai_ops pm860x_i2s_dai_ops = {
.hw_params = pm860x_i2s_hw_params,
.set_fmt = pm860x_i2s_set_dai_fmt,
.set_sysclk = pm860x_set_dai_sysclk,
+ .auto_selectable_formats = &pm860x_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 17/83] ASoC: codecs: ad1*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (15 preceding siblings ...)
2026-05-26 2:07 ` [PATCH 16/83] ASoC: codecs: 88pm860x: " Kuninori Morimoto
@ 2026-05-26 2:08 ` Kuninori Morimoto
2026-05-26 2:09 ` [PATCH 18/83] ASoC: codecs: ab8500: " Kuninori Morimoto
` (66 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:08 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ad1836.c | 6 ++++++
sound/soc/codecs/ad193x.c | 10 ++++++++++
2 files changed, 16 insertions(+)
diff --git a/sound/soc/codecs/ad1836.c b/sound/soc/codecs/ad1836.c
index 8afeadcaf8b09..dbea83bd49b69 100644
--- a/sound/soc/codecs/ad1836.c
+++ b/sound/soc/codecs/ad1836.c
@@ -193,9 +193,15 @@ static int ad1836_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 ad1836_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ad1836_dai_ops = {
.hw_params = ad1836_hw_params,
.set_fmt = ad1836_set_dai_fmt,
+ .auto_selectable_formats = &ad1836_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define AD183X_DAI(_name, num_dacs, num_adcs) \
diff --git a/sound/soc/codecs/ad193x.c b/sound/soc/codecs/ad193x.c
index b93531c3a9a40..9841c779b1752 100644
--- a/sound/soc/codecs/ad193x.c
+++ b/sound/soc/codecs/ad193x.c
@@ -394,6 +394,14 @@ static int ad193x_startup(struct snd_pcm_substream *substream,
&constr);
}
+static const u64 ad193x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ad193x_dai_ops = {
.startup = ad193x_startup,
.hw_params = ad193x_hw_params,
@@ -401,6 +409,8 @@ static const struct snd_soc_dai_ops ad193x_dai_ops = {
.set_tdm_slot = ad193x_set_tdm_slot,
.set_sysclk = ad193x_set_dai_sysclk,
.set_fmt = ad193x_set_dai_fmt,
+ .auto_selectable_formats = &ad193x_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 18/83] ASoC: codecs: ab8500: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (16 preceding siblings ...)
2026-05-26 2:08 ` [PATCH 17/83] ASoC: codecs: ad1*: " Kuninori Morimoto
@ 2026-05-26 2:09 ` Kuninori Morimoto
2026-05-26 2:09 ` [PATCH 19/83] ASoC: codecs: adau*: " Kuninori Morimoto
` (65 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:09 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ab8500-codec.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/sound/soc/codecs/ab8500-codec.c b/sound/soc/codecs/ab8500-codec.c
index 6e8ef9cd1b31a..74bea9c4fd16e 100644
--- a/sound/soc/codecs/ab8500-codec.c
+++ b/sound/soc/codecs/ab8500-codec.c
@@ -2081,9 +2081,22 @@ static int ab8500_codec_set_dai_tdm_slot(struct snd_soc_dai *dai,
return 0;
}
+static const u64 ab8500_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ab8500_codec_ops = {
.set_fmt = ab8500_codec_set_dai_fmt,
.set_tdm_slot = ab8500_codec_set_dai_tdm_slot,
+ .auto_selectable_formats = &ab8500_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ab8500_codec_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 19/83] ASoC: codecs: adau*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (17 preceding siblings ...)
2026-05-26 2:09 ` [PATCH 18/83] ASoC: codecs: ab8500: " Kuninori Morimoto
@ 2026-05-26 2:09 ` Kuninori Morimoto
2026-05-26 2:10 ` [PATCH 20/83] ASoC: codecs: adav80x: " Kuninori Morimoto
` (64 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:09 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/adau1372.c | 12 ++++++++++++
sound/soc/codecs/adau1373.c | 12 ++++++++++++
sound/soc/codecs/adau1701.c | 11 +++++++++++
sound/soc/codecs/adau17x1.c | 13 +++++++++++++
sound/soc/codecs/adau1977.c | 13 +++++++++++++
sound/soc/codecs/adau7118.c | 12 ++++++++++++
6 files changed, 73 insertions(+)
diff --git a/sound/soc/codecs/adau1372.c b/sound/soc/codecs/adau1372.c
index d7363f9d53bb3..7494034005356 100644
--- a/sound/soc/codecs/adau1372.c
+++ b/sound/soc/codecs/adau1372.c
@@ -877,12 +877,24 @@ static const struct snd_soc_component_driver adau1372_driver = {
.endianness = 1,
};
+static const u64 adau1372_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops adau1372_dai_ops = {
.set_fmt = adau1372_set_dai_fmt,
.set_tdm_slot = adau1372_set_tdm_slot,
.set_tristate = adau1372_set_tristate,
.hw_params = adau1372_hw_params,
.startup = adau1372_startup,
+ .auto_selectable_formats = &adau1372_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
diff --git a/sound/soc/codecs/adau1373.c b/sound/soc/codecs/adau1373.c
index 5dd961b233ce9..aa7d3a4b9f588 100644
--- a/sound/soc/codecs/adau1373.c
+++ b/sound/soc/codecs/adau1373.c
@@ -1196,10 +1196,22 @@ static int adau1373_set_dai_sysclk(struct snd_soc_dai *dai,
return 0;
}
+static const u64 adau1373_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops adau1373_dai_ops = {
.hw_params = adau1373_hw_params,
.set_sysclk = adau1373_set_dai_sysclk,
.set_fmt = adau1373_set_dai_fmt,
+ .auto_selectable_formats = &adau1373_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define ADAU1373_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
diff --git a/sound/soc/codecs/adau1701.c b/sound/soc/codecs/adau1701.c
index 329ab01b62c00..505d52c636278 100644
--- a/sound/soc/codecs/adau1701.c
+++ b/sound/soc/codecs/adau1701.c
@@ -627,11 +627,22 @@ static int adau1701_startup(struct snd_pcm_substream *substream,
#define ADAU1701_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 adau1701_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops adau1701_dai_ops = {
.set_fmt = adau1701_set_dai_fmt,
.hw_params = adau1701_hw_params,
.mute_stream = adau1701_mute_stream,
.startup = adau1701_startup,
+ .auto_selectable_formats = &adau1701_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/adau17x1.c b/sound/soc/codecs/adau17x1.c
index 26d7eb437ad18..45ac226b2f1bc 100644
--- a/sound/soc/codecs/adau17x1.c
+++ b/sound/soc/codecs/adau17x1.c
@@ -776,6 +776,17 @@ static int adau17x1_startup(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 adau17x1_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
const struct snd_soc_dai_ops adau17x1_dai_ops = {
.hw_params = adau17x1_hw_params,
.set_sysclk = adau17x1_set_dai_sysclk,
@@ -783,6 +794,8 @@ const struct snd_soc_dai_ops adau17x1_dai_ops = {
.set_pll = adau17x1_set_dai_pll,
.set_tdm_slot = adau17x1_set_dai_tdm_slot,
.startup = adau17x1_startup,
+ .auto_selectable_formats = &adau17x1_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(adau17x1_dai_ops);
diff --git a/sound/soc/codecs/adau1977.c b/sound/soc/codecs/adau1977.c
index b42f35b1a6036..b9d9853934216 100644
--- a/sound/soc/codecs/adau1977.c
+++ b/sound/soc/codecs/adau1977.c
@@ -741,6 +741,17 @@ static int adau1977_set_tristate(struct snd_soc_dai *dai, int tristate)
ADAU1977_SAI_OVERTEMP_DRV_HIZ, val);
}
+static const u64 adau1977_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops adau1977_dai_ops = {
.startup = adau1977_startup,
.hw_params = adau1977_hw_params,
@@ -748,6 +759,8 @@ static const struct snd_soc_dai_ops adau1977_dai_ops = {
.set_fmt = adau1977_set_dai_fmt,
.set_tdm_slot = adau1977_set_tdm_slot,
.set_tristate = adau1977_set_tristate,
+ .auto_selectable_formats = &adau1977_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver adau1977_dai = {
diff --git a/sound/soc/codecs/adau7118.c b/sound/soc/codecs/adau7118.c
index 5ddea63a6612c..9749299bc7f2a 100644
--- a/sound/soc/codecs/adau7118.c
+++ b/sound/soc/codecs/adau7118.c
@@ -418,12 +418,24 @@ static int adau7118_component_probe(struct snd_soc_component *component)
return ret;
}
+static const u64 adau7118_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops adau7118_ops = {
.hw_params = adau7118_hw_params,
.set_channel_map = adau7118_set_channel_map,
.set_fmt = adau7118_set_fmt,
.set_tdm_slot = adau7118_set_tdm_slot,
.set_tristate = adau7118_set_tristate,
+ .auto_selectable_formats = &adau7118_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver adau7118_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 20/83] ASoC: codecs: adav80x: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (18 preceding siblings ...)
2026-05-26 2:09 ` [PATCH 19/83] ASoC: codecs: adau*: " Kuninori Morimoto
@ 2026-05-26 2:10 ` Kuninori Morimoto
2026-05-26 2:10 ` [PATCH 21/83] ASoC: codecs: ak4*: " Kuninori Morimoto
` (63 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:10 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/adav80x.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c
index 8a89187f9c782..e97c72ac9b2b2 100644
--- a/sound/soc/codecs/adav80x.c
+++ b/sound/soc/codecs/adav80x.c
@@ -743,11 +743,19 @@ static void adav80x_dai_shutdown(struct snd_pcm_substream *substream,
adav80x->rate = 0;
}
+static const u64 adav80x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops adav80x_dai_ops = {
.set_fmt = adav80x_set_dai_fmt,
.hw_params = adav80x_hw_params,
.startup = adav80x_dai_startup,
.shutdown = adav80x_dai_shutdown,
+ .auto_selectable_formats = &adav80x_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define ADAV80X_PLAYBACK_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 21/83] ASoC: codecs: ak4*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (19 preceding siblings ...)
2026-05-26 2:10 ` [PATCH 20/83] ASoC: codecs: adav80x: " Kuninori Morimoto
@ 2026-05-26 2:10 ` Kuninori Morimoto
2026-05-26 2:11 ` [PATCH 22/83] ASoC: codecs: ak5*: " Kuninori Morimoto
` (62 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:10 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ak4104.c | 7 +++++++
sound/soc/codecs/ak4118.c | 7 +++++++
sound/soc/codecs/ak4458.c | 9 +++++++++
sound/soc/codecs/ak4535.c | 6 ++++++
sound/soc/codecs/ak4642.c | 6 ++++++
sound/soc/codecs/ak4671.c | 7 +++++++
6 files changed, 42 insertions(+)
diff --git a/sound/soc/codecs/ak4104.c b/sound/soc/codecs/ak4104.c
index a33cb329865cb..0a12a73b96278 100644
--- a/sound/soc/codecs/ak4104.c
+++ b/sound/soc/codecs/ak4104.c
@@ -148,9 +148,16 @@ static int ak4104_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 ak4101_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ak4101_dai_ops = {
.hw_params = ak4104_hw_params,
.set_fmt = ak4104_set_dai_fmt,
+ .auto_selectable_formats = &ak4101_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ak4104_dai = {
diff --git a/sound/soc/codecs/ak4118.c b/sound/soc/codecs/ak4118.c
index 03dadba0b038f..2b96b82d4e40a 100644
--- a/sound/soc/codecs/ak4118.c
+++ b/sound/soc/codecs/ak4118.c
@@ -236,9 +236,16 @@ static int ak4118_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+/* NOTE: Common formats only are auto detected */
+static const u64 ak4118_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ak4118_dai_ops = {
.hw_params = ak4118_hw_params,
.set_fmt = ak4118_set_dai_fmt,
+ .auto_selectable_formats = &ak4118_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ak4118_dai = {
diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c
index f81cd8cebdd89..a74be99e877dd 100644
--- a/sound/soc/codecs/ak4458.c
+++ b/sound/soc/codecs/ak4458.c
@@ -591,12 +591,21 @@ static int ak4458_startup(struct snd_pcm_substream *substream,
&ak4458_rate_constraints);
}
+static const u64 ak4458_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_PDM;
+
static const struct snd_soc_dai_ops ak4458_dai_ops = {
.startup = ak4458_startup,
.hw_params = ak4458_hw_params,
.set_fmt = ak4458_set_dai_fmt,
.mute_stream = ak4458_set_dai_mute,
.set_tdm_slot = ak4458_set_tdm_slot,
+ .auto_selectable_formats = &ak4458_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/ak4535.c b/sound/soc/codecs/ak4535.c
index 37555674cd157..6cabad4c9f74c 100644
--- a/sound/soc/codecs/ak4535.c
+++ b/sound/soc/codecs/ak4535.c
@@ -346,11 +346,17 @@ static int ak4535_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
+static const u64 ak4535_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ak4535_dai_ops = {
.hw_params = ak4535_hw_params,
.set_fmt = ak4535_set_dai_fmt,
.mute_stream = ak4535_mute,
.set_sysclk = ak4535_set_dai_sysclk,
+ .auto_selectable_formats = &ak4535_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
index 08ec2035b2705..e5266f94fb006 100644
--- a/sound/soc/codecs/ak4642.c
+++ b/sound/soc/codecs/ak4642.c
@@ -493,12 +493,18 @@ static int ak4642_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 ak4642_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ak4642_dai_ops = {
.startup = ak4642_dai_startup,
.shutdown = ak4642_dai_shutdown,
.set_sysclk = ak4642_dai_set_sysclk,
.set_fmt = ak4642_dai_set_fmt,
.hw_params = ak4642_dai_hw_params,
+ .auto_selectable_formats = &ak4642_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ak4642_dai = {
diff --git a/sound/soc/codecs/ak4671.c b/sound/soc/codecs/ak4671.c
index aac54e9d54ee7..1d804f03a21d8 100644
--- a/sound/soc/codecs/ak4671.c
+++ b/sound/soc/codecs/ak4671.c
@@ -582,10 +582,17 @@ static int ak4671_set_bias_level(struct snd_soc_component *component,
#define AK4671_FORMATS SNDRV_PCM_FMTBIT_S16_LE
+static const u64 ak4671_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops ak4671_dai_ops = {
.hw_params = ak4671_hw_params,
.set_sysclk = ak4671_set_dai_sysclk,
.set_fmt = ak4671_set_dai_fmt,
+ .auto_selectable_formats = &ak4671_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ak4671_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 22/83] ASoC: codecs: ak5*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (20 preceding siblings ...)
2026-05-26 2:10 ` [PATCH 21/83] ASoC: codecs: ak4*: " Kuninori Morimoto
@ 2026-05-26 2:11 ` Kuninori Morimoto
2026-05-26 2:12 ` [PATCH 23/83] ASoC: codecs: alc56*: " Kuninori Morimoto
` (61 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:11 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ak5386.c | 6 ++++++
sound/soc/codecs/ak5558.c | 7 +++++++
2 files changed, 13 insertions(+)
diff --git a/sound/soc/codecs/ak5386.c b/sound/soc/codecs/ak5386.c
index 6525d50b7ab20..933ca90b7e287 100644
--- a/sound/soc/codecs/ak5386.c
+++ b/sound/soc/codecs/ak5386.c
@@ -128,10 +128,16 @@ static int ak5386_hw_free(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 ak5386_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ak5386_dai_ops = {
.set_fmt = ak5386_set_dai_fmt,
.hw_params = ak5386_hw_params,
.hw_free = ak5386_hw_free,
+ .auto_selectable_formats = &ak5386_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ak5386_dai = {
diff --git a/sound/soc/codecs/ak5558.c b/sound/soc/codecs/ak5558.c
index 691db6565c20d..0c9cdf9a53bb4 100644
--- a/sound/soc/codecs/ak5558.c
+++ b/sound/soc/codecs/ak5558.c
@@ -285,12 +285,19 @@ static int ak5558_startup(struct snd_pcm_substream *substream,
&ak5558_rate_constraints);
}
+static const u64 ak5558_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops ak5558_dai_ops = {
.startup = ak5558_startup,
.hw_params = ak5558_hw_params,
.set_fmt = ak5558_set_dai_fmt,
.set_tdm_slot = ak5558_set_tdm_slot,
+ .auto_selectable_formats = &ak5558_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ak5558_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 23/83] ASoC: codecs: alc56*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (21 preceding siblings ...)
2026-05-26 2:11 ` [PATCH 22/83] ASoC: codecs: ak5*: " Kuninori Morimoto
@ 2026-05-26 2:12 ` Kuninori Morimoto
2026-05-26 2:13 ` [PATCH 24/83] ASoC: codecs: arizona: " Kuninori Morimoto
` (60 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:12 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/alc5623.c | 11 +++++++++++
sound/soc/codecs/alc5632.c | 13 +++++++++++++
2 files changed, 24 insertions(+)
diff --git a/sound/soc/codecs/alc5623.c b/sound/soc/codecs/alc5623.c
index f5a666c493615..96bb1d5927729 100644
--- a/sound/soc/codecs/alc5623.c
+++ b/sound/soc/codecs/alc5623.c
@@ -822,12 +822,23 @@ static int alc5623_set_bias_level(struct snd_soc_component *component,
| SNDRV_PCM_FMTBIT_S24_LE \
| SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 alc5623_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops alc5623_dai_ops = {
.hw_params = alc5623_pcm_hw_params,
.mute_stream = alc5623_mute,
.set_fmt = alc5623_set_dai_fmt,
.set_sysclk = alc5623_set_dai_sysclk,
.set_pll = alc5623_set_dai_pll,
+ .auto_selectable_formats = &alc5623_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/alc5632.c b/sound/soc/codecs/alc5632.c
index 2fd3dd7ef8b34..a5e95f3fc2474 100644
--- a/sound/soc/codecs/alc5632.c
+++ b/sound/soc/codecs/alc5632.c
@@ -1003,12 +1003,25 @@ static int alc5632_set_bias_level(struct snd_soc_component *component,
| SNDRV_PCM_FMTBIT_S24_LE \
| SNDRV_PCM_FMTBIT_S32_LE)
+
+static const u64 alc5632_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops alc5632_dai_ops = {
.hw_params = alc5632_pcm_hw_params,
.mute_stream = alc5632_mute,
.set_fmt = alc5632_set_dai_fmt,
.set_sysclk = alc5632_set_dai_sysclk,
.set_pll = alc5632_set_dai_pll,
+ .auto_selectable_formats = &alc5632_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 24/83] ASoC: codecs: arizona: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (22 preceding siblings ...)
2026-05-26 2:12 ` [PATCH 23/83] ASoC: codecs: alc56*: " Kuninori Morimoto
@ 2026-05-26 2:13 ` Kuninori Morimoto
2026-05-26 2:14 ` [PATCH 25/83] ASoC: codecs: cpcap: " Kuninori Morimoto
` (59 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:13 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/arizona.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c
index 8c683b0bb74c4..93eecd97d5837 100644
--- a/sound/soc/codecs/arizona.c
+++ b/sound/soc/codecs/arizona.c
@@ -2020,6 +2020,16 @@ static int arizona_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
return 0;
}
+static const u64 arizona_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
const struct snd_soc_dai_ops arizona_dai_ops = {
.startup = arizona_startup,
.set_fmt = arizona_set_fmt,
@@ -2027,6 +2037,8 @@ const struct snd_soc_dai_ops arizona_dai_ops = {
.hw_params = arizona_hw_params,
.set_sysclk = arizona_dai_set_sysclk,
.set_tristate = arizona_set_tristate,
+ .auto_selectable_formats = &arizona_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(arizona_dai_ops);
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 25/83] ASoC: codecs: cpcap: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (23 preceding siblings ...)
2026-05-26 2:13 ` [PATCH 24/83] ASoC: codecs: arizona: " Kuninori Morimoto
@ 2026-05-26 2:14 ` Kuninori Morimoto
2026-05-26 18:26 ` Mark Brown
2026-05-26 2:14 ` [PATCH 26/83] ASoC: codecs: cros_ec_codec: " Kuninori Morimoto
` (58 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:14 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/cpcap.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/sound/soc/codecs/cpcap.c b/sound/soc/codecs/cpcap.c
index 6b80c455b0747..e4f0291d7548e 100644
--- a/sound/soc/codecs/cpcap.c
+++ b/sound/soc/codecs/cpcap.c
@@ -1253,11 +1253,27 @@ static int cpcap_hifi_set_mute(struct snd_soc_dai *dai, int mute, int direction)
return regmap_update_bits(cpcap->regmap, reg, mask, val);
}
+/* FIXME: non I2S ? */
+static const u64 cpcap_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_AC97 |
+ SND_SOC_POSSIBLE_DAIFMT_PDM |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cpcap_dai_hifi_ops = {
.hw_params = cpcap_hifi_hw_params,
.set_sysclk = cpcap_hifi_set_dai_sysclk,
.set_fmt = cpcap_hifi_set_dai_fmt,
.mute_stream = cpcap_hifi_set_mute,
+ .auto_selectable_formats = &cpcap_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1528,6 +1544,8 @@ static const struct snd_soc_dai_ops cpcap_dai_voice_ops = {
.set_fmt = cpcap_voice_set_dai_fmt,
.set_tdm_slot = cpcap_voice_set_tdm_slot,
.mute_stream = cpcap_voice_set_mute,
+ .auto_selectable_formats = &cpcap_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 26/83] ASoC: codecs: cros_ec_codec: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (24 preceding siblings ...)
2026-05-26 2:14 ` [PATCH 25/83] ASoC: codecs: cpcap: " Kuninori Morimoto
@ 2026-05-26 2:14 ` Kuninori Morimoto
2026-05-26 2:15 ` [PATCH 27/83] ASoC: codecs: cs35l*: " Kuninori Morimoto
` (57 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:14 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/cros_ec_codec.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/soc/codecs/cros_ec_codec.c b/sound/soc/codecs/cros_ec_codec.c
index 7dc5a7c3ca96d..83c50e77eabf4 100644
--- a/sound/soc/codecs/cros_ec_codec.c
+++ b/sound/soc/codecs/cros_ec_codec.c
@@ -319,10 +319,18 @@ static int i2s_rx_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
(uint8_t *)&p, sizeof(p), NULL, 0);
}
+static const u64 i2s_rx_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops i2s_rx_dai_ops = {
.hw_params = i2s_rx_hw_params,
.set_fmt = i2s_rx_set_fmt,
.set_bclk_ratio = i2s_rx_set_bclk_ratio,
+ .auto_selectable_formats = &i2s_rx_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int i2s_rx_event(struct snd_soc_dapm_widget *w,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 27/83] ASoC: codecs: cs35l*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (25 preceding siblings ...)
2026-05-26 2:14 ` [PATCH 26/83] ASoC: codecs: cros_ec_codec: " Kuninori Morimoto
@ 2026-05-26 2:15 ` Kuninori Morimoto
2026-05-26 2:15 ` [PATCH 28/83] ASoC: codecs: cs42*: " Kuninori Morimoto
` (56 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:15 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/cs35l33.c | 6 ++++++
sound/soc/codecs/cs35l35.c | 8 ++++++++
sound/soc/codecs/cs35l36.c | 12 ++++++++++++
sound/soc/codecs/cs35l41.c | 10 ++++++++++
sound/soc/codecs/cs35l45.c | 10 ++++++++++
sound/soc/codecs/cs35l56.c | 10 ++++++++++
6 files changed, 56 insertions(+)
diff --git a/sound/soc/codecs/cs35l33.c b/sound/soc/codecs/cs35l33.c
index f49edb9ea1f2c..0d291bd2387ea 100644
--- a/sound/soc/codecs/cs35l33.c
+++ b/sound/soc/codecs/cs35l33.c
@@ -662,12 +662,18 @@ static int cs35l33_component_set_sysclk(struct snd_soc_component *component,
return 0;
}
+static const u64 cs35l33_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops cs35l33_ops = {
.startup = cs35l33_pcm_startup,
.set_tristate = cs35l33_set_tristate,
.set_fmt = cs35l33_set_dai_fmt,
.hw_params = cs35l33_pcm_hw_params,
.set_tdm_slot = cs35l33_set_tdm_slot,
+ .auto_selectable_formats = &cs35l33_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs35l33_dai = {
diff --git a/sound/soc/codecs/cs35l35.c b/sound/soc/codecs/cs35l35.c
index b2439ec3c19fb..f4f844cafd68d 100644
--- a/sound/soc/codecs/cs35l35.c
+++ b/sound/soc/codecs/cs35l35.c
@@ -657,17 +657,25 @@ static int cs35l35_dai_set_sysclk(struct snd_soc_dai *dai,
return 0;
}
+static const u64 cs35l35_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_PDM;
+
static const struct snd_soc_dai_ops cs35l35_ops = {
.startup = cs35l35_pcm_startup,
.set_fmt = cs35l35_set_dai_fmt,
.hw_params = cs35l35_hw_params,
.set_sysclk = cs35l35_dai_set_sysclk,
+ .auto_selectable_formats = &cs35l35_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops cs35l35_pdm_ops = {
.startup = cs35l35_pdm_startup,
.set_fmt = cs35l35_set_dai_fmt,
.hw_params = cs35l35_hw_params,
+ .auto_selectable_formats = &cs35l35_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs35l35_dai[] = {
diff --git a/sound/soc/codecs/cs35l36.c b/sound/soc/codecs/cs35l36.c
index 89645327945f1..170588be4dbe3 100644
--- a/sound/soc/codecs/cs35l36.c
+++ b/sound/soc/codecs/cs35l36.c
@@ -947,10 +947,22 @@ static const struct cs35l36_pll_config *cs35l36_get_clk_config(
return NULL;
}
+static const u64 cs35l36_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs35l36_ops = {
.set_fmt = cs35l36_set_dai_fmt,
.hw_params = cs35l36_pcm_hw_params,
.set_sysclk = cs35l36_dai_set_sysclk,
+ .auto_selectable_formats = &cs35l36_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define CS35L36_RATES ( \
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index b2a076706c796..d286025183f46 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -953,11 +953,21 @@ static void cs35l41_component_remove(struct snd_soc_component *component)
wm_adsp2_component_remove(&cs35l41->dsp, component);
}
+static const u64 cs35l41_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs35l41_ops = {
.set_fmt = cs35l41_set_dai_fmt,
.hw_params = cs35l41_pcm_hw_params,
.set_sysclk = cs35l41_dai_set_sysclk,
.set_channel_map = cs35l41_set_channel_map,
+ .auto_selectable_formats = &cs35l41_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define CS35L41_RATES ( \
diff --git a/sound/soc/codecs/cs35l45.c b/sound/soc/codecs/cs35l45.c
index a032bb23b4ac7..25a9eb916fa39 100644
--- a/sound/soc/codecs/cs35l45.c
+++ b/sound/soc/codecs/cs35l45.c
@@ -846,12 +846,22 @@ static int cs35l45_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
return 0;
}
+static const u64 cs35l45_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs35l45_asp_dai_ops = {
.set_fmt = cs35l45_asp_set_fmt,
.hw_params = cs35l45_asp_hw_params,
.set_tdm_slot = cs35l45_asp_set_tdm_slot,
.set_sysclk = cs35l45_asp_set_sysclk,
.mute_stream = cs35l45_mute_stream,
+ .auto_selectable_formats = &cs35l45_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs35l45_dai[] = {
diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
index 80158913a60e0..ef215229aa5bd 100644
--- a/sound/soc/codecs/cs35l56.c
+++ b/sound/soc/codecs/cs35l56.c
@@ -560,12 +560,22 @@ static int cs35l56_asp_dai_set_sysclk(struct snd_soc_dai *dai,
return 0;
}
+static const u64 cs35l56_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs35l56_ops = {
.probe = cs35l56_asp_dai_probe,
.set_fmt = cs35l56_asp_dai_set_fmt,
.set_tdm_slot = cs35l56_asp_dai_set_tdm_slot,
.hw_params = cs35l56_asp_dai_hw_params,
.set_sysclk = cs35l56_asp_dai_set_sysclk,
+ .auto_selectable_formats = &cs35l56_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static void cs35l56_sdw_dai_shutdown(struct snd_pcm_substream *substream,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 28/83] ASoC: codecs: cs42*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (26 preceding siblings ...)
2026-05-26 2:15 ` [PATCH 27/83] ASoC: codecs: cs35l*: " Kuninori Morimoto
@ 2026-05-26 2:15 ` Kuninori Morimoto
2026-05-26 2:15 ` [PATCH 29/83] ASoC: codecs: cs5*: " Kuninori Morimoto
` (55 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:15 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/cs40l50-codec.c | 9 +++++++++
sound/soc/codecs/cs4234.c | 9 +++++++++
sound/soc/codecs/cs4265.c | 7 +++++++
sound/soc/codecs/cs4270.c | 6 ++++++
sound/soc/codecs/cs4271.c | 6 ++++++
sound/soc/codecs/cs42l42.c | 9 +++++++++
sound/soc/codecs/cs42l43.c | 12 ++++++++++++
sound/soc/codecs/cs42l51.c | 7 +++++++
sound/soc/codecs/cs42l52.c | 13 +++++++++++++
sound/soc/codecs/cs42l56.c | 8 ++++++++
sound/soc/codecs/cs42l73.c | 7 +++++++
sound/soc/codecs/cs42l84.c | 6 ++++++
sound/soc/codecs/cs42xx8.c | 8 ++++++++
sound/soc/codecs/cs43130.c | 14 ++++++++++++++
sound/soc/codecs/cs4341.c | 8 ++++++++
sound/soc/codecs/cs4349.c | 7 +++++++
sound/soc/codecs/cs48l32.c | 12 ++++++++++++
17 files changed, 148 insertions(+)
diff --git a/sound/soc/codecs/cs40l50-codec.c b/sound/soc/codecs/cs40l50-codec.c
index aa629ef53db46..d7a8b880c9545 100644
--- a/sound/soc/codecs/cs40l50-codec.c
+++ b/sound/soc/codecs/cs40l50-codec.c
@@ -233,10 +233,19 @@ static int cs40l50_set_dai_bclk_ratio(struct snd_soc_dai *dai, unsigned int rati
return 0;
}
+static const u64 cs40l50_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs40l50_dai_ops = {
.set_fmt = cs40l50_set_dai_fmt,
.set_bclk_ratio = cs40l50_set_dai_bclk_ratio,
.hw_params = cs40l50_hw_params,
+ .auto_selectable_formats = &cs40l50_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs40l50_dai[] = {
diff --git a/sound/soc/codecs/cs4234.c b/sound/soc/codecs/cs4234.c
index 89c424dd838b8..86cb741179da3 100644
--- a/sound/soc/codecs/cs4234.c
+++ b/sound/soc/codecs/cs4234.c
@@ -561,11 +561,20 @@ static int cs4234_dai_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask
return 0;
}
+static const u64 cs4234_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops cs4234_dai_ops = {
.set_fmt = cs4234_dai_set_fmt,
.hw_params = cs4234_dai_hw_params,
.startup = cs4234_dai_startup,
.set_tdm_slot = cs4234_dai_set_tdm_slot,
+ .auto_selectable_formats = &cs4234_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs4234_dai[] = {
diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c
index 286d5ca298541..019f7333e75fd 100644
--- a/sound/soc/codecs/cs4265.c
+++ b/sound/soc/codecs/cs4265.c
@@ -495,11 +495,18 @@ static int cs4265_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_U24_LE | \
SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_U32_LE)
+static const u64 cs4265_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops cs4265_ops = {
.hw_params = cs4265_pcm_hw_params,
.mute_stream = cs4265_mute,
.set_fmt = cs4265_set_fmt,
.set_sysclk = cs4265_set_sysclk,
+ .auto_selectable_formats = &cs4265_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c
index 47cb10eb21bbe..8a5e5df80757f 100644
--- a/sound/soc/codecs/cs4270.c
+++ b/sound/soc/codecs/cs4270.c
@@ -457,11 +457,17 @@ static const struct snd_kcontrol_new cs4270_snd_controls[] = {
snd_soc_get_volsw, cs4270_soc_put_mute),
};
+static const u64 cs4270_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops cs4270_dai_ops = {
.hw_params = cs4270_hw_params,
.set_sysclk = cs4270_set_dai_sysclk,
.set_fmt = cs4270_set_dai_fmt,
.mute_stream = cs4270_dai_mute,
+ .auto_selectable_formats = &cs4270_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs4271.c b/sound/soc/codecs/cs4271.c
index d8cdd37e9112b..398d8c24a9ce2 100644
--- a/sound/soc/codecs/cs4271.c
+++ b/sound/soc/codecs/cs4271.c
@@ -455,11 +455,17 @@ static const struct snd_kcontrol_new cs4271_snd_controls[] = {
7, 1, 1),
};
+static const u64 cs4271_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops cs4271_dai_ops = {
.hw_params = cs4271_hw_params,
.set_sysclk = cs4271_set_dai_sysclk,
.set_fmt = cs4271_set_dai_fmt,
.mute_stream = cs4271_mute_stream,
+ .auto_selectable_formats = &cs4271_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs4271_dai = {
diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c
index 2652a639a79ad..ffe867b43f617 100644
--- a/sound/soc/codecs/cs42l42.c
+++ b/sound/soc/codecs/cs42l42.c
@@ -1122,6 +1122,13 @@ EXPORT_SYMBOL_NS_GPL(cs42l42_mute_stream, "SND_SOC_CS42L42_CORE");
SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 cs42l42_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs42l42_ops = {
.startup = cs42l42_dai_startup,
.hw_params = cs42l42_pcm_hw_params,
@@ -1129,6 +1136,8 @@ static const struct snd_soc_dai_ops cs42l42_ops = {
.set_sysclk = cs42l42_set_sysclk,
.set_bclk_ratio = cs42l42_set_bclk_ratio,
.mute_stream = cs42l42_mute_stream,
+ .auto_selectable_formats = &cs42l42_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
struct snd_soc_dai_driver cs42l42_dai = {
diff --git a/sound/soc/codecs/cs42l43.c b/sound/soc/codecs/cs42l43.c
index f0d6ff0b2976b..427d24e8433b6 100644
--- a/sound/soc/codecs/cs42l43.c
+++ b/sound/soc/codecs/cs42l43.c
@@ -671,6 +671,16 @@ static int cs42l43_dai_remove(struct snd_soc_dai *dai)
return 0;
}
+static const u64 cs42l43_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs42l43_asp_ops = {
.probe = cs42l43_dai_probe,
.remove = cs42l43_dai_remove,
@@ -678,6 +688,8 @@ static const struct snd_soc_dai_ops cs42l43_asp_ops = {
.hw_params = cs42l43_asp_hw_params,
.set_fmt = cs42l43_asp_set_fmt,
.set_tdm_slot = cs42l43_asp_set_tdm_slot,
+ .auto_selectable_formats = &cs42l43_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int cs42l43_sdw_hw_params(struct snd_pcm_substream *substream,
diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c
index 0519affe0ed8d..4b964c7133982 100644
--- a/sound/soc/codecs/cs42l51.c
+++ b/sound/soc/codecs/cs42l51.c
@@ -533,11 +533,18 @@ static int cs42l51_of_xlate_dai_id(struct snd_soc_component *component,
return 0;
}
+static const u64 cs42l51_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops cs42l51_dai_ops = {
.hw_params = cs42l51_hw_params,
.set_sysclk = cs42l51_set_dai_sysclk,
.set_fmt = cs42l51_set_dai_fmt,
.mute_stream = cs42l51_dai_mute,
+ .auto_selectable_formats = &cs42l51_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c
index 9d6bcfbbf0b20..10760816a5f91 100644
--- a/sound/soc/codecs/cs42l52.c
+++ b/sound/soc/codecs/cs42l52.c
@@ -883,11 +883,24 @@ static int cs42l52_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_U20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_U24_LE)
+static const u64 cs42l52_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs42l52_ops = {
.hw_params = cs42l52_pcm_hw_params,
.mute_stream = cs42l52_mute,
.set_fmt = cs42l52_set_fmt,
.set_sysclk = cs42l52_set_sysclk,
+ .auto_selectable_formats = &cs42l52_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs42l56.c b/sound/soc/codecs/cs42l56.c
index 4d9a22a1029c6..9c6448ebb2cf3 100644
--- a/sound/soc/codecs/cs42l56.c
+++ b/sound/soc/codecs/cs42l56.c
@@ -960,11 +960,19 @@ static int cs42l56_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 cs42l56_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops cs42l56_ops = {
.hw_params = cs42l56_pcm_hw_params,
.mute_stream = cs42l56_mute,
.set_fmt = cs42l56_set_dai_fmt,
.set_sysclk = cs42l56_set_sysclk,
+ .auto_selectable_formats = &cs42l56_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs42l73.c b/sound/soc/codecs/cs42l73.c
index 6ddc6549492af..72076ccf4570e 100644
--- a/sound/soc/codecs/cs42l73.c
+++ b/sound/soc/codecs/cs42l73.c
@@ -1163,12 +1163,19 @@ static int cs42l73_pcm_startup(struct snd_pcm_substream *substream,
#define CS42L73_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 cs42l73_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops cs42l73_ops = {
.startup = cs42l73_pcm_startup,
.hw_params = cs42l73_pcm_hw_params,
.set_fmt = cs42l73_set_dai_fmt,
.set_sysclk = cs42l73_set_sysclk,
.set_tristate = cs42l73_set_tristate,
+ .auto_selectable_formats = &cs42l73_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs42l73_dai[] = {
diff --git a/sound/soc/codecs/cs42l84.c b/sound/soc/codecs/cs42l84.c
index f2a58163de0ed..71d40f74adeef 100644
--- a/sound/soc/codecs/cs42l84.c
+++ b/sound/soc/codecs/cs42l84.c
@@ -663,11 +663,17 @@ static int cs42l84_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
return 0;
}
+static const u64 cs42l84_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs42l84_ops = {
.hw_params = cs42l84_pcm_hw_params,
.set_fmt = cs42l84_set_dai_fmt,
.set_sysclk = cs42l84_set_sysclk,
.mute_stream = cs42l84_mute_stream,
+ .auto_selectable_formats = &cs42l84_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define CS42L84_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c
index 12fe9b3e2525e..056665f806122 100644
--- a/sound/soc/codecs/cs42xx8.c
+++ b/sound/soc/codecs/cs42xx8.c
@@ -393,12 +393,20 @@ static int cs42xx8_mute(struct snd_soc_dai *dai, int mute, int direction)
return 0;
}
+static const u64 cs42xx8_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops cs42xx8_dai_ops = {
.set_fmt = cs42xx8_set_dai_fmt,
.set_sysclk = cs42xx8_set_dai_sysclk,
.hw_params = cs42xx8_hw_params,
.hw_free = cs42xx8_hw_free,
.mute_stream = cs42xx8_mute,
+ .auto_selectable_formats = &cs42xx8_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs43130.c b/sound/soc/codecs/cs43130.c
index e7b06f962790d..38b90edd8b228 100644
--- a/sound/soc/codecs/cs43130.c
+++ b/sound/soc/codecs/cs43130.c
@@ -1609,12 +1609,24 @@ static int cs43130_set_sysclk(struct snd_soc_dai *codec_dai,
return 0;
}
+static const u64 cs43130_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs43130_pcm_ops = {
.startup = cs43130_pcm_startup,
.hw_params = cs43130_hw_params,
.hw_free = cs43130_hw_free,
.set_sysclk = cs43130_set_sysclk,
.set_fmt = cs43130_pcm_set_fmt,
+ .auto_selectable_formats = &cs43130_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops cs43130_dop_ops = {
@@ -1623,6 +1635,8 @@ static const struct snd_soc_dai_ops cs43130_dop_ops = {
.hw_free = cs43130_hw_free,
.set_sysclk = cs43130_set_sysclk,
.set_fmt = cs43130_pcm_set_fmt,
+ .auto_selectable_formats = &cs43130_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops cs43130_dsd_ops = {
diff --git a/sound/soc/codecs/cs4341.c b/sound/soc/codecs/cs4341.c
index a44e6b3c298e7..74544c58a4159 100644
--- a/sound/soc/codecs/cs4341.c
+++ b/sound/soc/codecs/cs4341.c
@@ -171,10 +171,18 @@ static const struct snd_kcontrol_new cs4341_controls[] = {
SOC_SINGLE("Popguard Transient Switch", CS4341_REG_MODE2, 1, 1, 0),
};
+static const u64 cs4341_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops cs4341_dai_ops = {
.set_fmt = cs4341_set_fmt,
.hw_params = cs4341_hw_params,
.mute_stream = cs4341_mute,
+ .auto_selectable_formats = &cs4341_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c
index ced1270c4d68d..4f04338fdf9d0 100644
--- a/sound/soc/codecs/cs4349.c
+++ b/sound/soc/codecs/cs4349.c
@@ -229,10 +229,17 @@ static const struct snd_soc_dapm_route cs4349_routes[] = {
#define CS4349_PCM_RATES SNDRV_PCM_RATE_8000_192000
+static const u64 cs4349_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops cs4349_dai_ops = {
.hw_params = cs4349_pcm_hw_params,
.set_fmt = cs4349_set_dai_fmt,
.mute_stream = cs4349_mute,
+ .auto_selectable_formats = &cs4349_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/cs48l32.c b/sound/soc/codecs/cs48l32.c
index 086ed0f57a85e..bd535f245b870 100644
--- a/sound/soc/codecs/cs48l32.c
+++ b/sound/soc/codecs/cs48l32.c
@@ -2367,6 +2367,16 @@ static int cs48l32_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
return 0;
}
+static const u64 cs48l32_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs48l32_dai_ops = {
.probe = &cs48l32_asp_dai_probe,
.startup = &cs48l32_startup,
@@ -2374,6 +2384,8 @@ static const struct snd_soc_dai_ops cs48l32_dai_ops = {
.set_tdm_slot = &cs48l32_set_tdm_slot,
.hw_params = &cs48l32_hw_params,
.set_sysclk = &cs48l32_dai_set_sysclk,
+ .auto_selectable_formats = &cs48l32_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int cs48l32_sysclk_ev(struct snd_soc_dapm_widget *w,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 29/83] ASoC: codecs: cs5*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (27 preceding siblings ...)
2026-05-26 2:15 ` [PATCH 28/83] ASoC: codecs: cs42*: " Kuninori Morimoto
@ 2026-05-26 2:15 ` Kuninori Morimoto
2026-05-26 2:16 ` [PATCH 30/83] ASoC: codecs: cx2072x: " Kuninori Morimoto
` (54 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:15 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/cs530x.c | 9 +++++++++
sound/soc/codecs/cs53l30.c | 8 ++++++++
2 files changed, 17 insertions(+)
diff --git a/sound/soc/codecs/cs530x.c b/sound/soc/codecs/cs530x.c
index 18b5ff75feec4..a8b43a78ac0a9 100644
--- a/sound/soc/codecs/cs530x.c
+++ b/sound/soc/codecs/cs530x.c
@@ -945,10 +945,19 @@ static int cs530x_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
val << CS530X_ASP_TDM_SLOT_SHIFT);
}
+static const u64 cs530x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs530x_dai_ops = {
.set_fmt = cs530x_set_fmt,
.hw_params = cs530x_hw_params,
.set_tdm_slot = cs530x_set_tdm_slot,
+ .auto_selectable_formats = &cs530x_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver cs530x_dai = {
diff --git a/sound/soc/codecs/cs53l30.c b/sound/soc/codecs/cs53l30.c
index 511453b4c3752..c9c682a312c33 100644
--- a/sound/soc/codecs/cs53l30.c
+++ b/sound/soc/codecs/cs53l30.c
@@ -833,6 +833,12 @@ static int cs53l30_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
#define CS53L30_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 cs53l30_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops cs53l30_ops = {
.hw_params = cs53l30_pcm_hw_params,
.set_fmt = cs53l30_set_dai_fmt,
@@ -840,6 +846,8 @@ static const struct snd_soc_dai_ops cs53l30_ops = {
.set_tristate = cs53l30_set_tristate,
.set_tdm_slot = cs53l30_set_dai_tdm_slot,
.mute_stream = cs53l30_mute_stream,
+ .auto_selectable_formats = &cs53l30_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver cs53l30_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 30/83] ASoC: codecs: cx2072x: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (28 preceding siblings ...)
2026-05-26 2:15 ` [PATCH 29/83] ASoC: codecs: cs5*: " Kuninori Morimoto
@ 2026-05-26 2:16 ` Kuninori Morimoto
2026-05-26 2:17 ` [PATCH 31/83] ASoC: codecs: da*: " Kuninori Morimoto
` (53 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:16 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/cx2072x.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/cx2072x.c b/sound/soc/codecs/cx2072x.c
index 83c6cbd40804f..664f758e03258 100644
--- a/sound/soc/codecs/cx2072x.c
+++ b/sound/soc/codecs/cx2072x.c
@@ -1522,6 +1522,16 @@ static const struct snd_soc_component_driver soc_codec_driver_cx2072x = {
.endianness = 1,
};
+
+static const u64 cx2072x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
/*
* DAI ops
*/
@@ -1530,6 +1540,8 @@ static const struct snd_soc_dai_ops cx2072x_dai_ops = {
.set_fmt = cx2072x_set_dai_fmt,
.hw_params = cx2072x_hw_params,
.set_bclk_ratio = cx2072x_set_dai_bclk_ratio,
+ .auto_selectable_formats = &cx2072x_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int cx2072x_dsp_dai_probe(struct snd_soc_dai *dai)
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 31/83] ASoC: codecs: da*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (29 preceding siblings ...)
2026-05-26 2:16 ` [PATCH 30/83] ASoC: codecs: cx2072x: " Kuninori Morimoto
@ 2026-05-26 2:17 ` Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 32/83] ASoC: codecs: es*: " Kuninori Morimoto
` (52 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:17 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/da7210.c | 7 +++++++
sound/soc/codecs/da7218.c | 12 ++++++++++++
sound/soc/codecs/da7219.c | 12 ++++++++++++
sound/soc/codecs/da732x.c | 18 ++++++++++++++++++
sound/soc/codecs/da9055.c | 8 ++++++++
5 files changed, 57 insertions(+)
diff --git a/sound/soc/codecs/da7210.c b/sound/soc/codecs/da7210.c
index 4df1a25e318b6..597510de561a6 100644
--- a/sound/soc/codecs/da7210.c
+++ b/sound/soc/codecs/da7210.c
@@ -1030,6 +1030,11 @@ static int da7210_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
return -EINVAL;
}
+static const u64 da7210_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
/* DAI operations */
static const struct snd_soc_dai_ops da7210_dai_ops = {
.hw_params = da7210_hw_params,
@@ -1037,6 +1042,8 @@ static const struct snd_soc_dai_ops da7210_dai_ops = {
.set_sysclk = da7210_set_dai_sysclk,
.set_pll = da7210_set_dai_pll,
.mute_stream = da7210_mute,
+ .auto_selectable_formats = &da7210_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/da7218.c b/sound/soc/codecs/da7218.c
index 93bd045ed8701..361daf14152e2 100644
--- a/sound/soc/codecs/da7218.c
+++ b/sound/soc/codecs/da7218.c
@@ -2166,12 +2166,24 @@ static int da7218_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 da7218_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops da7218_dai_ops = {
.hw_params = da7218_hw_params,
.set_sysclk = da7218_set_dai_sysclk,
.set_pll = da7218_set_dai_pll,
.set_fmt = da7218_set_dai_fmt,
.set_tdm_slot = da7218_set_dai_tdm_slot,
+ .auto_selectable_formats = &da7218_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define DA7218_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
index f0874d891e120..71441f718b5ca 100644
--- a/sound/soc/codecs/da7219.c
+++ b/sound/soc/codecs/da7219.c
@@ -1667,12 +1667,24 @@ static int da7219_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 da7219_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops da7219_dai_ops = {
.hw_params = da7219_hw_params,
.set_sysclk = da7219_set_dai_sysclk,
.set_pll = da7219_set_dai_pll,
.set_fmt = da7219_set_dai_fmt,
.set_tdm_slot = da7219_set_dai_tdm_slot,
+ .auto_selectable_formats = &da7219_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define DA7219_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
diff --git a/sound/soc/codecs/da732x.c b/sound/soc/codecs/da732x.c
index 12d1ac98461e4..c7806b279b992 100644
--- a/sound/soc/codecs/da732x.c
+++ b/sound/soc/codecs/da732x.c
@@ -1188,10 +1188,28 @@ static int da732x_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
#define DA732X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 da732x_selectable_formats[] =
+{
+ /* Hi Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* Low Priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops da732x_dai_ops = {
.hw_params = da732x_hw_params,
.set_fmt = da732x_set_dai_fmt,
.set_sysclk = da732x_set_dai_sysclk,
+ .auto_selectable_formats = da732x_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(da732x_selectable_formats),
};
static struct snd_soc_dai_driver da732x_dai[] = {
diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c
index a88c135331457..faff1535ab12a 100644
--- a/sound/soc/codecs/da9055.c
+++ b/sound/soc/codecs/da9055.c
@@ -1317,6 +1317,12 @@ static int da9055_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
return -EINVAL;
}
+static const u64 da9055_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
/* DAI operations */
static const struct snd_soc_dai_ops da9055_dai_ops = {
.hw_params = da9055_hw_params,
@@ -1324,6 +1330,8 @@ static const struct snd_soc_dai_ops da9055_dai_ops = {
.set_sysclk = da9055_set_dai_sysclk,
.set_pll = da9055_set_dai_pll,
.mute_stream = da9055_mute,
+ .auto_selectable_formats = &da9055_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 32/83] ASoC: codecs: es*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (30 preceding siblings ...)
2026-05-26 2:17 ` [PATCH 31/83] ASoC: codecs: da*: " Kuninori Morimoto
@ 2026-05-26 2:18 ` Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 33/83] ASoC: codecs: inno_rk3036: " Kuninori Morimoto
` (51 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:18 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/es7134.c | 6 ++++++
sound/soc/codecs/es7241.c | 7 +++++++
sound/soc/codecs/es8311.c | 19 +++++++++++++++++++
sound/soc/codecs/es8316.c | 9 +++++++++
sound/soc/codecs/es8323.c | 13 +++++++++++++
sound/soc/codecs/es8326.c | 9 +++++++++
sound/soc/codecs/es8328.c | 7 +++++++
sound/soc/codecs/es8375.c | 12 ++++++++++++
sound/soc/codecs/es8389.c | 9 +++++++++
9 files changed, 91 insertions(+)
diff --git a/sound/soc/codecs/es7134.c b/sound/soc/codecs/es7134.c
index 441df1523f1c9..e3e6142ca0288 100644
--- a/sound/soc/codecs/es7134.c
+++ b/sound/soc/codecs/es7134.c
@@ -130,10 +130,16 @@ static int es7134_component_probe(struct snd_soc_component *c)
return 0;
}
+static const u64 es7134_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops es7134_dai_ops = {
.set_fmt = es7134_set_fmt,
.hw_params = es7134_hw_params,
.set_sysclk = es7134_set_sysclk,
+ .auto_selectable_formats = &es7134_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver es7134_dai = {
diff --git a/sound/soc/codecs/es7241.c b/sound/soc/codecs/es7241.c
index 339553cfbb48e..a0bd5386387d4 100644
--- a/sound/soc/codecs/es7241.c
+++ b/sound/soc/codecs/es7241.c
@@ -152,10 +152,17 @@ static int es7241_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 es7241_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops es7241_dai_ops = {
.set_fmt = es7241_set_fmt,
.hw_params = es7241_hw_params,
.set_sysclk = es7241_set_sysclk,
+ .auto_selectable_formats = &es7241_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver es7241_dai = {
diff --git a/sound/soc/codecs/es8311.c b/sound/soc/codecs/es8311.c
index 6fe3ae41afbd5..b08dceada65bd 100644
--- a/sound/soc/codecs/es8311.c
+++ b/sound/soc/codecs/es8311.c
@@ -800,12 +800,31 @@ static int es8311_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 es8311_selectable_formats[] =
+{
+ /* Hi Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* Low Priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops es8311_dai_ops = {
.startup = es8311_startup,
.hw_params = es8311_hw_params,
.mute_stream = es8311_mute,
.set_sysclk = es8311_set_sysclk,
.set_fmt = es8311_set_dai_fmt,
+ .auto_selectable_formats = es8311_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(es8311_selectable_formats),
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/es8316.c b/sound/soc/codecs/es8316.c
index 6a428387e4964..39a78216df249 100644
--- a/sound/soc/codecs/es8316.c
+++ b/sound/soc/codecs/es8316.c
@@ -558,12 +558,21 @@ static int es8316_mute(struct snd_soc_dai *dai, int mute, int direction)
#define ES8316_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 es8316_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops es8316_ops = {
.startup = es8316_pcm_startup,
.hw_params = es8316_pcm_hw_params,
.set_fmt = es8316_set_dai_fmt,
.set_sysclk = es8316_set_dai_sysclk,
.mute_stream = es8316_mute,
+ .auto_selectable_formats = &es8316_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/es8323.c b/sound/soc/codecs/es8323.c
index d067f7bda03a6..c817bcf32b36f 100644
--- a/sound/soc/codecs/es8323.c
+++ b/sound/soc/codecs/es8323.c
@@ -623,12 +623,25 @@ static int es8323_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
mute ? ES8323_DACCONTROL3_DACMUTE : 0);
}
+static const u64 es8323_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops es8323_ops = {
.startup = es8323_pcm_startup,
.hw_params = es8323_pcm_hw_params,
.set_fmt = es8323_set_dai_fmt,
.set_sysclk = es8323_set_dai_sysclk,
.mute_stream = es8323_mute_stream,
+ .auto_selectable_formats = &es8323_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define ES8323_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
diff --git a/sound/soc/codecs/es8326.c b/sound/soc/codecs/es8326.c
index a79b2da350998..572dd240b5fe4 100644
--- a/sound/soc/codecs/es8326.c
+++ b/sound/soc/codecs/es8326.c
@@ -722,11 +722,20 @@ static int es8326_set_bias_level(struct snd_soc_component *codec,
#define es8326_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 es8326_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops es8326_ops = {
.hw_params = es8326_pcm_hw_params,
.set_fmt = es8326_set_dai_fmt,
.set_sysclk = es8326_set_dai_sysclk,
.mute_stream = es8326_mute,
+ .auto_selectable_formats = &es8326_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 0,
};
diff --git a/sound/soc/codecs/es8328.c b/sound/soc/codecs/es8328.c
index 9838fe42cb6fc..98b6767d86def 100644
--- a/sound/soc/codecs/es8328.c
+++ b/sound/soc/codecs/es8328.c
@@ -722,12 +722,19 @@ static int es8328_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 es8328_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops es8328_dai_ops = {
.startup = es8328_startup,
.hw_params = es8328_hw_params,
.mute_stream = es8328_mute,
.set_sysclk = es8328_set_sysclk,
.set_fmt = es8328_set_dai_fmt,
+ .auto_selectable_formats = &es8328_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/es8375.c b/sound/soc/codecs/es8375.c
index e8747bc24433f..bc21cf7e602d6 100644
--- a/sound/soc/codecs/es8375.c
+++ b/sound/soc/codecs/es8375.c
@@ -494,11 +494,23 @@ static int es8375_mute(struct snd_soc_dai *dai, int mute, int stream)
#define es8375_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 es8375_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops es8375_ops = {
.hw_params = es8375_hw_params,
.mute_stream = es8375_mute,
.set_sysclk = es8375_set_sysclk,
.set_fmt = es8375_set_dai_fmt,
+ .auto_selectable_formats = &es8375_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver es8375_dai = {
diff --git a/sound/soc/codecs/es8389.c b/sound/soc/codecs/es8389.c
index 3484c87853cb4..d2a3ddeb4be83 100644
--- a/sound/soc/codecs/es8389.c
+++ b/sound/soc/codecs/es8389.c
@@ -736,12 +736,21 @@ static int es8389_mute(struct snd_soc_dai *dai, int mute, int direction)
#define es8389_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 es8389_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops es8389_ops = {
.hw_params = es8389_pcm_hw_params,
.set_fmt = es8389_set_dai_fmt,
.set_sysclk = es8389_set_dai_sysclk,
.set_tdm_slot = es8389_set_tdm_slot,
.mute_stream = es8389_mute,
+ .auto_selectable_formats = &es8389_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver es8389_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 33/83] ASoC: codecs: inno_rk3036: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (31 preceding siblings ...)
2026-05-26 2:18 ` [PATCH 32/83] ASoC: codecs: es*: " Kuninori Morimoto
@ 2026-05-26 2:18 ` Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 34/83] ASoC: codecs: isabelle: " Kuninori Morimoto
` (50 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:18 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/inno_rk3036.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/inno_rk3036.c b/sound/soc/codecs/inno_rk3036.c
index fdd19f8e88640..aaf03f2281507 100644
--- a/sound/soc/codecs/inno_rk3036.c
+++ b/sound/soc/codecs/inno_rk3036.c
@@ -309,9 +309,21 @@ static int rk3036_codec_dai_hw_params(struct snd_pcm_substream *substream,
SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 rk3036_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rk3036_codec_dai_ops = {
.set_fmt = rk3036_codec_dai_set_fmt,
.hw_params = rk3036_codec_dai_hw_params,
+ .auto_selectable_formats = &rk3036_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rk3036_codec_dai_driver[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 34/83] ASoC: codecs: isabelle: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (32 preceding siblings ...)
2026-05-26 2:18 ` [PATCH 33/83] ASoC: codecs: inno_rk3036: " Kuninori Morimoto
@ 2026-05-26 2:18 ` Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 35/83] ASoC: codecs: lm49453: " Kuninori Morimoto
` (49 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:18 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/isabelle.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/sound/soc/codecs/isabelle.c b/sound/soc/codecs/isabelle.c
index fa1c23dda4eb6..7e8dde79b11a8 100644
--- a/sound/soc/codecs/isabelle.c
+++ b/sound/soc/codecs/isabelle.c
@@ -1011,10 +1011,17 @@ static int isabelle_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
#define ISABELLE_FORMATS (SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 isabelle_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_PDM;
+
static const struct snd_soc_dai_ops isabelle_hs_dai_ops = {
.hw_params = isabelle_hw_params,
.set_fmt = isabelle_set_dai_fmt,
.mute_stream = isabelle_hs_mute,
+ .auto_selectable_formats = &isabelle_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1022,6 +1029,8 @@ static const struct snd_soc_dai_ops isabelle_hf_dai_ops = {
.hw_params = isabelle_hw_params,
.set_fmt = isabelle_set_dai_fmt,
.mute_stream = isabelle_hf_mute,
+ .auto_selectable_formats = &isabelle_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1029,12 +1038,16 @@ static const struct snd_soc_dai_ops isabelle_line_dai_ops = {
.hw_params = isabelle_hw_params,
.set_fmt = isabelle_set_dai_fmt,
.mute_stream = isabelle_line_mute,
+ .auto_selectable_formats = &isabelle_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
static const struct snd_soc_dai_ops isabelle_ul_dai_ops = {
.hw_params = isabelle_hw_params,
.set_fmt = isabelle_set_dai_fmt,
+ .auto_selectable_formats = &isabelle_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* ISABELLE dai structure */
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 35/83] ASoC: codecs: lm49453: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (33 preceding siblings ...)
2026-05-26 2:18 ` [PATCH 34/83] ASoC: codecs: isabelle: " Kuninori Morimoto
@ 2026-05-26 2:18 ` Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 36/83] ASoC: codecs: lochnagar-sc: " Kuninori Morimoto
` (48 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:18 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/lm49453.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/sound/soc/codecs/lm49453.c b/sound/soc/codecs/lm49453.c
index 6e2e292d143bb..991555bec712a 100644
--- a/sound/soc/codecs/lm49453.c
+++ b/sound/soc/codecs/lm49453.c
@@ -1283,11 +1283,18 @@ static int lm49453_set_bias_level(struct snd_soc_component *component,
#define LM49453_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 lm49453_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops lm49453_headset_dai_ops = {
.hw_params = lm49453_hw_params,
.set_sysclk = lm49453_set_dai_sysclk,
.set_fmt = lm49453_set_dai_fmt,
.mute_stream = lm49453_hp_mute,
+ .auto_selectable_formats = &lm49453_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1296,6 +1303,8 @@ static const struct snd_soc_dai_ops lm49453_speaker_dai_ops = {
.set_sysclk = lm49453_set_dai_sysclk,
.set_fmt = lm49453_set_dai_fmt,
.mute_stream = lm49453_ls_mute,
+ .auto_selectable_formats = &lm49453_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1304,6 +1313,8 @@ static const struct snd_soc_dai_ops lm49453_haptic_dai_ops = {
.set_sysclk = lm49453_set_dai_sysclk,
.set_fmt = lm49453_set_dai_fmt,
.mute_stream = lm49453_ha_mute,
+ .auto_selectable_formats = &lm49453_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1312,6 +1323,8 @@ static const struct snd_soc_dai_ops lm49453_ep_dai_ops = {
.set_sysclk = lm49453_set_dai_sysclk,
.set_fmt = lm49453_set_dai_fmt,
.mute_stream = lm49453_ep_mute,
+ .auto_selectable_formats = &lm49453_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1320,6 +1333,8 @@ static const struct snd_soc_dai_ops lm49453_lineout_dai_ops = {
.set_sysclk = lm49453_set_dai_sysclk,
.set_fmt = lm49453_set_dai_fmt,
.mute_stream = lm49453_lo_mute,
+ .auto_selectable_formats = &lm49453_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 36/83] ASoC: codecs: lochnagar-sc: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (34 preceding siblings ...)
2026-05-26 2:18 ` [PATCH 35/83] ASoC: codecs: lm49453: " Kuninori Morimoto
@ 2026-05-26 2:18 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 37/83] ASoC: codecs: madera: " Kuninori Morimoto
` (47 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:18 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/lochnagar-sc.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/soc/codecs/lochnagar-sc.c b/sound/soc/codecs/lochnagar-sc.c
index a3d6318c90500..dadb4a6c287fb 100644
--- a/sound/soc/codecs/lochnagar-sc.c
+++ b/sound/soc/codecs/lochnagar-sc.c
@@ -137,15 +137,23 @@ static int lochnagar_sc_set_usb_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return lochnagar_sc_check_fmt(dai, fmt, SND_SOC_DAIFMT_CBP_CFP);
}
+static const u64 lochnagar_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops lochnagar_sc_line_ops = {
.startup = lochnagar_sc_line_startup,
.shutdown = lochnagar_sc_line_shutdown,
.set_fmt = lochnagar_sc_set_line_fmt,
+ .auto_selectable_formats = &lochnagar_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops lochnagar_sc_usb_ops = {
.startup = lochnagar_sc_startup,
.set_fmt = lochnagar_sc_set_usb_fmt,
+ .auto_selectable_formats = &lochnagar_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver lochnagar_sc_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 37/83] ASoC: codecs: madera: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (35 preceding siblings ...)
2026-05-26 2:18 ` [PATCH 36/83] ASoC: codecs: lochnagar-sc: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 38/83] ASoC: codecs: max*: " Kuninori Morimoto
` (46 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/madera.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/madera.c b/sound/soc/codecs/madera.c
index 98d72db599d8a..c8e3e6d6ec98a 100644
--- a/sound/soc/codecs/madera.c
+++ b/sound/soc/codecs/madera.c
@@ -3345,6 +3345,16 @@ static int madera_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
return 0;
}
+static const u64 madera_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
const struct snd_soc_dai_ops madera_dai_ops = {
.startup = &madera_startup,
.set_fmt = &madera_set_fmt,
@@ -3352,6 +3362,8 @@ const struct snd_soc_dai_ops madera_dai_ops = {
.hw_params = &madera_hw_params,
.set_sysclk = &madera_dai_set_sysclk,
.set_tristate = &madera_set_tristate,
+ .auto_selectable_formats = &madera_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(madera_dai_ops);
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 38/83] ASoC: codecs: max*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (36 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 37/83] ASoC: codecs: madera: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 39/83] ASoC: codecs: mc13783: " Kuninori Morimoto
` (45 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/max98088.c | 12 ++++++++++++
sound/soc/codecs/max98090.c | 12 ++++++++++++
sound/soc/codecs/max98095.c | 14 ++++++++++++++
sound/soc/codecs/max98371.c | 7 +++++++
sound/soc/codecs/max98373-i2c.c | 10 ++++++++++
sound/soc/codecs/max98388.c | 10 ++++++++++
sound/soc/codecs/max98390.c | 10 ++++++++++
sound/soc/codecs/max98396.c | 12 ++++++++++++
sound/soc/codecs/max9850.c | 11 +++++++++++
sound/soc/codecs/max98520.c | 10 ++++++++++
sound/soc/codecs/max9860.c | 12 ++++++++++++
sound/soc/codecs/max9867.c | 10 ++++++++++
sound/soc/codecs/max98925.c | 8 ++++++++
sound/soc/codecs/max98926.c | 8 ++++++++
sound/soc/codecs/max98927.c | 10 ++++++++++
15 files changed, 156 insertions(+)
diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c
index df438baf05dc3..1dd7881c84aa3 100644
--- a/sound/soc/codecs/max98088.c
+++ b/sound/soc/codecs/max98088.c
@@ -1342,11 +1342,21 @@ static int max98088_set_bias_level(struct snd_soc_component *component,
#define MAX98088_RATES SNDRV_PCM_RATE_8000_96000
#define MAX98088_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 max98088_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max98088_dai1_ops = {
.set_sysclk = max98088_dai_set_sysclk,
.set_fmt = max98088_dai1_set_fmt,
.hw_params = max98088_dai1_hw_params,
.mute_stream = max98088_dai1_mute,
+ .auto_selectable_formats = &max98088_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
@@ -1355,6 +1365,8 @@ static const struct snd_soc_dai_ops max98088_dai2_ops = {
.set_fmt = max98088_dai2_set_fmt,
.hw_params = max98088_dai2_hw_params,
.mute_stream = max98088_dai2_mute,
+ .auto_selectable_formats = &max98088_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c
index aaa34ba86802d..07b02e01638ec 100644
--- a/sound/soc/codecs/max98090.c
+++ b/sound/soc/codecs/max98090.c
@@ -2382,6 +2382,16 @@ EXPORT_SYMBOL_GPL(max98090_mic_detect);
#define MAX98090_RATES SNDRV_PCM_RATE_8000_96000
#define MAX98090_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 max98090_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max98090_dai_ops = {
.startup = max98090_dai_startup,
.set_sysclk = max98090_dai_set_sysclk,
@@ -2390,6 +2400,8 @@ static const struct snd_soc_dai_ops max98090_dai_ops = {
.hw_params = max98090_dai_hw_params,
.mute_stream = max98090_dai_mute,
.trigger = max98090_dai_trigger,
+ .auto_selectable_formats = &max98090_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/max98095.c b/sound/soc/codecs/max98095.c
index ced9bd4d94da0..326a09bb5addb 100644
--- a/sound/soc/codecs/max98095.c
+++ b/sound/soc/codecs/max98095.c
@@ -1412,22 +1412,36 @@ static int max98095_set_bias_level(struct snd_soc_component *component,
#define MAX98095_RATES SNDRV_PCM_RATE_8000_96000
#define MAX98095_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 max98095_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max98095_dai1_ops = {
.set_sysclk = max98095_dai_set_sysclk,
.set_fmt = max98095_dai1_set_fmt,
.hw_params = max98095_dai1_hw_params,
+ .auto_selectable_formats = &max98095_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops max98095_dai2_ops = {
.set_sysclk = max98095_dai_set_sysclk,
.set_fmt = max98095_dai2_set_fmt,
.hw_params = max98095_dai2_hw_params,
+ .auto_selectable_formats = &max98095_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops max98095_dai3_ops = {
.set_sysclk = max98095_dai_set_sysclk,
.set_fmt = max98095_dai3_set_fmt,
.hw_params = max98095_dai3_hw_params,
+ .auto_selectable_formats = &max98095_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver max98095_dai[] = {
diff --git a/sound/soc/codecs/max98371.c b/sound/soc/codecs/max98371.c
index c8d4c68af5623..b62bd98f2252a 100644
--- a/sound/soc/codecs/max98371.c
+++ b/sound/soc/codecs/max98371.c
@@ -322,9 +322,16 @@ static const struct snd_soc_dapm_route max98371_audio_map[] = {
#define MAX98371_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_BE | \
SNDRV_PCM_FMTBIT_S24_BE | SNDRV_PCM_FMTBIT_S32_BE)
+static const u64 max98371_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops max98371_dai_ops = {
.set_fmt = max98371_dai_set_fmt,
.hw_params = max98371_dai_hw_params,
+ .auto_selectable_formats = &max98371_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver max98371_dai[] = {
diff --git a/sound/soc/codecs/max98373-i2c.c b/sound/soc/codecs/max98373-i2c.c
index 20de379d08de2..3e848b31d5c0b 100644
--- a/sound/soc/codecs/max98373-i2c.c
+++ b/sound/soc/codecs/max98373-i2c.c
@@ -399,10 +399,20 @@ static int max98373_dai_tdm_slot(struct snd_soc_dai *dai,
#define MAX98373_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 max98373_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops max98373_dai_ops = {
.set_fmt = max98373_dai_set_fmt,
.hw_params = max98373_dai_hw_params,
.set_tdm_slot = max98373_dai_tdm_slot,
+ .auto_selectable_formats = &max98373_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static bool max98373_readable_register(struct device *dev, unsigned int reg)
diff --git a/sound/soc/codecs/max98388.c b/sound/soc/codecs/max98388.c
index 2576841b7de21..7d62b2d6d847d 100644
--- a/sound/soc/codecs/max98388.c
+++ b/sound/soc/codecs/max98388.c
@@ -777,10 +777,20 @@ static int max98388_dai_tdm_slot(struct snd_soc_dai *dai,
#define MAX98388_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 max98388_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops max98388_dai_ops = {
.set_fmt = max98388_dai_set_fmt,
.hw_params = max98388_dai_hw_params,
.set_tdm_slot = max98388_dai_tdm_slot,
+ .auto_selectable_formats = &max98388_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static bool max98388_readable_register(struct device *dev,
diff --git a/sound/soc/codecs/max98390.c b/sound/soc/codecs/max98390.c
index 2bbedf84ee5d0..cccd395534984 100644
--- a/sound/soc/codecs/max98390.c
+++ b/sound/soc/codecs/max98390.c
@@ -462,11 +462,21 @@ static int max98390_dai_set_sysclk(struct snd_soc_dai *dai,
return 0;
}
+static const u64 max98390_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops max98390_dai_ops = {
.set_sysclk = max98390_dai_set_sysclk,
.set_fmt = max98390_dai_set_fmt,
.hw_params = max98390_dai_hw_params,
.set_tdm_slot = max98390_dai_tdm_slot,
+ .auto_selectable_formats = &max98390_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int max98390_dac_event(struct snd_soc_dapm_widget *w,
diff --git a/sound/soc/codecs/max98396.c b/sound/soc/codecs/max98396.c
index 9c1d7213410c2..fa5db92767f56 100644
--- a/sound/soc/codecs/max98396.c
+++ b/sound/soc/codecs/max98396.c
@@ -790,10 +790,22 @@ static int max98396_dai_tdm_slot(struct snd_soc_dai *dai,
#define MAX98396_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 max98396_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max98396_dai_ops = {
.set_fmt = max98396_dai_set_fmt,
.hw_params = max98396_dai_hw_params,
.set_tdm_slot = max98396_dai_tdm_slot,
+ .auto_selectable_formats = &max98396_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int max98396_dac_event(struct snd_soc_dapm_widget *w,
diff --git a/sound/soc/codecs/max9850.c b/sound/soc/codecs/max9850.c
index 9bd6a61212c1d..c229b732121fe 100644
--- a/sound/soc/codecs/max9850.c
+++ b/sound/soc/codecs/max9850.c
@@ -254,10 +254,21 @@ static int max9850_set_bias_level(struct snd_soc_component *component,
#define MAX9850_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 max9850_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max9850_dai_ops = {
.hw_params = max9850_hw_params,
.set_sysclk = max9850_set_dai_sysclk,
.set_fmt = max9850_set_dai_fmt,
+ .auto_selectable_formats = &max9850_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver max9850_dai = {
diff --git a/sound/soc/codecs/max98520.c b/sound/soc/codecs/max98520.c
index 4fb98505db1a1..57759d85907be 100644
--- a/sound/soc/codecs/max98520.c
+++ b/sound/soc/codecs/max98520.c
@@ -326,10 +326,20 @@ static int max98520_dai_tdm_slot(struct snd_soc_dai *dai,
#define MAX98520_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 max98520_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops max98520_dai_ops = {
.set_fmt = max98520_dai_set_fmt,
.hw_params = max98520_dai_hw_params,
.set_tdm_slot = max98520_dai_tdm_slot,
+ .auto_selectable_formats = &max98520_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int max98520_dac_event(struct snd_soc_dapm_widget *w,
diff --git a/sound/soc/codecs/max9860.c b/sound/soc/codecs/max9860.c
index 0d7ac37850bba..ebbfc4adae9a3 100644
--- a/sound/soc/codecs/max9860.c
+++ b/sound/soc/codecs/max9860.c
@@ -459,9 +459,21 @@ static int max9860_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
}
}
+static const u64 max9860_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max9860_dai_ops = {
.hw_params = max9860_hw_params,
.set_fmt = max9860_set_fmt,
+ .auto_selectable_formats = &max9860_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver max9860_dai = {
diff --git a/sound/soc/codecs/max9867.c b/sound/soc/codecs/max9867.c
index 07a53ec2a18a3..f2214e3a19ce3 100644
--- a/sound/soc/codecs/max9867.c
+++ b/sound/soc/codecs/max9867.c
@@ -522,12 +522,22 @@ static int max9867_dai_set_fmt(struct snd_soc_dai *codec_dai,
return 0;
}
+static const u64 max9867_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max9867_dai_ops = {
.set_sysclk = max9867_set_dai_sysclk,
.set_fmt = max9867_dai_set_fmt,
.mute_stream = max9867_mute,
.startup = max9867_startup,
.hw_params = max9867_dai_hw_params,
+ .auto_selectable_formats = &max9867_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/max98925.c b/sound/soc/codecs/max98925.c
index 4302ab16a642a..fe43ef99a0cba 100644
--- a/sound/soc/codecs/max98925.c
+++ b/sound/soc/codecs/max98925.c
@@ -484,10 +484,18 @@ static int max98925_dai_set_sysclk(struct snd_soc_dai *dai,
#define MAX98925_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 max98925_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max98925_dai_ops = {
.set_sysclk = max98925_dai_set_sysclk,
.set_fmt = max98925_dai_set_fmt,
.hw_params = max98925_dai_hw_params,
+ .auto_selectable_formats = &max98925_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver max98925_dai[] = {
diff --git a/sound/soc/codecs/max98926.c b/sound/soc/codecs/max98926.c
index 5305e1f9d97fd..d57620a3e958a 100644
--- a/sound/soc/codecs/max98926.c
+++ b/sound/soc/codecs/max98926.c
@@ -448,9 +448,17 @@ static int max98926_dai_hw_params(struct snd_pcm_substream *substream,
#define MAX98926_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 max98926_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops max98926_dai_ops = {
.set_fmt = max98926_dai_set_fmt,
.hw_params = max98926_dai_hw_params,
+ .auto_selectable_formats = &max98926_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver max98926_dai[] = {
diff --git a/sound/soc/codecs/max98927.c b/sound/soc/codecs/max98927.c
index 65e6fdb30eec8..de3194eb8f796 100644
--- a/sound/soc/codecs/max98927.c
+++ b/sound/soc/codecs/max98927.c
@@ -463,11 +463,21 @@ static int max98927_dai_set_sysclk(struct snd_soc_dai *dai,
return 0;
}
+static const u64 max98927_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops max98927_dai_ops = {
.set_sysclk = max98927_dai_set_sysclk,
.set_fmt = max98927_dai_set_fmt,
.hw_params = max98927_dai_hw_params,
.set_tdm_slot = max98927_dai_tdm_slot,
+ .auto_selectable_formats = &max98927_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int max98927_dac_event(struct snd_soc_dapm_widget *w,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 39/83] ASoC: codecs: mc13783: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (37 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 38/83] ASoC: codecs: max*: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 40/83] ASoC: codecs: ml26124: " Kuninori Morimoto
` (44 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/mc13783.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index 086ac97e83866..a6231a12a9b09 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -637,11 +637,21 @@ static void mc13783_remove(struct snd_soc_component *component)
#define MC13783_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 mc13783_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mc13783_ops_dac = {
.hw_params = mc13783_pcm_hw_params_dac,
.set_fmt = mc13783_set_fmt_async,
.set_sysclk = mc13783_set_sysclk_dac,
.set_tdm_slot = mc13783_set_tdm_slot_dac,
+ .auto_selectable_formats = &mc13783_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops mc13783_ops_codec = {
@@ -649,6 +659,8 @@ static const struct snd_soc_dai_ops mc13783_ops_codec = {
.set_fmt = mc13783_set_fmt_async,
.set_sysclk = mc13783_set_sysclk_codec,
.set_tdm_slot = mc13783_set_tdm_slot_codec,
+ .auto_selectable_formats = &mc13783_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/*
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 40/83] ASoC: codecs: ml26124: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (38 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 39/83] ASoC: codecs: mc13783: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 41/83] ASoC: codecs: nau*: " Kuninori Morimoto
` (43 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ml26124.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/soc/codecs/ml26124.c b/sound/soc/codecs/ml26124.c
index 8a14626d43ffd..ad111d92cffab 100644
--- a/sound/soc/codecs/ml26124.c
+++ b/sound/soc/codecs/ml26124.c
@@ -490,11 +490,17 @@ static int ml26124_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 ml26124_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops ml26124_dai_ops = {
.hw_params = ml26124_hw_params,
.mute_stream = ml26124_mute,
.set_fmt = ml26124_set_dai_fmt,
.set_sysclk = ml26124_set_dai_sysclk,
+ .auto_selectable_formats = &ml26124_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 41/83] ASoC: codecs: nau*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (39 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 40/83] ASoC: codecs: ml26124: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 42/83] ASoC: codecs: ntp8*: " Kuninori Morimoto
` (42 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/nau8325.c | 11 +++++++++++
sound/soc/codecs/nau8540.c | 11 +++++++++++
sound/soc/codecs/nau8810.c | 12 ++++++++++++
sound/soc/codecs/nau8821.c | 11 +++++++++++
sound/soc/codecs/nau8822.c | 12 ++++++++++++
sound/soc/codecs/nau8824.c | 11 +++++++++++
sound/soc/codecs/nau8825.c | 11 +++++++++++
7 files changed, 79 insertions(+)
diff --git a/sound/soc/codecs/nau8325.c b/sound/soc/codecs/nau8325.c
index 236d94c29c249..2c95ed00a681f 100644
--- a/sound/soc/codecs/nau8325.c
+++ b/sound/soc/codecs/nau8325.c
@@ -628,10 +628,21 @@ static const struct snd_soc_component_driver nau8325_component_driver = {
.num_dapm_routes = ARRAY_SIZE(nau8325_dapm_routes),
};
+static const u64 nau8325_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops nau8325_dai_ops = {
.startup = nau8325_dai_startup,
.hw_params = nau8325_hw_params,
.set_fmt = nau8325_set_fmt,
+ .auto_selectable_formats = &nau8325_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define NAU8325_RATES SNDRV_PCM_RATE_8000_96000
diff --git a/sound/soc/codecs/nau8540.c b/sound/soc/codecs/nau8540.c
index fefbd5722c004..a939f4b7bb250 100644
--- a/sound/soc/codecs/nau8540.c
+++ b/sound/soc/codecs/nau8540.c
@@ -623,12 +623,23 @@ static int nau8540_dai_trigger(struct snd_pcm_substream *substream,
return ret;
}
+static const u64 nau8540_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops nau8540_dai_ops = {
.startup = nau8540_dai_startup,
.hw_params = nau8540_hw_params,
.set_fmt = nau8540_set_fmt,
.set_tdm_slot = nau8540_set_tdm_slot,
.trigger = nau8540_dai_trigger,
+ .auto_selectable_formats = &nau8540_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define NAU8540_RATES SNDRV_PCM_RATE_8000_48000
diff --git a/sound/soc/codecs/nau8810.c b/sound/soc/codecs/nau8810.c
index a050387dd485f..eb3e93380678c 100644
--- a/sound/soc/codecs/nau8810.c
+++ b/sound/soc/codecs/nau8810.c
@@ -817,11 +817,23 @@ static int nau8810_set_bias_level(struct snd_soc_component *component,
#define NAU8810_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 nau8810_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops nau8810_ops = {
.hw_params = nau8810_pcm_hw_params,
.set_fmt = nau8810_set_dai_fmt,
.set_sysclk = nau8810_set_sysclk,
.set_pll = nau8810_set_pll,
+ .auto_selectable_formats = &nau8810_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver nau8810_dai = {
diff --git a/sound/soc/codecs/nau8821.c b/sound/soc/codecs/nau8821.c
index c45c5b864ea4b..ecadbaee10379 100644
--- a/sound/soc/codecs/nau8821.c
+++ b/sound/soc/codecs/nau8821.c
@@ -981,11 +981,22 @@ static int nau8821_digital_mute(struct snd_soc_dai *dai, int mute,
NAU8821_R31_MUTE_CTRL, NAU8821_DAC_SOFT_MUTE, val);
}
+static const u64 nau8821_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops nau8821_dai_ops = {
.startup = nau8821_dai_startup,
.hw_params = nau8821_hw_params,
.set_fmt = nau8821_set_dai_fmt,
.mute_stream = nau8821_digital_mute,
+ .auto_selectable_formats = &nau8821_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/nau8822.c b/sound/soc/codecs/nau8822.c
index 19fee5f4bf5f6..942bed906a6f9 100644
--- a/sound/soc/codecs/nau8822.c
+++ b/sound/soc/codecs/nau8822.c
@@ -1021,12 +1021,24 @@ static int nau8822_set_bias_level(struct snd_soc_component *component,
#define NAU8822_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 nau8822_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops nau8822_dai_ops = {
.hw_params = nau8822_hw_params,
.mute_stream = nau8822_mute,
.set_fmt = nau8822_set_dai_fmt,
.set_sysclk = nau8822_set_dai_sysclk,
.set_pll = nau8822_set_pll,
+ .auto_selectable_formats = &nau8822_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/nau8824.c b/sound/soc/codecs/nau8824.c
index 426a488ff2a34..853eb9472af92 100644
--- a/sound/soc/codecs/nau8824.c
+++ b/sound/soc/codecs/nau8824.c
@@ -1580,11 +1580,22 @@ static const struct snd_soc_component_driver nau8824_component_driver = {
.endianness = 1,
};
+static const u64 nau8824_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops nau8824_dai_ops = {
.startup = nau8824_dai_startup,
.hw_params = nau8824_hw_params,
.set_fmt = nau8824_set_fmt,
.set_tdm_slot = nau8824_set_tdm_slot,
+ .auto_selectable_formats = &nau8824_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define NAU8824_RATES SNDRV_PCM_RATE_8000_192000
diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c
index ae83b778bf935..5165aeba4b675 100644
--- a/sound/soc/codecs/nau8825.c
+++ b/sound/soc/codecs/nau8825.c
@@ -1507,11 +1507,22 @@ static int nau8825_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
return 0;
}
+static const u64 nau8825_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops nau8825_dai_ops = {
.startup = nau8825_dai_startup,
.hw_params = nau8825_hw_params,
.set_fmt = nau8825_set_dai_fmt,
.set_tdm_slot = nau8825_set_tdm_slot,
+ .auto_selectable_formats = &nau8825_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define NAU8825_RATES SNDRV_PCM_RATE_8000_192000
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 42/83] ASoC: codecs: ntp8*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (40 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 41/83] ASoC: codecs: nau*: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 43/83] ASoC: codecs: pcm*: " Kuninori Morimoto
` (41 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ntp8835.c | 7 +++++++
sound/soc/codecs/ntp8918.c | 7 +++++++
2 files changed, 14 insertions(+)
diff --git a/sound/soc/codecs/ntp8835.c b/sound/soc/codecs/ntp8835.c
index 5837b9379fee7..39620b84e214d 100644
--- a/sound/soc/codecs/ntp8835.c
+++ b/sound/soc/codecs/ntp8835.c
@@ -385,9 +385,16 @@ static int ntp8835_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
};
+static const u64 ntp8835_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ntp8835_dai_ops = {
.hw_params = ntp8835_hw_params,
.set_fmt = ntp8835_set_fmt,
+ .auto_selectable_formats = &ntp8835_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ntp8835_dai = {
diff --git a/sound/soc/codecs/ntp8918.c b/sound/soc/codecs/ntp8918.c
index a18d79aa80aaa..eca34fafc4e6c 100644
--- a/sound/soc/codecs/ntp8918.c
+++ b/sound/soc/codecs/ntp8918.c
@@ -306,10 +306,17 @@ static int ntp8918_digital_mute(struct snd_soc_dai *dai, int mute, int stream)
mute_mask, mute ? mute_mask : 0);
}
+static const u64 ntp8918_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops ntp8918_dai_ops = {
.hw_params = ntp8918_hw_params,
.set_fmt = ntp8918_set_fmt,
.mute_stream = ntp8918_digital_mute,
+ .auto_selectable_formats = &ntp8918_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ntp8918_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 43/83] ASoC: codecs: pcm*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (41 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 42/83] ASoC: codecs: ntp8*: " Kuninori Morimoto
@ 2026-05-26 2:19 ` Kuninori Morimoto
2026-05-30 19:33 ` Kirill Marinushkin
2026-05-26 2:20 ` [PATCH 44/83] ASoC: codecs: rk33*: " Kuninori Morimoto
` (40 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:19 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/pcm1681.c | 7 +++++++
sound/soc/codecs/pcm1754.c | 6 ++++++
sound/soc/codecs/pcm1789.c | 7 +++++++
sound/soc/codecs/pcm179x.c | 6 ++++++
sound/soc/codecs/pcm186x.c | 9 +++++++++
sound/soc/codecs/pcm3060.c | 7 +++++++
sound/soc/codecs/pcm512x.c | 9 +++++++++
7 files changed, 51 insertions(+)
diff --git a/sound/soc/codecs/pcm1681.c b/sound/soc/codecs/pcm1681.c
index cb923cecb47fc..60fdbe5c4e054 100644
--- a/sound/soc/codecs/pcm1681.c
+++ b/sound/soc/codecs/pcm1681.c
@@ -199,10 +199,17 @@ static int pcm1681_hw_params(struct snd_pcm_substream *substream,
return pcm1681_set_deemph(component);
}
+static const u64 pcm1681_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops pcm1681_dai_ops = {
.set_fmt = pcm1681_set_dai_fmt,
.hw_params = pcm1681_hw_params,
.mute_stream = pcm1681_mute,
+ .auto_selectable_formats = &pcm1681_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/pcm1754.c b/sound/soc/codecs/pcm1754.c
index b68a528000be8..bb15da1c24aa2 100644
--- a/sound/soc/codecs/pcm1754.c
+++ b/sound/soc/codecs/pcm1754.c
@@ -78,10 +78,16 @@ static int pcm1754_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
return 0;
}
+static const u64 pcm1754_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J;
+
static const struct snd_soc_dai_ops pcm1754_dai_ops = {
.set_fmt = pcm1754_set_dai_fmt,
.hw_params = pcm1754_hw_params,
.mute_stream = pcm1754_mute_stream,
+ .auto_selectable_formats = &pcm1754_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver pcm1754_dai = {
diff --git a/sound/soc/codecs/pcm1789.c b/sound/soc/codecs/pcm1789.c
index 3ab381e9a8566..f06e353743aaa 100644
--- a/sound/soc/codecs/pcm1789.c
+++ b/sound/soc/codecs/pcm1789.c
@@ -164,11 +164,18 @@ static int pcm1789_trigger(struct snd_pcm_substream *substream, int cmd,
return ret;
}
+static const u64 pcm1789_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops pcm1789_dai_ops = {
.set_fmt = pcm1789_set_dai_fmt,
.hw_params = pcm1789_hw_params,
.mute_stream = pcm1789_mute,
.trigger = pcm1789_trigger,
+ .auto_selectable_formats = &pcm1789_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/pcm179x.c b/sound/soc/codecs/pcm179x.c
index f52ff66b6e644..cb70927872aa0 100644
--- a/sound/soc/codecs/pcm179x.c
+++ b/sound/soc/codecs/pcm179x.c
@@ -142,10 +142,16 @@ static int pcm179x_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 pcm179x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J;
+
static const struct snd_soc_dai_ops pcm179x_dai_ops = {
.set_fmt = pcm179x_set_dai_fmt,
.hw_params = pcm179x_hw_params,
.mute_stream = pcm179x_mute,
+ .auto_selectable_formats = &pcm179x_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/pcm186x.c b/sound/soc/codecs/pcm186x.c
index 0d1103fe4e04d..461ec74e87521 100644
--- a/sound/soc/codecs/pcm186x.c
+++ b/sound/soc/codecs/pcm186x.c
@@ -473,11 +473,20 @@ static int pcm186x_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
return 0;
}
+static const u64 pcm186x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops pcm186x_dai_ops = {
.set_sysclk = pcm186x_set_dai_sysclk,
.set_tdm_slot = pcm186x_set_tdm_slot,
.set_fmt = pcm186x_set_fmt,
.hw_params = pcm186x_hw_params,
+ .auto_selectable_formats = &pcm186x_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver pcm1863_dai = {
diff --git a/sound/soc/codecs/pcm3060.c b/sound/soc/codecs/pcm3060.c
index 8974200652e7e..5fb344c6d8d90 100644
--- a/sound/soc/codecs/pcm3060.c
+++ b/sound/soc/codecs/pcm3060.c
@@ -164,10 +164,17 @@ static int pcm3060_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 pcm3060_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops pcm3060_dai_ops = {
.set_sysclk = pcm3060_set_sysclk,
.set_fmt = pcm3060_set_fmt,
.hw_params = pcm3060_hw_params,
+ .auto_selectable_formats = &pcm3060_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define PCM3060_DAI_RATES_ADC (SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 | \
diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c
index a70e8ea166dc5..981a2e56fa724 100644
--- a/sound/soc/codecs/pcm512x.c
+++ b/sound/soc/codecs/pcm512x.c
@@ -1505,12 +1505,21 @@ static int pcm512x_mute(struct snd_soc_dai *dai, int mute, int direction)
return ret;
}
+static const u64 pcm512x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops pcm512x_dai_ops = {
.startup = pcm512x_dai_startup,
.hw_params = pcm512x_hw_params,
.set_fmt = pcm512x_set_fmt,
.mute_stream = pcm512x_mute,
.set_bclk_ratio = pcm512x_set_bclk_ratio,
+ .auto_selectable_formats = &pcm512x_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 44/83] ASoC: codecs: rk33*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (42 preceding siblings ...)
2026-05-26 2:19 ` [PATCH 43/83] ASoC: codecs: pcm*: " Kuninori Morimoto
@ 2026-05-26 2:20 ` Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 45/83] ASoC: codecs: rtq912*: " Kuninori Morimoto
` (39 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:20 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/rk3308_codec.c | 11 +++++++++++
sound/soc/codecs/rk3328_codec.c | 9 +++++++++
2 files changed, 20 insertions(+)
diff --git a/sound/soc/codecs/rk3308_codec.c b/sound/soc/codecs/rk3308_codec.c
index 60befe9d37f05..abed31ba660c8 100644
--- a/sound/soc/codecs/rk3308_codec.c
+++ b/sound/soc/codecs/rk3308_codec.c
@@ -679,9 +679,20 @@ static int rk3308_codec_hw_params(struct snd_pcm_substream *substream,
rk3308_codec_adc_dig_config(rk3308, params);
}
+static const u64 rk3308_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rk3308_codec_dai_ops = {
.hw_params = rk3308_codec_hw_params,
.set_fmt = rk3308_codec_set_dai_fmt,
+ .auto_selectable_formats = &rk3308_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rk3308_codec_dai_driver = {
diff --git a/sound/soc/codecs/rk3328_codec.c b/sound/soc/codecs/rk3328_codec.c
index 9697aefc6e030..1ab7e3f024bc5 100644
--- a/sound/soc/codecs/rk3328_codec.c
+++ b/sound/soc/codecs/rk3328_codec.c
@@ -312,12 +312,21 @@ static void rk3328_pcm_shutdown(struct snd_pcm_substream *substream,
rk3328_codec_close_playback(rk3328);
}
+static const u64 rk3328_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rk3328_dai_ops = {
.hw_params = rk3328_hw_params,
.set_fmt = rk3328_set_dai_fmt,
.mute_stream = rk3328_mute_stream,
.startup = rk3328_pcm_startup,
.shutdown = rk3328_pcm_shutdown,
+ .auto_selectable_formats = &rk3328_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 45/83] ASoC: codecs: rtq912*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (43 preceding siblings ...)
2026-05-26 2:20 ` [PATCH 44/83] ASoC: codecs: rk33*: " Kuninori Morimoto
@ 2026-05-26 2:20 ` Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 46/83] ASoC: codecs: rt*: " Kuninori Morimoto
` (38 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:20 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/rtq9124.c | 9 +++++++++
sound/soc/codecs/rtq9128.c | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/sound/soc/codecs/rtq9124.c b/sound/soc/codecs/rtq9124.c
index 186904b31434c..a0f69763e53e9 100644
--- a/sound/soc/codecs/rtq9124.c
+++ b/sound/soc/codecs/rtq9124.c
@@ -287,10 +287,19 @@ static int rtq9124_dai_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 rtq9124_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rtq9124_dai_ops = {
.set_fmt = rtq9124_dai_set_format,
.set_tdm_slot = rtq9124_dai_set_tdm_slot,
.hw_params = rtq9124_dai_hw_params,
+ .auto_selectable_formats = &rtq9124_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rtq9124_dai_driver = {
diff --git a/sound/soc/codecs/rtq9128.c b/sound/soc/codecs/rtq9128.c
index 14a2c0723d33f..ad4704a6a6a5b 100644
--- a/sound/soc/codecs/rtq9128.c
+++ b/sound/soc/codecs/rtq9128.c
@@ -728,11 +728,20 @@ static int rtq9128_dai_mute_stream(struct snd_soc_dai *dai, int mute, int stream
return ret < 0 ? ret : 0;
}
+static const u64 rtq9128_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rtq9128_dai_ops = {
.set_fmt = rtq9128_dai_set_fmt,
.set_tdm_slot = rtq9128_dai_set_tdm_slot,
.hw_params = rtq9128_dai_hw_params,
.mute_stream = rtq9128_dai_mute_stream,
+ .auto_selectable_formats = &rtq9128_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 46/83] ASoC: codecs: rt*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (44 preceding siblings ...)
2026-05-26 2:20 ` [PATCH 45/83] ASoC: codecs: rtq912*: " Kuninori Morimoto
@ 2026-05-26 2:20 ` Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 47/83] ASoC: codecs: sgtl5000: " Kuninori Morimoto
` (37 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:20 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/rt1011.c | 10 ++++++++++
sound/soc/codecs/rt1015.c | 10 ++++++++++
sound/soc/codecs/rt1016.c | 10 ++++++++++
sound/soc/codecs/rt1019.c | 10 ++++++++++
sound/soc/codecs/rt1305.c | 10 ++++++++++
sound/soc/codecs/rt1308.c | 10 ++++++++++
sound/soc/codecs/rt1318.c | 10 ++++++++++
sound/soc/codecs/rt274.c | 8 ++++++++
sound/soc/codecs/rt286.c | 8 ++++++++
sound/soc/codecs/rt298.c | 8 ++++++++
sound/soc/codecs/rt5514.c | 12 ++++++++++++
sound/soc/codecs/rt5616.c | 10 ++++++++++
sound/soc/codecs/rt5631.c | 10 ++++++++++
sound/soc/codecs/rt5640.c | 10 ++++++++++
sound/soc/codecs/rt5645.c | 10 ++++++++++
sound/soc/codecs/rt5651.c | 10 ++++++++++
sound/soc/codecs/rt5659.c | 10 ++++++++++
sound/soc/codecs/rt5660.c | 10 ++++++++++
sound/soc/codecs/rt5663.c | 10 ++++++++++
sound/soc/codecs/rt5665.c | 10 ++++++++++
sound/soc/codecs/rt5668.c | 14 ++++++++++++++
sound/soc/codecs/rt5670.c | 10 ++++++++++
sound/soc/codecs/rt5677.c | 10 ++++++++++
sound/soc/codecs/rt5682.c | 14 ++++++++++++++
sound/soc/codecs/rt5682s.c | 14 ++++++++++++++
sound/soc/codecs/rt9120.c | 9 +++++++++
sound/soc/codecs/rt9123.c | 9 +++++++++
27 files changed, 276 insertions(+)
diff --git a/sound/soc/codecs/rt1011.c b/sound/soc/codecs/rt1011.c
index 15488a0592837..d47b0370dd6b0 100644
--- a/sound/soc/codecs/rt1011.c
+++ b/sound/soc/codecs/rt1011.c
@@ -2133,10 +2133,20 @@ static int rt1011_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 rt1011_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1011_aif_dai_ops = {
.hw_params = rt1011_hw_params,
.set_fmt = rt1011_set_dai_fmt,
.set_tdm_slot = rt1011_set_tdm_slot,
+ .auto_selectable_formats = &rt1011_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1011_dai[] = {
diff --git a/sound/soc/codecs/rt1015.c b/sound/soc/codecs/rt1015.c
index ff0c08ff610e1..c6d59c2860644 100644
--- a/sound/soc/codecs/rt1015.c
+++ b/sound/soc/codecs/rt1015.c
@@ -1016,10 +1016,20 @@ static void rt1015_remove(struct snd_soc_component *component)
#define RT1015_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt1015_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1015_aif_dai_ops = {
.hw_params = rt1015_hw_params,
.set_fmt = rt1015_set_dai_fmt,
.set_tdm_slot = rt1015_set_tdm_slot,
+ .auto_selectable_formats = &rt1015_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1015_dai[] = {
diff --git a/sound/soc/codecs/rt1016.c b/sound/soc/codecs/rt1016.c
index 11c8c45574a13..56a2f3d3354df 100644
--- a/sound/soc/codecs/rt1016.c
+++ b/sound/soc/codecs/rt1016.c
@@ -534,9 +534,19 @@ static void rt1016_remove(struct snd_soc_component *component)
#define RT1016_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt1016_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1016_aif_dai_ops = {
.hw_params = rt1016_hw_params,
.set_fmt = rt1016_set_dai_fmt,
+ .auto_selectable_formats = &rt1016_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1016_dai[] = {
diff --git a/sound/soc/codecs/rt1019.c b/sound/soc/codecs/rt1019.c
index 370521149ac8a..3998abccd93a8 100644
--- a/sound/soc/codecs/rt1019.c
+++ b/sound/soc/codecs/rt1019.c
@@ -492,12 +492,22 @@ static int rt1019_probe(struct snd_soc_component *component)
#define RT1019_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt1019_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1019_aif_dai_ops = {
.hw_params = rt1019_hw_params,
.set_fmt = rt1019_set_dai_fmt,
.set_sysclk = rt1019_set_dai_sysclk,
.set_pll = rt1019_set_dai_pll,
.set_tdm_slot = rt1019_set_tdm_slot,
+ .auto_selectable_formats = &rt1019_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1019_dai[] = {
diff --git a/sound/soc/codecs/rt1305.c b/sound/soc/codecs/rt1305.c
index 2d5fad76cf528..92998ec0a392e 100644
--- a/sound/soc/codecs/rt1305.c
+++ b/sound/soc/codecs/rt1305.c
@@ -910,9 +910,19 @@ static int rt1305_resume(struct snd_soc_component *component)
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 rt1305_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1305_aif_dai_ops = {
.hw_params = rt1305_hw_params,
.set_fmt = rt1305_set_dai_fmt,
+ .auto_selectable_formats = &rt1305_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1305_dai[] = {
diff --git a/sound/soc/codecs/rt1308.c b/sound/soc/codecs/rt1308.c
index 630946cd7cdf8..28c25871ec0c0 100644
--- a/sound/soc/codecs/rt1308.c
+++ b/sound/soc/codecs/rt1308.c
@@ -729,9 +729,19 @@ static int rt1308_resume(struct snd_soc_component *component)
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 rt1308_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1308_aif_dai_ops = {
.hw_params = rt1308_hw_params,
.set_fmt = rt1308_set_dai_fmt,
+ .auto_selectable_formats = &rt1308_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1308_dai[] = {
diff --git a/sound/soc/codecs/rt1318.c b/sound/soc/codecs/rt1318.c
index d13fd0e141252..23d6ee974ef16 100644
--- a/sound/soc/codecs/rt1318.c
+++ b/sound/soc/codecs/rt1318.c
@@ -1087,12 +1087,22 @@ static int rt1318_resume(struct snd_soc_component *component)
#define RT1318_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt1318_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt1318_aif_dai_ops = {
.hw_params = rt1318_hw_params,
.set_fmt = rt1318_set_dai_fmt,
.set_sysclk = rt1318_set_dai_sysclk,
.set_pll = rt1318_set_dai_pll,
.set_tdm_slot = rt1318_set_tdm_slot,
+ .auto_selectable_formats = &rt1318_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt1318_dai[] = {
diff --git a/sound/soc/codecs/rt274.c b/sound/soc/codecs/rt274.c
index 63b5fc439773d..d70feeb7aa1f2 100644
--- a/sound/soc/codecs/rt274.c
+++ b/sound/soc/codecs/rt274.c
@@ -1027,6 +1027,12 @@ static int rt274_resume(struct snd_soc_component *component)
#define RT274_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt274_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rt274_aif_dai_ops = {
.hw_params = rt274_hw_params,
.set_fmt = rt274_set_dai_fmt,
@@ -1034,6 +1040,8 @@ static const struct snd_soc_dai_ops rt274_aif_dai_ops = {
.set_pll = rt274_set_dai_pll,
.set_bclk_ratio = rt274_set_bclk_ratio,
.set_tdm_slot = rt274_set_tdm_slot,
+ .auto_selectable_formats = &rt274_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt274_dai[] = {
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c
index ded0ea3324804..0632fec5b0108 100644
--- a/sound/soc/codecs/rt286.c
+++ b/sound/soc/codecs/rt286.c
@@ -995,11 +995,19 @@ static int rt286_resume(struct snd_soc_component *component)
#define RT286_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt286_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rt286_aif_dai_ops = {
.hw_params = rt286_hw_params,
.set_fmt = rt286_set_dai_fmt,
.set_sysclk = rt286_set_dai_sysclk,
.set_bclk_ratio = rt286_set_bclk_ratio,
+ .auto_selectable_formats = &rt286_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt286_dai[] = {
diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c
index 5414a1712b571..5901638198d8d 100644
--- a/sound/soc/codecs/rt298.c
+++ b/sound/soc/codecs/rt298.c
@@ -1056,11 +1056,19 @@ static int rt298_resume(struct snd_soc_component *component)
#define RT298_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt298_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rt298_aif_dai_ops = {
.hw_params = rt298_hw_params,
.set_fmt = rt298_set_dai_fmt,
.set_sysclk = rt298_set_dai_sysclk,
.set_bclk_ratio = rt298_set_bclk_ratio,
+ .auto_selectable_formats = &rt298_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt298_dai[] = {
diff --git a/sound/soc/codecs/rt5514.c b/sound/soc/codecs/rt5514.c
index 00a4a208d2fa7..42decd111c143 100644
--- a/sound/soc/codecs/rt5514.c
+++ b/sound/soc/codecs/rt5514.c
@@ -1136,12 +1136,24 @@ static int rt5514_i2c_write(void *context, unsigned int reg, unsigned int val)
#define RT5514_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5514_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rt5514_aif_dai_ops = {
.hw_params = rt5514_hw_params,
.set_fmt = rt5514_set_dai_fmt,
.set_sysclk = rt5514_set_dai_sysclk,
.set_pll = rt5514_set_dai_pll,
.set_tdm_slot = rt5514_set_tdm_slot,
+ .auto_selectable_formats = &rt5514_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5514_dai[] = {
diff --git a/sound/soc/codecs/rt5616.c b/sound/soc/codecs/rt5616.c
index 46ee412dc81db..3f9d97d04d48a 100644
--- a/sound/soc/codecs/rt5616.c
+++ b/sound/soc/codecs/rt5616.c
@@ -1260,11 +1260,21 @@ static int rt5616_resume(struct snd_soc_component *component)
#define RT5616_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5616_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5616_aif_dai_ops = {
.hw_params = rt5616_hw_params,
.set_fmt = rt5616_set_dai_fmt,
.set_sysclk = rt5616_set_dai_sysclk,
.set_pll = rt5616_set_dai_pll,
+ .auto_selectable_formats = &rt5616_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5616_dai[] = {
diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c
index ed1233973eb83..f97fd24e4229a 100644
--- a/sound/soc/codecs/rt5631.c
+++ b/sound/soc/codecs/rt5631.c
@@ -1626,11 +1626,21 @@ static int rt5631_probe(struct snd_soc_component *component)
SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5631_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5631_ops = {
.hw_params = rt5631_hifi_pcm_params,
.set_fmt = rt5631_hifi_codec_set_dai_fmt,
.set_sysclk = rt5631_hifi_codec_set_dai_sysclk,
.set_pll = rt5631_codec_set_dai_pll,
+ .auto_selectable_formats = &rt5631_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5631_dai[] = {
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 74fd05176eff7..4fa1eee8e87f3 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -2877,11 +2877,21 @@ static int rt5640_resume(struct snd_soc_component *component)
#define RT5640_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5640_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5640_aif_dai_ops = {
.hw_params = rt5640_hw_params,
.set_fmt = rt5640_set_dai_fmt,
.set_sysclk = rt5640_set_dai_sysclk,
.set_pll = rt5640_set_dai_pll,
+ .auto_selectable_formats = &rt5640_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5640_dai[] = {
diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
index 8a9af260e5f7f..2357f4a1f3675 100644
--- a/sound/soc/codecs/rt5645.c
+++ b/sound/soc/codecs/rt5645.c
@@ -3535,12 +3535,22 @@ static int rt5645_resume(struct snd_soc_component *component)
#define RT5645_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5645_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5645_aif_dai_ops = {
.hw_params = rt5645_hw_params,
.set_fmt = rt5645_set_dai_fmt,
.set_sysclk = rt5645_set_dai_sysclk,
.set_tdm_slot = rt5645_set_tdm_slot,
.set_pll = rt5645_set_dai_pll,
+ .auto_selectable_formats = &rt5645_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5645_dai[] = {
diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c
index 5c729135f71bd..9723b4c7540cb 100644
--- a/sound/soc/codecs/rt5651.c
+++ b/sound/soc/codecs/rt5651.c
@@ -2102,11 +2102,21 @@ static int rt5651_resume(struct snd_soc_component *component)
#define RT5651_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5651_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5651_aif_dai_ops = {
.hw_params = rt5651_hw_params,
.set_fmt = rt5651_set_dai_fmt,
.set_sysclk = rt5651_set_dai_sysclk,
.set_pll = rt5651_set_dai_pll,
+ .auto_selectable_formats = &rt5651_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5651_dai[] = {
diff --git a/sound/soc/codecs/rt5659.c b/sound/soc/codecs/rt5659.c
index 3097ee6d4e89f..3d782f41ccdd8 100644
--- a/sound/soc/codecs/rt5659.c
+++ b/sound/soc/codecs/rt5659.c
@@ -3716,11 +3716,21 @@ static int rt5659_resume(struct snd_soc_component *component)
#define RT5659_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5659_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5659_aif_dai_ops = {
.hw_params = rt5659_hw_params,
.set_fmt = rt5659_set_dai_fmt,
.set_tdm_slot = rt5659_set_tdm_slot,
.set_bclk_ratio = rt5659_set_bclk_ratio,
+ .auto_selectable_formats = &rt5659_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5659_dai[] = {
diff --git a/sound/soc/codecs/rt5660.c b/sound/soc/codecs/rt5660.c
index edf2e3e346e4f..807604120d282 100644
--- a/sound/soc/codecs/rt5660.c
+++ b/sound/soc/codecs/rt5660.c
@@ -1161,11 +1161,21 @@ static int rt5660_resume(struct snd_soc_component *component)
#define RT5660_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5660_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5660_aif_dai_ops = {
.hw_params = rt5660_hw_params,
.set_fmt = rt5660_set_dai_fmt,
.set_sysclk = rt5660_set_dai_sysclk,
.set_pll = rt5660_set_dai_pll,
+ .auto_selectable_formats = &rt5660_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5660_dai[] = {
diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c
index 262d3bba1f3d4..ec46e6180cc0e 100644
--- a/sound/soc/codecs/rt5663.c
+++ b/sound/soc/codecs/rt5663.c
@@ -3222,6 +3222,14 @@ static int rt5663_resume(struct snd_soc_component *component)
#define RT5663_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5663_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5663_aif_dai_ops = {
.hw_params = rt5663_hw_params,
.set_fmt = rt5663_set_dai_fmt,
@@ -3229,6 +3237,8 @@ static const struct snd_soc_dai_ops rt5663_aif_dai_ops = {
.set_pll = rt5663_set_dai_pll,
.set_tdm_slot = rt5663_set_tdm_slot,
.set_bclk_ratio = rt5663_set_bclk_ratio,
+ .auto_selectable_formats = &rt5663_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5663_dai[] = {
diff --git a/sound/soc/codecs/rt5665.c b/sound/soc/codecs/rt5665.c
index 48f57cd0920d4..3948f8d415f4c 100644
--- a/sound/soc/codecs/rt5665.c
+++ b/sound/soc/codecs/rt5665.c
@@ -4402,11 +4402,21 @@ static int rt5665_resume(struct snd_soc_component *component)
#define RT5665_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5665_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5665_aif_dai_ops = {
.hw_params = rt5665_hw_params,
.set_fmt = rt5665_set_dai_fmt,
.set_tdm_slot = rt5665_set_tdm_slot,
.set_bclk_ratio = rt5665_set_bclk_ratio,
+ .auto_selectable_formats = &rt5665_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5665_dai[] = {
diff --git a/sound/soc/codecs/rt5668.c b/sound/soc/codecs/rt5668.c
index fed6de40b8c80..0e12e095a870f 100644
--- a/sound/soc/codecs/rt5668.c
+++ b/sound/soc/codecs/rt5668.c
@@ -2255,16 +2255,30 @@ static int rt5668_resume(struct snd_soc_component *component)
#define RT5668_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5668_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rt5668_aif1_dai_ops = {
.hw_params = rt5668_hw_params,
.set_fmt = rt5668_set_dai_fmt,
.set_tdm_slot = rt5668_set_tdm_slot,
+ .auto_selectable_formats = &rt5668_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops rt5668_aif2_dai_ops = {
.hw_params = rt5668_hw_params,
.set_fmt = rt5668_set_dai_fmt,
.set_bclk_ratio = rt5668_set_bclk_ratio,
+ .auto_selectable_formats = &rt5668_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5668_dai[] = {
diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c
index 1d120b5dc2be7..f772f093479ad 100644
--- a/sound/soc/codecs/rt5670.c
+++ b/sound/soc/codecs/rt5670.c
@@ -2791,12 +2791,22 @@ static int rt5670_resume(struct snd_soc_component *component)
#define RT5670_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5670_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5670_aif_dai_ops = {
.hw_params = rt5670_hw_params,
.set_fmt = rt5670_set_dai_fmt,
.set_tdm_slot = rt5670_set_tdm_slot,
.set_pll = rt5670_set_dai_pll,
.set_bclk_ratio = rt5670_set_bclk_ratio,
+ .auto_selectable_formats = &rt5670_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt5670_dai[] = {
diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c
index ac084ca008f3c..488f5145c3b97 100644
--- a/sound/soc/codecs/rt5677.c
+++ b/sound/soc/codecs/rt5677.c
@@ -5022,12 +5022,22 @@ static int rt5677_write(void *context, unsigned int reg, unsigned int val)
#define RT5677_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+static const u64 rt5677_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rt5677_aif_dai_ops = {
.hw_params = rt5677_hw_params,
.set_fmt = rt5677_set_dai_fmt,
.set_sysclk = rt5677_set_dai_sysclk,
.set_pll = rt5677_set_dai_pll,
.set_tdm_slot = rt5677_set_tdm_slot,
+ .auto_selectable_formats = &rt5677_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops rt5677_dsp_dai_ops = {
diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c
index d39f8e4f3474c..4af2230ea8683 100644
--- a/sound/soc/codecs/rt5682.c
+++ b/sound/soc/codecs/rt5682.c
@@ -3048,11 +3048,23 @@ static int rt5682_resume(struct snd_soc_component *component)
#define rt5682_resume NULL
#endif
+static const u64 rt5682_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
const struct snd_soc_dai_ops rt5682_aif1_dai_ops = {
.hw_params = rt5682_hw_params,
.set_fmt = rt5682_set_dai_fmt,
.set_tdm_slot = rt5682_set_tdm_slot,
.set_bclk_ratio = rt5682_set_bclk1_ratio,
+ .auto_selectable_formats = &rt5682_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(rt5682_aif1_dai_ops);
@@ -3060,6 +3072,8 @@ const struct snd_soc_dai_ops rt5682_aif2_dai_ops = {
.hw_params = rt5682_hw_params,
.set_fmt = rt5682_set_dai_fmt,
.set_bclk_ratio = rt5682_set_bclk2_ratio,
+ .auto_selectable_formats = &rt5682_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(rt5682_aif2_dai_ops);
diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c
index 3624067950c0e..e3f3b06892e8d 100644
--- a/sound/soc/codecs/rt5682s.c
+++ b/sound/soc/codecs/rt5682s.c
@@ -2931,17 +2931,31 @@ static int rt5682s_resume(struct snd_soc_component *component)
#define rt5682s_resume NULL
#endif
+static const u64 rt5682s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rt5682s_aif1_dai_ops = {
.hw_params = rt5682s_hw_params,
.set_fmt = rt5682s_set_dai_fmt,
.set_tdm_slot = rt5682s_set_tdm_slot,
.set_bclk_ratio = rt5682s_set_bclk1_ratio,
+ .auto_selectable_formats = &rt5682s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops rt5682s_aif2_dai_ops = {
.hw_params = rt5682s_hw_params,
.set_fmt = rt5682s_set_dai_fmt,
.set_bclk_ratio = rt5682s_set_bclk2_ratio,
+ .auto_selectable_formats = &rt5682s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_component_driver rt5682s_soc_component_dev = {
diff --git a/sound/soc/codecs/rt9120.c b/sound/soc/codecs/rt9120.c
index 97f56af25577d..842acc3bec2c2 100644
--- a/sound/soc/codecs/rt9120.c
+++ b/sound/soc/codecs/rt9120.c
@@ -289,9 +289,18 @@ static int rt9120_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 rt9120_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rt9120_dai_ops = {
.set_fmt = rt9120_set_fmt,
.hw_params = rt9120_hw_params,
+ .auto_selectable_formats = &rt9120_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt9120_dai = {
diff --git a/sound/soc/codecs/rt9123.c b/sound/soc/codecs/rt9123.c
index 84fd3d6861de7..2b4bacf327c8d 100644
--- a/sound/soc/codecs/rt9123.c
+++ b/sound/soc/codecs/rt9123.c
@@ -300,10 +300,19 @@ static int rt9123_dai_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 rt9123_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops rt9123_dai_ops = {
.set_fmt = rt9123_dai_set_format,
.set_tdm_slot = rt9123_dai_set_tdm_slot,
.hw_params = rt9123_dai_hw_params,
+ .auto_selectable_formats = &rt9123_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rt9123_dai_driver = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 47/83] ASoC: codecs: sgtl5000: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (45 preceding siblings ...)
2026-05-26 2:20 ` [PATCH 46/83] ASoC: codecs: rt*: " Kuninori Morimoto
@ 2026-05-26 2:20 ` Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 48/83] ASoC: codecs: si476x: " Kuninori Morimoto
` (36 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:20 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/sgtl5000.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
index 59642673b4cbe..70ebbac34e061 100644
--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -1158,12 +1158,23 @@ static int sgtl5000_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 sgtl5000_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops sgtl5000_ops = {
.hw_params = sgtl5000_pcm_hw_params,
.mute_stream = sgtl5000_mute_stream,
.set_fmt = sgtl5000_set_dai_fmt,
.set_sysclk = sgtl5000_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &sgtl5000_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver sgtl5000_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 48/83] ASoC: codecs: si476x: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (46 preceding siblings ...)
2026-05-26 2:20 ` [PATCH 47/83] ASoC: codecs: sgtl5000: " Kuninori Morimoto
@ 2026-05-26 2:21 ` Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 49/83] ASoC: codecs: sma130*: " Kuninori Morimoto
` (35 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:21 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/si476x.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/sound/soc/codecs/si476x.c b/sound/soc/codecs/si476x.c
index d87141ba84388..d1b4739ac8104 100644
--- a/sound/soc/codecs/si476x.c
+++ b/sound/soc/codecs/si476x.c
@@ -199,9 +199,28 @@ static int si476x_codec_hw_params(struct snd_pcm_substream *substream,
return err;
}
+static const u64 ssm3515_selectable_formats[] =
+{
+ /* Hi Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* Low Priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops si476x_dai_ops = {
.hw_params = si476x_codec_hw_params,
.set_fmt = si476x_codec_set_dai_fmt,
+ .auto_selectable_formats = ssm3515_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(ssm3515_selectable_formats),
};
static struct snd_soc_dai_driver si476x_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 49/83] ASoC: codecs: sma130*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (47 preceding siblings ...)
2026-05-26 2:21 ` [PATCH 48/83] ASoC: codecs: si476x: " Kuninori Morimoto
@ 2026-05-26 2:21 ` Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 50/83] ASoC: codecs: src4xxx: " Kuninori Morimoto
` (34 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:21 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/sma1303.c | 13 +++++++++++++
sound/soc/codecs/sma1307.c | 13 +++++++++++++
2 files changed, 26 insertions(+)
diff --git a/sound/soc/codecs/sma1303.c b/sound/soc/codecs/sma1303.c
index c7aaf98ef71e8..963519ade3fb6 100644
--- a/sound/soc/codecs/sma1303.c
+++ b/sound/soc/codecs/sma1303.c
@@ -1413,12 +1413,25 @@ static int sma1303_dai_set_tdm_slot(struct snd_soc_dai *dai,
return 0;
}
+static const u64 sma1303_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops sma1303_dai_ops_amp = {
.set_sysclk = sma1303_dai_set_sysclk_amp,
.set_fmt = sma1303_dai_set_fmt_amp,
.hw_params = sma1303_dai_hw_params_amp,
.mute_stream = sma1303_dai_mute,
.set_tdm_slot = sma1303_dai_set_tdm_slot,
+ .auto_selectable_formats = &sma1303_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define SMA1303_RATES SNDRV_PCM_RATE_8000_192000
diff --git a/sound/soc/codecs/sma1307.c b/sound/soc/codecs/sma1307.c
index 1de6bd1e4ee7e..52fccd7d63635 100644
--- a/sound/soc/codecs/sma1307.c
+++ b/sound/soc/codecs/sma1307.c
@@ -1552,12 +1552,25 @@ static int sma1307_dai_mute_stream(struct snd_soc_dai *dai, int mute,
return 0;
}
+static const u64 sma1307_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops sma1307_dai_ops_amp = {
.hw_params = sma1307_dai_hw_params_amp,
.set_fmt = sma1307_dai_set_fmt_amp,
.set_sysclk = sma1307_dai_set_sysclk_amp,
.set_tdm_slot = sma1307_dai_set_tdm_slot,
.mute_stream = sma1307_dai_mute_stream,
+ .auto_selectable_formats = &sma1307_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define SMA1307_RATES_PLAYBACK SNDRV_PCM_RATE_8000_96000
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 50/83] ASoC: codecs: src4xxx: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (48 preceding siblings ...)
2026-05-26 2:21 ` [PATCH 49/83] ASoC: codecs: sma130*: " Kuninori Morimoto
@ 2026-05-26 2:21 ` Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 51/83] ASoC: codecs: ssm*: " Kuninori Morimoto
` (33 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:21 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/src4xxx.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/soc/codecs/src4xxx.c b/sound/soc/codecs/src4xxx.c
index 5a34894752251..6e187c930372f 100644
--- a/sound/soc/codecs/src4xxx.c
+++ b/sound/soc/codecs/src4xxx.c
@@ -326,10 +326,18 @@ static int src4xxx_hw_params(struct snd_pcm_substream *substream,
return 0;
};
+static const u64 src4xxx_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops src4xxx_dai_ops = {
.hw_params = src4xxx_hw_params,
.set_sysclk = src4xxx_set_mclk_hz,
.set_fmt = src4xxx_set_dai_fmt,
+ .auto_selectable_formats = &src4xxx_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define SRC4XXX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 51/83] ASoC: codecs: ssm*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (49 preceding siblings ...)
2026-05-26 2:21 ` [PATCH 50/83] ASoC: codecs: src4xxx: " Kuninori Morimoto
@ 2026-05-26 2:21 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 52/83] ASoC: codecs: sta*: " Kuninori Morimoto
` (32 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:21 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/ssm2518.c | 13 +++++++++++++
sound/soc/codecs/ssm2602.c | 13 +++++++++++++
sound/soc/codecs/ssm3515.c | 10 ++++++++++
sound/soc/codecs/ssm4567.c | 13 +++++++++++++
4 files changed, 49 insertions(+)
diff --git a/sound/soc/codecs/ssm2518.c b/sound/soc/codecs/ssm2518.c
index 5192569ba6a89..32e81b31479d1 100644
--- a/sound/soc/codecs/ssm2518.c
+++ b/sound/soc/codecs/ssm2518.c
@@ -620,12 +620,25 @@ static int ssm2518_startup(struct snd_pcm_substream *substream,
#define SSM2518_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32)
+static const u64 ssm2518_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ssm2518_dai_ops = {
.startup = ssm2518_startup,
.hw_params = ssm2518_hw_params,
.mute_stream = ssm2518_mute,
.set_fmt = ssm2518_set_dai_fmt,
.set_tdm_slot = ssm2518_set_tdm_slot,
+ .auto_selectable_formats = &ssm2518_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c
index fccd2eacd7a6a..92df44f869155 100644
--- a/sound/soc/codecs/ssm2602.c
+++ b/sound/soc/codecs/ssm2602.c
@@ -523,12 +523,25 @@ static int ssm2602_set_bias_level(struct snd_soc_component *component,
#define SSM2602_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 ssm2602_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ssm2602_dai_ops = {
.startup = ssm2602_startup,
.hw_params = ssm2602_hw_params,
.mute_stream = ssm2602_mute,
.set_sysclk = ssm2602_set_dai_sysclk,
.set_fmt = ssm2602_set_dai_fmt,
+ .auto_selectable_formats = &ssm2602_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/ssm3515.c b/sound/soc/codecs/ssm3515.c
index 8c6665677a175..f71509237fca4 100644
--- a/sound/soc/codecs/ssm3515.c
+++ b/sound/soc/codecs/ssm3515.c
@@ -356,12 +356,22 @@ static int ssm3515_hw_free(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 ssm3515_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ssm3515_dai_ops = {
.mute_stream = ssm3515_mute,
.hw_params = ssm3515_hw_params,
.set_fmt = ssm3515_set_fmt,
.set_tdm_slot = ssm3515_set_tdm_slot,
.hw_free = ssm3515_hw_free,
+ .auto_selectable_formats = &ssm3515_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ssm3515_dai_driver = {
diff --git a/sound/soc/codecs/ssm4567.c b/sound/soc/codecs/ssm4567.c
index 8415dd163edd6..181047b38d3df 100644
--- a/sound/soc/codecs/ssm4567.c
+++ b/sound/soc/codecs/ssm4567.c
@@ -389,11 +389,24 @@ static int ssm4567_set_bias_level(struct snd_soc_component *component,
return ret;
}
+static const u64 ssm4567_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_PDM |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ssm4567_dai_ops = {
.hw_params = ssm4567_hw_params,
.mute_stream = ssm4567_mute,
.set_fmt = ssm4567_set_dai_fmt,
.set_tdm_slot = ssm4567_set_tdm_slot,
+ .auto_selectable_formats = &ssm4567_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 52/83] ASoC: codecs: sta*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (50 preceding siblings ...)
2026-05-26 2:21 ` [PATCH 51/83] ASoC: codecs: ssm*: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 53/83] ASoC: codecs: tas*: " Kuninori Morimoto
` (31 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/sta32x.c | 9 +++++++++
sound/soc/codecs/sta350.c | 9 +++++++++
sound/soc/codecs/sta529.c | 7 +++++++
3 files changed, 25 insertions(+)
diff --git a/sound/soc/codecs/sta32x.c b/sound/soc/codecs/sta32x.c
index 652c6e3a9e632..c145c88ba988e 100644
--- a/sound/soc/codecs/sta32x.c
+++ b/sound/soc/codecs/sta32x.c
@@ -851,10 +851,19 @@ static int sta32x_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 sta32x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF;
+
static const struct snd_soc_dai_ops sta32x_dai_ops = {
.hw_params = sta32x_hw_params,
.set_sysclk = sta32x_set_dai_sysclk,
.set_fmt = sta32x_set_dai_fmt,
+ .auto_selectable_formats = &sta32x_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver sta32x_dai = {
diff --git a/sound/soc/codecs/sta350.c b/sound/soc/codecs/sta350.c
index 99c7f7ac807b3..0bfafff4ca0e0 100644
--- a/sound/soc/codecs/sta350.c
+++ b/sound/soc/codecs/sta350.c
@@ -886,10 +886,19 @@ static int sta350_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 sta350_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF;
+
static const struct snd_soc_dai_ops sta350_dai_ops = {
.hw_params = sta350_hw_params,
.set_sysclk = sta350_set_dai_sysclk,
.set_fmt = sta350_set_dai_fmt,
+ .auto_selectable_formats = &sta350_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver sta350_dai = {
diff --git a/sound/soc/codecs/sta529.c b/sound/soc/codecs/sta529.c
index 7d57999f9cb13..0faf439ffee9b 100644
--- a/sound/soc/codecs/sta529.c
+++ b/sound/soc/codecs/sta529.c
@@ -286,10 +286,17 @@ static int sta529_set_dai_fmt(struct snd_soc_dai *codec_dai, u32 fmt)
return 0;
}
+static const u64 sta529_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops sta529_dai_ops = {
.hw_params = sta529_hw_params,
.set_fmt = sta529_set_dai_fmt,
.mute_stream = sta529_mute,
+ .auto_selectable_formats = &sta529_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 53/83] ASoC: codecs: tas*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (51 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 52/83] ASoC: codecs: sta*: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 54/83] ASoC: codecs: tfa9879: " Kuninori Morimoto
` (30 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/tas2552.c | 14 ++++++++++++++
sound/soc/codecs/tas2562.c | 10 ++++++++++
sound/soc/codecs/tas2764.c | 12 ++++++++++++
sound/soc/codecs/tas2770.c | 12 ++++++++++++
sound/soc/codecs/tas2780.c | 10 ++++++++++
sound/soc/codecs/tas5086.c | 7 +++++++
sound/soc/codecs/tas571x.c | 7 +++++++
sound/soc/codecs/tas5720.c | 9 +++++++++
sound/soc/codecs/tas6424.c | 9 +++++++++
9 files changed, 90 insertions(+)
diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c
index 1a7650b9b2a7b..9195c014dd50b 100644
--- a/sound/soc/codecs/tas2552.c
+++ b/sound/soc/codecs/tas2552.c
@@ -510,6 +510,18 @@ static const struct dev_pm_ops tas2552_pm = {
RUNTIME_PM_OPS(tas2552_runtime_suspend, tas2552_runtime_resume, NULL)
};
+static const u64 tas2552_selectable_formats[] = {
+ /* Hi Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF,
+ /* Low Priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops tas2552_speaker_dai_ops = {
.hw_params = tas2552_hw_params,
.prepare = tas2552_prepare,
@@ -517,6 +529,8 @@ static const struct snd_soc_dai_ops tas2552_speaker_dai_ops = {
.set_fmt = tas2552_set_dai_fmt,
.set_tdm_slot = tas2552_set_dai_tdm_slot,
.mute_stream = tas2552_mute,
+ .auto_selectable_formats = tas2552_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(tas2552_selectable_formats),
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas2562.c b/sound/soc/codecs/tas2562.c
index 2f7cfc2be970b..7294e0fff29c1 100644
--- a/sound/soc/codecs/tas2562.c
+++ b/sound/soc/codecs/tas2562.c
@@ -588,11 +588,21 @@ static const struct snd_soc_component_driver soc_component_dev_tas2562 = {
.endianness = 1,
};
+static const u64 tas2562_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops tas2562_speaker_dai_ops = {
.hw_params = tas2562_hw_params,
.set_fmt = tas2562_set_dai_fmt,
.set_tdm_slot = tas2562_set_dai_tdm_slot,
.mute_stream = tas2562_mute,
+ .auto_selectable_formats = &tas2562_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas2764.c b/sound/soc/codecs/tas2764.c
index b11b998aa32a6..37aa17be32004 100644
--- a/sound/soc/codecs/tas2764.c
+++ b/sound/soc/codecs/tas2764.c
@@ -602,6 +602,16 @@ static int tas2764_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
return tas2764_write_sdout_idle_mask(tas2764, tas2764->idle_slot_config.tx_mask);
}
+static const u64 tas2764_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops tas2764_dai_ops = {
.mute_stream = tas2764_mute,
.hw_params = tas2764_hw_params,
@@ -609,6 +619,8 @@ static const struct snd_soc_dai_ops tas2764_dai_ops = {
.set_bclk_ratio = tas2764_set_bclk_ratio,
.set_tdm_slot = tas2764_set_dai_tdm_slot,
.set_tdm_idle = tas2764_set_dai_tdm_idle,
+ .auto_selectable_formats = &tas2764_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c
index e79754edac5ca..59912ed9f4a5f 100644
--- a/sound/soc/codecs/tas2770.c
+++ b/sound/soc/codecs/tas2770.c
@@ -566,12 +566,24 @@ static int tas2770_set_dai_tdm_idle(struct snd_soc_dai *dai,
return 0;
}
+static const u64 tas2770_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops tas2770_dai_ops = {
.mute_stream = tas2770_mute,
.hw_params = tas2770_hw_params,
.set_fmt = tas2770_set_fmt,
.set_tdm_slot = tas2770_set_dai_tdm_slot,
.set_tdm_idle = tas2770_set_dai_tdm_idle,
+ .auto_selectable_formats = &tas2770_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas2780.c b/sound/soc/codecs/tas2780.c
index 1ec1c076204fb..8f869cf0a187c 100644
--- a/sound/soc/codecs/tas2780.c
+++ b/sound/soc/codecs/tas2780.c
@@ -441,11 +441,21 @@ static int tas2780_set_dai_tdm_slot(struct snd_soc_dai *dai,
return ret;
}
+static const u64 tas2780_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops tas2780_dai_ops = {
.mute_stream = tas2780_mute,
.hw_params = tas2780_hw_params,
.set_fmt = tas2780_set_fmt,
.set_tdm_slot = tas2780_set_dai_tdm_slot,
+ .auto_selectable_formats = &tas2780_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c
index 4d1c122c8f04f..1ab82ef1c41d2 100644
--- a/sound/soc/codecs/tas5086.c
+++ b/sound/soc/codecs/tas5086.c
@@ -743,11 +743,18 @@ static const struct snd_soc_dapm_route tas5086_dapm_routes[] = {
};
+static const u64 tas5086_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops tas5086_dai_ops = {
.hw_params = tas5086_hw_params,
.set_sysclk = tas5086_set_dai_sysclk,
.set_fmt = tas5086_set_dai_fmt,
.mute_stream = tas5086_mute_stream,
+ .auto_selectable_formats = &tas5086_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver tas5086_dai = {
diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c
index 8b5f9accf1207..5e2560347461c 100644
--- a/sound/soc/codecs/tas571x.c
+++ b/sound/soc/codecs/tas571x.c
@@ -352,10 +352,17 @@ static int tas571x_set_bias_level(struct snd_soc_component *component,
return 0;
}
+static const u64 tas571x_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops tas571x_dai_ops = {
.set_fmt = tas571x_set_dai_fmt,
.hw_params = tas571x_hw_params,
.mute_stream = tas571x_mute,
+ .auto_selectable_formats = &tas571x_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas5720.c b/sound/soc/codecs/tas5720.c
index 0bbcfaadf3f2a..2539a097e743a 100644
--- a/sound/soc/codecs/tas5720.c
+++ b/sound/soc/codecs/tas5720.c
@@ -682,11 +682,20 @@ static const struct snd_soc_component_driver soc_component_dev_tas5722 = {
#define TAS5720_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE |\
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 tas5720_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops tas5720_speaker_dai_ops = {
.hw_params = tas5720_hw_params,
.set_fmt = tas5720_set_dai_fmt,
.set_tdm_slot = tas5720_set_dai_tdm_slot,
.mute_stream = tas5720_mute,
+ .auto_selectable_formats = &tas5720_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tas6424.c b/sound/soc/codecs/tas6424.c
index f5d50f8a1cfb9..2718183e864c3 100644
--- a/sound/soc/codecs/tas6424.c
+++ b/sound/soc/codecs/tas6424.c
@@ -378,11 +378,20 @@ static const struct snd_soc_component_driver soc_codec_dev_tas6424 = {
.endianness = 1,
};
+static const u64 tas6424_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops tas6424_speaker_dai_ops = {
.hw_params = tas6424_hw_params,
.set_fmt = tas6424_set_dai_fmt,
.set_tdm_slot = tas6424_set_dai_tdm_slot,
.mute_stream = tas6424_mute,
+ .auto_selectable_formats = &tas6424_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 54/83] ASoC: codecs: tfa9879: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (52 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 53/83] ASoC: codecs: tas*: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 55/83] ASoC: codecs: tlv320*: " Kuninori Morimoto
` (29 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/tfa9879.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/sound/soc/codecs/tfa9879.c b/sound/soc/codecs/tfa9879.c
index f30479f1f53b0..5191037317687 100644
--- a/sound/soc/codecs/tfa9879.c
+++ b/sound/soc/codecs/tfa9879.c
@@ -248,10 +248,19 @@ static const struct regmap_config tfa9879_regmap = {
.cache_type = REGCACHE_RBTREE,
};
+static const u64 tfa9879_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops tfa9879_dai_ops = {
.hw_params = tfa9879_hw_params,
.mute_stream = tfa9879_mute_stream,
.set_fmt = tfa9879_set_fmt,
+ .auto_selectable_formats = &tfa9879_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 55/83] ASoC: codecs: tlv320*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (53 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 54/83] ASoC: codecs: tfa9879: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 56/83] ASoC: codecs: tscs454: " Kuninori Morimoto
` (28 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/tlv320adc3xxx.c | 15 +++++++++++++++
sound/soc/codecs/tlv320adcx140.c | 12 ++++++++++++
sound/soc/codecs/tlv320aic23.c | 9 +++++++++
sound/soc/codecs/tlv320aic26.c | 8 ++++++++
sound/soc/codecs/tlv320aic31xx.c | 11 +++++++++++
sound/soc/codecs/tlv320aic32x4.c | 8 ++++++++
sound/soc/codecs/tlv320aic3x.c | 15 +++++++++++++++
sound/soc/codecs/tlv320dac33.c | 8 ++++++++
8 files changed, 86 insertions(+)
diff --git a/sound/soc/codecs/tlv320adc3xxx.c b/sound/soc/codecs/tlv320adc3xxx.c
index d7d958ecd8db5..ff6880f5ac63a 100644
--- a/sound/soc/codecs/tlv320adc3xxx.c
+++ b/sound/soc/codecs/tlv320adc3xxx.c
@@ -1362,10 +1362,25 @@ static int adc3xxx_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
return 0;
}
+static const u64 adc3xxx_selectable_formats[] =
+{
+ /* Hi Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF,
+ /* Low Priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops adc3xxx_dai_ops = {
.hw_params = adc3xxx_hw_params,
.set_sysclk = adc3xxx_set_dai_sysclk,
.set_fmt = adc3xxx_set_dai_fmt,
+ .auto_selectable_formats = adc3xxx_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(adc3xxx_selectable_formats),
};
static struct snd_soc_dai_driver adc3xxx_dai = {
diff --git a/sound/soc/codecs/tlv320adcx140.c b/sound/soc/codecs/tlv320adcx140.c
index 4eb9cea272760..c29584d77649b 100644
--- a/sound/soc/codecs/tlv320adcx140.c
+++ b/sound/soc/codecs/tlv320adcx140.c
@@ -916,10 +916,22 @@ static int adcx140_set_dai_tdm_slot(struct snd_soc_dai *codec_dai,
return 0;
}
+static const u64 adcx140_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops adcx140_dai_ops = {
.hw_params = adcx140_hw_params,
.set_fmt = adcx140_set_dai_fmt,
.set_tdm_slot = adcx140_set_dai_tdm_slot,
+ .auto_selectable_formats = &adcx140_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int adcx140_configure_gpo(struct adcx140_priv *adcx140)
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c
index 04ec8fb5c6e5b..f31ffa189580d 100644
--- a/sound/soc/codecs/tlv320aic23.c
+++ b/sound/soc/codecs/tlv320aic23.c
@@ -507,6 +507,13 @@ static int tlv320aic23_set_bias_level(struct snd_soc_component *component,
#define AIC23_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 tlv320aic23_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops tlv320aic23_dai_ops = {
.prepare = tlv320aic23_pcm_prepare,
.hw_params = tlv320aic23_hw_params,
@@ -514,6 +521,8 @@ static const struct snd_soc_dai_ops tlv320aic23_dai_ops = {
.mute_stream = tlv320aic23_mute,
.set_fmt = tlv320aic23_set_dai_fmt,
.set_sysclk = tlv320aic23_set_dai_sysclk,
+ .auto_selectable_formats = &tlv320aic23_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tlv320aic26.c b/sound/soc/codecs/tlv320aic26.c
index e5dfb3d752a3a..43f2416b67297 100644
--- a/sound/soc/codecs/tlv320aic26.c
+++ b/sound/soc/codecs/tlv320aic26.c
@@ -208,11 +208,19 @@ static int aic26_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
#define AIC26_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_BE |\
SNDRV_PCM_FMTBIT_S24_BE | SNDRV_PCM_FMTBIT_S32_BE)
+static const u64 aic26_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops aic26_dai_ops = {
.hw_params = aic26_hw_params,
.mute_stream = aic26_mute,
.set_sysclk = aic26_set_sysclk,
.set_fmt = aic26_set_fmt,
+ .auto_selectable_formats = &aic26_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tlv320aic31xx.c b/sound/soc/codecs/tlv320aic31xx.c
index 1d2e0ea6d4fed..a39bbad5023b1 100644
--- a/sound/soc/codecs/tlv320aic31xx.c
+++ b/sound/soc/codecs/tlv320aic31xx.c
@@ -1422,11 +1422,22 @@ static const struct snd_soc_component_driver soc_codec_driver_aic31xx = {
.endianness = 1,
};
+static const u64 aic31xx_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops aic31xx_dai_ops = {
.hw_params = aic31xx_hw_params,
.set_sysclk = aic31xx_set_dai_sysclk,
.set_fmt = aic31xx_set_dai_fmt,
.mute_stream = aic31xx_dac_mute,
+ .auto_selectable_formats = &aic31xx_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
index d850945572151..8d333d3f3813d 100644
--- a/sound/soc/codecs/tlv320aic32x4.c
+++ b/sound/soc/codecs/tlv320aic32x4.c
@@ -924,11 +924,19 @@ static int aic32x4_set_bias_level(struct snd_soc_component *component,
| SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_3LE \
| SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 aic32x4_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
static const struct snd_soc_dai_ops aic32x4_ops = {
.hw_params = aic32x4_hw_params,
.mute_stream = aic32x4_mute,
.set_fmt = aic32x4_set_dai_fmt,
.set_sysclk = aic32x4_set_dai_sysclk,
+ .auto_selectable_formats = &aic32x4_selectable_formats,
+ .num_auto_selectable_formats = 1,
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index b12c1952823ba..cbce8196ba715 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -1487,6 +1487,19 @@ static int aic3x_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 aic3x_selectable_formats[] =
+{
+ /* Hi Priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF,
+ /* Low Priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops aic3x_dai_ops = {
.hw_params = aic3x_hw_params,
.prepare = aic3x_prepare,
@@ -1494,6 +1507,8 @@ static const struct snd_soc_dai_ops aic3x_dai_ops = {
.set_sysclk = aic3x_set_dai_sysclk,
.set_fmt = aic3x_set_dai_fmt,
.set_tdm_slot = aic3x_set_dai_tdm_slot,
+ .auto_selectable_formats = aic3x_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(aic3x_selectable_formats),
.no_capture_mute = 1,
};
diff --git a/sound/soc/codecs/tlv320dac33.c b/sound/soc/codecs/tlv320dac33.c
index 223c49dfc4506..c70da992c0e24 100644
--- a/sound/soc/codecs/tlv320dac33.c
+++ b/sound/soc/codecs/tlv320dac33.c
@@ -1450,6 +1450,12 @@ static const struct snd_soc_component_driver soc_component_dev_tlv320dac33 = {
SNDRV_PCM_RATE_48000)
#define DAC33_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 dac33_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops dac33_dai_ops = {
.startup = dac33_startup,
.shutdown = dac33_shutdown,
@@ -1458,6 +1464,8 @@ static const struct snd_soc_dai_ops dac33_dai_ops = {
.delay = dac33_dai_delay,
.set_sysclk = dac33_set_dai_sysclk,
.set_fmt = dac33_set_dai_fmt,
+ .auto_selectable_formats = &dac33_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver dac33_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 56/83] ASoC: codecs: tscs454: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (54 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 55/83] ASoC: codecs: tlv320*: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 57/83] ASoC: codecs: twl4030: " Kuninori Morimoto
` (27 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/tscs454.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/sound/soc/codecs/tscs454.c b/sound/soc/codecs/tscs454.c
index aad394937ce61..98502bc2a9e46 100644
--- a/sound/soc/codecs/tscs454.c
+++ b/sound/soc/codecs/tscs454.c
@@ -3256,6 +3256,17 @@ static int tscs454_prepare(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 tscs454_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static struct snd_soc_dai_ops const tscs454_dai1_ops = {
.set_sysclk = tscs454_set_sysclk,
.set_bclk_ratio = tscs454_set_bclk_ratio,
@@ -3264,6 +3275,8 @@ static struct snd_soc_dai_ops const tscs454_dai1_ops = {
.hw_params = tscs454_hw_params,
.hw_free = tscs454_hw_free,
.prepare = tscs454_prepare,
+ .auto_selectable_formats = &tscs454_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_ops const tscs454_dai23_ops = {
@@ -3274,6 +3287,8 @@ static struct snd_soc_dai_ops const tscs454_dai23_ops = {
.hw_params = tscs454_hw_params,
.hw_free = tscs454_hw_free,
.prepare = tscs454_prepare,
+ .auto_selectable_formats = &tscs454_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int tscs454_probe(struct snd_soc_component *component)
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 57/83] ASoC: codecs: twl4030: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (55 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 56/83] ASoC: codecs: tscs454: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 58/83] ASoC: codecs: uda13*: " Kuninori Morimoto
` (26 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/twl4030.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
index 9476cdfd4dde9..345bb6243fb89 100644
--- a/sound/soc/codecs/twl4030.c
+++ b/sound/soc/codecs/twl4030.c
@@ -2097,6 +2097,10 @@ static int twl4030_voice_set_tristate(struct snd_soc_dai *dai, int tristate)
#define TWL4030_RATES (SNDRV_PCM_RATE_8000_48000)
#define TWL4030_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 twl4030_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A;
+
static const struct snd_soc_dai_ops twl4030_dai_hifi_ops = {
.startup = twl4030_startup,
.shutdown = twl4030_shutdown,
@@ -2104,8 +2108,14 @@ static const struct snd_soc_dai_ops twl4030_dai_hifi_ops = {
.set_sysclk = twl4030_set_dai_sysclk,
.set_fmt = twl4030_set_dai_fmt,
.set_tristate = twl4030_set_tristate,
+ .auto_selectable_formats = &twl4030_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
+static const u64 twl4030_voice_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops twl4030_dai_voice_ops = {
.startup = twl4030_voice_startup,
.shutdown = twl4030_voice_shutdown,
@@ -2113,6 +2123,8 @@ static const struct snd_soc_dai_ops twl4030_dai_voice_ops = {
.set_sysclk = twl4030_voice_set_dai_sysclk,
.set_fmt = twl4030_voice_set_dai_fmt,
.set_tristate = twl4030_voice_set_tristate,
+ .auto_selectable_formats = &twl4030_voice_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver twl4030_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 58/83] ASoC: codecs: uda13*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (56 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 57/83] ASoC: codecs: twl4030: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 59/83] ASoC: codecs: wm*: " Kuninori Morimoto
` (25 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/uda1334.c | 6 ++++++
sound/soc/codecs/uda1342.c | 7 +++++++
sound/soc/codecs/uda1380.c | 11 +++++++++++
3 files changed, 24 insertions(+)
diff --git a/sound/soc/codecs/uda1334.c b/sound/soc/codecs/uda1334.c
index f799772ff747d..d7ec2fa342ae6 100644
--- a/sound/soc/codecs/uda1334.c
+++ b/sound/soc/codecs/uda1334.c
@@ -194,12 +194,18 @@ static int uda1334_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
#define UDA1334_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 uda1334_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops uda1334_dai_ops = {
.startup = uda1334_startup,
.shutdown = uda1334_shutdown,
.set_sysclk = uda1334_set_dai_sysclk,
.set_fmt = uda1334_set_fmt,
.mute_stream = uda1334_mute_stream,
+ .auto_selectable_formats = &uda1334_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver uda1334_dai = {
diff --git a/sound/soc/codecs/uda1342.c b/sound/soc/codecs/uda1342.c
index 12f5757f4210d..8b56081f59e18 100644
--- a/sound/soc/codecs/uda1342.c
+++ b/sound/soc/codecs/uda1342.c
@@ -223,6 +223,11 @@ static const struct snd_soc_dapm_route uda1342_dapm_routes[] = {
{ "VOUTR", NULL, "DAC" },
};
+static const u64 uda1342_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops uda1342_dai_ops = {
.startup = uda1342_startup,
.shutdown = uda1342_shutdown,
@@ -230,6 +235,8 @@ static const struct snd_soc_dai_ops uda1342_dai_ops = {
.mute_stream = uda1342_mute,
.set_sysclk = uda1342_set_dai_sysclk,
.set_fmt = uda1342_set_dai_fmt,
+ .auto_selectable_formats = &uda1342_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver uda1342_dai = {
diff --git a/sound/soc/codecs/uda1380.c b/sound/soc/codecs/uda1380.c
index 1dd09d10fc4ad..02adc534dfb06 100644
--- a/sound/soc/codecs/uda1380.c
+++ b/sound/soc/codecs/uda1380.c
@@ -653,11 +653,18 @@ static int uda1380_set_bias_level(struct snd_soc_component *component,
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
+static const u64 uda1380_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops uda1380_dai_ops = {
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.trigger = uda1380_trigger,
.set_fmt = uda1380_set_dai_fmt_both,
+ .auto_selectable_formats = &uda1380_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops uda1380_dai_ops_playback = {
@@ -665,6 +672,8 @@ static const struct snd_soc_dai_ops uda1380_dai_ops_playback = {
.shutdown = uda1380_pcm_shutdown,
.trigger = uda1380_trigger,
.set_fmt = uda1380_set_dai_fmt_playback,
+ .auto_selectable_formats = &uda1380_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops uda1380_dai_ops_capture = {
@@ -672,6 +681,8 @@ static const struct snd_soc_dai_ops uda1380_dai_ops_capture = {
.shutdown = uda1380_pcm_shutdown,
.trigger = uda1380_trigger,
.set_fmt = uda1380_set_dai_fmt_capture,
+ .auto_selectable_formats = &uda1380_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver uda1380_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 59/83] ASoC: codecs: wm*: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (57 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 58/83] ASoC: codecs: uda13*: " Kuninori Morimoto
@ 2026-05-26 2:22 ` Kuninori Morimoto
2026-05-26 18:29 ` Mark Brown
2026-05-26 2:23 ` [PATCH 60/83] ASoC: codecs: zl38060: " Kuninori Morimoto
` (24 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:22 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/wm2200.c | 10 ++++++++++
sound/soc/codecs/wm5100.c | 10 ++++++++++
sound/soc/codecs/wm8350.c | 13 +++++++++++++
sound/soc/codecs/wm8400.c | 9 +++++++++
sound/soc/codecs/wm8510.c | 12 ++++++++++++
sound/soc/codecs/wm8523.c | 13 +++++++++++++
sound/soc/codecs/wm8524.c | 6 ++++++
sound/soc/codecs/wm8580.c | 15 +++++++++++++++
sound/soc/codecs/wm8711.c | 13 +++++++++++++
sound/soc/codecs/wm8728.c | 9 +++++++++
sound/soc/codecs/wm8731.c | 13 +++++++++++++
sound/soc/codecs/wm8737.c | 17 +++++++++++++++++
sound/soc/codecs/wm8741.c | 13 +++++++++++++
sound/soc/codecs/wm8750.c | 13 +++++++++++++
sound/soc/codecs/wm8753.c | 21 +++++++++++++++++++++
sound/soc/codecs/wm8770.c | 11 +++++++++++
sound/soc/codecs/wm8776.c | 13 +++++++++++++
sound/soc/codecs/wm8804.c | 15 ++++++++++++++-
sound/soc/codecs/wm8900.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8903.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8904.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8940.c | 13 +++++++++++++
sound/soc/codecs/wm8955.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8960.c | 13 +++++++++++++
sound/soc/codecs/wm8961.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8962.c | 13 +++++++++++++
sound/soc/codecs/wm8971.c | 13 +++++++++++++
sound/soc/codecs/wm8974.c | 12 ++++++++++++
sound/soc/codecs/wm8978.c | 12 ++++++++++++
sound/soc/codecs/wm8983.c | 12 ++++++++++++
sound/soc/codecs/wm8985.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8988.c | 13 +++++++++++++
sound/soc/codecs/wm8990.c | 9 +++++++++
sound/soc/codecs/wm8991.c | 9 +++++++++
sound/soc/codecs/wm8993.c | 19 +++++++++++++++++++
sound/soc/codecs/wm8994.c | 21 +++++++++++++++++++++
sound/soc/codecs/wm8995.c | 21 +++++++++++++++++++++
sound/soc/codecs/wm8996.c | 12 ++++++++++++
sound/soc/codecs/wm9081.c | 18 ++++++++++++++++++
sound/soc/codecs/wm9713.c | 13 +++++++++++++
40 files changed, 562 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c
index ba8ce2e6e6150..da03a13ac6436 100644
--- a/sound/soc/codecs/wm2200.c
+++ b/sound/soc/codecs/wm2200.c
@@ -2066,10 +2066,20 @@ static int wm2200_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 wm2200_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm2200_dai_ops = {
.probe = wm2200_dai_probe,
.set_fmt = wm2200_set_fmt,
.hw_params = wm2200_hw_params,
+ .auto_selectable_formats = &wm2200_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define WM2200_RATES SNDRV_PCM_RATE_8000_48000
diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c
index bd94fa53c3624..9efcb68444d1a 100644
--- a/sound/soc/codecs/wm5100.c
+++ b/sound/soc/codecs/wm5100.c
@@ -1501,9 +1501,19 @@ static int wm5100_hw_params(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 wm5100_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm5100_dai_ops = {
.set_fmt = wm5100_set_fmt,
.hw_params = wm5100_hw_params,
+ .auto_selectable_formats = &wm5100_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int wm5100_set_sysclk(struct snd_soc_component *component, int clk_id,
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
index ad68ff1790e01..13e3fde87e149 100644
--- a/sound/soc/codecs/wm8350.c
+++ b/sound/soc/codecs/wm8350.c
@@ -1426,6 +1426,17 @@ EXPORT_SYMBOL_GPL(wm8350_mic_jack_detect);
SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8350_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8350_dai_ops = {
.hw_params = wm8350_pcm_hw_params,
.mute_stream = wm8350_mute,
@@ -1434,6 +1445,8 @@ static const struct snd_soc_dai_ops wm8350_dai_ops = {
.set_pll = wm8350_set_fll,
.set_clkdiv = wm8350_set_clkdiv,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8350_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8350_dai = {
diff --git a/sound/soc/codecs/wm8400.c b/sound/soc/codecs/wm8400.c
index 0eecc8657a38d..83e2d72a4a76b 100644
--- a/sound/soc/codecs/wm8400.c
+++ b/sound/soc/codecs/wm8400.c
@@ -1222,6 +1222,13 @@ static int wm8400_set_bias_level(struct snd_soc_component *component,
#define WM8400_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8400_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops wm8400_dai_ops = {
.hw_params = wm8400_hw_params,
.mute_stream = wm8400_mute,
@@ -1230,6 +1237,8 @@ static const struct snd_soc_dai_ops wm8400_dai_ops = {
.set_sysclk = wm8400_set_dai_sysclk,
.set_pll = wm8400_set_dai_pll,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8400_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/*
diff --git a/sound/soc/codecs/wm8510.c b/sound/soc/codecs/wm8510.c
index 589a895648132..beb9ebaa14c6e 100644
--- a/sound/soc/codecs/wm8510.c
+++ b/sound/soc/codecs/wm8510.c
@@ -546,6 +546,16 @@ static int wm8510_set_bias_level(struct snd_soc_component *component,
#define WM8510_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8510_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8510_dai_ops = {
.hw_params = wm8510_pcm_hw_params,
.mute_stream = wm8510_mute,
@@ -553,6 +563,8 @@ static const struct snd_soc_dai_ops wm8510_dai_ops = {
.set_clkdiv = wm8510_set_dai_clkdiv,
.set_pll = wm8510_set_dai_pll,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8510_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8510_dai = {
diff --git a/sound/soc/codecs/wm8523.c b/sound/soc/codecs/wm8523.c
index 65108a041c92a..1668817f2f7c3 100644
--- a/sound/soc/codecs/wm8523.c
+++ b/sound/soc/codecs/wm8523.c
@@ -375,11 +375,24 @@ static int wm8523_set_bias_level(struct snd_soc_component *component,
#define WM8523_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8523_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8523_dai_ops = {
.startup = wm8523_startup,
.hw_params = wm8523_hw_params,
.set_sysclk = wm8523_set_dai_sysclk,
.set_fmt = wm8523_set_dai_fmt,
+ .auto_selectable_formats = &wm8523_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8523_dai = {
diff --git a/sound/soc/codecs/wm8524.c b/sound/soc/codecs/wm8524.c
index 6b1a7450b0acc..75a997f7a8782 100644
--- a/sound/soc/codecs/wm8524.c
+++ b/sound/soc/codecs/wm8524.c
@@ -191,6 +191,10 @@ static int wm8524_hw_params(struct snd_pcm_substream *substream,
SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8525_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops wm8524_dai_ops = {
.startup = wm8524_startup,
.shutdown = wm8524_shutdown,
@@ -198,6 +202,8 @@ static const struct snd_soc_dai_ops wm8524_dai_ops = {
.set_fmt = wm8524_set_fmt,
.mute_stream = wm8524_mute_stream,
.hw_params = wm8524_hw_params,
+ .auto_selectable_formats = &wm8525_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8524_dai = {
diff --git a/sound/soc/codecs/wm8580.c b/sound/soc/codecs/wm8580.c
index ca7bbe5d4fc35..adbb1d3a77ec4 100644
--- a/sound/soc/codecs/wm8580.c
+++ b/sound/soc/codecs/wm8580.c
@@ -861,6 +861,17 @@ static int wm8580_playback_startup(struct snd_pcm_substream *substream,
#define WM8580_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8580_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8580_dai_ops_playback = {
.startup = wm8580_playback_startup,
.set_sysclk = wm8580_set_sysclk,
@@ -870,6 +881,8 @@ static const struct snd_soc_dai_ops wm8580_dai_ops_playback = {
.set_pll = wm8580_set_dai_pll,
.mute_stream = wm8580_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8580_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops wm8580_dai_ops_capture = {
@@ -878,6 +891,8 @@ static const struct snd_soc_dai_ops wm8580_dai_ops_capture = {
.set_fmt = wm8580_set_paif_dai_fmt,
.set_clkdiv = wm8580_set_dai_clkdiv,
.set_pll = wm8580_set_dai_pll,
+ .auto_selectable_formats = &wm8580_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8580_dai[] = {
diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c
index 5271966b16150..a34ac8c3a170b 100644
--- a/sound/soc/codecs/wm8711.c
+++ b/sound/soc/codecs/wm8711.c
@@ -326,6 +326,17 @@ static int wm8711_set_bias_level(struct snd_soc_component *component,
#define WM8711_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8711_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8711_ops = {
.prepare = wm8711_pcm_prepare,
.hw_params = wm8711_hw_params,
@@ -334,6 +345,8 @@ static const struct snd_soc_dai_ops wm8711_ops = {
.set_sysclk = wm8711_set_dai_sysclk,
.set_fmt = wm8711_set_dai_fmt,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8711_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8711_dai = {
diff --git a/sound/soc/codecs/wm8728.c b/sound/soc/codecs/wm8728.c
index 6e6fd77c30203..5cb51cfdb6dd1 100644
--- a/sound/soc/codecs/wm8728.c
+++ b/sound/soc/codecs/wm8728.c
@@ -191,11 +191,20 @@ static int wm8728_set_bias_level(struct snd_soc_component *component,
#define WM8728_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8728_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8728_dai_ops = {
.hw_params = wm8728_hw_params,
.mute_stream = wm8728_mute,
.set_fmt = wm8728_set_dai_fmt,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8728_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8728_dai = {
diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c
index a2f0e2f5c4070..c4f57addf9ede 100644
--- a/sound/soc/codecs/wm8731.c
+++ b/sound/soc/codecs/wm8731.c
@@ -520,6 +520,17 @@ static int wm8731_startup(struct snd_pcm_substream *substream,
#define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8731_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8731_dai_ops = {
.startup = wm8731_startup,
.hw_params = wm8731_hw_params,
@@ -527,6 +538,8 @@ static const struct snd_soc_dai_ops wm8731_dai_ops = {
.set_sysclk = wm8731_set_dai_sysclk,
.set_fmt = wm8731_set_dai_fmt,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8731_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8731_dai = {
diff --git a/sound/soc/codecs/wm8737.c b/sound/soc/codecs/wm8737.c
index 4eb42d19bc7ec..46daf2aaa5437 100644
--- a/sound/soc/codecs/wm8737.c
+++ b/sound/soc/codecs/wm8737.c
@@ -517,10 +517,27 @@ static int wm8737_set_bias_level(struct snd_soc_component *component,
#define WM8737_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8737_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_AC97 |
+ SND_SOC_POSSIBLE_DAIFMT_PDM |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8737_dai_ops = {
.hw_params = wm8737_hw_params,
.set_sysclk = wm8737_set_dai_sysclk,
.set_fmt = wm8737_set_dai_fmt,
+ .auto_selectable_formats = &wm8737_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8737_dai = {
diff --git a/sound/soc/codecs/wm8741.c b/sound/soc/codecs/wm8741.c
index ca56fdfb50887..e49adc9808b4f 100644
--- a/sound/soc/codecs/wm8741.c
+++ b/sound/soc/codecs/wm8741.c
@@ -381,6 +381,17 @@ static int wm8741_mute(struct snd_soc_dai *codec_dai, int mute, int direction)
#define WM8741_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8741_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8741_dai_ops = {
.startup = wm8741_startup,
.hw_params = wm8741_hw_params,
@@ -388,6 +399,8 @@ static const struct snd_soc_dai_ops wm8741_dai_ops = {
.set_fmt = wm8741_set_dai_fmt,
.mute_stream = wm8741_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8741_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8741_dai = {
diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c
index d3f1178c2d34e..b0b4447938303 100644
--- a/sound/soc/codecs/wm8750.c
+++ b/sound/soc/codecs/wm8750.c
@@ -659,12 +659,25 @@ static int wm8750_set_bias_level(struct snd_soc_component *component,
#define WM8750_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8750_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8750_dai_ops = {
.hw_params = wm8750_pcm_hw_params,
.mute_stream = wm8750_mute,
.set_fmt = wm8750_set_dai_fmt,
.set_sysclk = wm8750_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8750_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8750_dai = {
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
index 95b23504f68dc..e6ed53fbeb9b4 100644
--- a/sound/soc/codecs/wm8753.c
+++ b/sound/soc/codecs/wm8753.c
@@ -1381,6 +1381,23 @@ static int wm8753_set_bias_level(struct snd_soc_component *component,
* 3. Voice disabled - HIFI over HIFI
* 4. Voice disabled - HIFI over HIFI, uses voice DAI LRC for capture
*/
+static const u64 wm8753_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+};
+
static const struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode = {
.hw_params = wm8753_i2s_hw_params,
.mute_stream = wm8753_mute,
@@ -1389,6 +1406,8 @@ static const struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode = {
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8753_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8753_selectable_formats),
};
static const struct snd_soc_dai_ops wm8753_dai_ops_voice_mode = {
@@ -1399,6 +1418,8 @@ static const struct snd_soc_dai_ops wm8753_dai_ops_voice_mode = {
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8753_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8753_selectable_formats),
};
static struct snd_soc_dai_driver wm8753_dai[] = {
diff --git a/sound/soc/codecs/wm8770.c b/sound/soc/codecs/wm8770.c
index d382b476c89c4..130a242530240 100644
--- a/sound/soc/codecs/wm8770.c
+++ b/sound/soc/codecs/wm8770.c
@@ -538,12 +538,23 @@ static int wm8770_set_bias_level(struct snd_soc_component *component,
#define WM8770_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8770_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8770_dai_ops = {
.mute_stream = wm8770_mute,
.hw_params = wm8770_hw_params,
.set_fmt = wm8770_set_fmt,
.set_sysclk = wm8770_set_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8770_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8770_dai = {
diff --git a/sound/soc/codecs/wm8776.c b/sound/soc/codecs/wm8776.c
index f3b02c77314f4..4d80577eedbe3 100644
--- a/sound/soc/codecs/wm8776.c
+++ b/sound/soc/codecs/wm8776.c
@@ -361,18 +361,31 @@ static int wm8776_set_bias_level(struct snd_soc_component *component,
#define WM8776_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8776_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8776_dac_ops = {
.mute_stream = wm8776_mute,
.hw_params = wm8776_hw_params,
.set_fmt = wm8776_set_fmt,
.set_sysclk = wm8776_set_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8776_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops wm8776_adc_ops = {
.hw_params = wm8776_hw_params,
.set_fmt = wm8776_set_fmt,
.set_sysclk = wm8776_set_sysclk,
+ .auto_selectable_formats = &wm8776_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8776_dai[] = {
diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c
index 94aa3c8de0ab6..2fc9634fe51f1 100644
--- a/sound/soc/codecs/wm8804.c
+++ b/sound/soc/codecs/wm8804.c
@@ -502,12 +502,25 @@ static int wm8804_set_clkdiv(struct snd_soc_dai *dai,
return 0;
}
+static const u64 wm8804_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8804_dai_ops = {
.hw_params = wm8804_hw_params,
.set_fmt = wm8804_set_fmt,
.set_sysclk = wm8804_set_sysclk,
.set_clkdiv = wm8804_set_clkdiv,
- .set_pll = wm8804_set_pll
+ .set_pll = wm8804_set_pll,
+ .auto_selectable_formats = &wm8804_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define WM8804_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c
index a9128cfa6ff17..8dfb8f209fb54 100644
--- a/sound/soc/codecs/wm8900.c
+++ b/sound/soc/codecs/wm8900.c
@@ -992,6 +992,23 @@ static int wm8900_mute(struct snd_soc_dai *codec_dai, int mute, int direction)
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8900_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8900_dai_ops = {
.hw_params = wm8900_hw_params,
.set_clkdiv = wm8900_set_dai_clkdiv,
@@ -999,6 +1016,8 @@ static const struct snd_soc_dai_ops wm8900_dai_ops = {
.set_fmt = wm8900_set_dai_fmt,
.mute_stream = wm8900_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8900_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8900_selectable_formats),
};
static struct snd_soc_dai_driver wm8900_dai = {
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index 320d7737699d9..61874b915fd00 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -1734,12 +1734,31 @@ static irqreturn_t wm8903_irq(int irq, void *data)
SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8903_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8903_dai_ops = {
.hw_params = wm8903_hw_params,
.mute_stream = wm8903_mute,
.set_fmt = wm8903_set_dai_fmt,
.set_sysclk = wm8903_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8903_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8903_selectable_formats),
};
static struct snd_soc_dai_driver wm8903_dai = {
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
index 9e5782e50f475..be5e4f6f2d99f 100644
--- a/sound/soc/codecs/wm8904.c
+++ b/sound/soc/codecs/wm8904.c
@@ -2026,6 +2026,23 @@ static int wm8904_set_bias_level(struct snd_soc_component *component,
#define WM8904_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8904_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8904_dai_ops = {
.set_sysclk = wm8904_set_sysclk,
.set_fmt = wm8904_set_fmt,
@@ -2034,6 +2051,8 @@ static const struct snd_soc_dai_ops wm8904_dai_ops = {
.hw_params = wm8904_hw_params,
.mute_stream = wm8904_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8904_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8904_selectable_formats),
};
static struct snd_soc_dai_driver wm8904_dai = {
diff --git a/sound/soc/codecs/wm8940.c b/sound/soc/codecs/wm8940.c
index e631ec0722496..f155b8378e909 100644
--- a/sound/soc/codecs/wm8940.c
+++ b/sound/soc/codecs/wm8940.c
@@ -730,6 +730,17 @@ static int wm8940_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8940_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8940_dai_ops = {
.hw_params = wm8940_i2s_hw_params,
.set_sysclk = wm8940_set_dai_sysclk,
@@ -738,6 +749,8 @@ static const struct snd_soc_dai_ops wm8940_dai_ops = {
.set_clkdiv = wm8940_set_dai_clkdiv,
.set_pll = wm8940_set_dai_pll,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8940_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8940_dai = {
diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c
index c897a9ab764dd..f3255745ff717 100644
--- a/sound/soc/codecs/wm8955.c
+++ b/sound/soc/codecs/wm8955.c
@@ -845,12 +845,31 @@ static int wm8955_set_bias_level(struct snd_soc_component *component,
#define WM8955_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8955_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8955_dai_ops = {
.set_sysclk = wm8955_set_sysclk,
.set_fmt = wm8955_set_fmt,
.hw_params = wm8955_hw_params,
.mute_stream = wm8955_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8955_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8955_selectable_formats),
};
static struct snd_soc_dai_driver wm8955_dai = {
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index a810732c6af00..093530ae872b7 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -1340,6 +1340,17 @@ static int wm8960_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8960_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8960_dai_ops = {
.hw_params = wm8960_hw_params,
.hw_free = wm8960_hw_free,
@@ -1349,6 +1360,8 @@ static const struct snd_soc_dai_ops wm8960_dai_ops = {
.set_pll = wm8960_set_dai_pll,
.set_sysclk = wm8960_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8960_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8960_dai = {
diff --git a/sound/soc/codecs/wm8961.c b/sound/soc/codecs/wm8961.c
index 504fc59e4be2a..af22de6c6e1ac 100644
--- a/sound/soc/codecs/wm8961.c
+++ b/sound/soc/codecs/wm8961.c
@@ -803,6 +803,23 @@ static int wm8961_set_bias_level(struct snd_soc_component *component,
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8961_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8961_dai_ops = {
.hw_params = wm8961_hw_params,
.set_sysclk = wm8961_set_sysclk,
@@ -811,6 +828,8 @@ static const struct snd_soc_dai_ops wm8961_dai_ops = {
.set_tristate = wm8961_set_tristate,
.set_clkdiv = wm8961_set_clkdiv,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8961_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8961_selectable_formats),
};
static struct snd_soc_dai_driver wm8961_dai = {
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
index de18b1f85a32c..b0487b6762d30 100644
--- a/sound/soc/codecs/wm8962.c
+++ b/sound/soc/codecs/wm8962.c
@@ -3061,6 +3061,17 @@ static int wm8962_mute(struct snd_soc_dai *dai, int mute, int direction)
#define WM8962_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8962_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8962_dai_ops = {
.hw_params = wm8962_hw_params,
.set_sysclk = wm8962_set_dai_sysclk,
@@ -3068,6 +3079,8 @@ static const struct snd_soc_dai_ops wm8962_dai_ops = {
.set_tdm_slot = wm8962_set_tdm_slot,
.mute_stream = wm8962_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8962_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8962_dai = {
diff --git a/sound/soc/codecs/wm8971.c b/sound/soc/codecs/wm8971.c
index a5d2e91b66bba..388ee05d45206 100644
--- a/sound/soc/codecs/wm8971.c
+++ b/sound/soc/codecs/wm8971.c
@@ -601,12 +601,25 @@ static int wm8971_set_bias_level(struct snd_soc_component *component,
#define WM8971_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8971_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8971_dai_ops = {
.hw_params = wm8971_pcm_hw_params,
.mute_stream = wm8971_mute,
.set_fmt = wm8971_set_dai_fmt,
.set_sysclk = wm8971_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8971_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8971_dai = {
diff --git a/sound/soc/codecs/wm8974.c b/sound/soc/codecs/wm8974.c
index 4656652b8e97c..b9e8c544912b0 100644
--- a/sound/soc/codecs/wm8974.c
+++ b/sound/soc/codecs/wm8974.c
@@ -623,6 +623,16 @@ static int wm8974_set_bias_level(struct snd_soc_component *component,
#define WM8974_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8974_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8974_ops = {
.hw_params = wm8974_pcm_hw_params,
.mute_stream = wm8974_mute,
@@ -631,6 +641,8 @@ static const struct snd_soc_dai_ops wm8974_ops = {
.set_pll = wm8974_set_dai_pll,
.set_sysclk = wm8974_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8974_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8974_dai = {
diff --git a/sound/soc/codecs/wm8978.c b/sound/soc/codecs/wm8978.c
index ad8064bbaaac8..25cc433c7653d 100644
--- a/sound/soc/codecs/wm8978.c
+++ b/sound/soc/codecs/wm8978.c
@@ -892,6 +892,16 @@ static int wm8978_set_bias_level(struct snd_soc_component *component,
#define WM8978_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8978_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8978_dai_ops = {
.hw_params = wm8978_hw_params,
.mute_stream = wm8978_mute,
@@ -899,6 +909,8 @@ static const struct snd_soc_dai_ops wm8978_dai_ops = {
.set_clkdiv = wm8978_set_dai_clkdiv,
.set_sysclk = wm8978_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8978_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* Also supports 12kHz */
diff --git a/sound/soc/codecs/wm8983.c b/sound/soc/codecs/wm8983.c
index fab25f35fd141..3366166a2b771 100644
--- a/sound/soc/codecs/wm8983.c
+++ b/sound/soc/codecs/wm8983.c
@@ -943,6 +943,16 @@ static int wm8983_probe(struct snd_soc_component *component)
return 0;
}
+/* FIXME: it doesn't support DSP A/B for now */
+static const u64 wm8983_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8983_dai_ops = {
.mute_stream = wm8983_dac_mute,
.hw_params = wm8983_hw_params,
@@ -950,6 +960,8 @@ static const struct snd_soc_dai_ops wm8983_dai_ops = {
.set_sysclk = wm8983_set_sysclk,
.set_pll = wm8983_set_pll,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8983_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define WM8983_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
diff --git a/sound/soc/codecs/wm8985.c b/sound/soc/codecs/wm8985.c
index 2a64d5a851da8..0bb01d7d5f29f 100644
--- a/sound/soc/codecs/wm8985.c
+++ b/sound/soc/codecs/wm8985.c
@@ -1072,6 +1072,23 @@ static int wm8985_probe(struct snd_soc_component *component)
return ret;
}
+static const u64 wm8985_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8985_dai_ops = {
.mute_stream = wm8985_dac_mute,
.hw_params = wm8985_hw_params,
@@ -1079,6 +1096,8 @@ static const struct snd_soc_dai_ops wm8985_dai_ops = {
.set_sysclk = wm8985_set_sysclk,
.set_pll = wm8985_set_pll,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8985_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8985_selectable_formats),
};
#define WM8985_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
diff --git a/sound/soc/codecs/wm8988.c b/sound/soc/codecs/wm8988.c
index 741aecc7641a1..6f97c9aa453aa 100644
--- a/sound/soc/codecs/wm8988.c
+++ b/sound/soc/codecs/wm8988.c
@@ -762,6 +762,17 @@ static int wm8988_set_bias_level(struct snd_soc_component *component,
#define WM8988_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8988_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8988_ops = {
.startup = wm8988_pcm_startup,
.hw_params = wm8988_pcm_hw_params,
@@ -769,6 +780,8 @@ static const struct snd_soc_dai_ops wm8988_ops = {
.set_sysclk = wm8988_set_dai_sysclk,
.mute_stream = wm8988_mute,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8988_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8988_dai = {
diff --git a/sound/soc/codecs/wm8990.c b/sound/soc/codecs/wm8990.c
index 11dfbbbdcd920..c8fef187f5401 100644
--- a/sound/soc/codecs/wm8990.c
+++ b/sound/soc/codecs/wm8990.c
@@ -1151,6 +1151,13 @@ static int wm8990_set_bias_level(struct snd_soc_component *component,
* 1. ADC/DAC on Primary Interface
* 2. ADC on Primary Interface/DAC on secondary
*/
+static const u64 wm8990_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops wm8990_dai_ops = {
.hw_params = wm8990_hw_params,
.mute_stream = wm8990_mute,
@@ -1159,6 +1166,8 @@ static const struct snd_soc_dai_ops wm8990_dai_ops = {
.set_pll = wm8990_set_dai_pll,
.set_sysclk = wm8990_set_dai_sysclk,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8990_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8990_dai = {
diff --git a/sound/soc/codecs/wm8991.c b/sound/soc/codecs/wm8991.c
index 225c235d3d895..2cb7fb9962af5 100644
--- a/sound/soc/codecs/wm8991.c
+++ b/sound/soc/codecs/wm8991.c
@@ -1195,6 +1195,13 @@ static int wm8991_set_bias_level(struct snd_soc_component *component,
#define WM8991_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm8991_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops wm8991_ops = {
.hw_params = wm8991_hw_params,
.mute_stream = wm8991_mute,
@@ -1202,6 +1209,8 @@ static const struct snd_soc_dai_ops wm8991_ops = {
.set_clkdiv = wm8991_set_dai_clkdiv,
.set_pll = wm8991_set_dai_pll,
.no_capture_mute = 1,
+ .auto_selectable_formats = &wm8991_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/*
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c
index 2a94b23319b53..140b9141a9b4a 100644
--- a/sound/soc/codecs/wm8993.c
+++ b/sound/soc/codecs/wm8993.c
@@ -1441,6 +1441,23 @@ static irqreturn_t wm8993_irq(int irq, void *data)
return IRQ_HANDLED;
}
+static const u64 wm8993_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8993_ops = {
.set_sysclk = wm8993_set_sysclk,
.set_fmt = wm8993_set_dai_fmt,
@@ -1449,6 +1466,8 @@ static const struct snd_soc_dai_ops wm8993_ops = {
.set_pll = wm8993_set_fll,
.set_tdm_slot = wm8993_set_tdm_slot,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8993_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8993_selectable_formats),
};
#define WM8993_RATES SNDRV_PCM_RATE_8000_48000
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 1d64c7c42ed12..94ef284ff15d9 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -3205,6 +3205,23 @@ static int wm8994_aif2_probe(struct snd_soc_dai *dai)
#define WM8994_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8994_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8994_aif1_dai_ops = {
.set_sysclk = wm8994_set_dai_sysclk,
.set_fmt = wm8994_set_dai_fmt,
@@ -3213,6 +3230,8 @@ static const struct snd_soc_dai_ops wm8994_aif1_dai_ops = {
.set_pll = wm8994_set_fll,
.set_tristate = wm8994_set_tristate,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8994_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8994_selectable_formats),
};
static const struct snd_soc_dai_ops wm8994_aif2_dai_ops = {
@@ -3224,6 +3243,8 @@ static const struct snd_soc_dai_ops wm8994_aif2_dai_ops = {
.set_pll = wm8994_set_fll,
.set_tristate = wm8994_set_tristate,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8994_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8994_selectable_formats),
};
static const struct snd_soc_dai_ops wm8994_aif3_dai_ops = {
diff --git a/sound/soc/codecs/wm8995.c b/sound/soc/codecs/wm8995.c
index 799989a5bf0f2..9723877d030b8 100644
--- a/sound/soc/codecs/wm8995.c
+++ b/sound/soc/codecs/wm8995.c
@@ -2091,6 +2091,23 @@ static int wm8995_probe(struct snd_soc_component *component)
#define WM8995_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8995_selectable_formats[] =
+{
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm8995_aif1_dai_ops = {
.set_sysclk = wm8995_set_dai_sysclk,
.set_fmt = wm8995_set_dai_fmt,
@@ -2099,6 +2116,8 @@ static const struct snd_soc_dai_ops wm8995_aif1_dai_ops = {
.set_pll = wm8995_set_fll,
.set_tristate = wm8995_set_tristate,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8995_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8995_selectable_formats),
};
static const struct snd_soc_dai_ops wm8995_aif2_dai_ops = {
@@ -2109,6 +2128,8 @@ static const struct snd_soc_dai_ops wm8995_aif2_dai_ops = {
.set_pll = wm8995_set_fll,
.set_tristate = wm8995_set_tristate,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm8995_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm8995_selectable_formats),
};
static const struct snd_soc_dai_ops wm8995_aif3_dai_ops = {
diff --git a/sound/soc/codecs/wm8996.c b/sound/soc/codecs/wm8996.c
index dface555f9288..25a6186e074a9 100644
--- a/sound/soc/codecs/wm8996.c
+++ b/sound/soc/codecs/wm8996.c
@@ -2703,10 +2703,22 @@ static const struct snd_soc_component_driver soc_component_dev_wm8996 = {
SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm8996_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm8996_dai_ops = {
.set_fmt = wm8996_set_fmt,
.hw_params = wm8996_hw_params,
.set_sysclk = wm8996_set_sysclk,
+ .auto_selectable_formats = &wm8996_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm8996_dai[] = {
diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c
index 2e4e0a76499d8..824e9c6b5f3e6 100644
--- a/sound/soc/codecs/wm9081.c
+++ b/sound/soc/codecs/wm9081.c
@@ -1230,12 +1230,30 @@ static int wm9081_set_tdm_slot(struct snd_soc_dai *dai,
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 wm9081_selectable_formats[] = {
+ /* 1st priority */
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF,
+ /* 2nd priority */
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF,
+};
+
static const struct snd_soc_dai_ops wm9081_dai_ops = {
.hw_params = wm9081_hw_params,
.set_fmt = wm9081_set_dai_fmt,
.mute_stream = wm9081_mute,
.set_tdm_slot = wm9081_set_tdm_slot,
.no_capture_mute = 1,
+ .auto_selectable_formats = wm9081_selectable_formats,
+ .num_auto_selectable_formats = ARRAY_SIZE(wm9081_selectable_formats),
};
/* We report two channels because the CODEC processes a stereo signal, even
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index b3bbecf074eed..8135d67ef6c2b 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1068,6 +1068,17 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream,
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 wm9713_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops wm9713_dai_ops_hifi = {
.prepare = ac97_hifi_prepare,
.set_clkdiv = wm9713_set_dai_clkdiv,
@@ -1086,6 +1097,8 @@ static const struct snd_soc_dai_ops wm9713_dai_ops_voice = {
.set_pll = wm9713_set_dai_pll,
.set_fmt = wm9713_set_dai_fmt,
.set_tristate = wm9713_set_dai_tristate,
+ .auto_selectable_formats = &wm9713_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver wm9713_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 60/83] ASoC: codecs: zl38060: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (58 preceding siblings ...)
2026-05-26 2:22 ` [PATCH 59/83] ASoC: codecs: wm*: " Kuninori Morimoto
@ 2026-05-26 2:23 ` Kuninori Morimoto
2026-05-26 2:23 ` [PATCH 61/83] ASoC: dwc: " Kuninori Morimoto
` (23 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:23 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/codecs/zl38060.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/soc/codecs/zl38060.c b/sound/soc/codecs/zl38060.c
index 7de4014e626d2..aa563cf6756a8 100644
--- a/sound/soc/codecs/zl38060.c
+++ b/sound/soc/codecs/zl38060.c
@@ -337,10 +337,16 @@ static const struct reg_sequence cp_config_stereo_bypass[] = {
{ 0x0202, 0x000F }, /* enable I2S1 + DAC */
};
+static const u64 zl38_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops zl38_dai_ops = {
.set_fmt = zl38_set_fmt,
.hw_params = zl38_hw_params,
.hw_free = zl38_hw_free,
+ .auto_selectable_formats = &zl38_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver zl38_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 61/83] ASoC: dwc: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (59 preceding siblings ...)
2026-05-26 2:23 ` [PATCH 60/83] ASoC: codecs: zl38060: " Kuninori Morimoto
@ 2026-05-26 2:23 ` Kuninori Morimoto
2026-05-26 2:23 ` [PATCH 62/83] ASoC: fsl: " Kuninori Morimoto
` (22 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:23 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/dwc/dwc-i2s.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/sound/soc/dwc/dwc-i2s.c b/sound/soc/dwc/dwc-i2s.c
index 74dfd39fd6047..be5d06b720c8d 100644
--- a/sound/soc/dwc/dwc-i2s.c
+++ b/sound/soc/dwc/dwc-i2s.c
@@ -464,6 +464,13 @@ static int dw_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 dw_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops dw_i2s_dai_ops = {
.probe = dw_i2s_dai_probe,
.startup = dw_i2s_startup,
@@ -472,6 +479,8 @@ static const struct snd_soc_dai_ops dw_i2s_dai_ops = {
.trigger = dw_i2s_trigger,
.set_fmt = dw_i2s_set_fmt,
.set_tdm_slot = dw_i2s_set_tdm_slot,
+ .auto_selectable_formats = &dw_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int dw_i2s_runtime_suspend(struct device *dev)
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 62/83] ASoC: fsl: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (60 preceding siblings ...)
2026-05-26 2:23 ` [PATCH 61/83] ASoC: dwc: " Kuninori Morimoto
@ 2026-05-26 2:23 ` Kuninori Morimoto
2026-05-26 2:24 ` [PATCH 63/83] ASoC: hisilicon: " Kuninori Morimoto
` (21 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:23 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/fsl/fsl_audmix.c | 7 +++++++
sound/soc/fsl/fsl_esai.c | 13 +++++++++++++
sound/soc/fsl/fsl_mqs.c | 6 ++++++
sound/soc/fsl/fsl_sai.c | 18 ++++++++++++++++++
sound/soc/fsl/fsl_ssi.c | 13 +++++++++++++
sound/soc/fsl/lpc3xxx-i2s.c | 4 ++++
sound/soc/fsl/mpc5200_psc_i2s.c | 4 ++++
7 files changed, 65 insertions(+)
diff --git a/sound/soc/fsl/fsl_audmix.c b/sound/soc/fsl/fsl_audmix.c
index 40a3b74321744..3ab071ac0a03d 100644
--- a/sound/soc/fsl/fsl_audmix.c
+++ b/sound/soc/fsl/fsl_audmix.c
@@ -308,9 +308,16 @@ static int fsl_audmix_dai_trigger(struct snd_pcm_substream *substream, int cmd,
return 0;
}
+static const u64 fsl_audmix_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops fsl_audmix_dai_ops = {
.set_fmt = fsl_audmix_dai_set_fmt,
.trigger = fsl_audmix_dai_trigger,
+ .auto_selectable_formats = &fsl_audmix_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver fsl_audmix_dai[] = {
diff --git a/sound/soc/fsl/fsl_esai.c b/sound/soc/fsl/fsl_esai.c
index cde0b0c6c1ef9..06fd38187f109 100644
--- a/sound/soc/fsl/fsl_esai.c
+++ b/sound/soc/fsl/fsl_esai.c
@@ -795,6 +795,17 @@ static int fsl_esai_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 fsl_esai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops fsl_esai_dai_ops = {
.probe = fsl_esai_dai_probe,
.startup = fsl_esai_startup,
@@ -803,6 +814,8 @@ static const struct snd_soc_dai_ops fsl_esai_dai_ops = {
.set_sysclk = fsl_esai_set_dai_sysclk,
.set_fmt = fsl_esai_set_dai_fmt,
.set_tdm_slot = fsl_esai_set_dai_tdm_slot,
+ .auto_selectable_formats = &fsl_esai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver fsl_esai_dai = {
diff --git a/sound/soc/fsl/fsl_mqs.c b/sound/soc/fsl/fsl_mqs.c
index 901f840df9047..39129f970c3f5 100644
--- a/sound/soc/fsl/fsl_mqs.c
+++ b/sound/soc/fsl/fsl_mqs.c
@@ -187,11 +187,17 @@ static const struct snd_soc_component_driver soc_codec_fsl_mqs = {
.idle_bias_on = 1,
};
+static const u64 fsl_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops fsl_mqs_dai_ops = {
.startup = fsl_mqs_startup,
.shutdown = fsl_mqs_shutdown,
.hw_params = fsl_mqs_hw_params,
.set_fmt = fsl_mqs_set_dai_fmt,
+ .auto_selectable_formats = &fsl_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver fsl_mqs_dai = {
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
index 87a40e2b9fdf7..9921b53ac184e 100644
--- a/sound/soc/fsl/fsl_sai.c
+++ b/sound/soc/fsl/fsl_sai.c
@@ -1005,6 +1005,18 @@ static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
return 0;
}
+static const u64 fsl_sai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_PDM |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops fsl_sai_pcm_dai_ops = {
.probe = fsl_sai_dai_probe,
.set_bclk_ratio = fsl_sai_set_dai_bclk_ratio,
@@ -1015,6 +1027,8 @@ static const struct snd_soc_dai_ops fsl_sai_pcm_dai_ops = {
.hw_free = fsl_sai_hw_free,
.trigger = fsl_sai_trigger,
.startup = fsl_sai_startup,
+ .auto_selectable_formats = &fsl_sai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops fsl_sai_pcm_dai_tx_ops = {
@@ -1028,6 +1042,8 @@ static const struct snd_soc_dai_ops fsl_sai_pcm_dai_tx_ops = {
.hw_free = fsl_sai_hw_free,
.trigger = fsl_sai_trigger,
.startup = fsl_sai_startup,
+ .auto_selectable_formats = &fsl_sai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops fsl_sai_pcm_dai_rx_ops = {
@@ -1041,6 +1057,8 @@ static const struct snd_soc_dai_ops fsl_sai_pcm_dai_rx_ops = {
.hw_free = fsl_sai_hw_free,
.trigger = fsl_sai_trigger,
.startup = fsl_sai_startup,
+ .auto_selectable_formats = &fsl_sai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int fsl_sai_dai_resume(struct snd_soc_component *component)
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index b2e1da1781ae8..65910ff4d2a33 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -1151,6 +1151,17 @@ static int fsl_ssi_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 fsl_ssi_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_AC97 |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops fsl_ssi_dai_ops = {
.probe = fsl_ssi_dai_probe,
.startup = fsl_ssi_startup,
@@ -1160,6 +1171,8 @@ static const struct snd_soc_dai_ops fsl_ssi_dai_ops = {
.set_fmt = fsl_ssi_set_dai_fmt,
.set_tdm_slot = fsl_ssi_set_dai_tdm_slot,
.trigger = fsl_ssi_trigger,
+ .auto_selectable_formats = &fsl_ssi_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver fsl_ssi_dai_template = {
diff --git a/sound/soc/fsl/lpc3xxx-i2s.c b/sound/soc/fsl/lpc3xxx-i2s.c
index c65c17dfa1747..ea521647129ba 100644
--- a/sound/soc/fsl/lpc3xxx-i2s.c
+++ b/sound/soc/fsl/lpc3xxx-i2s.c
@@ -257,6 +257,8 @@ static int lpc3xxx_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 lpc3xxx_i2s_selectable_formats = SND_SOC_POSSIBLE_DAIFMT_I2S;
+
static const struct snd_soc_dai_ops lpc3xxx_i2s_dai_ops = {
.probe = lpc3xxx_i2s_dai_probe,
.startup = lpc3xxx_i2s_startup,
@@ -265,6 +267,8 @@ static const struct snd_soc_dai_ops lpc3xxx_i2s_dai_ops = {
.hw_params = lpc3xxx_i2s_hw_params,
.set_sysclk = lpc3xxx_i2s_set_dai_sysclk,
.set_fmt = lpc3xxx_i2s_set_dai_fmt,
+ .auto_selectable_formats = &lpc3xxx_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver lpc3xxx_i2s_dai_driver = {
diff --git a/sound/soc/fsl/mpc5200_psc_i2s.c b/sound/soc/fsl/mpc5200_psc_i2s.c
index 9ad44eeed6ad8..86ae64a26ad77 100644
--- a/sound/soc/fsl/mpc5200_psc_i2s.c
+++ b/sound/soc/fsl/mpc5200_psc_i2s.c
@@ -118,6 +118,8 @@ static int psc_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format)
* - create/destroy dai hooks
*/
+static const u64 psc_i2s_selectable_formats = SND_SOC_POSSIBLE_DAIFMT_I2S;
+
/**
* psc_i2s_dai_template: template CPU Digital Audio Interface
*/
@@ -125,6 +127,8 @@ static const struct snd_soc_dai_ops psc_i2s_dai_ops = {
.hw_params = psc_i2s_hw_params,
.set_sysclk = psc_i2s_set_sysclk,
.set_fmt = psc_i2s_set_fmt,
+ .auto_selectable_formats = &psc_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver psc_i2s_dai[] = {{
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 63/83] ASoC: hisilicon: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (61 preceding siblings ...)
2026-05-26 2:23 ` [PATCH 62/83] ASoC: fsl: " Kuninori Morimoto
@ 2026-05-26 2:24 ` Kuninori Morimoto
2026-05-26 2:24 ` [PATCH 64/83] ASoC: img: " Kuninori Morimoto
` (20 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:24 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/hisilicon/hi6210-i2s.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/hisilicon/hi6210-i2s.c b/sound/soc/hisilicon/hi6210-i2s.c
index 250ae3781d140..32751f3d430b4 100644
--- a/sound/soc/hisilicon/hi6210-i2s.c
+++ b/sound/soc/hisilicon/hi6210-i2s.c
@@ -509,6 +509,11 @@ static int hi6210_i2s_dai_probe(struct snd_soc_dai *dai)
}
+static const u64 hi6210_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops hi6210_i2s_dai_ops = {
.probe = hi6210_i2s_dai_probe,
.trigger = hi6210_i2s_trigger,
@@ -516,6 +521,8 @@ static const struct snd_soc_dai_ops hi6210_i2s_dai_ops = {
.set_fmt = hi6210_i2s_set_fmt,
.startup = hi6210_i2s_startup,
.shutdown = hi6210_i2s_shutdown,
+ .auto_selectable_formats = &hi6210_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver hi6210_i2s_dai_init = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 64/83] ASoC: img: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (62 preceding siblings ...)
2026-05-26 2:24 ` [PATCH 63/83] ASoC: hisilicon: " Kuninori Morimoto
@ 2026-05-26 2:24 ` Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 65/83] ASoC: jz4740: " Kuninori Morimoto
` (19 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:24 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/img/img-i2s-in.c | 12 +++++++++++-
sound/soc/img/img-i2s-out.c | 13 ++++++++++++-
sound/soc/img/img-parallel-out.c | 8 +++++++-
3 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/sound/soc/img/img-i2s-in.c b/sound/soc/img/img-i2s-in.c
index 98d2ab68883a4..a0c87e2a9b30b 100644
--- a/sound/soc/img/img-i2s-in.c
+++ b/sound/soc/img/img-i2s-in.c
@@ -379,11 +379,21 @@ static int img_i2s_in_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 img_i2s_in_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops img_i2s_in_dai_ops = {
.probe = img_i2s_in_dai_probe,
.trigger = img_i2s_in_trigger,
.hw_params = img_i2s_in_hw_params,
- .set_fmt = img_i2s_in_set_fmt
+ .set_fmt = img_i2s_in_set_fmt,
+ .auto_selectable_formats = &img_i2s_in_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_component_driver img_i2s_in_component = {
diff --git a/sound/soc/img/img-i2s-out.c b/sound/soc/img/img-i2s-out.c
index aedcf56a5359c..caa7870dbec6b 100644
--- a/sound/soc/img/img-i2s-out.c
+++ b/sound/soc/img/img-i2s-out.c
@@ -385,11 +385,22 @@ static int img_i2s_out_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 img_i2s_out_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops img_i2s_out_dai_ops = {
.probe = img_i2s_out_dai_probe,
.trigger = img_i2s_out_trigger,
.hw_params = img_i2s_out_hw_params,
- .set_fmt = img_i2s_out_set_fmt
+ .set_fmt = img_i2s_out_set_fmt,
+ .auto_selectable_formats = &img_i2s_out_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_component_driver img_i2s_out_component = {
diff --git a/sound/soc/img/img-parallel-out.c b/sound/soc/img/img-parallel-out.c
index 86b60e6dab38f..89270913ab352 100644
--- a/sound/soc/img/img-parallel-out.c
+++ b/sound/soc/img/img-parallel-out.c
@@ -183,11 +183,17 @@ static int img_prl_out_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 img_prl_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF;
+
static const struct snd_soc_dai_ops img_prl_out_dai_ops = {
.probe = img_prl_out_dai_probe,
.trigger = img_prl_out_trigger,
.hw_params = img_prl_out_hw_params,
- .set_fmt = img_prl_out_set_fmt
+ .set_fmt = img_prl_out_set_fmt,
+ .auto_selectable_formats = &img_prl_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver img_prl_out_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 65/83] ASoC: jz4740: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (63 preceding siblings ...)
2026-05-26 2:24 ` [PATCH 64/83] ASoC: img: " Kuninori Morimoto
@ 2026-05-26 2:25 ` Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 66/83] ASoC: kirkwood: " Kuninori Morimoto
` (18 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:25 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/jz4740/jz4740-i2s.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/jz4740/jz4740-i2s.c b/sound/soc/jz4740/jz4740-i2s.c
index 5176195316158..40fa4e39349f0 100644
--- a/sound/soc/jz4740/jz4740-i2s.c
+++ b/sound/soc/jz4740/jz4740-i2s.c
@@ -327,6 +327,11 @@ static int jz4740_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 jz4740_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops jz4740_i2s_dai_ops = {
.probe = jz4740_i2s_dai_probe,
.startup = jz4740_i2s_startup,
@@ -334,6 +339,8 @@ static const struct snd_soc_dai_ops jz4740_i2s_dai_ops = {
.trigger = jz4740_i2s_trigger,
.hw_params = jz4740_i2s_hw_params,
.set_fmt = jz4740_i2s_set_fmt,
+ .auto_selectable_formats = &jz4740_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define JZ4740_I2S_FMTS (SNDRV_PCM_FMTBIT_S8 | \
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 66/83] ASoC: kirkwood: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (64 preceding siblings ...)
2026-05-26 2:25 ` [PATCH 65/83] ASoC: jz4740: " Kuninori Morimoto
@ 2026-05-26 2:25 ` Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 67/83] ASoC: loongson: " Kuninori Morimoto
` (17 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:25 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/kirkwood/kirkwood-i2s.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/kirkwood/kirkwood-i2s.c b/sound/soc/kirkwood/kirkwood-i2s.c
index 99bd066c7309d..739a819d84945 100644
--- a/sound/soc/kirkwood/kirkwood-i2s.c
+++ b/sound/soc/kirkwood/kirkwood-i2s.c
@@ -544,11 +544,18 @@ static int kirkwood_i2s_init(struct kirkwood_dma_data *priv)
}
+static const u64 kirkwood_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops kirkwood_i2s_dai_ops = {
.startup = kirkwood_i2s_startup,
.trigger = kirkwood_i2s_trigger,
.hw_params = kirkwood_i2s_hw_params,
.set_fmt = kirkwood_i2s_set_fmt,
+ .auto_selectable_formats = &kirkwood_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver kirkwood_i2s_dai[2] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 67/83] ASoC: loongson: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (65 preceding siblings ...)
2026-05-26 2:25 ` [PATCH 66/83] ASoC: kirkwood: " Kuninori Morimoto
@ 2026-05-26 2:25 ` Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 68/83] ASoC: mediatek: " Kuninori Morimoto
` (16 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:25 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/loongson/loongson_i2s.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/soc/loongson/loongson_i2s.c b/sound/soc/loongson/loongson_i2s.c
index e336656e13eba..82ae3642908d0 100644
--- a/sound/soc/loongson/loongson_i2s.c
+++ b/sound/soc/loongson/loongson_i2s.c
@@ -220,12 +220,18 @@ static int loongson_i2s_dai_probe(struct snd_soc_dai *cpu_dai)
return 0;
}
+static const u64 loongson_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J;
+
static const struct snd_soc_dai_ops loongson_i2s_dai_ops = {
.probe = loongson_i2s_dai_probe,
.trigger = loongson_i2s_trigger,
.hw_params = loongson_i2s_hw_params,
.set_sysclk = loongson_i2s_set_dai_sysclk,
.set_fmt = loongson_i2s_set_fmt,
+ .auto_selectable_formats = &loongson_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
struct snd_soc_dai_driver loongson_i2s_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 68/83] ASoC: mediatek: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (66 preceding siblings ...)
2026-05-26 2:25 ` [PATCH 67/83] ASoC: loongson: " Kuninori Morimoto
@ 2026-05-26 2:25 ` Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 69/83] ASoC: meson: " Kuninori Morimoto
` (15 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:25 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/mediatek/mt7986/mt7986-dai-etdm.c | 11 +++++++++++
sound/soc/mediatek/mt8183/mt8183-dai-i2s.c | 6 ++++++
sound/soc/mediatek/mt8183/mt8183-dai-tdm.c | 10 ++++++++++
sound/soc/mediatek/mt8186/mt8186-dai-pcm.c | 12 ++++++++++++
sound/soc/mediatek/mt8186/mt8186-dai-tdm.c | 13 +++++++++++++
sound/soc/mediatek/mt8188/mt8188-dai-etdm.c | 15 +++++++++++++++
sound/soc/mediatek/mt8188/mt8188-dai-pcm.c | 11 +++++++++++
sound/soc/mediatek/mt8192/mt8192-dai-tdm.c | 11 +++++++++++
sound/soc/mediatek/mt8195/mt8195-dai-etdm.c | 17 +++++++++++++++++
sound/soc/mediatek/mt8195/mt8195-dai-pcm.c | 11 +++++++++++
sound/soc/mediatek/mt8365/mt8365-dai-i2s.c | 10 ++++++++++
sound/soc/mediatek/mt8365/mt8365-dai-pcm.c | 11 +++++++++++
12 files changed, 138 insertions(+)
diff --git a/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c b/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c
index fc55ff47b7bc6..a88a0efc1309b 100644
--- a/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c
+++ b/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c
@@ -361,12 +361,23 @@ static int mtk_dai_etdm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_etdm_ops = {
.startup = mtk_dai_etdm_startup,
.shutdown = mtk_dai_etdm_shutdown,
.hw_params = mtk_dai_etdm_hw_params,
.trigger = mtk_dai_etdm_trigger,
.set_fmt = mtk_dai_etdm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c b/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
index 3709100a88659..4d9bc8f9a67f4 100644
--- a/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
+++ b/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
@@ -867,10 +867,16 @@ static int mtk_dai_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops mtk_dai_i2s_ops = {
.hw_params = mtk_dai_i2s_hw_params,
.set_sysclk = mtk_dai_i2s_set_sysclk,
.set_fmt = mtk_dai_i2s_set_fmt,
+ .auto_selectable_formats = &mtk_dai_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8183/mt8183-dai-tdm.c b/sound/soc/mediatek/mt8183/mt8183-dai-tdm.c
index 0d69cf4404073..afdcd9863bc37 100644
--- a/sound/soc/mediatek/mt8183/mt8183-dai-tdm.c
+++ b/sound/soc/mediatek/mt8183/mt8183-dai-tdm.c
@@ -681,11 +681,21 @@ static int mtk_dai_tdm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_tdm_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_tdm_ops = {
.hw_params = mtk_dai_tdm_hw_params,
.trigger = mtk_dai_tdm_trigger,
.set_sysclk = mtk_dai_tdm_set_sysclk,
.set_fmt = mtk_dai_tdm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_tdm_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8186/mt8186-dai-pcm.c b/sound/soc/mediatek/mt8186/mt8186-dai-pcm.c
index a50aa294960b1..e72e5a1eb87b5 100644
--- a/sound/soc/mediatek/mt8186/mt8186-dai-pcm.c
+++ b/sound/soc/mediatek/mt8186/mt8186-dai-pcm.c
@@ -333,9 +333,21 @@ static int mtk_dai_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_pcm_ops = {
.hw_params = mtk_dai_pcm_hw_params,
.set_fmt = mtk_dai_pcm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8186/mt8186-dai-tdm.c b/sound/soc/mediatek/mt8186/mt8186-dai-tdm.c
index 7a8890d7122f2..38c7e0ddf4e21 100644
--- a/sound/soc/mediatek/mt8186/mt8186-dai-tdm.c
+++ b/sound/soc/mediatek/mt8186/mt8186-dai-tdm.c
@@ -562,11 +562,24 @@ static int mtk_dai_tdm_set_tdm_slot(struct snd_soc_dai *dai,
return 0;
}
+static const u64 mtk_dai_tdm_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_tdm_ops = {
.hw_params = mtk_dai_tdm_hw_params,
.set_sysclk = mtk_dai_tdm_set_sysclk,
.set_fmt = mtk_dai_tdm_set_fmt,
.set_tdm_slot = mtk_dai_tdm_set_tdm_slot,
+ .auto_selectable_formats = &mtk_dai_tdm_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8188/mt8188-dai-etdm.c b/sound/soc/mediatek/mt8188/mt8188-dai-etdm.c
index 4dfaa761f9f73..338be2a8f36cd 100644
--- a/sound/soc/mediatek/mt8188/mt8188-dai-etdm.c
+++ b/sound/soc/mediatek/mt8188/mt8188-dai-etdm.c
@@ -2471,17 +2471,32 @@ static int mtk_dai_hdmitx_dptx_set_sysclk(struct snd_soc_dai *dai,
return mtk_dai_etdm_cal_mclk(afe, freq, dai->id);
}
+static const u64 mtk_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_etdm_ops = {
.hw_params = mtk_dai_etdm_hw_params,
.set_sysclk = mtk_dai_etdm_set_sysclk,
.set_fmt = mtk_dai_etdm_set_fmt,
.set_tdm_slot = mtk_dai_etdm_set_tdm_slot,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops mtk_dai_hdmitx_dptx_ops = {
.hw_params = mtk_dai_hdmitx_dptx_hw_params,
.set_sysclk = mtk_dai_hdmitx_dptx_set_sysclk,
.set_fmt = mtk_dai_etdm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8188/mt8188-dai-pcm.c b/sound/soc/mediatek/mt8188/mt8188-dai-pcm.c
index 8ca7cc75e21dc..d8d704d0a5790 100644
--- a/sound/soc/mediatek/mt8188/mt8188-dai-pcm.c
+++ b/sound/soc/mediatek/mt8188/mt8188-dai-pcm.c
@@ -296,9 +296,20 @@ static int mtk_dai_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_pcm_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_pcm_ops = {
.prepare = mtk_dai_pcm_prepare,
.set_fmt = mtk_dai_pcm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_pcm_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c b/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
index 49440db370af0..2ff9bf5117b71 100644
--- a/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
+++ b/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
@@ -699,10 +699,21 @@ static int mtk_dai_tdm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_tdm_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_tdm_ops = {
.hw_params = mtk_dai_tdm_hw_params,
.set_sysclk = mtk_dai_tdm_set_sysclk,
.set_fmt = mtk_dai_tdm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_tdm_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c b/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
index 5dcc8ed26e009..02e8dd89cacd4 100644
--- a/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
+++ b/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
@@ -2485,6 +2485,17 @@ static int mtk_dai_etdm_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 mtk_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_hdmitx_dptx_ops = {
.startup = mtk_dai_hdmitx_dptx_startup,
.shutdown = mtk_dai_hdmitx_dptx_shutdown,
@@ -2492,6 +2503,8 @@ static const struct snd_soc_dai_ops mtk_dai_hdmitx_dptx_ops = {
.trigger = mtk_dai_hdmitx_dptx_trigger,
.set_sysclk = mtk_dai_hdmitx_dptx_set_sysclk,
.set_fmt = mtk_dai_etdm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops mtk_dai_hdmitx_dptx_ops2 = {
@@ -2502,6 +2515,8 @@ static const struct snd_soc_dai_ops mtk_dai_hdmitx_dptx_ops2 = {
.trigger = mtk_dai_hdmitx_dptx_trigger,
.set_sysclk = mtk_dai_hdmitx_dptx_set_sysclk,
.set_fmt = mtk_dai_etdm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops mtk_dai_etdm_ops = {
@@ -2513,6 +2528,8 @@ static const struct snd_soc_dai_ops mtk_dai_etdm_ops = {
.set_sysclk = mtk_dai_etdm_set_sysclk,
.set_fmt = mtk_dai_etdm_set_fmt,
.set_tdm_slot = mtk_dai_etdm_set_tdm_slot,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver mtk_dai_etdm_driver[] = {
diff --git a/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c b/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
index cdc16057d50e2..539095b619bc4 100644
--- a/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
+++ b/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
@@ -297,9 +297,20 @@ static int mtk_dai_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mtk_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mtk_dai_pcm_ops = {
.prepare = mtk_dai_pcm_prepare,
.set_fmt = mtk_dai_pcm_set_fmt,
+ .auto_selectable_formats = &mtk_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
/* dai driver */
diff --git a/sound/soc/mediatek/mt8365/mt8365-dai-i2s.c b/sound/soc/mediatek/mt8365/mt8365-dai-i2s.c
index cb9beb172ed59..bfa5a71944382 100644
--- a/sound/soc/mediatek/mt8365/mt8365-dai-i2s.c
+++ b/sound/soc/mediatek/mt8365/mt8365-dai-i2s.c
@@ -724,12 +724,22 @@ static const struct snd_soc_dai_ops mt8365_afe_i2s_ops = {
.prepare = mt8365_dai_i2s_prepare,
};
+static const u64 mt8365_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mt8365_afe_2nd_i2s_ops = {
.startup = mt8365_dai_i2s_startup,
.shutdown = mt8365_dai_i2s_shutdown,
.hw_params = mt8365_afe_2nd_i2s_hw_params,
.prepare = mt8365_dai_i2s_prepare,
.set_fmt = mt8365_afe_2nd_i2s_set_fmt,
+ .auto_selectable_formats = &mt8365_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver mtk_dai_i2s_driver[] = {
diff --git a/sound/soc/mediatek/mt8365/mt8365-dai-pcm.c b/sound/soc/mediatek/mt8365/mt8365-dai-pcm.c
index 0ec114a566ad1..74c1b6df4515a 100644
--- a/sound/soc/mediatek/mt8365/mt8365-dai-pcm.c
+++ b/sound/soc/mediatek/mt8365/mt8365-dai-pcm.c
@@ -202,11 +202,22 @@ static int mt8365_dai_pcm1_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 mt8365_dai_pcm1_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mt8365_dai_pcm1_ops = {
.startup = mt8365_dai_pcm1_startup,
.shutdown = mt8365_dai_pcm1_shutdown,
.prepare = mt8365_dai_pcm1_prepare,
.set_fmt = mt8365_dai_pcm1_set_fmt,
+ .auto_selectable_formats = &mt8365_dai_pcm1_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver mtk_dai_pcm_driver[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 69/83] ASoC: meson: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (67 preceding siblings ...)
2026-05-26 2:25 ` [PATCH 68/83] ASoC: mediatek: " Kuninori Morimoto
@ 2026-05-26 2:25 ` Kuninori Morimoto
2026-05-26 7:35 ` Jerome Brunet
2026-05-26 2:25 ` [PATCH 70/83] ASoC: mxs: " Kuninori Morimoto
` (14 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:25 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/meson/t9015.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/soc/meson/t9015.c b/sound/soc/meson/t9015.c
index da1a93946d679..085f771eb244f 100644
--- a/sound/soc/meson/t9015.c
+++ b/sound/soc/meson/t9015.c
@@ -78,8 +78,14 @@ static int t9015_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
return 0;
}
+static const u64 t9015_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops t9015_dai_ops = {
.set_fmt = t9015_dai_set_fmt,
+ .auto_selectable_formats = &t9015_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver t9015_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 70/83] ASoC: mxs: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (68 preceding siblings ...)
2026-05-26 2:25 ` [PATCH 69/83] ASoC: meson: " Kuninori Morimoto
@ 2026-05-26 2:25 ` Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 71/83] ASoC: pxa: " Kuninori Morimoto
` (13 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:25 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/mxs/mxs-saif.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c
index a01a680ad4d71..efa0581d0d506 100644
--- a/sound/soc/mxs/mxs-saif.c
+++ b/sound/soc/mxs/mxs-saif.c
@@ -691,6 +691,14 @@ static int mxs_saif_trigger(struct snd_pcm_substream *substream, int cmd,
(SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE)
+static const u64 mxs_saif_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mxs_saif_dai_ops = {
.startup = mxs_saif_startup,
.shutdown = mxs_saif_shutdown,
@@ -699,6 +707,8 @@ static const struct snd_soc_dai_ops mxs_saif_dai_ops = {
.hw_params = mxs_saif_hw_params,
.set_sysclk = mxs_saif_set_dai_sysclk,
.set_fmt = mxs_saif_set_dai_fmt,
+ .auto_selectable_formats = &mxs_saif_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver mxs_saif_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 71/83] ASoC: pxa: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (69 preceding siblings ...)
2026-05-26 2:25 ` [PATCH 70/83] ASoC: mxs: " Kuninori Morimoto
@ 2026-05-26 2:26 ` Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 72/83] ASoC: renesas: " Kuninori Morimoto
` (12 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:26 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/pxa/mmp-sspa.c | 6 ++++++
sound/soc/pxa/pxa-ssp.c | 11 +++++++++++
sound/soc/pxa/pxa2xx-i2s.c | 6 ++++++
3 files changed, 23 insertions(+)
diff --git a/sound/soc/pxa/mmp-sspa.c b/sound/soc/pxa/mmp-sspa.c
index fbbce81680cf8..f9066fbdd5718 100644
--- a/sound/soc/pxa/mmp-sspa.c
+++ b/sound/soc/pxa/mmp-sspa.c
@@ -339,6 +339,10 @@ static int mmp_sspa_probe(struct snd_soc_dai *dai)
SNDRV_PCM_FMTBIT_S24_3LE | \
SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 mmp_sspa_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops mmp_sspa_dai_ops = {
.probe = mmp_sspa_probe,
.startup = mmp_sspa_startup,
@@ -348,6 +352,8 @@ static const struct snd_soc_dai_ops mmp_sspa_dai_ops = {
.set_sysclk = mmp_sspa_set_dai_sysclk,
.set_pll = mmp_sspa_set_dai_pll,
.set_fmt = mmp_sspa_set_dai_fmt,
+ .auto_selectable_formats = &mmp_sspa_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver mmp_sspa_dai = {
diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c
index f8054c1c59fae..5a27901bf4a5b 100644
--- a/sound/soc/pxa/pxa-ssp.c
+++ b/sound/soc/pxa/pxa-ssp.c
@@ -812,6 +812,15 @@ static int pxa_ssp_remove(struct snd_soc_dai *dai)
#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
+static const u64 pxa_ssp_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops pxa_ssp_dai_ops = {
.probe = pxa_ssp_probe,
.remove = pxa_ssp_remove,
@@ -823,6 +832,8 @@ static const struct snd_soc_dai_ops pxa_ssp_dai_ops = {
.set_fmt = pxa_ssp_set_dai_fmt,
.set_tdm_slot = pxa_ssp_set_dai_tdm_slot,
.set_tristate = pxa_ssp_set_dai_tristate,
+ .auto_selectable_formats = &pxa_ssp_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver pxa_ssp_dai = {
diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c
index fe1df78926f59..008cf5ae2607e 100644
--- a/sound/soc/pxa/pxa2xx-i2s.c
+++ b/sound/soc/pxa/pxa2xx-i2s.c
@@ -328,6 +328,10 @@ static int pxa2xx_i2s_remove(struct snd_soc_dai *dai)
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000)
+static const u64 pxa_i2s_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops pxa_i2s_dai_ops = {
.probe = pxa2xx_i2s_probe,
.remove = pxa2xx_i2s_remove,
@@ -337,6 +341,8 @@ static const struct snd_soc_dai_ops pxa_i2s_dai_ops = {
.hw_params = pxa2xx_i2s_hw_params,
.set_fmt = pxa2xx_i2s_set_dai_fmt,
.set_sysclk = pxa2xx_i2s_set_dai_sysclk,
+ .auto_selectable_formats = &pxa_i2s_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver pxa_i2s_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 72/83] ASoC: renesas: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (70 preceding siblings ...)
2026-05-26 2:26 ` [PATCH 71/83] ASoC: pxa: " Kuninori Morimoto
@ 2026-05-26 2:26 ` Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 73/83] ASoC: rockchip: " Kuninori Morimoto
` (11 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:26 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/renesas/rz-ssi.c | 9 +++++++++
sound/soc/renesas/siu_dai.c | 6 ++++++
sound/soc/renesas/ssi.c | 13 +++++++++++++
3 files changed, 28 insertions(+)
diff --git a/sound/soc/renesas/rz-ssi.c b/sound/soc/renesas/rz-ssi.c
index 71e434cfe07b9..8243c8816efba 100644
--- a/sound/soc/renesas/rz-ssi.c
+++ b/sound/soc/renesas/rz-ssi.c
@@ -1042,12 +1042,21 @@ static int rz_ssi_dai_hw_params(struct snd_pcm_substream *substream,
return rz_ssi_clk_setup(ssi, rate, channels);
}
+static const u64 rz_ssi_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rz_ssi_dai_ops = {
.startup = rz_ssi_startup,
.shutdown = rz_ssi_shutdown,
.trigger = rz_ssi_dai_trigger,
.set_fmt = rz_ssi_dai_set_fmt,
.hw_params = rz_ssi_dai_hw_params,
+ .auto_selectable_formats = &rz_ssi_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_pcm_hardware rz_ssi_pcm_hardware = {
diff --git a/sound/soc/renesas/siu_dai.c b/sound/soc/renesas/siu_dai.c
index 039b1264d90db..299a596295cac 100644
--- a/sound/soc/renesas/siu_dai.c
+++ b/sound/soc/renesas/siu_dai.c
@@ -688,12 +688,18 @@ static int siu_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
return ret;
}
+static const u64 siu_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops siu_dai_ops = {
.startup = siu_dai_startup,
.shutdown = siu_dai_shutdown,
.prepare = siu_dai_prepare,
.set_sysclk = siu_dai_set_sysclk,
.set_fmt = siu_dai_set_fmt,
+ .auto_selectable_formats = &siu_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver siu_i2s_dai = {
diff --git a/sound/soc/renesas/ssi.c b/sound/soc/renesas/ssi.c
index 96cf523c22734..f00067bafe8d2 100644
--- a/sound/soc/renesas/ssi.c
+++ b/sound/soc/renesas/ssi.c
@@ -329,6 +329,17 @@ static int ssi_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_U24_3LE | \
SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_U32_LE)
+static const u64 ssi_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops ssi_dai_ops = {
.startup = ssi_startup,
.shutdown = ssi_shutdown,
@@ -337,6 +348,8 @@ static const struct snd_soc_dai_ops ssi_dai_ops = {
.set_sysclk = ssi_set_sysclk,
.set_clkdiv = ssi_set_clkdiv,
.set_fmt = ssi_set_fmt,
+ .auto_selectable_formats = &ssi_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver sh4_ssi_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 73/83] ASoC: rockchip: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (71 preceding siblings ...)
2026-05-26 2:26 ` [PATCH 72/83] ASoC: renesas: " Kuninori Morimoto
@ 2026-05-26 2:26 ` Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 74/83] ASoC: samsung: " Kuninori Morimoto
` (10 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:26 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/rockchip/rockchip_i2s.c | 25 +++++++++++++++------
sound/soc/rockchip/rockchip_i2s_tdm.c | 27 +++++++++++++++++------
sound/soc/rockchip/rockchip_pdm.c | 14 ++++++++----
sound/soc/rockchip/rockchip_sai.c | 31 +++++++++++++++++++--------
4 files changed, 71 insertions(+), 26 deletions(-)
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 49ff86b35ef18..37d9989c90c78 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -537,13 +537,26 @@ static int rockchip_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 rockchip_i2s_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rockchip_i2s_dai_ops = {
- .probe = rockchip_i2s_dai_probe,
- .hw_params = rockchip_i2s_hw_params,
- .set_bclk_ratio = rockchip_i2s_set_bclk_ratio,
- .set_sysclk = rockchip_i2s_set_sysclk,
- .set_fmt = rockchip_i2s_set_fmt,
- .trigger = rockchip_i2s_trigger,
+ .probe = rockchip_i2s_dai_probe,
+ .hw_params = rockchip_i2s_hw_params,
+ .set_bclk_ratio = rockchip_i2s_set_bclk_ratio,
+ .set_sysclk = rockchip_i2s_set_sysclk,
+ .set_fmt = rockchip_i2s_set_fmt,
+ .trigger = rockchip_i2s_trigger,
+ .auto_selectable_formats = &rockchip_i2s_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver rockchip_i2s_dai = {
diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c
index 28fa253a51877..692b99c82d481 100644
--- a/sound/soc/rockchip/rockchip_i2s_tdm.c
+++ b/sound/soc/rockchip/rockchip_i2s_tdm.c
@@ -830,14 +830,27 @@ static int rockchip_i2s_tdm_set_bclk_ratio(struct snd_soc_dai *dai,
return 0;
}
+static const u64 rockchip_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rockchip_i2s_tdm_dai_ops = {
- .probe = rockchip_i2s_tdm_dai_probe,
- .hw_params = rockchip_i2s_tdm_hw_params,
- .set_bclk_ratio = rockchip_i2s_tdm_set_bclk_ratio,
- .set_fmt = rockchip_i2s_tdm_set_fmt,
- .set_sysclk = rockchip_i2s_tdm_set_sysclk,
- .set_tdm_slot = rockchip_dai_tdm_slot,
- .trigger = rockchip_i2s_tdm_trigger,
+ .probe = rockchip_i2s_tdm_dai_probe,
+ .hw_params = rockchip_i2s_tdm_hw_params,
+ .set_bclk_ratio = rockchip_i2s_tdm_set_bclk_ratio,
+ .set_fmt = rockchip_i2s_tdm_set_fmt,
+ .set_sysclk = rockchip_i2s_tdm_set_sysclk,
+ .set_tdm_slot = rockchip_dai_tdm_slot,
+ .trigger = rockchip_i2s_tdm_trigger,
+ .auto_selectable_formats = &rockchip_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_component_driver rockchip_i2s_tdm_component = {
diff --git a/sound/soc/rockchip/rockchip_pdm.c b/sound/soc/rockchip/rockchip_pdm.c
index c69cdd6f24994..7734c30969850 100644
--- a/sound/soc/rockchip/rockchip_pdm.c
+++ b/sound/soc/rockchip/rockchip_pdm.c
@@ -377,11 +377,17 @@ static int rockchip_pdm_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 rockchip_pdm_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops rockchip_pdm_dai_ops = {
- .probe = rockchip_pdm_dai_probe,
- .set_fmt = rockchip_pdm_set_fmt,
- .trigger = rockchip_pdm_trigger,
- .hw_params = rockchip_pdm_hw_params,
+ .probe = rockchip_pdm_dai_probe,
+ .set_fmt = rockchip_pdm_set_fmt,
+ .trigger = rockchip_pdm_trigger,
+ .hw_params = rockchip_pdm_hw_params,
+ .auto_selectable_formats = &rockchip_pdm_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define ROCKCHIP_PDM_RATES SNDRV_PCM_RATE_8000_192000
diff --git a/sound/soc/rockchip/rockchip_sai.c b/sound/soc/rockchip/rockchip_sai.c
index ed393e5034a49..4ee2b01ce7a99 100644
--- a/sound/soc/rockchip/rockchip_sai.c
+++ b/sound/soc/rockchip/rockchip_sai.c
@@ -956,16 +956,29 @@ static int rockchip_sai_set_sysclk(struct snd_soc_dai *dai, int stream,
return 0;
}
+static const u64 rockchip_sai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops rockchip_sai_dai_ops = {
- .probe = rockchip_sai_dai_probe,
- .startup = rockchip_sai_startup,
- .shutdown = rockchip_sai_shutdown,
- .hw_params = rockchip_sai_hw_params,
- .set_fmt = rockchip_sai_set_fmt,
- .set_sysclk = rockchip_sai_set_sysclk,
- .prepare = rockchip_sai_prepare,
- .trigger = rockchip_sai_trigger,
- .set_tdm_slot = rockchip_sai_set_tdm_slot,
+ .probe = rockchip_sai_dai_probe,
+ .startup = rockchip_sai_startup,
+ .shutdown = rockchip_sai_shutdown,
+ .hw_params = rockchip_sai_hw_params,
+ .set_fmt = rockchip_sai_set_fmt,
+ .set_sysclk = rockchip_sai_set_sysclk,
+ .prepare = rockchip_sai_prepare,
+ .trigger = rockchip_sai_trigger,
+ .set_tdm_slot = rockchip_sai_set_tdm_slot,
+ .auto_selectable_formats = &rockchip_sai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver rockchip_sai_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 74/83] ASoC: samsung: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (72 preceding siblings ...)
2026-05-26 2:26 ` [PATCH 73/83] ASoC: rockchip: " Kuninori Morimoto
@ 2026-05-26 2:26 ` Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 75/83] ASoC: spacemit: " Kuninori Morimoto
` (9 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:26 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/samsung/i2s.c | 29 +++++++++++++++++++----------
sound/soc/samsung/pcm.c | 9 +++++++++
2 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index f80f697a5d55d..bcd6f45212415 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -1099,17 +1099,26 @@ static int samsung_i2s_dai_remove(struct snd_soc_dai *dai)
return 0;
}
+static const u64 samsung_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF;
+
static const struct snd_soc_dai_ops samsung_i2s_dai_ops = {
- .probe = samsung_i2s_dai_probe,
- .remove = samsung_i2s_dai_remove,
- .trigger = i2s_trigger,
- .hw_params = i2s_hw_params,
- .set_fmt = i2s_set_fmt,
- .set_clkdiv = i2s_set_clkdiv,
- .set_sysclk = i2s_set_sysclk,
- .startup = i2s_startup,
- .shutdown = i2s_shutdown,
- .delay = i2s_delay,
+ .probe = samsung_i2s_dai_probe,
+ .remove = samsung_i2s_dai_remove,
+ .trigger = i2s_trigger,
+ .hw_params = i2s_hw_params,
+ .set_fmt = i2s_set_fmt,
+ .set_clkdiv = i2s_set_clkdiv,
+ .set_sysclk = i2s_set_sysclk,
+ .startup = i2s_startup,
+ .shutdown = i2s_shutdown,
+ .delay = i2s_delay,
+ .auto_selectable_formats = &samsung_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dapm_widget samsung_i2s_widgets[] = {
diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c
index 309f024bf2a4d..9602e4f21a3b3 100644
--- a/sound/soc/samsung/pcm.c
+++ b/sound/soc/samsung/pcm.c
@@ -422,6 +422,13 @@ static int s3c_pcm_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 s3c_pcm_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF;
+
static const struct snd_soc_dai_ops s3c_pcm_dai_ops = {
.probe = s3c_pcm_dai_probe,
.set_sysclk = s3c_pcm_set_sysclk,
@@ -429,6 +436,8 @@ static const struct snd_soc_dai_ops s3c_pcm_dai_ops = {
.trigger = s3c_pcm_trigger,
.hw_params = s3c_pcm_hw_params,
.set_fmt = s3c_pcm_set_fmt,
+ .auto_selectable_formats = &s3c_pcm_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define S3C_PCM_RATES SNDRV_PCM_RATE_8000_96000
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 75/83] ASoC: spacemit: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (73 preceding siblings ...)
2026-05-26 2:26 ` [PATCH 74/83] ASoC: samsung: " Kuninori Morimoto
@ 2026-05-26 2:27 ` Kuninori Morimoto
2026-05-27 1:45 ` Troy Mitchell
2026-05-26 2:27 ` [PATCH 76/83] ASoC: sti: " Kuninori Morimoto
` (8 subsequent siblings)
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:27 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/spacemit/k1_i2s.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c
index 5420ca2aefbd8..5a7b6d89efde1 100644
--- a/sound/soc/spacemit/k1_i2s.c
+++ b/sound/soc/spacemit/k1_i2s.c
@@ -317,6 +317,11 @@ static int spacemit_i2s_dai_remove(struct snd_soc_dai *dai)
return 0;
}
+static const u64 spacemit_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
static const struct snd_soc_dai_ops spacemit_i2s_dai_ops = {
.probe = spacemit_i2s_dai_probe,
.remove = spacemit_i2s_dai_remove,
@@ -325,6 +330,8 @@ static const struct snd_soc_dai_ops spacemit_i2s_dai_ops = {
.set_sysclk = spacemit_i2s_set_sysclk,
.set_fmt = spacemit_i2s_set_fmt,
.trigger = spacemit_i2s_trigger,
+ .auto_selectable_formats = &spacemit_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver spacemit_i2s_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 76/83] ASoC: sti: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (74 preceding siblings ...)
2026-05-26 2:27 ` [PATCH 75/83] ASoC: spacemit: " Kuninori Morimoto
@ 2026-05-26 2:27 ` Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 77/83] ASoC: stm: " Kuninori Morimoto
` (7 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:27 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/sti/uniperif_player.c | 29 ++++++++++++++++++++---------
sound/soc/sti/uniperif_reader.c | 27 +++++++++++++++++++--------
2 files changed, 39 insertions(+), 17 deletions(-)
diff --git a/sound/soc/sti/uniperif_player.c b/sound/soc/sti/uniperif_player.c
index 45d35b887e4eb..cb66bec68b136 100644
--- a/sound/soc/sti/uniperif_player.c
+++ b/sound/soc/sti/uniperif_player.c
@@ -1039,16 +1039,27 @@ static int uni_player_parse_dt_audio_glue(struct platform_device *pdev,
return 0;
}
+static const u64 uni_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops uni_player_dai_ops = {
- .startup = uni_player_startup,
- .shutdown = uni_player_shutdown,
- .prepare = uni_player_prepare,
- .probe = sti_uniperiph_dai_probe,
- .trigger = uni_player_trigger,
- .hw_params = sti_uniperiph_dai_hw_params,
- .set_fmt = sti_uniperiph_dai_set_fmt,
- .set_sysclk = uni_player_set_sysclk,
- .set_tdm_slot = sti_uniperiph_set_tdm_slot
+ .startup = uni_player_startup,
+ .shutdown = uni_player_shutdown,
+ .prepare = uni_player_prepare,
+ .probe = sti_uniperiph_dai_probe,
+ .trigger = uni_player_trigger,
+ .hw_params = sti_uniperiph_dai_hw_params,
+ .set_fmt = sti_uniperiph_dai_set_fmt,
+ .set_sysclk = uni_player_set_sysclk,
+ .set_tdm_slot = sti_uniperiph_set_tdm_slot,
+ .auto_selectable_formats = &uni_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
int uni_player_init(struct platform_device *pdev,
diff --git a/sound/soc/sti/uniperif_reader.c b/sound/soc/sti/uniperif_reader.c
index 05ea2b794eb92..9bfa4ef750071 100644
--- a/sound/soc/sti/uniperif_reader.c
+++ b/sound/soc/sti/uniperif_reader.c
@@ -397,15 +397,26 @@ static void uni_reader_shutdown(struct snd_pcm_substream *substream,
spin_unlock_irqrestore(&reader->irq_lock, flags);
}
+static const u64 uni_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops uni_reader_dai_ops = {
- .startup = uni_reader_startup,
- .shutdown = uni_reader_shutdown,
- .prepare = uni_reader_prepare,
- .probe = sti_uniperiph_dai_probe,
- .trigger = uni_reader_trigger,
- .hw_params = sti_uniperiph_dai_hw_params,
- .set_fmt = sti_uniperiph_dai_set_fmt,
- .set_tdm_slot = sti_uniperiph_set_tdm_slot
+ .startup = uni_reader_startup,
+ .shutdown = uni_reader_shutdown,
+ .prepare = uni_reader_prepare,
+ .probe = sti_uniperiph_dai_probe,
+ .trigger = uni_reader_trigger,
+ .hw_params = sti_uniperiph_dai_hw_params,
+ .set_fmt = sti_uniperiph_dai_set_fmt,
+ .set_tdm_slot = sti_uniperiph_set_tdm_slot,
+ .auto_selectable_formats = &uni_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
int uni_reader_init(struct platform_device *pdev,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 77/83] ASoC: stm: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (75 preceding siblings ...)
2026-05-26 2:27 ` [PATCH 76/83] ASoC: sti: " Kuninori Morimoto
@ 2026-05-26 2:27 ` Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 78/83] ASoC: sunxi: " Kuninori Morimoto
` (6 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:27 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/stm/stm32_i2s.c | 12 ++++++++++++
sound/soc/stm/stm32_sai_sub.c | 15 +++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/sound/soc/stm/stm32_i2s.c b/sound/soc/stm/stm32_i2s.c
index ae9e25657f3fe..d9ea26b1c7afd 100644
--- a/sound/soc/stm/stm32_i2s.c
+++ b/sound/soc/stm/stm32_i2s.c
@@ -1089,6 +1089,16 @@ static const struct regmap_config stm32_h7_i2s_regmap_conf = {
.cache_type = REGCACHE_FLAT,
};
+static const u64 stm32_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops stm32_i2s_pcm_dai_ops = {
.probe = stm32_i2s_dai_probe,
.set_sysclk = stm32_i2s_set_sysclk,
@@ -1097,6 +1107,8 @@ static const struct snd_soc_dai_ops stm32_i2s_pcm_dai_ops = {
.hw_params = stm32_i2s_hw_params,
.trigger = stm32_i2s_trigger,
.shutdown = stm32_i2s_shutdown,
+ .auto_selectable_formats = &stm32_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_pcm_hardware stm32_i2s_pcm_hw = {
diff --git a/sound/soc/stm/stm32_sai_sub.c b/sound/soc/stm/stm32_sai_sub.c
index ea9e8bddd63f0..e59bfa34af76c 100644
--- a/sound/soc/stm/stm32_sai_sub.c
+++ b/sound/soc/stm/stm32_sai_sub.c
@@ -1358,6 +1358,17 @@ static int stm32_sai_dai_probe(struct snd_soc_dai *cpu_dai)
return stm32_sai_sub_reg_up(sai, STM_SAI_CR1_REGX, cr1_mask, cr1);
}
+static const u64 stm32_sai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops stm32_sai_pcm_dai_ops = {
.probe = stm32_sai_dai_probe,
.set_sysclk = stm32_sai_set_sysclk,
@@ -1368,6 +1379,8 @@ static const struct snd_soc_dai_ops stm32_sai_pcm_dai_ops = {
.trigger = stm32_sai_trigger,
.shutdown = stm32_sai_shutdown,
.pcm_new = stm32_sai_pcm_new,
+ .auto_selectable_formats = &stm32_sai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_ops stm32_sai_pcm_dai_ops2 = {
@@ -1379,6 +1392,8 @@ static const struct snd_soc_dai_ops stm32_sai_pcm_dai_ops2 = {
.hw_params = stm32_sai_hw_params,
.trigger = stm32_sai_trigger,
.shutdown = stm32_sai_shutdown,
+ .auto_selectable_formats = &stm32_sai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static int stm32_sai_pcm_process_spdif(struct snd_pcm_substream *substream,
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 78/83] ASoC: sunxi: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (76 preceding siblings ...)
2026-05-26 2:27 ` [PATCH 77/83] ASoC: stm: " Kuninori Morimoto
@ 2026-05-26 2:27 ` Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 79/83] ASoC: tegra: " Kuninori Morimoto
` (5 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:27 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/sunxi/sun4i-i2s.c | 13 +++++++++++++
sound/soc/sunxi/sun8i-codec.c | 13 +++++++++++++
2 files changed, 26 insertions(+)
diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index 40de99a34bc3c..0c4fa028e1db7 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -1106,6 +1106,17 @@ static int sun4i_i2s_dai_startup(struct snd_pcm_substream *sub, struct snd_soc_d
i2s->variant->pcm_formats);
}
+static const u64 sun4i_i2s_selectable_format =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops sun4i_i2s_dai_ops = {
.probe = sun4i_i2s_dai_probe,
.startup = sun4i_i2s_dai_startup,
@@ -1114,6 +1125,8 @@ static const struct snd_soc_dai_ops sun4i_i2s_dai_ops = {
.set_sysclk = sun4i_i2s_set_sysclk,
.set_tdm_slot = sun4i_i2s_set_tdm_slot,
.trigger = sun4i_i2s_trigger,
+ .auto_selectable_formats = &sun4i_i2s_selectable_format,
+ .num_auto_selectable_formats = 1,
};
#define SUN4I_FORMATS_ALL (SNDRV_PCM_FMTBIT_S16_LE | \
diff --git a/sound/soc/sunxi/sun8i-codec.c b/sound/soc/sunxi/sun8i-codec.c
index 6bd42da57ac01..2e4a205e4e565 100644
--- a/sound/soc/sunxi/sun8i-codec.c
+++ b/sound/soc/sunxi/sun8i-codec.c
@@ -688,12 +688,25 @@ static int sun8i_codec_hw_free(struct snd_pcm_substream *substream,
return 0;
}
+static const u64 sun8i_codec_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops sun8i_codec_dai_ops = {
.set_fmt = sun8i_codec_set_fmt,
.set_tdm_slot = sun8i_codec_set_tdm_slot,
.startup = sun8i_codec_startup,
.hw_params = sun8i_codec_hw_params,
.hw_free = sun8i_codec_hw_free,
+ .auto_selectable_formats = &sun8i_codec_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver sun8i_codec_dais[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 79/83] ASoC: tegra: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (77 preceding siblings ...)
2026-05-26 2:27 ` [PATCH 78/83] ASoC: sunxi: " Kuninori Morimoto
@ 2026-05-26 2:27 ` Kuninori Morimoto
2026-05-26 2:28 ` [PATCH 80/83] ASoC: ti: " Kuninori Morimoto
` (4 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:27 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/tegra/tegra20_i2s.c | 10 ++++++++++
sound/soc/tegra/tegra210_i2s.c | 13 +++++++++++++
sound/soc/tegra/tegra30_i2s.c | 10 ++++++++++
3 files changed, 33 insertions(+)
diff --git a/sound/soc/tegra/tegra20_i2s.c b/sound/soc/tegra/tegra20_i2s.c
index d9ab210ad69a9..b31f9477cb2eb 100644
--- a/sound/soc/tegra/tegra20_i2s.c
+++ b/sound/soc/tegra/tegra20_i2s.c
@@ -309,12 +309,22 @@ static int tegra20_i2s_startup(struct snd_pcm_substream *substream,
SNDRV_PCM_HW_PARAM_RATE, -1);
}
+static const u64 tegra20_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
static const struct snd_soc_dai_ops tegra20_i2s_dai_ops = {
.probe = tegra20_i2s_probe,
.set_fmt = tegra20_i2s_set_fmt,
.hw_params = tegra20_i2s_hw_params,
.trigger = tegra20_i2s_trigger,
.startup = tegra20_i2s_startup,
+ .auto_selectable_formats = &tegra20_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver tegra20_i2s_dai_template = {
diff --git a/sound/soc/tegra/tegra210_i2s.c b/sound/soc/tegra/tegra210_i2s.c
index 0259b137547c0..9fb19415dd15b 100644
--- a/sound/soc/tegra/tegra210_i2s.c
+++ b/sound/soc/tegra/tegra210_i2s.c
@@ -728,11 +728,24 @@ static int tegra210_i2s_hw_params(struct snd_pcm_substream *substream,
cif_conf.client_ch);
}
+static const u64 tegra210_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops tegra210_i2s_dai_ops = {
.set_fmt = tegra210_i2s_set_fmt,
.hw_params = tegra210_i2s_hw_params,
.set_bclk_ratio = tegra210_i2s_set_dai_bclk_ratio,
.set_tdm_slot = tegra210_i2s_set_tdm_slot,
+ .auto_selectable_formats = &tegra210_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver tegra210_i2s_dais[] = {
diff --git a/sound/soc/tegra/tegra30_i2s.c b/sound/soc/tegra/tegra30_i2s.c
index 1d7b3aed51fd9..69acff73f68ad 100644
--- a/sound/soc/tegra/tegra30_i2s.c
+++ b/sound/soc/tegra/tegra30_i2s.c
@@ -302,12 +302,22 @@ static int tegra30_i2s_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 tegra30_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops tegra30_i2s_dai_ops = {
.probe = tegra30_i2s_probe,
.set_fmt = tegra30_i2s_set_fmt,
.hw_params = tegra30_i2s_hw_params,
.trigger = tegra30_i2s_trigger,
.set_tdm_slot = tegra30_i2s_set_tdm,
+ .auto_selectable_formats = &tegra30_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static const struct snd_soc_dai_driver tegra30_i2s_dai_template = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 80/83] ASoC: ti: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (78 preceding siblings ...)
2026-05-26 2:27 ` [PATCH 79/83] ASoC: tegra: " Kuninori Morimoto
@ 2026-05-26 2:28 ` Kuninori Morimoto
2026-05-26 2:28 ` [PATCH 81/83] ASoC: uniphier: " Kuninori Morimoto
` (3 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:28 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/ti/davinci-i2s.c | 14 +++++++++++++-
sound/soc/ti/davinci-mcasp.c | 14 ++++++++++++++
sound/soc/ti/omap-mcbsp.c | 12 ++++++++++++
3 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/sound/soc/ti/davinci-i2s.c b/sound/soc/ti/davinci-i2s.c
index 059967f0e632c..ec7eb2f19b6fc 100644
--- a/sound/soc/ti/davinci-i2s.c
+++ b/sound/soc/ti/davinci-i2s.c
@@ -743,6 +743,17 @@ static int davinci_i2s_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 davinci_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_CONT |
+ SND_SOC_POSSIBLE_DAIFMT_GATED |
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops davinci_i2s_dai_ops = {
.probe = davinci_i2s_dai_probe,
.shutdown = davinci_i2s_shutdown,
@@ -752,7 +763,8 @@ static const struct snd_soc_dai_ops davinci_i2s_dai_ops = {
.set_fmt = davinci_i2s_set_dai_fmt,
.set_clkdiv = davinci_i2s_dai_set_clkdiv,
.set_tdm_slot = davinci_i2s_set_tdm_slot,
-
+ .auto_selectable_formats = &davinci_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver davinci_i2s_dai = {
diff --git a/sound/soc/ti/davinci-mcasp.c b/sound/soc/ti/davinci-mcasp.c
index f229f847eaf4e..da1713ca36c51 100644
--- a/sound/soc/ti/davinci-mcasp.c
+++ b/sound/soc/ti/davinci-mcasp.c
@@ -1969,6 +1969,18 @@ static int davinci_mcasp_dai_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 davinci_mcasp_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_AC97 |
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF;
+
static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = {
.probe = davinci_mcasp_dai_probe,
.startup = davinci_mcasp_startup,
@@ -1980,6 +1992,8 @@ static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = {
.set_clkdiv = davinci_mcasp_set_clkdiv,
.set_sysclk = davinci_mcasp_set_sysclk,
.set_tdm_slot = davinci_mcasp_set_tdm_slot,
+ .auto_selectable_formats = &davinci_mcasp_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
#define DAVINCI_MCASP_RATES SNDRV_PCM_RATE_8000_192000
diff --git a/sound/soc/ti/omap-mcbsp.c b/sound/soc/ti/omap-mcbsp.c
index 26af616c33f51..5734388a4e4b1 100644
--- a/sound/soc/ti/omap-mcbsp.c
+++ b/sound/soc/ti/omap-mcbsp.c
@@ -1269,6 +1269,16 @@ static int omap_mcbsp_remove(struct snd_soc_dai *dai)
return 0;
}
+static const u64 mcbsp_mcbsp_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_IB_IF;
+
static const struct snd_soc_dai_ops mcbsp_dai_ops = {
.probe = omap_mcbsp_probe,
.remove = omap_mcbsp_remove,
@@ -1281,6 +1291,8 @@ static const struct snd_soc_dai_ops mcbsp_dai_ops = {
.set_fmt = omap_mcbsp_dai_set_dai_fmt,
.set_clkdiv = omap_mcbsp_dai_set_clkdiv,
.set_sysclk = omap_mcbsp_dai_set_dai_sysclk,
+ .auto_selectable_formats = &mcbsp_mcbsp_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver omap_mcbsp_dai = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 81/83] ASoC: uniphier: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (79 preceding siblings ...)
2026-05-26 2:28 ` [PATCH 80/83] ASoC: ti: " Kuninori Morimoto
@ 2026-05-26 2:28 ` Kuninori Morimoto
2026-05-26 2:29 ` [PATCH 82/83] ASoC: ux500: " Kuninori Morimoto
` (2 subsequent siblings)
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:28 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/uniphier/aio-cpu.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/sound/soc/uniphier/aio-cpu.c b/sound/soc/uniphier/aio-cpu.c
index d3dba21b2d049..a72e7b5864107 100644
--- a/sound/soc/uniphier/aio-cpu.c
+++ b/sound/soc/uniphier/aio-cpu.c
@@ -440,6 +440,11 @@ static int uniphier_aio_pxs2_probe(struct snd_soc_dai *dai)
return 0;
}
+static const u64 uniphier_aio_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
+ SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
+
const struct snd_soc_dai_ops uniphier_aio_i2s_ld11_ops = {
.probe = uniphier_aio_ld11_probe,
.remove = uniphier_aio_dai_remove,
@@ -451,6 +456,8 @@ const struct snd_soc_dai_ops uniphier_aio_i2s_ld11_ops = {
.hw_params = uniphier_aio_hw_params,
.hw_free = uniphier_aio_hw_free,
.prepare = uniphier_aio_prepare,
+ .auto_selectable_formats = &uniphier_aio_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(uniphier_aio_i2s_ld11_ops);
@@ -492,6 +499,8 @@ const struct snd_soc_dai_ops uniphier_aio_i2s_pxs2_ops = {
.hw_params = uniphier_aio_hw_params,
.hw_free = uniphier_aio_hw_free,
.prepare = uniphier_aio_prepare,
+ .auto_selectable_formats = &uniphier_aio_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
EXPORT_SYMBOL_GPL(uniphier_aio_i2s_pxs2_ops);
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 82/83] ASoC: ux500: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (80 preceding siblings ...)
2026-05-26 2:28 ` [PATCH 81/83] ASoC: uniphier: " Kuninori Morimoto
@ 2026-05-26 2:29 ` Kuninori Morimoto
2026-05-26 2:29 ` [PATCH 83/83] ASoC: xtensa: " Kuninori Morimoto
2026-06-01 0:01 ` [PATCH 00/83] ASoC: " Kuninori Morimoto
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:29 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/ux500/ux500_msp_dai.c | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c
index 7798957c6504d..68cf2d21f184a 100644
--- a/sound/soc/ux500/ux500_msp_dai.c
+++ b/sound/soc/ux500/ux500_msp_dai.c
@@ -681,18 +681,25 @@ static int ux500_msp_dai_of_probe(struct snd_soc_dai *dai)
return 0;
}
-static const struct snd_soc_dai_ops ux500_msp_dai_ops[] = {
- {
- .probe = ux500_msp_dai_of_probe,
- .set_sysclk = ux500_msp_dai_set_dai_sysclk,
- .set_fmt = ux500_msp_dai_set_dai_fmt,
- .set_tdm_slot = ux500_msp_dai_set_tdm_slot,
- .startup = ux500_msp_dai_startup,
- .shutdown = ux500_msp_dai_shutdown,
- .prepare = ux500_msp_dai_prepare,
- .trigger = ux500_msp_dai_trigger,
- .hw_params = ux500_msp_dai_hw_params,
- }
+static const u64 ux500_msp_dai_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF |
+ SND_SOC_POSSIBLE_DAIFMT_NB_IF |
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_A |
+ SND_SOC_POSSIBLE_DAIFMT_DSP_B;
+
+static const struct snd_soc_dai_ops ux500_msp_dai_ops = {
+ .probe = ux500_msp_dai_of_probe,
+ .set_sysclk = ux500_msp_dai_set_dai_sysclk,
+ .set_fmt = ux500_msp_dai_set_dai_fmt,
+ .set_tdm_slot = ux500_msp_dai_set_tdm_slot,
+ .startup = ux500_msp_dai_startup,
+ .shutdown = ux500_msp_dai_shutdown,
+ .prepare = ux500_msp_dai_prepare,
+ .trigger = ux500_msp_dai_trigger,
+ .hw_params = ux500_msp_dai_hw_params,
+ .auto_selectable_formats = &ux500_msp_dai_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver ux500_msp_dai_drv = {
@@ -704,7 +711,7 @@ static struct snd_soc_dai_driver ux500_msp_dai_drv = {
.capture.channels_max = UX500_MSP_MAX_CHANNELS,
.capture.rates = UX500_I2S_RATES,
.capture.formats = UX500_I2S_FORMATS,
- .ops = ux500_msp_dai_ops,
+ .ops = &ux500_msp_dai_ops,
};
static const struct snd_soc_component_driver ux500_msp_component = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* [PATCH 83/83] ASoC: xtensa: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (81 preceding siblings ...)
2026-05-26 2:29 ` [PATCH 82/83] ASoC: ux500: " Kuninori Morimoto
@ 2026-05-26 2:29 ` Kuninori Morimoto
2026-06-01 0:01 ` [PATCH 00/83] ASoC: " Kuninori Morimoto
83 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 2:29 UTC (permalink / raw)
To: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
We can use .auto_selectable_formats. Let's adds it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
sound/soc/xtensa/xtfpga-i2s.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/sound/soc/xtensa/xtfpga-i2s.c b/sound/soc/xtensa/xtfpga-i2s.c
index 9ad86c54e3ea1..00a0a3c740084 100644
--- a/sound/soc/xtensa/xtfpga-i2s.c
+++ b/sound/soc/xtensa/xtfpga-i2s.c
@@ -485,10 +485,16 @@ static const struct snd_soc_component_driver xtfpga_i2s_component = {
.legacy_dai_naming = 1,
};
+static const u64 xtfpga_i2s_selectable_formats =
+ SND_SOC_POSSIBLE_DAIFMT_I2S |
+ SND_SOC_POSSIBLE_DAIFMT_NB_NF;
+
static const struct snd_soc_dai_ops xtfpga_i2s_dai_ops = {
- .startup = xtfpga_i2s_startup,
- .hw_params = xtfpga_i2s_hw_params,
- .set_fmt = xtfpga_i2s_set_fmt,
+ .startup = xtfpga_i2s_startup,
+ .hw_params = xtfpga_i2s_hw_params,
+ .set_fmt = xtfpga_i2s_set_fmt,
+ .auto_selectable_formats = &xtfpga_i2s_selectable_formats,
+ .num_auto_selectable_formats = 1,
};
static struct snd_soc_dai_driver xtfpga_i2s_dai[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 100+ messages in thread
* Re: [PATCH 69/83] ASoC: meson: use .auto_selectable_formats
2026-05-26 2:25 ` [PATCH 69/83] ASoC: meson: " Kuninori Morimoto
@ 2026-05-26 7:35 ` Jerome Brunet
0 siblings, 0 replies; 100+ messages in thread
From: Jerome Brunet @ 2026-05-26 7:35 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: Alvin Šipraga, J.M.B. Downing, Martin Povišer,
Nuno Sá, Uwe Kleine-König (The Capable Hub),
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
On mar. 26 mai 2026 at 02:25, Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote:
> We can use .auto_selectable_formats. Let's adds it.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> sound/soc/meson/t9015.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/sound/soc/meson/t9015.c b/sound/soc/meson/t9015.c
> index da1a93946d679..085f771eb244f 100644
> --- a/sound/soc/meson/t9015.c
> +++ b/sound/soc/meson/t9015.c
> @@ -78,8 +78,14 @@ static int t9015_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
> return 0;
> }
>
> +static const u64 t9015_dai_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
> +
> static const struct snd_soc_dai_ops t9015_dai_ops = {
> .set_fmt = t9015_dai_set_fmt,
> + .auto_selectable_formats = &t9015_dai_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> static struct snd_soc_dai_driver t9015_dai = {
Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 25/83] ASoC: codecs: cpcap: use .auto_selectable_formats
2026-05-26 2:14 ` [PATCH 25/83] ASoC: codecs: cpcap: " Kuninori Morimoto
@ 2026-05-26 18:26 ` Mark Brown
2026-05-26 22:44 ` Kuninori Morimoto
0 siblings, 1 reply; 100+ messages in thread
From: Mark Brown @ 2026-05-26 18:26 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
[-- Attachment #1: Type: text/plain, Size: 873 bytes --]
On Tue, May 26, 2026 at 02:14:08AM +0000, Kuninori Morimoto wrote:
> We can use .auto_selectable_formats. Let's adds it.
> +/* FIXME: non I2S ? */
> +static const u64 cpcap_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_B |
> + SND_SOC_POSSIBLE_DAIFMT_AC97 |
> + SND_SOC_POSSIBLE_DAIFMT_PDM |
> + SND_SOC_POSSIBLE_DAIFMT_NB_NF |
> + SND_SOC_POSSIBLE_DAIFMT_NB_IF |
> + SND_SOC_POSSIBLE_DAIFMT_IB_NF |
> + SND_SOC_POSSIBLE_DAIFMT_IB_IF;
I would be astonished if ths supported AC'97 or PCM. There's a comment
saying:
/*
* "HiFi Playback" should always be configured as
* SND_SOC_DAIFMT_CBP_CFP - codec clk & frm provider
* SND_SOC_DAIFMT_I2S - I2S mode
*/
switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 59/83] ASoC: codecs: wm*: use .auto_selectable_formats
2026-05-26 2:22 ` [PATCH 59/83] ASoC: codecs: wm*: " Kuninori Morimoto
@ 2026-05-26 18:29 ` Mark Brown
2026-05-26 22:51 ` Kuninori Morimoto
0 siblings, 1 reply; 100+ messages in thread
From: Mark Brown @ 2026-05-26 18:29 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
[-- Attachment #1: Type: text/plain, Size: 859 bytes --]
On Tue, May 26, 2026 at 02:22:52AM +0000, Kuninori Morimoto wrote:
> SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
>
> +static const u64 wm8737_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_B |
> + SND_SOC_POSSIBLE_DAIFMT_AC97 |
> + SND_SOC_POSSIBLE_DAIFMT_PDM |
> + SND_SOC_POSSIBLE_DAIFMT_GATED |
> + SND_SOC_POSSIBLE_DAIFMT_CONT |
> + SND_SOC_POSSIBLE_DAIFMT_NB_NF |
> + SND_SOC_POSSIBLE_DAIFMT_NB_IF |
> + SND_SOC_POSSIBLE_DAIFMT_IB_NF |
> + SND_SOC_POSSIBLE_DAIFMT_IB_IF;
> +
This is way more than the device supports, AC'97 and PDM both jump out:
https://www.mouser.com/datasheet/2/76/wm8737-519090.pdf
Looks like we need a bit more checking of the formats.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 25/83] ASoC: codecs: cpcap: use .auto_selectable_formats
2026-05-26 18:26 ` Mark Brown
@ 2026-05-26 22:44 ` Kuninori Morimoto
2026-05-26 22:55 ` Mark Brown
0 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 22:44 UTC (permalink / raw)
To: Mark Brown
Cc: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
Hi Mark
Thank you for the review
> > +/* FIXME: non I2S ? */
> > +static const u64 cpcap_selectable_formats =
> > + SND_SOC_POSSIBLE_DAIFMT_I2S |
> > + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> > + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> > + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> > + SND_SOC_POSSIBLE_DAIFMT_DSP_B |
> > + SND_SOC_POSSIBLE_DAIFMT_AC97 |
> > + SND_SOC_POSSIBLE_DAIFMT_PDM |
> > + SND_SOC_POSSIBLE_DAIFMT_NB_NF |
> > + SND_SOC_POSSIBLE_DAIFMT_NB_IF |
> > + SND_SOC_POSSIBLE_DAIFMT_IB_NF |
> > + SND_SOC_POSSIBLE_DAIFMT_IB_IF;
>
> I would be astonished if ths supported AC'97 or PCM. There's a comment
> saying:
>
>
> /*
> * "HiFi Playback" should always be configured as
> * SND_SOC_DAIFMT_CBP_CFP - codec clk & frm provider
> * SND_SOC_DAIFMT_I2S - I2S mode
> */
> switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
Thank you for pointing it.
The reason of above formats is it cares I2S or others.
AC97/PDM are not handled as error here.
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S:
...
break;
default:
...
break;
}
I'm not 100% sure about this codec, but should v2 ommit AC97/PDM ?
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 59/83] ASoC: codecs: wm*: use .auto_selectable_formats
2026-05-26 18:29 ` Mark Brown
@ 2026-05-26 22:51 ` Kuninori Morimoto
0 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-05-26 22:51 UTC (permalink / raw)
To: Mark Brown
Cc: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
Hi Mark
> > +static const u64 wm8737_selectable_formats =
> > + SND_SOC_POSSIBLE_DAIFMT_I2S |
> > + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> > + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> > + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> > + SND_SOC_POSSIBLE_DAIFMT_DSP_B |
> > + SND_SOC_POSSIBLE_DAIFMT_AC97 |
> > + SND_SOC_POSSIBLE_DAIFMT_PDM |
> > + SND_SOC_POSSIBLE_DAIFMT_GATED |
> > + SND_SOC_POSSIBLE_DAIFMT_CONT |
> > + SND_SOC_POSSIBLE_DAIFMT_NB_NF |
> > + SND_SOC_POSSIBLE_DAIFMT_NB_IF |
> > + SND_SOC_POSSIBLE_DAIFMT_IB_NF |
> > + SND_SOC_POSSIBLE_DAIFMT_IB_IF;
> > +
>
> This is way more than the device supports, AC'97 and PDM both jump out:
Hmm.. indeed. v2 will be
static const u64 wm8737_selectable_formats =
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B |
SND_SOC_POSSIBLE_DAIFMT_NB_NF |
SND_SOC_POSSIBLE_DAIFMT_NB_IF;
> Looks like we need a bit more checking of the formats.
Thank you.
This is not super important patch-set, but are wide.
I will post v2 2 or 3 weeks later.
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 25/83] ASoC: codecs: cpcap: use .auto_selectable_formats
2026-05-26 22:44 ` Kuninori Morimoto
@ 2026-05-26 22:55 ` Mark Brown
0 siblings, 0 replies; 100+ messages in thread
From: Mark Brown @ 2026-05-26 22:55 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: "Alvin Šipraga", J.M.B. Downing,
"Martin Povišer", "Nuno Sá",
"Uwe Kleine-König (The Capable Hub)",
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
[-- Attachment #1: Type: text/plain, Size: 1035 bytes --]
On Tue, May 26, 2026 at 10:44:41PM +0000, Kuninori Morimoto wrote:
> > > +/* FIXME: non I2S ? */
> > > +static const u64 cpcap_selectable_formats =
> > > + SND_SOC_POSSIBLE_DAIFMT_I2S |
> > > + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> > > + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> > > + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> > > + SND_SOC_POSSIBLE_DAIFMT_DSP_B |
> > > + SND_SOC_POSSIBLE_DAIFMT_AC97 |
> > > + SND_SOC_POSSIBLE_DAIFMT_PDM |
> > > + SND_SOC_POSSIBLE_DAIFMT_NB_NF |
> > > + SND_SOC_POSSIBLE_DAIFMT_NB_IF |
> > > + SND_SOC_POSSIBLE_DAIFMT_IB_NF |
> > > + SND_SOC_POSSIBLE_DAIFMT_IB_IF;
> > /*
> > * "HiFi Playback" should always be configured as
> > * SND_SOC_DAIFMT_CBP_CFP - codec clk & frm provider
> > * SND_SOC_DAIFMT_I2S - I2S mode
> > */
> > switch (fmt & SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK) {
> Thank you for pointing it.
> The reason of above formats is it cares I2S or others.
> AC97/PDM are not handled as error here.
...
> I'm not 100% sure about this codec, but should v2 ommit AC97/PDM ?
Pretty sure, yes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 75/83] ASoC: spacemit: use .auto_selectable_formats
2026-05-26 2:27 ` [PATCH 75/83] ASoC: spacemit: " Kuninori Morimoto
@ 2026-05-27 1:45 ` Troy Mitchell
0 siblings, 0 replies; 100+ messages in thread
From: Troy Mitchell @ 2026-05-27 1:45 UTC (permalink / raw)
To: Kuninori Morimoto, 'Alvin Šipraga', J.M.B. Downing,
'Martin Povišer', 'Nuno Sá',
'Uwe Kleine-König (The Capable Hub)',
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
On Tue May 26, 2026 at 10:27 AM CST, Kuninori Morimoto wrote:
> We can use .auto_selectable_formats. Let's adds it.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> sound/soc/spacemit/k1_i2s.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/sound/soc/spacemit/k1_i2s.c b/sound/soc/spacemit/k1_i2s.c
> index 5420ca2aefbd8..5a7b6d89efde1 100644
> --- a/sound/soc/spacemit/k1_i2s.c
> +++ b/sound/soc/spacemit/k1_i2s.c
> @@ -317,6 +317,11 @@ static int spacemit_i2s_dai_remove(struct snd_soc_dai *dai)
> return 0;
> }
>
> +static const u64 spacemit_i2s_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_B;
> +
> static const struct snd_soc_dai_ops spacemit_i2s_dai_ops = {
> .probe = spacemit_i2s_dai_probe,
> .remove = spacemit_i2s_dai_remove,
> @@ -325,6 +330,8 @@ static const struct snd_soc_dai_ops spacemit_i2s_dai_ops = {
> .set_sysclk = spacemit_i2s_set_sysclk,
> .set_fmt = spacemit_i2s_set_fmt,
> .trigger = spacemit_i2s_trigger,
> + .auto_selectable_formats = &spacemit_i2s_selectable_formats,
> + .num_auto_selectable_formats = 1,
Reviewed-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 43/83] ASoC: codecs: pcm*: use .auto_selectable_formats
2026-05-26 2:19 ` [PATCH 43/83] ASoC: codecs: pcm*: " Kuninori Morimoto
@ 2026-05-30 19:33 ` Kirill Marinushkin
2026-06-01 0:07 ` Kuninori Morimoto
0 siblings, 1 reply; 100+ messages in thread
From: Kirill Marinushkin @ 2026-05-30 19:33 UTC (permalink / raw)
To: Kuninori Morimoto, Alvin Šipraga, J.M.B. Downing,
Martin Povišer, Nuno Sá,
Uwe Kleine-König (The Capable Hub), Alexandre Belloni,
Alexandre Torgue, AngeloGioacchino Del Regno, Arnaud Pouliquen,
Baojun Xu, Bartosz Golaszewski, Ben Bright, Benson Leung,
Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax, Chen-Yu Tsai,
Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea, Daniel Mack,
Dario Binacchi, David Rhodes, Fabio Estevam, Florian Fainelli,
Frank Li, Fred Treven, Geert Uytterhoeven, Guenter Roeck,
Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala, Heiko Stuebner,
Herve Codina, Hsieh Hung-En, James Ogletree, Jarkko Nikula,
Jaroslav Kysela, Jernej Skrabec, Jerome Brunet, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kiseok Jo, Krzysztof Kozlowski, Kunihiko Hayashi, Lad Prabhakar,
Lars-Peter Clausen, Liam Girdwood, Luca Ceresoli, M R Swami Reddy,
Mark Brown, Martin Blumenstingl, Masami Hiramatsu,
Matthias Brugger, Max Filippov, Maxime Coquelin, Neil Armstrong,
Nicolas Ferre, Nicolas Frattaroli, Nicolin Chen, Oder Chiou,
Olivier Moysan, Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk,
Qianfeng Rong, Ray Jui, Richard Fitzgerald, Robert Jarzmik,
Samuel Holland, Sascha Hauer, Scott Branden, Sen Wang,
Sharique Mohammad, Shenghao Ding, Shengjiu Wang, Steven Eckhoff,
Support Opensource, Sylwester Nawrocki, Takashi Iwai,
Thierry Reding, Tim Bird, Troy Mitchell, Tzung-Bi Shih,
Venkata Prasad Potturu, Vijendar Mukunda, Vishwas A Deshpande,
Vladimir Zapolskiy, Xiubo Li, Yixun Lan, Zhang Yi, linux-sound
Hello Kuninori Morimoto,
i looked at the [PATCH 43/83], related to pcm* codecs, it looks good to me!
I don't think i would be able to embrace the whole patchset, but hopefully,
my review will be at least somewhat helpful!
Only one minor thought is that probably `.auto_selectable_formats` for
`pcm3060.c`
could also include `SND_SOC_POSSIBLE_DAIFMT_NB_NF`, similar to `pcm186x.c`.
But it's a tiny comment, you don't need to take it seriously.
You are doing a massive work, i deeply respect the scope you take on!
Reviewed-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Best regards,
Kirill
---
On 5/26/26 4:19 AM, Kuninori Morimoto wrote:
> We can use .auto_selectable_formats. Let's adds it.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> sound/soc/codecs/pcm1681.c | 7 +++++++
> sound/soc/codecs/pcm1754.c | 6 ++++++
> sound/soc/codecs/pcm1789.c | 7 +++++++
> sound/soc/codecs/pcm179x.c | 6 ++++++
> sound/soc/codecs/pcm186x.c | 9 +++++++++
> sound/soc/codecs/pcm3060.c | 7 +++++++
> sound/soc/codecs/pcm512x.c | 9 +++++++++
> 7 files changed, 51 insertions(+)
>
> diff --git a/sound/soc/codecs/pcm1681.c b/sound/soc/codecs/pcm1681.c
> index cb923cecb47fc..60fdbe5c4e054 100644
> --- a/sound/soc/codecs/pcm1681.c
> +++ b/sound/soc/codecs/pcm1681.c
> @@ -199,10 +199,17 @@ static int pcm1681_hw_params(struct snd_pcm_substream *substream,
> return pcm1681_set_deemph(component);
> }
>
> +static const u64 pcm1681_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
> +
> static const struct snd_soc_dai_ops pcm1681_dai_ops = {
> .set_fmt = pcm1681_set_dai_fmt,
> .hw_params = pcm1681_hw_params,
> .mute_stream = pcm1681_mute,
> + .auto_selectable_formats = &pcm1681_selectable_formats,
> + .num_auto_selectable_formats = 1,
> .no_capture_mute = 1,
> };
>
> diff --git a/sound/soc/codecs/pcm1754.c b/sound/soc/codecs/pcm1754.c
> index b68a528000be8..bb15da1c24aa2 100644
> --- a/sound/soc/codecs/pcm1754.c
> +++ b/sound/soc/codecs/pcm1754.c
> @@ -78,10 +78,16 @@ static int pcm1754_mute_stream(struct snd_soc_dai *dai, int mute, int stream)
> return 0;
> }
>
> +static const u64 pcm1754_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J;
> +
> static const struct snd_soc_dai_ops pcm1754_dai_ops = {
> .set_fmt = pcm1754_set_dai_fmt,
> .hw_params = pcm1754_hw_params,
> .mute_stream = pcm1754_mute_stream,
> + .auto_selectable_formats = &pcm1754_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> static const struct snd_soc_dai_driver pcm1754_dai = {
> diff --git a/sound/soc/codecs/pcm1789.c b/sound/soc/codecs/pcm1789.c
> index 3ab381e9a8566..f06e353743aaa 100644
> --- a/sound/soc/codecs/pcm1789.c
> +++ b/sound/soc/codecs/pcm1789.c
> @@ -164,11 +164,18 @@ static int pcm1789_trigger(struct snd_pcm_substream *substream, int cmd,
> return ret;
> }
>
> +static const u64 pcm1789_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
> +
> static const struct snd_soc_dai_ops pcm1789_dai_ops = {
> .set_fmt = pcm1789_set_dai_fmt,
> .hw_params = pcm1789_hw_params,
> .mute_stream = pcm1789_mute,
> .trigger = pcm1789_trigger,
> + .auto_selectable_formats = &pcm1789_selectable_formats,
> + .num_auto_selectable_formats = 1,
> .no_capture_mute = 1,
> };
>
> diff --git a/sound/soc/codecs/pcm179x.c b/sound/soc/codecs/pcm179x.c
> index f52ff66b6e644..cb70927872aa0 100644
> --- a/sound/soc/codecs/pcm179x.c
> +++ b/sound/soc/codecs/pcm179x.c
> @@ -142,10 +142,16 @@ static int pcm179x_hw_params(struct snd_pcm_substream *substream,
> return 0;
> }
>
> +static const u64 pcm179x_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J;
> +
> static const struct snd_soc_dai_ops pcm179x_dai_ops = {
> .set_fmt = pcm179x_set_dai_fmt,
> .hw_params = pcm179x_hw_params,
> .mute_stream = pcm179x_mute,
> + .auto_selectable_formats = &pcm179x_selectable_formats,
> + .num_auto_selectable_formats = 1,
> .no_capture_mute = 1,
> };
>
> diff --git a/sound/soc/codecs/pcm186x.c b/sound/soc/codecs/pcm186x.c
> index 0d1103fe4e04d..461ec74e87521 100644
> --- a/sound/soc/codecs/pcm186x.c
> +++ b/sound/soc/codecs/pcm186x.c
> @@ -473,11 +473,20 @@ static int pcm186x_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id,
> return 0;
> }
>
> +static const u64 pcm186x_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_B |
> + SND_SOC_POSSIBLE_DAIFMT_NB_NF;
> +
> static const struct snd_soc_dai_ops pcm186x_dai_ops = {
> .set_sysclk = pcm186x_set_dai_sysclk,
> .set_tdm_slot = pcm186x_set_tdm_slot,
> .set_fmt = pcm186x_set_fmt,
> .hw_params = pcm186x_hw_params,
> + .auto_selectable_formats = &pcm186x_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> static struct snd_soc_dai_driver pcm1863_dai = {
> diff --git a/sound/soc/codecs/pcm3060.c b/sound/soc/codecs/pcm3060.c
> index 8974200652e7e..5fb344c6d8d90 100644
> --- a/sound/soc/codecs/pcm3060.c
> +++ b/sound/soc/codecs/pcm3060.c
> @@ -164,10 +164,17 @@ static int pcm3060_hw_params(struct snd_pcm_substream *substream,
> return 0;
> }
>
> +static const u64 pcm3060_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J;
> +
> static const struct snd_soc_dai_ops pcm3060_dai_ops = {
> .set_sysclk = pcm3060_set_sysclk,
> .set_fmt = pcm3060_set_fmt,
> .hw_params = pcm3060_hw_params,
> + .auto_selectable_formats = &pcm3060_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> #define PCM3060_DAI_RATES_ADC (SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 | \
> diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c
> index a70e8ea166dc5..981a2e56fa724 100644
> --- a/sound/soc/codecs/pcm512x.c
> +++ b/sound/soc/codecs/pcm512x.c
> @@ -1505,12 +1505,21 @@ static int pcm512x_mute(struct snd_soc_dai *dai, int mute, int direction)
> return ret;
> }
>
> +static const u64 pcm512x_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
> + SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_B;
> +
> static const struct snd_soc_dai_ops pcm512x_dai_ops = {
> .startup = pcm512x_dai_startup,
> .hw_params = pcm512x_hw_params,
> .set_fmt = pcm512x_set_fmt,
> .mute_stream = pcm512x_mute,
> .set_bclk_ratio = pcm512x_set_bclk_ratio,
> + .auto_selectable_formats = &pcm512x_selectable_formats,
> + .num_auto_selectable_formats = 1,
> .no_capture_mute = 1,
> };
>
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 00/83] ASoC: use .auto_selectable_formats
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
` (82 preceding siblings ...)
2026-05-26 2:29 ` [PATCH 83/83] ASoC: xtensa: " Kuninori Morimoto
@ 2026-06-01 0:01 ` Kuninori Morimoto
2026-06-01 12:13 ` Mark Brown
83 siblings, 1 reply; 100+ messages in thread
From: Kuninori Morimoto @ 2026-06-01 0:01 UTC (permalink / raw)
To: Mark Brown; +Cc: linux-sound
Hi Mark
> Kuninori Morimoto (83):
> ASoC: remove SND_SOC_POSSIBLE_xBx_xFx
> ASoC: codecs: framer-codec: don't use array if single pattarn
> ASoC: codecs: idt821034: don't use array if single pattarn
> ASoC: codecs: peb2466: don't use array if single pattarn
> ASoC: codecs: ak4619: update auto select format
> ASoC: codecs: pcm3168a: update auto select format
> ASoC: renesas: rcar: update auto select format
(snip)
> ASoC: stm: use .auto_selectable_formats
> ASoC: sunxi: use .auto_selectable_formats
> ASoC: tegra: use .auto_selectable_formats
> ASoC: ti: use .auto_selectable_formats
> ASoC: uniphier: use .auto_selectable_formats
> ASoC: ux500: use .auto_selectable_formats
> ASoC: xtensa: use .auto_selectable_formats
I have posted the patch-set, but it is too huge.
So may I suggest about this ?
Its first 7 patches are for updating existing .auto_selectable_formats
user/driver. So, we can separate it into ...
(A) - update existing .auto_selectable_formats + update method
- Switch to use .auto_selectable_formats format for other drivers
(B) - The patch which got Reviewed-by, etc
(C) - THe patch which not yet reviewed
I will post (A) first, after that (B) -> (C).
I think I will post v2 next week.
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 43/83] ASoC: codecs: pcm*: use .auto_selectable_formats
2026-05-30 19:33 ` Kirill Marinushkin
@ 2026-06-01 0:07 ` Kuninori Morimoto
0 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-06-01 0:07 UTC (permalink / raw)
To: Kirill Marinushkin
Cc: Alvin Šipraga, J.M.B. Downing, Martin Povišer,
Nuno Sá, Uwe Kleine-König (The Capable Hub),
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Herve Codina, Hsieh Hung-En, James Ogletree,
Jarkko Nikula, Jaroslav Kysela, Jernej Skrabec, Jerome Brunet,
Jihed Chaibi, Jonathan Hunter, Kevin Cernekee, Kevin Hilman,
Kevin Lu, Kiseok Jo, Krzysztof Kozlowski, Kunihiko Hayashi,
Lad Prabhakar, Lars-Peter Clausen, Liam Girdwood, Luca Ceresoli,
M R Swami Reddy, Mark Brown, Martin Blumenstingl,
Masami Hiramatsu, Matthias Brugger, Max Filippov, Maxime Coquelin,
Neil Armstrong, Nicolas Ferre, Nicolas Frattaroli, Nicolin Chen,
Oder Chiou, Olivier Moysan, Paul Cercueil, Peter Rosin,
Piotr Wojtaszczyk, Qianfeng Rong, Ray Jui, Richard Fitzgerald,
Robert Jarzmik, Samuel Holland, Sascha Hauer, Scott Branden,
Sen Wang, Sharique Mohammad, Shenghao Ding, Shengjiu Wang,
Steven Eckhoff, Support Opensource, Sylwester Nawrocki,
Takashi Iwai, Thierry Reding, Tim Bird, Troy Mitchell,
Tzung-Bi Shih, Venkata Prasad Potturu, Vijendar Mukunda,
Vishwas A Deshpande, Vladimir Zapolskiy, Xiubo Li, Yixun Lan,
Zhang Yi, linux-sound
Hi Kirill
Thank you for your review
> Only one minor thought is that probably `.auto_selectable_formats` for
> `pcm3060.c`
>
> could also include `SND_SOC_POSSIBLE_DAIFMT_NB_NF`, similar to `pcm186x.c`.
Ah, Yes indeed.
Thanks, will update in v2
> You are doing a massive work, i deeply respect the scope you take on!
Thanks a lot, it is very fun for me ;P
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 00/83] ASoC: use .auto_selectable_formats
2026-06-01 0:01 ` [PATCH 00/83] ASoC: " Kuninori Morimoto
@ 2026-06-01 12:13 ` Mark Brown
0 siblings, 0 replies; 100+ messages in thread
From: Mark Brown @ 2026-06-01 12:13 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: linux-sound
[-- Attachment #1: Type: text/plain, Size: 506 bytes --]
On Mon, Jun 01, 2026 at 09:01:23AM +0900, Kuninori Morimoto wrote:
> Its first 7 patches are for updating existing .auto_selectable_formats
> user/driver. So, we can separate it into ...
> (A) - update existing .auto_selectable_formats + update method
> - Switch to use .auto_selectable_formats format for other drivers
> (B) - The patch which got Reviewed-by, etc
> (C) - THe patch which not yet reviewed
> I will post (A) first, after that (B) -> (C).
> I think I will post v2 next week.
Sure.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 10/83] ASoC: amd: use .auto_selectable_formats
2026-05-26 2:02 ` [PATCH 10/83] ASoC: amd: use .auto_selectable_formats Kuninori Morimoto
@ 2026-06-03 11:47 ` Mukunda,Vijendar
0 siblings, 0 replies; 100+ messages in thread
From: Mukunda,Vijendar @ 2026-06-03 11:47 UTC (permalink / raw)
To: Kuninori Morimoto, Alvin Šipraga, J.M.B. Downing,
Martin Povišer, Nuno Sá,
Uwe Kleine-König (The Capable Hub), Alexandre Belloni,
Alexandre Torgue, AngeloGioacchino Del Regno, Arnaud Pouliquen,
Baojun Xu, Bartosz Golaszewski, Ben Bright, Benson Leung,
Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax, Chen-Yu Tsai,
Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea, Daniel Mack,
Dario Binacchi, David Rhodes, Fabio Estevam, Florian Fainelli,
Frank Li, Fred Treven, Geert Uytterhoeven, Guenter Roeck,
Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala, Heiko Stuebner,
Herve Codina, Hsieh Hung-En, James Ogletree, Jarkko Nikula,
Jaroslav Kysela, Jernej Skrabec, Jerome Brunet, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vishwas A Deshpande, Vladimir Zapolskiy, Xiubo Li, Yixun Lan,
Zhang Yi, chrome-platform, imx, linux-arm-kernel, linux-mips,
linux-renesas-soc, linux-riscv, linux-sound, spacemit
On 5/26/26 07:32, Kuninori Morimoto wrote:
> We can use .auto_selectable_formats. Let's adds it.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
> ---
> sound/soc/amd/acp/acp-i2s.c | 6 ++++++
> sound/soc/amd/raven/acp3x-i2s.c | 6 ++++++
> sound/soc/amd/vangogh/acp5x-i2s.c | 6 ++++++
> 3 files changed, 18 insertions(+)
>
> diff --git a/sound/soc/amd/acp/acp-i2s.c b/sound/soc/amd/acp/acp-i2s.c
> index 283a674c7e2c3..bb58a9d34993b 100644
> --- a/sound/soc/amd/acp/acp-i2s.c
> +++ b/sound/soc/amd/acp/acp-i2s.c
> @@ -686,6 +686,10 @@ static int acp_i2s_startup(struct snd_pcm_substream *substream, struct snd_soc_d
> return 0;
> }
>
> +static const u64 acp_i2s_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A;
> +
> const struct snd_soc_dai_ops asoc_acp_cpu_dai_ops = {
> .startup = acp_i2s_startup,
> .hw_params = acp_i2s_hwparams,
> @@ -693,6 +697,8 @@ const struct snd_soc_dai_ops asoc_acp_cpu_dai_ops = {
> .trigger = acp_i2s_trigger,
> .set_fmt = acp_i2s_set_fmt,
> .set_tdm_slot = acp_i2s_set_tdm_slot,
> + .auto_selectable_formats = &acp_i2s_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
> EXPORT_SYMBOL_NS_GPL(asoc_acp_cpu_dai_ops, "SND_SOC_ACP_COMMON");
>
> diff --git a/sound/soc/amd/raven/acp3x-i2s.c b/sound/soc/amd/raven/acp3x-i2s.c
> index 352485dd98b14..b0147e88ba54c 100644
> --- a/sound/soc/amd/raven/acp3x-i2s.c
> +++ b/sound/soc/amd/raven/acp3x-i2s.c
> @@ -250,11 +250,17 @@ static int acp3x_i2s_trigger(struct snd_pcm_substream *substream,
> return ret;
> }
>
> +static const u64 acp3x_i2s_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A;
> +
> static const struct snd_soc_dai_ops acp3x_i2s_dai_ops = {
> .hw_params = acp3x_i2s_hwparams,
> .trigger = acp3x_i2s_trigger,
> .set_fmt = acp3x_i2s_set_fmt,
> .set_tdm_slot = acp3x_i2s_set_tdm_slot,
> + .auto_selectable_formats = &acp3x_i2s_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> static const struct snd_soc_component_driver acp3x_dai_component = {
> diff --git a/sound/soc/amd/vangogh/acp5x-i2s.c b/sound/soc/amd/vangogh/acp5x-i2s.c
> index bf719f6286174..dbfb87e2fe929 100644
> --- a/sound/soc/amd/vangogh/acp5x-i2s.c
> +++ b/sound/soc/amd/vangogh/acp5x-i2s.c
> @@ -337,11 +337,17 @@ static int acp5x_i2s_trigger(struct snd_pcm_substream *substream,
> return ret;
> }
>
> +static const u64 acp5x_i2s_selectable_formats =
> + SND_SOC_POSSIBLE_DAIFMT_I2S |
> + SND_SOC_POSSIBLE_DAIFMT_DSP_A;
> +
> static const struct snd_soc_dai_ops acp5x_i2s_dai_ops = {
> .hw_params = acp5x_i2s_hwparams,
> .trigger = acp5x_i2s_trigger,
> .set_fmt = acp5x_i2s_set_fmt,
> .set_tdm_slot = acp5x_i2s_set_tdm_slot,
> + .auto_selectable_formats = &acp5x_i2s_selectable_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> static const struct snd_soc_component_driver acp5x_dai_component = {
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn
2026-05-26 1:58 ` [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn Kuninori Morimoto
@ 2026-06-03 12:09 ` Herve Codina
2026-06-03 22:30 ` Kuninori Morimoto
0 siblings, 1 reply; 100+ messages in thread
From: Herve Codina @ 2026-06-03 12:09 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: Alvin Šipraga, J.M.B. Downing, Martin Povišer,
Nuno Sá, Uwe Kleine-König (The Capable Hub),
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Hsieh Hung-En, James Ogletree, Jarkko Nikula,
Jaroslav Kysela, Jernej Skrabec, Jerome Brunet, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Hi Kuninori,
On Tue, 26 May 2026 01:58:50 +0000
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote:
> Because it is confusable during debugging ASoC FW update, tidyup
> auto format style not to use array if single pattern case.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> sound/soc/codecs/framer-codec.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
Just a typo in the commit title:
s/pattarn/pattern/
Or even
s/pattarn/item/
With that fixed,
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 03/83] ASoC: codecs: idt821034: don't use array if single pattarn
2026-05-26 1:58 ` [PATCH 03/83] ASoC: codecs: idt821034: " Kuninori Morimoto
@ 2026-06-03 12:11 ` Herve Codina
0 siblings, 0 replies; 100+ messages in thread
From: Herve Codina @ 2026-06-03 12:11 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: Alvin Šipraga, J.M.B. Downing, Martin Povišer,
Nuno Sá, Uwe Kleine-König (The Capable Hub),
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Hsieh Hung-En, James Ogletree, Jarkko Nikula,
Jaroslav Kysela, Jernej Skrabec, Jerome Brunet, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Hi Kuninori,
On Tue, 26 May 2026 01:58:59 +0000
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote:
> Because it is confusable during debugging ASoC FW update, tidyup
> auto format style not to use array if single pattern case.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> sound/soc/codecs/idt821034.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/sound/soc/codecs/idt821034.c b/sound/soc/codecs/idt821034.c
> index 39bafefa6a186..084090ccef77a 100644
> --- a/sound/soc/codecs/idt821034.c
> +++ b/sound/soc/codecs/idt821034.c
> @@ -860,18 +860,17 @@ static int idt821034_dai_startup(struct snd_pcm_substream *substream,
> return 0;
> }
>
> -static const u64 idt821034_dai_formats[] = {
> +static const u64 idt821034_dai_formats =
> SND_SOC_POSSIBLE_DAIFMT_DSP_A |
> - SND_SOC_POSSIBLE_DAIFMT_DSP_B,
> -};
> + SND_SOC_POSSIBLE_DAIFMT_DSP_B;
>
> static const struct snd_soc_dai_ops idt821034_dai_ops = {
> .startup = idt821034_dai_startup,
> .hw_params = idt821034_dai_hw_params,
> .set_tdm_slot = idt821034_dai_set_tdm_slot,
> .set_fmt = idt821034_dai_set_fmt,
> - .auto_selectable_formats = idt821034_dai_formats,
> - .num_auto_selectable_formats = ARRAY_SIZE(idt821034_dai_formats),
> + .auto_selectable_formats = &idt821034_dai_formats,
> + .num_auto_selectable_formats = 1,
> };
>
> static struct snd_soc_dai_driver idt821034_dai_driver = {
Same typo in the commit title as in patch 2:
s/pattarn/pattern/
Or even
s/pattarn/item/
With that fixed,
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 04/83] ASoC: codecs: peb2466: don't use array if single pattarn
2026-05-26 1:59 ` [PATCH 04/83] ASoC: codecs: peb2466: " Kuninori Morimoto
@ 2026-06-03 12:17 ` Herve Codina
0 siblings, 0 replies; 100+ messages in thread
From: Herve Codina @ 2026-06-03 12:17 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: Alvin Šipraga, J.M.B. Downing, Martin Povišer,
Nuno Sá, Uwe Kleine-König (The Capable Hub),
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Hsieh Hung-En, James Ogletree, Jarkko Nikula,
Jaroslav Kysela, Jernej Skrabec, Jerome Brunet, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Hi Kuninori,
On Tue, 26 May 2026 01:59:08 +0000
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote:
> Because it is confusable during debugging ASoC FW update, tidyup
> auto format style not to use array if single pattern case.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> sound/soc/codecs/peb2466.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
Same typo in the commit title as in patch 2:
s/pattarn/pattern/
Or even
s/pattarn/item/
With that fixed,
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
Best regards,
Hervé
^ permalink raw reply [flat|nested] 100+ messages in thread
* Re: [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn
2026-06-03 12:09 ` Herve Codina
@ 2026-06-03 22:30 ` Kuninori Morimoto
0 siblings, 0 replies; 100+ messages in thread
From: Kuninori Morimoto @ 2026-06-03 22:30 UTC (permalink / raw)
To: Herve Codina
Cc: Alvin Šipraga, J.M.B. Downing, Martin Povišer,
Nuno Sá, Uwe Kleine-König (The Capable Hub),
Alexandre Belloni, Alexandre Torgue, AngeloGioacchino Del Regno,
Arnaud Pouliquen, Baojun Xu, Bartosz Golaszewski, Ben Bright,
Benson Leung, Biju Das, Binbin Zhou, Bram Vlerick, Charles Keepax,
Chen-Yu Tsai, Cheng-Yi Chiang, Claudiu Beznea, Cristian Ciocaltea,
Daniel Mack, Dario Binacchi, David Rhodes, Fabio Estevam,
Florian Fainelli, Frank Li, Fred Treven, Geert Uytterhoeven,
Guenter Roeck, Guoqing Jiang, Haojian Zhuang, HariKrishna Sagala,
Heiko Stuebner, Hsieh Hung-En, James Ogletree, Jarkko Nikula,
Jaroslav Kysela, Jernej Skrabec, Jerome Brunet, Jihed Chaibi,
Jonathan Hunter, Kevin Cernekee, Kevin Hilman, Kevin Lu,
Kirill Marinushkin, Kiseok Jo, Krzysztof Kozlowski,
Kunihiko Hayashi, Lad Prabhakar, Lars-Peter Clausen,
Liam Girdwood, Luca Ceresoli, M R Swami Reddy, Mark Brown,
Martin Blumenstingl, Masami Hiramatsu, Matthias Brugger,
Max Filippov, Maxime Coquelin, Neil Armstrong, Nicolas Ferre,
Nicolas Frattaroli, Nicolin Chen, Oder Chiou, Olivier Moysan,
Paul Cercueil, Peter Rosin, Piotr Wojtaszczyk, Qianfeng Rong,
Ray Jui, Richard Fitzgerald, Robert Jarzmik, Samuel Holland,
Sascha Hauer, Scott Branden, Sen Wang, Sharique Mohammad,
Shenghao Ding, Shengjiu Wang, Steven Eckhoff, Support Opensource,
Sylwester Nawrocki, Takashi Iwai, Thierry Reding, Tim Bird,
Troy Mitchell, Tzung-Bi Shih, Venkata Prasad Potturu,
Vijendar Mukunda, Vishwas A Deshpande, Vladimir Zapolskiy,
Xiubo Li, Yixun Lan, Zhang Yi, chrome-platform, imx,
linux-arm-kernel, linux-mips, linux-renesas-soc, linux-riscv,
linux-sound, spacemit
Hi Herve
> > Because it is confusable during debugging ASoC FW update, tidyup
> > auto format style not to use array if single pattern case.
> >
> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > ---
(snip)
> Just a typo in the commit title:
> s/pattarn/pattern/
Oops, thank you for pointing it.
Will fix in v2
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 100+ messages in thread
end of thread, other threads:[~2026-06-03 22:30 UTC | newest]
Thread overview: 100+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-26 1:58 [PATCH 00/83] ASoC: use .auto_selectable_formats Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 01/83] ASoC: remove SND_SOC_POSSIBLE_xBx_xFx Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 02/83] ASoC: codecs: framer-codec: don't use array if single pattarn Kuninori Morimoto
2026-06-03 12:09 ` Herve Codina
2026-06-03 22:30 ` Kuninori Morimoto
2026-05-26 1:58 ` [PATCH 03/83] ASoC: codecs: idt821034: " Kuninori Morimoto
2026-06-03 12:11 ` Herve Codina
2026-05-26 1:59 ` [PATCH 04/83] ASoC: codecs: peb2466: " Kuninori Morimoto
2026-06-03 12:17 ` Herve Codina
2026-05-26 1:59 ` [PATCH 05/83] ASoC: codecs: ak4619: update auto select format Kuninori Morimoto
2026-05-26 1:59 ` [PATCH 06/83] ASoC: codecs: pcm3168a: " Kuninori Morimoto
2026-05-26 2:00 ` [PATCH 07/83] ASoC: renesas: rcar: " Kuninori Morimoto
2026-05-26 2:00 ` [PATCH 08/83] ASoC: update auto format selection method Kuninori Morimoto
2026-05-26 2:01 ` [PATCH 09/83] ASoC: audio-graph-card2: recommend to use auto select DAI format Kuninori Morimoto
2026-05-26 2:02 ` [PATCH 10/83] ASoC: amd: use .auto_selectable_formats Kuninori Morimoto
2026-06-03 11:47 ` Mukunda,Vijendar
2026-05-26 2:03 ` [PATCH 11/83] ASoC: apple: " Kuninori Morimoto
2026-05-26 2:05 ` [PATCH 12/83] ASoC: atmel: " Kuninori Morimoto
2026-05-26 2:06 ` [PATCH 13/83] ASoC: au1x: " Kuninori Morimoto
2026-05-26 2:06 ` [PATCH 14/83] ASoC: bcm: " Kuninori Morimoto
2026-05-26 2:06 ` [PATCH 15/83] ASoC: cirrus: " Kuninori Morimoto
2026-05-26 2:07 ` [PATCH 16/83] ASoC: codecs: 88pm860x: " Kuninori Morimoto
2026-05-26 2:08 ` [PATCH 17/83] ASoC: codecs: ad1*: " Kuninori Morimoto
2026-05-26 2:09 ` [PATCH 18/83] ASoC: codecs: ab8500: " Kuninori Morimoto
2026-05-26 2:09 ` [PATCH 19/83] ASoC: codecs: adau*: " Kuninori Morimoto
2026-05-26 2:10 ` [PATCH 20/83] ASoC: codecs: adav80x: " Kuninori Morimoto
2026-05-26 2:10 ` [PATCH 21/83] ASoC: codecs: ak4*: " Kuninori Morimoto
2026-05-26 2:11 ` [PATCH 22/83] ASoC: codecs: ak5*: " Kuninori Morimoto
2026-05-26 2:12 ` [PATCH 23/83] ASoC: codecs: alc56*: " Kuninori Morimoto
2026-05-26 2:13 ` [PATCH 24/83] ASoC: codecs: arizona: " Kuninori Morimoto
2026-05-26 2:14 ` [PATCH 25/83] ASoC: codecs: cpcap: " Kuninori Morimoto
2026-05-26 18:26 ` Mark Brown
2026-05-26 22:44 ` Kuninori Morimoto
2026-05-26 22:55 ` Mark Brown
2026-05-26 2:14 ` [PATCH 26/83] ASoC: codecs: cros_ec_codec: " Kuninori Morimoto
2026-05-26 2:15 ` [PATCH 27/83] ASoC: codecs: cs35l*: " Kuninori Morimoto
2026-05-26 2:15 ` [PATCH 28/83] ASoC: codecs: cs42*: " Kuninori Morimoto
2026-05-26 2:15 ` [PATCH 29/83] ASoC: codecs: cs5*: " Kuninori Morimoto
2026-05-26 2:16 ` [PATCH 30/83] ASoC: codecs: cx2072x: " Kuninori Morimoto
2026-05-26 2:17 ` [PATCH 31/83] ASoC: codecs: da*: " Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 32/83] ASoC: codecs: es*: " Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 33/83] ASoC: codecs: inno_rk3036: " Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 34/83] ASoC: codecs: isabelle: " Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 35/83] ASoC: codecs: lm49453: " Kuninori Morimoto
2026-05-26 2:18 ` [PATCH 36/83] ASoC: codecs: lochnagar-sc: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 37/83] ASoC: codecs: madera: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 38/83] ASoC: codecs: max*: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 39/83] ASoC: codecs: mc13783: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 40/83] ASoC: codecs: ml26124: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 41/83] ASoC: codecs: nau*: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 42/83] ASoC: codecs: ntp8*: " Kuninori Morimoto
2026-05-26 2:19 ` [PATCH 43/83] ASoC: codecs: pcm*: " Kuninori Morimoto
2026-05-30 19:33 ` Kirill Marinushkin
2026-06-01 0:07 ` Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 44/83] ASoC: codecs: rk33*: " Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 45/83] ASoC: codecs: rtq912*: " Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 46/83] ASoC: codecs: rt*: " Kuninori Morimoto
2026-05-26 2:20 ` [PATCH 47/83] ASoC: codecs: sgtl5000: " Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 48/83] ASoC: codecs: si476x: " Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 49/83] ASoC: codecs: sma130*: " Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 50/83] ASoC: codecs: src4xxx: " Kuninori Morimoto
2026-05-26 2:21 ` [PATCH 51/83] ASoC: codecs: ssm*: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 52/83] ASoC: codecs: sta*: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 53/83] ASoC: codecs: tas*: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 54/83] ASoC: codecs: tfa9879: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 55/83] ASoC: codecs: tlv320*: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 56/83] ASoC: codecs: tscs454: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 57/83] ASoC: codecs: twl4030: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 58/83] ASoC: codecs: uda13*: " Kuninori Morimoto
2026-05-26 2:22 ` [PATCH 59/83] ASoC: codecs: wm*: " Kuninori Morimoto
2026-05-26 18:29 ` Mark Brown
2026-05-26 22:51 ` Kuninori Morimoto
2026-05-26 2:23 ` [PATCH 60/83] ASoC: codecs: zl38060: " Kuninori Morimoto
2026-05-26 2:23 ` [PATCH 61/83] ASoC: dwc: " Kuninori Morimoto
2026-05-26 2:23 ` [PATCH 62/83] ASoC: fsl: " Kuninori Morimoto
2026-05-26 2:24 ` [PATCH 63/83] ASoC: hisilicon: " Kuninori Morimoto
2026-05-26 2:24 ` [PATCH 64/83] ASoC: img: " Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 65/83] ASoC: jz4740: " Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 66/83] ASoC: kirkwood: " Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 67/83] ASoC: loongson: " Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 68/83] ASoC: mediatek: " Kuninori Morimoto
2026-05-26 2:25 ` [PATCH 69/83] ASoC: meson: " Kuninori Morimoto
2026-05-26 7:35 ` Jerome Brunet
2026-05-26 2:25 ` [PATCH 70/83] ASoC: mxs: " Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 71/83] ASoC: pxa: " Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 72/83] ASoC: renesas: " Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 73/83] ASoC: rockchip: " Kuninori Morimoto
2026-05-26 2:26 ` [PATCH 74/83] ASoC: samsung: " Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 75/83] ASoC: spacemit: " Kuninori Morimoto
2026-05-27 1:45 ` Troy Mitchell
2026-05-26 2:27 ` [PATCH 76/83] ASoC: sti: " Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 77/83] ASoC: stm: " Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 78/83] ASoC: sunxi: " Kuninori Morimoto
2026-05-26 2:27 ` [PATCH 79/83] ASoC: tegra: " Kuninori Morimoto
2026-05-26 2:28 ` [PATCH 80/83] ASoC: ti: " Kuninori Morimoto
2026-05-26 2:28 ` [PATCH 81/83] ASoC: uniphier: " Kuninori Morimoto
2026-05-26 2:29 ` [PATCH 82/83] ASoC: ux500: " Kuninori Morimoto
2026-05-26 2:29 ` [PATCH 83/83] ASoC: xtensa: " Kuninori Morimoto
2026-06-01 0:01 ` [PATCH 00/83] ASoC: " Kuninori Morimoto
2026-06-01 12:13 ` Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox