mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
Merge series "Multiple headphone codec driver support" from Brent Lu <brent.lu@intel.com>:
Support multiple headphone drivers in same machine driver. In this case, both rt5682 and rt5682s are supported and enumerated by different ACPI HID "10EC5682" and "RTL5682". V2 Changes: - remove useless 'NULL', 'false' in if-condition - can use 'comp_ids' field alone to enumerate driver - add comma to the end of entry in structure initialization - keep the table of byt/cht/cml/icl untouched V3 Changes: - upstreamd from SOF github, PR#3200 - use new compatiable IDs to shrink the enumerate table of BYT and CHT - add 'const' to snd_soc_acpi_codecs structures V4 Changes: - add signoff to patch 4~6 V5 Changes: - none, just rebase for patch 3 conflict Brent Lu (3): ASoC: soc-acpi: add comp_ids field for machine driver matching ASoC: Intel: sof_rt5682: detect codec variant in probe function ASoC: Intel: sof_rt5682: use comp_ids to enumerate rt5682s Pierre-Louis Bossart (3): ASoC: Intel: soc-acpi-byt: shrink tables using compatible IDs ASoC: Intel: soc-acpi-cht: shrink tables using compatible IDs ASoC: Intel: soc-acpi: use const for all uses of snd_soc_acpi_codecs include/sound/soc-acpi.h | 3 + sound/soc/intel/boards/sof_rt5682.c | 34 ++------- .../intel/common/soc-acpi-intel-adl-match.c | 11 ++- .../intel/common/soc-acpi-intel-bxt-match.c | 2 +- .../intel/common/soc-acpi-intel-byt-match.c | 68 +++++++----------- .../intel/common/soc-acpi-intel-cht-match.c | 69 +++++++------------ .../intel/common/soc-acpi-intel-cml-match.c | 8 +-- .../intel/common/soc-acpi-intel-glk-match.c | 2 +- .../intel/common/soc-acpi-intel-jsl-match.c | 43 ++++-------- .../intel/common/soc-acpi-intel-kbl-match.c | 12 ++-- .../intel/common/soc-acpi-intel-skl-match.c | 2 +- .../intel/common/soc-acpi-intel-tgl-match.c | 11 ++- sound/soc/soc-acpi.c | 24 ++++++- 13 files changed, 119 insertions(+), 170 deletions(-) -- 2.25.1
This commit is contained in:
commit
6195eb15f6
@ -129,6 +129,8 @@ struct snd_soc_acpi_link_adr {
|
||||
* all firmware/topology related fields.
|
||||
*
|
||||
* @id: ACPI ID (usually the codec's) used to find a matching machine driver.
|
||||
* @comp_ids: list of compatible audio codecs using the same machine driver,
|
||||
* firmware and topology
|
||||
* @link_mask: describes required board layout, e.g. for SoundWire.
|
||||
* @links: array of link _ADR descriptors, null terminated.
|
||||
* @drv_name: machine driver name
|
||||
@ -146,6 +148,7 @@ struct snd_soc_acpi_link_adr {
|
||||
/* Descriptor for SST ASoC machine driver */
|
||||
struct snd_soc_acpi_mach {
|
||||
const u8 id[ACPI_ID_LEN];
|
||||
const struct snd_soc_acpi_codecs *comp_ids;
|
||||
const u32 link_mask;
|
||||
const struct snd_soc_acpi_link_adr *links;
|
||||
const char *drv_name;
|
||||
|
@ -864,6 +864,10 @@ static int sof_audio_probe(struct platform_device *pdev)
|
||||
if ((sof_rt5682_quirk & SOF_SPEAKER_AMP_PRESENT) && !mach->quirk_data)
|
||||
sof_rt5682_quirk &= ~SOF_SPEAKER_AMP_PRESENT;
|
||||
|
||||
/* Detect the headset codec variant */
|
||||
if (acpi_dev_present("RTL5682", NULL, -1))
|
||||
sof_rt5682_quirk |= SOF_RT5682S_HEADPHONE_CODEC_PRESENT;
|
||||
|
||||
if (soc_intel_is_byt() || soc_intel_is_cht()) {
|
||||
is_legacy_cpu = 1;
|
||||
dmic_be_num = 0;
|
||||
@ -1046,36 +1050,6 @@ static const struct platform_device_id board_ids[] = {
|
||||
SOF_RT5682_SSP_AMP(2) |
|
||||
SOF_RT5682_NUM_HDMIDEV(4)),
|
||||
},
|
||||
{
|
||||
.name = "jsl_rt5682s_rt1015",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
SOF_RT5682_MCLK_24MHZ |
|
||||
SOF_RT5682_SSP_CODEC(0) |
|
||||
SOF_RT5682S_HEADPHONE_CODEC_PRESENT |
|
||||
SOF_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT1015_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT5682_SSP_AMP(1)),
|
||||
},
|
||||
{
|
||||
.name = "jsl_rt5682s_rt1015p",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
SOF_RT5682_MCLK_24MHZ |
|
||||
SOF_RT5682_SSP_CODEC(0) |
|
||||
SOF_RT5682S_HEADPHONE_CODEC_PRESENT |
|
||||
SOF_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT1015P_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT5682_SSP_AMP(1)),
|
||||
},
|
||||
{
|
||||
.name = "jsl_rt5682s_mx98360",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
SOF_RT5682_MCLK_24MHZ |
|
||||
SOF_RT5682_SSP_CODEC(0) |
|
||||
SOF_RT5682S_HEADPHONE_CODEC_PRESENT |
|
||||
SOF_SPEAKER_AMP_PRESENT |
|
||||
SOF_MAX98360A_SPEAKER_AMP_PRESENT |
|
||||
SOF_RT5682_SSP_AMP(1)),
|
||||
},
|
||||
{
|
||||
.name = "adl_mx98360_rt5682",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
|
@ -285,9 +285,14 @@ static const struct snd_soc_acpi_codecs adl_max98360a_amp = {
|
||||
.codecs = {"MX98360A"}
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs adl_rt5682_rt5682s_hp = {
|
||||
.num_codecs = 2,
|
||||
.codecs = {"10EC5682", "RTL5682"},
|
||||
};
|
||||
|
||||
struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &adl_rt5682_rt5682s_hp,
|
||||
.drv_name = "adl_mx98373_rt5682",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &adl_max98373_amp,
|
||||
@ -295,7 +300,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
|
||||
.sof_tplg_filename = "sof-adl-max98373-rt5682.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &adl_rt5682_rt5682s_hp,
|
||||
.drv_name = "adl_mx98357_rt5682",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &adl_max98357a_amp,
|
||||
@ -303,7 +308,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_adl_machines[] = {
|
||||
.sof_tplg_filename = "sof-adl-max98357a-rt5682.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &adl_rt5682_rt5682s_hp,
|
||||
.drv_name = "adl_mx98360_rt5682",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &adl_max98360a_amp,
|
||||
|
@ -41,7 +41,7 @@ static struct snd_soc_acpi_mach *apl_quirk(void *arg)
|
||||
return mach;
|
||||
}
|
||||
|
||||
static struct snd_soc_acpi_codecs bxt_codecs = {
|
||||
static const struct snd_soc_acpi_codecs bxt_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98357A"}
|
||||
};
|
||||
|
@ -120,9 +120,29 @@ static struct snd_soc_acpi_mach *byt_quirk(void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
|
||||
.num_codecs = 3,
|
||||
.codecs = { "10EC5640", "10EC5642", "INTCCFFD"},
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs wm5102_comp_ids = {
|
||||
.num_codecs = 2,
|
||||
.codecs = { "WM510204", "WM510205"},
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs da7213_comp_ids = {
|
||||
.num_codecs = 2,
|
||||
.codecs = { "DGLS7212", "DGLS7213"},
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs rt5645_comp_ids = {
|
||||
.num_codecs = 2,
|
||||
.codecs = { "10EC5645", "10EC5648"},
|
||||
};
|
||||
|
||||
struct snd_soc_acpi_mach snd_soc_acpi_intel_baytrail_machines[] = {
|
||||
{
|
||||
.id = "10EC5640",
|
||||
.comp_ids = &rt5640_comp_ids,
|
||||
.drv_name = "bytcr_rt5640",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcr_rt5640",
|
||||
@ -130,22 +150,6 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_baytrail_machines[] = {
|
||||
.sof_fw_filename = "sof-byt.ri",
|
||||
.sof_tplg_filename = "sof-byt-rt5640.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5642",
|
||||
.drv_name = "bytcr_rt5640",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcr_rt5640",
|
||||
.sof_fw_filename = "sof-byt.ri",
|
||||
.sof_tplg_filename = "sof-byt-rt5640.tplg",
|
||||
},
|
||||
{
|
||||
.id = "INTCCFFD",
|
||||
.drv_name = "bytcr_rt5640",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcr_rt5640",
|
||||
.sof_fw_filename = "sof-byt.ri",
|
||||
.sof_tplg_filename = "sof-byt-rt5640.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5651",
|
||||
.drv_name = "bytcr_rt5651",
|
||||
@ -155,7 +159,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_baytrail_machines[] = {
|
||||
.sof_tplg_filename = "sof-byt-rt5651.tplg",
|
||||
},
|
||||
{
|
||||
.id = "WM510204",
|
||||
.comp_ids = &wm5102_comp_ids,
|
||||
.drv_name = "bytcr_wm5102",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcr_wm5102",
|
||||
@ -163,23 +167,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_baytrail_machines[] = {
|
||||
.sof_tplg_filename = "sof-byt-wm5102.tplg",
|
||||
},
|
||||
{
|
||||
.id = "WM510205",
|
||||
.drv_name = "bytcr_wm5102",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcr_wm5102",
|
||||
.sof_fw_filename = "sof-byt.ri",
|
||||
.sof_tplg_filename = "sof-byt-wm5102.tplg",
|
||||
},
|
||||
{
|
||||
.id = "DLGS7212",
|
||||
.drv_name = "bytcht_da7213",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcht_da7213",
|
||||
.sof_fw_filename = "sof-byt.ri",
|
||||
.sof_tplg_filename = "sof-byt-da7213.tplg",
|
||||
},
|
||||
{
|
||||
.id = "DLGS7213",
|
||||
.comp_ids = &da7213_comp_ids,
|
||||
.drv_name = "bytcht_da7213",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "bytcht_da7213",
|
||||
@ -202,15 +190,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_baytrail_machines[] = {
|
||||
},
|
||||
/* some Baytrail platforms rely on RT5645, use CHT machine driver */
|
||||
{
|
||||
.id = "10EC5645",
|
||||
.drv_name = "cht-bsw-rt5645",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "cht-bsw",
|
||||
.sof_fw_filename = "sof-byt.ri",
|
||||
.sof_tplg_filename = "sof-byt-rt5645.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5648",
|
||||
.comp_ids = &rt5645_comp_ids,
|
||||
.drv_name = "cht-bsw-rt5645",
|
||||
.fw_filename = "intel/fw_sst_0f28.bin",
|
||||
.board = "cht-bsw",
|
||||
|
@ -51,10 +51,31 @@ static struct snd_soc_acpi_mach *cht_quirk(void *arg)
|
||||
return mach;
|
||||
}
|
||||
|
||||
static const struct snd_soc_acpi_codecs rt5640_comp_ids = {
|
||||
.num_codecs = 2,
|
||||
.codecs = { "10EC5640", "10EC3276" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs rt5670_comp_ids = {
|
||||
.num_codecs = 2,
|
||||
.codecs = { "10EC5670", "10EC5672" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs rt5645_comp_ids = {
|
||||
.num_codecs = 3,
|
||||
.codecs = { "10EC5645", "10EC5650", "10EC3270" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs da7213_comp_ids = {
|
||||
.num_codecs = 2,
|
||||
.codecs = { "DGLS7212", "DGLS7213"},
|
||||
|
||||
};
|
||||
|
||||
/* Cherryview-based platforms: CherryTrail and Braswell */
|
||||
struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = {
|
||||
{
|
||||
.id = "10EC5670",
|
||||
.comp_ids = &rt5670_comp_ids,
|
||||
.drv_name = "cht-bsw-rt5672",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "cht-bsw",
|
||||
@ -62,31 +83,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = {
|
||||
.sof_tplg_filename = "sof-cht-rt5670.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5672",
|
||||
.drv_name = "cht-bsw-rt5672",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "cht-bsw",
|
||||
.sof_fw_filename = "sof-cht.ri",
|
||||
.sof_tplg_filename = "sof-cht-rt5670.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5645",
|
||||
.drv_name = "cht-bsw-rt5645",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "cht-bsw",
|
||||
.sof_fw_filename = "sof-cht.ri",
|
||||
.sof_tplg_filename = "sof-cht-rt5645.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5650",
|
||||
.drv_name = "cht-bsw-rt5645",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "cht-bsw",
|
||||
.sof_fw_filename = "sof-cht.ri",
|
||||
.sof_tplg_filename = "sof-cht-rt5645.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC3270",
|
||||
.comp_ids = &rt5645_comp_ids,
|
||||
.drv_name = "cht-bsw-rt5645",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "cht-bsw",
|
||||
@ -110,15 +107,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = {
|
||||
.sof_tplg_filename = "sof-cht-nau8824.tplg",
|
||||
},
|
||||
{
|
||||
.id = "DLGS7212",
|
||||
.drv_name = "bytcht_da7213",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "bytcht_da7213",
|
||||
.sof_fw_filename = "sof-cht.ri",
|
||||
.sof_tplg_filename = "sof-cht-da7213.tplg",
|
||||
},
|
||||
{
|
||||
.id = "DLGS7213",
|
||||
.comp_ids = &da7213_comp_ids,
|
||||
.drv_name = "bytcht_da7213",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "bytcht_da7213",
|
||||
@ -135,7 +124,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = {
|
||||
},
|
||||
/* some CHT-T platforms rely on RT5640, use Baytrail machine driver */
|
||||
{
|
||||
.id = "10EC5640",
|
||||
.comp_ids = &rt5640_comp_ids,
|
||||
.drv_name = "bytcr_rt5640",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "bytcr_rt5640",
|
||||
@ -143,14 +132,6 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_cherrytrail_machines[] = {
|
||||
.sof_fw_filename = "sof-cht.ri",
|
||||
.sof_tplg_filename = "sof-cht-rt5640.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC3276",
|
||||
.drv_name = "bytcr_rt5640",
|
||||
.fw_filename = "intel/fw_sst_22a8.bin",
|
||||
.board = "bytcr_rt5640",
|
||||
.sof_fw_filename = "sof-cht.ri",
|
||||
.sof_tplg_filename = "sof-cht-rt5640.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.drv_name = "sof_rt5682",
|
||||
|
@ -9,22 +9,22 @@
|
||||
#include <sound/soc-acpi.h>
|
||||
#include <sound/soc-acpi-intel-match.h>
|
||||
|
||||
static struct snd_soc_acpi_codecs rt1011_spk_codecs = {
|
||||
static const struct snd_soc_acpi_codecs rt1011_spk_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10EC1011"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs rt1015_spk_codecs = {
|
||||
static const struct snd_soc_acpi_codecs rt1015_spk_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10EC1015"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs max98357a_spk_codecs = {
|
||||
static const struct snd_soc_acpi_codecs max98357a_spk_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98357A"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs max98390_spk_codecs = {
|
||||
static const struct snd_soc_acpi_codecs max98390_spk_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98390"}
|
||||
};
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <sound/soc-acpi.h>
|
||||
#include <sound/soc-acpi-intel-match.h>
|
||||
|
||||
static struct snd_soc_acpi_codecs glk_codecs = {
|
||||
static const struct snd_soc_acpi_codecs glk_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98357A"}
|
||||
};
|
||||
|
@ -9,26 +9,31 @@
|
||||
#include <sound/soc-acpi.h>
|
||||
#include <sound/soc-acpi-intel-match.h>
|
||||
|
||||
static struct snd_soc_acpi_codecs jsl_7219_98373_codecs = {
|
||||
static const struct snd_soc_acpi_codecs jsl_7219_98373_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98373"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs rt1015_spk = {
|
||||
static const struct snd_soc_acpi_codecs rt1015_spk = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10EC1015"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs rt1015p_spk = {
|
||||
static const struct snd_soc_acpi_codecs rt1015p_spk = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"RTL1015"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs mx98360a_spk = {
|
||||
static const struct snd_soc_acpi_codecs mx98360a_spk = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98360A"}
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs rt5682_rt5682s_hp = {
|
||||
.num_codecs = 2,
|
||||
.codecs = {"10EC5682", "RTL5682"},
|
||||
};
|
||||
|
||||
/*
|
||||
* When adding new entry to the snd_soc_acpi_intel_jsl_machines array,
|
||||
* use .quirk_data member to distinguish different machine driver,
|
||||
@ -50,7 +55,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_jsl_machines[] = {
|
||||
.sof_tplg_filename = "sof-jsl-da7219-mx98360a.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &rt5682_rt5682s_hp,
|
||||
.drv_name = "jsl_rt5682_rt1015",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
@ -58,7 +63,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_jsl_machines[] = {
|
||||
.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &rt5682_rt5682s_hp,
|
||||
.drv_name = "jsl_rt5682_rt1015p",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
@ -66,7 +71,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_jsl_machines[] = {
|
||||
.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &rt5682_rt5682s_hp,
|
||||
.drv_name = "jsl_rt5682_mx98360",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
@ -81,30 +86,6 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_jsl_machines[] = {
|
||||
.quirk_data = &mx98360a_spk,
|
||||
.sof_tplg_filename = "sof-jsl-cs42l42-mx98360a.tplg",
|
||||
},
|
||||
{
|
||||
.id = "RTL5682",
|
||||
.drv_name = "jsl_rt5682s_rt1015",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &rt1015_spk,
|
||||
.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
|
||||
},
|
||||
{
|
||||
.id = "RTL5682",
|
||||
.drv_name = "jsl_rt5682s_rt1015p",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &rt1015p_spk,
|
||||
.sof_tplg_filename = "sof-jsl-rt5682-rt1015.tplg",
|
||||
},
|
||||
{
|
||||
.id = "RTL5682",
|
||||
.drv_name = "jsl_rt5682s_mx98360",
|
||||
.sof_fw_filename = "sof-jsl.ri",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &mx98360a_spk,
|
||||
.sof_tplg_filename = "sof-jsl-rt5682-mx98360a.tplg",
|
||||
},
|
||||
{
|
||||
.id = "ESSX8336",
|
||||
.drv_name = "sof-essx8336",
|
||||
|
@ -12,32 +12,32 @@
|
||||
|
||||
static struct skl_machine_pdata skl_dmic_data;
|
||||
|
||||
static struct snd_soc_acpi_codecs kbl_codecs = {
|
||||
static const struct snd_soc_acpi_codecs kbl_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10508825"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs kbl_poppy_codecs = {
|
||||
static const struct snd_soc_acpi_codecs kbl_poppy_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10EC5663"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs kbl_5663_5514_codecs = {
|
||||
static const struct snd_soc_acpi_codecs kbl_5663_5514_codecs = {
|
||||
.num_codecs = 2,
|
||||
.codecs = {"10EC5663", "10EC5514"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs kbl_7219_98357_codecs = {
|
||||
static const struct snd_soc_acpi_codecs kbl_7219_98357_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98357A"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs kbl_7219_98927_codecs = {
|
||||
static const struct snd_soc_acpi_codecs kbl_7219_98927_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98927"}
|
||||
};
|
||||
|
||||
static struct snd_soc_acpi_codecs kbl_7219_98373_codecs = {
|
||||
static const struct snd_soc_acpi_codecs kbl_7219_98373_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"MX98373"}
|
||||
};
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
static struct skl_machine_pdata skl_dmic_data;
|
||||
|
||||
static struct snd_soc_acpi_codecs skl_codecs = {
|
||||
static const struct snd_soc_acpi_codecs skl_codecs = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"10508825"}
|
||||
};
|
||||
|
@ -358,9 +358,14 @@ static const struct snd_soc_acpi_codecs tgl_rt1011_amp = {
|
||||
.codecs = {"10EC1011"}
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs tgl_rt5682_rt5682s_hp = {
|
||||
.num_codecs = 2,
|
||||
.codecs = {"10EC5682", "RTL5682"},
|
||||
};
|
||||
|
||||
struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_machines[] = {
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &tgl_rt5682_rt5682s_hp,
|
||||
.drv_name = "tgl_mx98357_rt5682",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &tgl_codecs,
|
||||
@ -368,7 +373,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_machines[] = {
|
||||
.sof_tplg_filename = "sof-tgl-max98357a-rt5682.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &tgl_rt5682_rt5682s_hp,
|
||||
.drv_name = "tgl_mx98373_rt5682",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &tgl_max98373_amp,
|
||||
@ -376,7 +381,7 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_tgl_machines[] = {
|
||||
.sof_tplg_filename = "sof-tgl-max98373-rt5682.tplg",
|
||||
},
|
||||
{
|
||||
.id = "10EC5682",
|
||||
.comp_ids = &tgl_rt5682_rt5682s_hp,
|
||||
.drv_name = "tgl_rt1011_rt5682",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &tgl_rt1011_amp,
|
||||
|
@ -8,14 +8,34 @@
|
||||
#include <linux/module.h>
|
||||
#include <sound/soc-acpi.h>
|
||||
|
||||
static bool snd_soc_acpi_id_present(struct snd_soc_acpi_mach *machine)
|
||||
{
|
||||
const struct snd_soc_acpi_codecs *comp_ids = machine->comp_ids;
|
||||
int i;
|
||||
|
||||
if (machine->id[0]) {
|
||||
if (acpi_dev_present(machine->id, NULL, -1))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (comp_ids) {
|
||||
for (i = 0; i < comp_ids->num_codecs; i++) {
|
||||
if (acpi_dev_present(comp_ids->codecs[i], NULL, -1))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
struct snd_soc_acpi_mach *
|
||||
snd_soc_acpi_find_machine(struct snd_soc_acpi_mach *machines)
|
||||
{
|
||||
struct snd_soc_acpi_mach *mach;
|
||||
struct snd_soc_acpi_mach *mach_alt;
|
||||
|
||||
for (mach = machines; mach->id[0]; mach++) {
|
||||
if (acpi_dev_present(mach->id, NULL, -1)) {
|
||||
for (mach = machines; mach->id[0] || mach->comp_ids; mach++) {
|
||||
if (snd_soc_acpi_id_present(mach)) {
|
||||
if (mach->machine_quirk) {
|
||||
mach_alt = mach->machine_quirk(mach);
|
||||
if (!mach_alt)
|
||||
|
Loading…
Reference in New Issue
Block a user