android_kernel_samsung_sm8650/sound/soc
Cezary Rojewski b5df2a7dca
ASoC: codecs: Add HD-Audio codec driver
Add generic ASoC equivalent of ALSA HD-Audio codec. This codec is
designed to follow HDA_DEV_LEGACY convention. Driver wrapps existing
hda_codec.c handlers to prevent code duplication within the newly added
code. Number of DAIs created is dependent on capabilities exposed by the
codec itself. Because of this, single solution can be applied to support
every single HD-Audio codec type.

At the same time, through the ASoC topology, platform drivers may limit
the number of endpoints available to the userspace as codec driver
exposes BE DAIs only.

Both hda_codec_probe() and hda_codec_remove() declare their expectations
on device's usage_count and suspended-status. This is to catch any
unexpected behavior as PM-related code for HD-Audio has been changing
quite a bit throughout the years.

In order for codec DAI list to reflect its actual PCM capabilities, PCMs
need to be built and that can only happen once codec device is
constructed. To do that, a valid component->card->snd_card pointer is
needed. Said pointer will be provided by the framework once all card
components are accounted for and their probing can begin. Usage of
"binder" BE DAI solves the problem - codec can be listed as one of
HD-Audio card components without declaring any actual BE DAIs
statically.

Relation with hdac_hda:

Addition of parallel solution is motivated by behavioral differences
between hdac_hda.c and its legacy equivalent found in sound/pci/hda
e.g.: lack of dynamic, based on codec capabilities, resource allocation
and high cost of removing such differences on actively used targets.
Major goal of codec driver presented here is to follow HD-Audio legacy
behavior in 1:1 fashion by becoming a wrapper. Doing so increases code
coverage of the legacy code and reduces the maintenance cost for both
solutions.

Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20220511162403.3987658-3-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-06-06 12:33:10 +01:00
..
adi
amd ASoC: SOF: amd: Fixed Build error 2022-05-23 18:33:13 +01:00
atmel Clean up usage of the endianness flag 2022-05-10 12:12:50 +01:00
au1x ASoC: wm8731: Factor out the I2C and SPI bus code into separate modules 2022-04-04 08:39:32 +01:00
bcm
cirrus
codecs ASoC: codecs: Add HD-Audio codec driver 2022-06-06 12:33:10 +01:00
dwc ASoC: dwc-i2s: Handle errors for clk_enable 2022-03-02 13:45:24 +00:00
fsl ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition 2022-05-23 14:53:01 +01:00
generic ASoC: core: Correct spelling fliped -> flipped 2022-05-16 12:58:39 +01:00
hisilicon
img ASoC: img-i2s-in: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-25 14:00:23 +01:00
intel ASoC: Intel: cirrus-common: fix incorrect channel mapping 2022-06-02 16:32:51 +02:00
jz4740
kirkwood
mediatek ASoC: mediatek: mt8195: Fix build warning without CONFIG_OF 2022-05-09 19:04:37 +01:00
meson ASoC: meson: axg-card: Fix nonatomic links 2022-04-21 18:25:15 +01:00
mxs ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe 2022-05-11 17:42:13 +01:00
pxa ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
qcom ASoC: qcom: lpass-platform: Update VMA access permissions in mmap callback 2022-06-01 12:24:10 +02:00
rockchip ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
samsung ASoC: samsung: Fix refcount leak in aries_audio_probe 2022-05-12 11:41:32 +01:00
sh ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path 2022-04-27 17:22:50 +01:00
sof ASoC: SOF: Introduce generic (in)firmware tracing infrastructure 2022-05-20 14:56:35 +01:00
spear
sprd
sti ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call 2022-03-16 16:39:28 +00:00
stm
sunxi
tegra ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
ti ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_* 2022-05-16 12:58:38 +01:00
uniphier ASoC: uniphier: simplify the return expression of uniphier_aio_compr_set_params() 2022-05-09 12:48:41 +01:00
ux500 ASoC: ux500: mop500: Check before clk_put() not needed 2022-05-17 11:58:54 +01:00
xilinx
xtensa
Kconfig ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
Makefile ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
soc-ac97.c
soc-acpi.c
soc-card.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
soc-component.c ASoC: soc-component: Update handling to component delays 2022-05-16 12:58:41 +01:00
soc-compress.c ASoC: soc-compress: Change the check for codec_dai 2022-03-14 08:29:11 +00:00
soc-core.c ASoC: core: Pass legacy_dai_naming flag directly 2022-05-16 12:58:40 +01:00
soc-dai.c
soc-dapm.c ASoC: dapm: Don't fold register value changes into notifications 2022-05-03 13:42:26 +01:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: soc-generic-dmaengine-pcm: Use default config when none is given 2022-05-04 15:31:19 +01:00
soc-jack.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
soc-link.c
soc-ops.c ASoC: ops: Validate input values in snd_soc_put_volsw_range() 2022-04-26 15:13:36 +01:00
soc-pcm.c ASoC: soc-pcm: fix BE transition for TRIGGER_START 2022-05-23 14:52:59 +01:00
soc-topology-test.c
soc-topology.c ASoC: Pull in fixes 2022-04-05 10:29:12 +01:00
soc-utils-test.c ASoC: soc-utils: Add kunit test for snd_soc_tdm_params_to_bclk() 2022-04-05 18:27:56 +01:00
soc-utils.c ASoC: soc-utils: Add helper to calculate BCLK from TDM info 2022-04-05 18:27:55 +01:00