android_kernel_xiaomi_sm8450/drivers/soundwire
Pierre-Louis Bossart 8b20aab8cf ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire
commit e8444560b4d9302a511f0996f4cfdf85b628f4ca upstream.

The HDAudio ASoC support relies on the set_tdm_slots() helper to store
the HDaudio stream tag in the tx_mask. This only works because of the
pre-existing order in soc-pcm.c, where the hw_params() is handled for
codec_dais *before* cpu_dais. When the order is reversed, the
stream_tag is used as a mask in the codec fixup functions:

	/* fixup params based on TDM slot masks */
	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
	    codec_dai->tx_mask)
		soc_pcm_codec_params_fixup(&codec_params,
					   codec_dai->tx_mask);

As a result of this confusion, the codec_params_fixup() ends-up
generating bad channel masks, depending on what stream_tag was
allocated.

We could add a flag to state that the tx_mask is really not a mask,
but it would be quite ugly to persist in overloading concepts.

Instead, this patch suggests a more generic get/set 'stream' API based
on the existing model for SoundWire. We can expand the concept to
store 'stream' opaque information that is specific to different DAI
types. In the case of HDAudio DAIs, we only need to store a stream tag
as an unsigned char pointer. The TDM rx_ and tx_masks should really
only be used to store masks.

Rename get_sdw_stream/set_sdw_stream callbacks and helpers as
get_stream/set_stream. No functionality change beyond the rename.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Acked-By: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/20211224021034.26635-5-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-01-14 10:16:28 +01:00
..
bus_type.c soundwire: bus_type: fix remove and shutdown support 2022-08-21 15:15:56 +02:00
bus.c soundwire: bus: Fix device found flag correctly 2021-05-14 09:50:13 +02:00
bus.h soundwire: bus: add enumerated Slave device to device list 2020-09-28 11:17:40 +05:30
cadence_master.c soundwire: cadence: Don't overwrite msg->buf during write commands 2022-10-26 13:25:53 +02:00
cadence_master.h soundwire: cadence: fix race condition between suspend and Slave device alerts 2020-09-09 13:14:42 +05:30
debugfs.c soundwire: debugfs: use controller id and link_id for debugfs 2021-11-18 14:04:16 +01:00
generic_bandwidth_allocation.c soundwire: remove an unnecessary NULL check 2020-09-23 15:34:48 +05:30
intel_init.c soundwire: intel: fix possible crash when no device is detected 2021-03-04 11:38:22 +01:00
intel.c ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire 2023-01-14 10:16:28 +01:00
intel.h soundwire: intel: pass link_mask information to each master 2020-09-03 16:14:39 +05:30
Kconfig soundwire: Add generic bandwidth allocation algorithm 2020-09-18 17:48:51 +05:30
Makefile soundwire: Add generic bandwidth allocation algorithm 2020-09-18 17:48:51 +05:30
master.c soundwire: master: use pm_runtime_set_active() on add 2020-12-30 11:53:28 +01:00
mipi_disco.c soundwire: fix port_ready[] dynamic allocation in mipi_disco 2020-09-03 16:02:29 +05:30
qcom.c ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire 2023-01-14 10:16:28 +01:00
slave.c soundwire: sysfs: add slave status and device number before probe 2020-09-28 11:17:43 +05:30
stream.c ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire 2023-01-14 10:16:28 +01:00
sysfs_local.h soundwire: sysfs: add slave status and device number before probe 2020-09-28 11:17:43 +05:30
sysfs_slave_dpn.c soundwire: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute 2020-12-30 11:53:20 +01:00
sysfs_slave.c soundwire: sysfs: add slave status and device number before probe 2020-09-28 11:17:43 +05:30