linux/sound/soc/tegra
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
..
Kconfig ASoC: tegra: Support MAX9808x by machine driver 2023-03-20 13:06:41 +00:00
Makefile ASoC: tegra: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:34 +09:00
tegra20_ac97.c ASoC: tegra: tegra20_ac97: Convert to use GPIO descriptors 2023-12-18 14:03:32 +00:00
tegra20_ac97.h ASoC: tegra: tegra20_ac97: Convert to use GPIO descriptors 2023-12-18 14:03:32 +00:00
tegra20_das.c
tegra20_i2s.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra20_i2s.h
tegra20_spdif.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra20_spdif.h
tegra30_ahub.c ASoC: tegra: tegra30_ahub: Convert to platform remove callback returning void 2023-03-20 13:09:24 +00:00
tegra30_ahub.h
tegra30_i2s.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra30_i2s.h
tegra186_asrc.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra186_asrc.h
tegra186_dspk.c ASoC: tegra: Fix DSPK 16-bit playback 2024-04-08 13:38:46 +01:00
tegra186_dspk.h
tegra210_admaif.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra210_admaif.h
tegra210_adx.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_adx.h
tegra210_ahub.c ASoC: tegra: Remove stale comments in AHUB 2023-06-22 18:02:05 +01:00
tegra210_ahub.h
tegra210_amx.c ASoC: tegra: Fix -Wuninitialized in tegra210_amx_platform_probe() 2023-10-12 13:04:55 +01:00
tegra210_amx.h
tegra210_dmic.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_dmic.h
tegra210_i2s.c ASoC: tegra: I2S client convert formats handling 2024-05-27 13:59:49 +01:00
tegra210_i2s.h ASoC: tegra: I2S client convert formats handling 2024-05-27 13:59:49 +01:00
tegra210_mbdrc.c
tegra210_mbdrc.h
tegra210_mixer.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_mixer.h
tegra210_mvc.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_mvc.h
tegra210_ope.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_ope.h
tegra210_peq.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_peq.h
tegra210_sfc.c ASoC: Explicitly include correct DT includes 2023-10-09 13:13:56 +01:00
tegra210_sfc.h ASoC: tegra: Fix SFC conversion for few rates 2023-06-24 01:57:16 +01:00
tegra_asoc_machine.c ASoC: tegra: Use snd_soc_substream_to_rtd() for accessing private_data 2024-05-06 23:59:47 +09:00
tegra_asoc_machine.h
tegra_audio_graph_card.c ASoC: simple-card-utils: Make simple_util_remove() return void 2023-10-23 13:29:45 +01:00
tegra_cif.h
tegra_pcm.c ASoC: tegra: Use snd_soc_substream_to_rtd() for accessing private_data 2024-05-06 23:59:47 +09:00
tegra_pcm.h
tegra_wm8903.c ASoC: tegra: convert not to use asoc_xxx() 2023-09-25 14:16:30 +02:00