linux-mainline/drivers/soundwire
Pierre-Louis Bossart e66f91a2d1 soundwire: intel_auxdevice: add hybrid IDA-based device_number allocation
The IDA-based allocation is useful to simplify debug, but it was also
introduced as a prerequisite to deal with the Intel Lunar Lake
hardware programming sequences: the wake-ups have to be handled with a
system-unique SDI address at the HDaudio controller level.

At the time, the restriction introduced by the IDA to 8 devices total
seemed perfectly fine, but recently hardware vendors created
configurations with more than 8 devices.

Add a new allocation strategy to allow for more than 8 devices using
information on the type of devices, and only use the IDA-based
allocation for devices capable of generating a wake.

In theory the information on wake capabilities should come from
firmware, but none of the existing ACPI tables provide it. The drivers
set the 'wake_capable' property, but this cannot be used reliably: if
the driver probe happens *after* the enumeration, then that property
is not initialized yet. Trying to modify the device_number on-the-fly
proved to be an impossible task generating race conditions left and
right.

The only reliable work-around to control the enumeration is to add a
quirk table. It's ugly but until platform firmware improves, hopefully as a
result of MIPI/SDCA stardization, we can expect that quirk table to
grow for each new headset or microphone codec.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230731091333.3593132-4-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2023-08-11 07:59:25 +01:00
..
amd_manager.c soundwire: amd: Improve error message in remove callback 2023-05-29 10:49:46 +05:30
amd_manager.h soundwire: amd: handle SoundWire wake enable interrupt 2023-04-12 15:30:36 +05:30
bus_type.c soundwire updates for 6.3 2023-02-24 17:29:52 -08:00
bus.c soundwire: bus: add callbacks for device_number allocation 2023-08-11 07:59:25 +01:00
bus.h soundwire: export sdw_compute_slave_ports() function 2023-04-12 15:30:35 +05:30
cadence_master.c soundwire: cadence: revisit parity injection 2023-05-29 10:49:47 +05:30
cadence_master.h soundwire: intel/cadence: update hardware reset sequence 2023-05-29 10:49:47 +05:30
debugfs.c soundwire: debugfs: Add missing SCP registers 2023-06-08 17:10:32 +05:30
dmi-quirks.c soundwire: dmi-quirks: add new mapping for HP Spectre x360 2023-05-27 16:07:47 +05:30
generic_bandwidth_allocation.c soundwire: bandwidth allocation: Remove pointless variable 2023-06-08 17:09:11 +05:30
intel_ace2x_debugfs.c soundwire: intel_ace2x: add debugfs support 2023-05-27 16:06:45 +05:30
intel_ace2x.c soundwire: intel_ace2x: add pre/post bank switch callbacks 2023-05-27 16:06:47 +05:30
intel_auxdevice.c soundwire: intel_auxdevice: add hybrid IDA-based device_number allocation 2023-08-11 07:59:25 +01:00
intel_auxdevice.h soundwire: intel: split auxdevice to different file 2022-11-23 20:11:49 +05:30
intel_bus_common.c soundwire: intel/cadence: update hardware reset sequence 2023-05-29 10:49:47 +05:30
intel_init.c soundwire: intel_init: use eml_lock parameter 2023-05-27 16:06:45 +05:30
intel.c soundwire: intel: read AC timing control register before updating it 2023-05-27 16:08:48 +05:30
intel.h soundwire: intel_ace2x: add debugfs support 2023-05-27 16:06:45 +05:30
Kconfig soundwire: intel_ace2x: fix SND_SOC_SOF_HDA_MLINK dependency 2023-06-21 16:19:44 +05:30
Makefile soundwire: intel_ace2x: add debugfs support 2023-05-27 16:06:45 +05:30
master.c
mipi_disco.c
qcom.c soundwire: Explicitly include correct DT includes 2023-07-17 12:10:49 +05:30
slave.c
stream.c soundwire: stream: Make master_list ordered to prevent deadlocks 2023-06-21 16:31:45 +05:30
sysfs_local.h
sysfs_slave_dpn.c
sysfs_slave.c