linux/sound/soc
Mark Brown d08c5b76b2
Merge series "ASoC: adds new .auto_selectable_formats support" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark

These are v3 of "ASoC: adds new .get_fmt support",
but renamed Subject.

This is a little bit challenging patch-set.
The idea/code is almost same as v1 / v2.
v3 has "priority" support.

We need to set dai_link->dai_fmt to select CPU/Codec settings,
and it is selected by Sound Card Driver, today.

Because of it, Sound Card user need to know both CPU / Codec
available dai_fmt, and needs to select it.
For example simple-card / audio-graph case, it is selected by
"format" and "bitclock/frame-master/inversion" on DT.

But, it can be automatically selected if both CPU and Codec drivers
indicate it to ALSA SoC Framework, somehow.

By this patch, dai_fmt can be automatically selected from each
driver if both CPU / Codec driver had .auto_selectable_formats.
Automatically selectable *field* is depends on each drivers.

For example, some driver want to select format "automatically",
but want to select other fields "manually", because of complex limitation.
Or other example, in case of both CPU and Codec are possible to be
clock provider, but the quality was different.
In these case, user need/want to *manually* select each fields
from Sound Card driver.

It uses Sound Card specified fields preferentially, and try to select
non-specific fields from CPU and Codec driver settings if driver had
.auto_selectable_formats.
In other words, we can select all dai_fmt via Sound Card driver
same as before.

Select dai_fmt 100% automatically is very difficult and will be very complex,
but select automatically some fields only is very easy, I guess.
This patch-set is based on such assumption.

v1 -> v2
	- Add more detail explanation on git-log, code, comment.
	- Possible to be Clock/Frame provider is depends on driver's situation.

v2 -> v3
	- has priority
	- tidyup function explanation for snd_soc_dai_get_fmt()
	- Each driver don't try to have SND_SOC_DAIFMT_CBx_CFx to avoid confusion

Link: https://lore.kernel.org/r/871rb3hypy.wl-kuninori.morimoto.gx@renesas.com
Link: https://lore.kernel.org/r/871racbx0w.wl-kuninori.morimoto.gx@renesas.com

Kuninori Morimoto (7):
  ASoC: soc-core: move snd_soc_runtime_set_dai_fmt() to upside
  ASoC: soc-core: add snd_soc_runtime_get_dai_fmt()
  ASoC: ak4613: add .auto_selectable_formats support
  ASoC: pcm3168a: add .auto_selectable_formats support
  ASoC: rsnd: add .auto_selectable_formats support
  ASoC: fsi: add .auto_selectable_formats support
  ASoC: hdmi-codec: add .auto_selectable_formats support

 include/sound/soc-dai.h       |  55 +++++++
 sound/soc/codecs/ak4613.c     |  11 ++
 sound/soc/codecs/hdmi-codec.c |  21 +++
 sound/soc/codecs/pcm3168a.c   |  26 +++
 sound/soc/sh/fsi.c            |  15 ++
 sound/soc/sh/rcar/core.c      |  31 +++-
 sound/soc/soc-core.c          | 288 ++++++++++++++++++++++++++--------
 sound/soc/soc-dai.c           |  63 ++++++++
 sound/soc/soc-utils.c         |  29 ++++
 9 files changed, 475 insertions(+), 64 deletions(-)

