lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 614/633] ASoC: SOF: Add topology filename override based on dmi data match
    Date
    From: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>

    [ Upstream commit 5253a73d567dcd75e62834ff5f502ea9470e5722 ]

    Add topology filename override based on system DMI data matching,
    typically to account for a different hardware layout.

    In ACPI based systems, the tplg_filename is pre-defined in an ACPI
    machine table. When a DMI quirk is detected, the
    sof_pdata->tplg_filename is not set with the hard-coded ACPI value,
    and instead is set with the DMI-specific filename.

    Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
    Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200821195603.215535-14-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/sof/intel/hda.c | 8 +++++++-
    sound/soc/sof/sof-pci-dev.c | 24 ++++++++++++++++++++++++
    2 files changed, 31 insertions(+), 1 deletion(-)

    diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c
    index 63ca920c8e6e0..7152e6d1cf673 100644
    --- a/sound/soc/sof/intel/hda.c
    +++ b/sound/soc/sof/intel/hda.c
    @@ -1179,7 +1179,13 @@ void hda_machine_select(struct snd_sof_dev *sdev)

    mach = snd_soc_acpi_find_machine(desc->machines);
    if (mach) {
    - sof_pdata->tplg_filename = mach->sof_tplg_filename;
    + /*
    + * If tplg file name is overridden, use it instead of
    + * the one set in mach table
    + */
    + if (!sof_pdata->tplg_filename)
    + sof_pdata->tplg_filename = mach->sof_tplg_filename;
    +
    sof_pdata->machine = mach;

    if (mach->link_mask) {
    diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c
    index aa3532ba14349..f3a8140773db5 100644
    --- a/sound/soc/sof/sof-pci-dev.c
    +++ b/sound/soc/sof/sof-pci-dev.c
    @@ -35,8 +35,28 @@ static int sof_pci_debug;
    module_param_named(sof_pci_debug, sof_pci_debug, int, 0444);
    MODULE_PARM_DESC(sof_pci_debug, "SOF PCI debug options (0x0 all off)");

    +static const char *sof_override_tplg_name;
    +
    #define SOF_PCI_DISABLE_PM_RUNTIME BIT(0)

    +static int sof_tplg_cb(const struct dmi_system_id *id)
    +{
    + sof_override_tplg_name = id->driver_data;
    + return 1;
    +}
    +
    +static const struct dmi_system_id sof_tplg_table[] = {
    + {
    + .callback = sof_tplg_cb,
    + .matches = {
    + DMI_MATCH(DMI_PRODUCT_FAMILY, "Google_Volteer"),
    + DMI_MATCH(DMI_PRODUCT_NAME, "Terrador"),
    + },
    + .driver_data = "sof-tgl-rt5682-ssp0-max98373-ssp2.tplg",
    + },
    + {}
    +};
    +
    static const struct dmi_system_id community_key_platforms[] = {
    {
    .ident = "Up Squared",
    @@ -347,6 +367,10 @@ static int sof_pci_probe(struct pci_dev *pci,
    sof_pdata->tplg_filename_prefix =
    sof_pdata->desc->default_tplg_path;

    + dmi_check_system(sof_tplg_table);
    + if (sof_override_tplg_name)
    + sof_pdata->tplg_filename = sof_override_tplg_name;
    +
    #if IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE)
    /* set callback to enable runtime_pm */
    sof_pdata->sof_probe_complete = sof_pci_probe_complete;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 16:21    [W:4.041 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site