ASoC: soc-acpi: introduce new 'machine check' callback

The existing machine_quirk() returns a pointer to a soc_acpi_mach
structure.
For SoundWire/SDCA support, we need a slightly different
functionality where a quirk function either validates or NACKs an
initial selection, based on additional firmware/DMI information.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://patch.msgid.link/20241016102333.294448-8-yung-chuan.liao@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Pierre-Louis Bossart 2024-10-16 18:23:29 +08:00 committed by Mark Brown
parent 9aa6df9cb8
commit dcf4694f20
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -185,6 +185,10 @@ struct snd_soc_acpi_link_adr {
* ACPI ID alone is not sufficient, wrong or misleading * ACPI ID alone is not sufficient, wrong or misleading
* @quirk_data: data used to uniquely identify a machine, usually a list of * @quirk_data: data used to uniquely identify a machine, usually a list of
* audio codecs whose presence if checked with ACPI * audio codecs whose presence if checked with ACPI
* @machine_check: pointer to quirk function. The functionality is similar to
* the use of @machine_quirk, except that the return value is a boolean: the intent
* is to skip a machine if the additional hardware/firmware verification invalidates
* the initial selection in the snd_soc_acpi_mach table.
* @pdata: intended for platform data or machine specific-ops. This structure * @pdata: intended for platform data or machine specific-ops. This structure
* is not constant since this field may be updated at run-time * is not constant since this field may be updated at run-time
* @sof_tplg_filename: Sound Open Firmware topology file name, if enabled * @sof_tplg_filename: Sound Open Firmware topology file name, if enabled
@ -203,6 +207,7 @@ struct snd_soc_acpi_mach {
const char *board; const char *board;
struct snd_soc_acpi_mach * (*machine_quirk)(void *arg); struct snd_soc_acpi_mach * (*machine_quirk)(void *arg);
const void *quirk_data; const void *quirk_data;
bool (*machine_check)(void *arg);
void *pdata; void *pdata;
struct snd_soc_acpi_mach_params mach_params; struct snd_soc_acpi_mach_params mach_params;
const char *sof_tplg_filename; const char *sof_tplg_filename;