--
2.25.1
2021-06-07 19:53:01 +01:00
..
adi
amd ASoC: amd: renoir: Remove redundant assignment to pdm_ctrl and pdm_enable and pdm_dma_enable 2021-05-10 13:05:32 +01:00
atmel ASoC: atmel: sam9x5_wm8731: use devm_snd_soc_register_card() 2021-06-03 13:59:56 +01:00
au1x ASoC: au1x: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:46 +00:00
bcm Merge remote-tracking branch 'asoc/for-5.13' into asoc-next 2021-04-23 19:01:02 +01:00
cirrus ASoC: cirrus: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:48 +00:00
codecs Merge series "ASoC: adds new .auto_selectable_formats support" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>: 2021-06-07 19:53:01 +01:00
dwc ASoC: dwc: Fix -Wmissing-prototypes warnings 2021-03-29 17:28:13 +01:00
fsl ASoC: fsl: imx-es8328: use devm_snd_soc_register_card() 2021-06-03 14:00:00 +01:00
generic ASoC: audio-graph: tidyup graph_parse_node() 2021-05-11 15:46:51 +01:00
hisilicon ASoC: hisilicon: fix missing clk_disable_unprepare() on error in hi6210_i2s_startup() 2021-05-18 14:04:32 +01:00
img ASoC: img: Fix PM reference leak in img_i2s_in_probe() 2021-06-03 14:00:01 +01:00
intel ASoC: Intel: Skylake: use DEVICE_ATTR_RO macro 2021-06-02 12:03:33 +01:00
jz4740 ASoC: jz4740-i2s: fix function name 2021-05-10 17:06:04 +01:00
kirkwood
mediatek ASoC: mediatek: mt8192: Delete a redundant condition branch 2021-05-10 13:05:33 +01:00
meson ASoC: meson: g12a-toacodec: add support for SM1 TOACODEC 2021-05-19 14:19:05 +01:00
mxs ASoC: mxs-saif: drop unneeded snd_soc_dai_set_drvdata 2021-03-10 13:07:06 +00:00
pxa ASoC: pxa: remove useless assignment 2021-03-31 18:03:19 +01:00
qcom ASoC: qcom: sdm845: add jack support for WCD934x 2021-06-04 15:29:02 +01:00
rockchip ASoC: rockchip: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:50 +00:00
samsung ASoC: samsung: tm2_wm5110: remove shadowed variable 2021-03-12 20:45:41 +00:00
sh ASoC: fsi: add .auto_selectable_formats support 2021-06-07 15:55:16 +01:00
sof Merge series "ASoC: Constify snd_compress_ops" from Rikard Falkeborn <rikard.falkeborn@gmail.com>: 2021-06-01 18:10:41 +01:00
spear
sprd
sti ASoC: sti: sti_uniperif: add missing MODULE_DEVICE_TABLE 2021-04-13 12:33:45 +01:00
stm ASoC: stm32: do not request a new clock consummer reference 2021-04-28 16:34:53 +01:00
sunxi Merge remote-tracking branch 'asoc/for-5.13' into asoc-next 2021-04-23 19:01:02 +01:00
tegra ASoC: tegra: mark runtime-pm functions as __maybe_unused 2021-04-22 16:27:37 +01:00
ti ASoC: ti: davinci-mcasp: Fix fall-through warning for Clang 2021-06-04 15:27:07 +01:00
uniphier ASoC: uniphier: Simplify the return expression of uniphier_aio_startup 2021-03-10 13:07:15 +00:00
ux500 ASoC: ux500: mop500: align function prototype 2021-03-31 18:03:28 +01:00
xilinx
xtensa
Kconfig ASoC: topology: adhere to KUNIT formatting standard 2021-04-14 15:26:24 +01:00
Makefile ASoC: topology: adhere to KUNIT formatting standard 2021-04-14 15:26:24 +01:00
soc-ac97.c
soc-acpi.c ASoC: soc-acpi: remove useless initialization 2021-04-19 14:03:29 +01:00
soc-card.c
soc-component.c ASoC: soc-component: Add snd_soc_pcm_component_ack 2021-03-25 13:58:06 +00:00
soc-compress.c ASoC: soc-compress: lock pcm_mutex to resolve lockdep error 2021-04-09 13:39:44 +01:00
soc-core.c ASoC: soc-core: add snd_soc_runtime_get_dai_fmt() 2021-06-07 15:55:12 +01:00
soc-dai.c ASoC: soc-core: add snd_soc_runtime_get_dai_fmt() 2021-06-07 15:55:12 +01:00
soc-dapm.c ASoC: don't indicate error message for snd_soc_[pcm_]dai_xxx() 2021-03-19 12:24:04 +00:00
soc-devres.c
soc-generic-dmaengine-pcm.c
soc-jack.c
soc-link.c
soc-ops.c ASoC: soc-ops: remove useless assignment 2021-03-10 13:06:53 +00:00
soc-pcm.c ASoC: soc-pcm: ignore dummy-DAI at soc_pcm_params_symmetry() 2021-04-16 14:34:13 +01:00
soc-topology-test.c ASoC: topology: KUnit: Convert from cpu to data format 2021-02-02 17:08:21 +00:00
soc-topology.c ASoC: topology: Fix using uninitialized pointer 2021-05-20 17:57:28 +01:00
soc-utils.c ASoC: soc-core: add snd_soc_runtime_get_dai_fmt() 2021-06-07 15:55:12 +01:00