linux/sound/soc
Mohan Kumar 2502f8dd8c
ASoC: tegra: I2S client convert formats handling
The AHUB HW modules are interconnected with CIF which are capable of
supporting Channel and Sample bit format conversion. Due to this, the
I2S Client can have different Channel and Sample bit from the hw_params()
and this config is passed from CIF port of I2S DT node which can help to
perform this conversion.

For e.g. HFP usecase consists of BT SCO with 1ch and 8k audio data
which needs to be converted and mixed with external codec playback and
capture path which is of 2ch and 48k format.

For HFP Playback:
  The path includes mono to stereo and 8k to 48k conversion
    _ _ _ _       _ _ _          _ _ _        _ _ _ _ _       _ _ _ _ _ _
   |       |1ch  |      | 1ch   |     |2ch   | SFC     | 2ch |           |
   |BT SCO |---->| I2Sx |------>| CIF |----->| 8k->48k |---->| Codec I2Sy|
   |_ _ _ _|     |_ _ __|client |_ _ _|audio |_ _ _ _ _|     |_ _ _ _ _ _|

For HFP Capture:
  The path includes stereo to mono and 48k to 8k conversion
    _ _ _ _ _ _       _ _ _ _ _        _ _ _         _ _ _ _       _ _ _ _
   |           | 2ch | SFC     | 2ch  |     | 1ch   |       | 1ch |       |
   | codec I2Sy|---->| 48k->8k |----->| CIF |------>| I2Sx  |---->| BT SCO|
   |_ _ _ _ _ _|     |_ _ _ _ _| audio|_ _ _|client |_ _ _ _|     |_ _ _ _|

For above two path, I2S client channel uses existing DT binding to pass
channels and format conversion in I2Sx CIF Port.

Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://msgid.link/r/20240527125608.2461300-3-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2024-05-27 13:59:49 +01:00
..
adi ASoC: adi: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:12 +09:00
amd ASoC: Updates for v6.10 2024-05-13 11:39:49 +02:00
apple ASoC: apple: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:14 +09:00
atmel ASoC: Use *-y instead of *-objs in Makefile 2024-05-08 21:02:13 +09:00
au1x ASoC: au1x: Use *-y instead of *-objs Makefile 2024-05-08 11:39:16 +09:00
bcm ASoC: bcm: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:16 +09:00
cirrus ASoC: cirrus: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:17 +09:00
codecs ASoC: Fixes for v6.10 2024-05-23 13:29:27 +02:00
dwc Linux 6.6-rc7 2023-10-23 19:38:22 +01:00
fsl ASoC: fsl: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:18 +09:00
generic ASoC: simple-card-utils: Split simple_fixup_sample_fmt func 2024-05-27 13:59:49 +01:00
google
hisilicon ASoC: hisilicon: Drop GPIO include 2023-12-18 14:03:29 +00:00
img ASoC: img: Use snd_soc_substream_to_rtd() for accessing private_data 2024-05-06 23:59:52 +09:00
intel sound fixes for 6.10-rc1 2024-05-24 08:48:51 -07:00
jz4740 ASoC: jz4740: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:21 +09:00
kirkwood ASoC: kirkwood: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:21 +09:00
loongson ASoC: loongson: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:22 +09:00
mediatek ASoC: Updates for v6.10 2024-05-13 11:39:49 +02:00
meson ASoC: Updates for v6.10 2024-05-13 11:39:49 +02:00
mxs ASoC: mxs: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:25 +09:00
pxa ASoC: pxa: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:26 +09:00
qcom ASoC: Add missing module descriptions 2024-05-09 08:37:35 +02:00
rockchip ASoC: rockchip: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:27 +09:00
samsung ASoC: samsung: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:28 +09:00
sh ASoC: sh: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:29 +09:00
sof soundwire updates for 6.10 2024-05-21 11:23:36 -07:00
spear ASoC: spear: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:31 +09:00
sprd ASoC: sprd: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:32 +09:00
starfive ASoC: starfive/jh7110-pwmdac: Convert to platform remove callback returning void 2023-10-23 13:29:44 +01:00
sti ASoC: sti: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:33 +09:00
stm ASoC: stm: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:34 +09:00
sunxi ASoC: sunxi: Use snd_soc_substream_to_rtd() for accessing private_data 2024-05-06 23:59:56 +09:00
tegra ASoC: tegra: I2S client convert formats handling 2024-05-27 13:59:49 +01:00
ti ASoC: ti: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:35 +09:00
uniphier ASoC: uniphier: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:36 +09:00
ux500 ASoC: Add missing module descriptions 2024-05-09 08:37:35 +02:00
xilinx ASoC: Add missing module descriptions 2024-05-09 08:37:35 +02:00
xtensa ASoC: xtensa: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:39 +09:00
Kconfig ASoC: soc-card: Add KUnit test case for snd_soc_card_get_kcontrol 2024-04-02 15:54:49 +01:00
Makefile ASoC: core: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:11 +09:00
soc-ac97.c
soc-acpi.c
soc-card-test.c ASoC: soc-card: soc-card-test: Fix some error handling in init() 2024-04-14 16:54:39 +09:00
soc-card.c ASoC: soc-card: Use snd_ctl_find_id_mixer() instead of open-coding 2024-04-02 15:54:48 +01:00
soc-component.c
soc-compress.c ASoC: soc-compress: Fix and add DPCM locking 2024-03-18 14:41:51 +00:00
soc-core.c ASoC: dmaengine_pcm: Allow passing component name via config 2024-03-25 00:49:47 +00:00
soc-dai.c ASoC: soc-dai: Note valid values of sysclock direction 2024-03-26 12:51:23 +00:00
soc-dapm.c ASoC: dapm: debugfs: show the widget type 2024-04-21 09:58:16 +09:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: dmaengine: Add missing module description 2024-05-08 20:51:10 +09:00
soc-jack.c ASoC: soc-jack: Get rid of legacy GPIO support 2024-03-26 17:13:45 +00:00
soc-link.c
soc-ops.c ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw 2024-03-28 22:01:43 +00:00
soc-pcm.c ASoC: pcm: Reverse iterate DAIs when shutting them down 2024-04-30 00:09:46 +09:00
soc-topology-test.c ASoC: topology-test: Add missing module description 2024-05-08 20:51:10 +09:00
soc-topology.c ASoC: Drop soc-topology ABI v4 support 2024-04-04 18:09:18 +01:00
soc-utils-test.c
soc-utils.c