From 2bf7e58045b135c1bf9558f4a95ad4f83382ee34 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Sat, 15 Dec 2018 14:07:22 -0600 Subject: [PATCH 1/5] ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected Now that the SST/Skylake driver supports per platform selectors, we can add logic to automatically select the right driver. If the Skylake driver is selected for a specific platform, and the DSP is detected at run-time based on the PCI class/subclass/prog-if information, the legacy HDaudio driver aborts the probe. This will result in a single driver probing and remove the need for modprobe blacklists. Follow-up patches will add a module parameter to bypass the logic if this automatic detection fails, or if the Skylake driver is unable to actually support the platform (firmware authentication, missing topology file, hardware issue, etc). The same mechanism will be used to conflicts generated by the same PCI ID being registered by both legacy HDAuudio and SOF drivers for Intel platforms. In other words SOF will not require changes to the HDaudio legacy. Signed-off-by: Pierre-Louis Bossart Signed-off-by: Takashi Iwai (cherry picked from commit c337104b1a16becc486fdc95d544c835b17021db) --- sound/pci/hda/Kconfig | 62 ++++++++++++++++++++++++++++++++++ sound/pci/hda/hda_controller.h | 2 +- sound/pci/hda/hda_intel.c | 34 +++++++++++++++---- sound/soc/intel/Kconfig | 6 ++++ 4 files changed, 96 insertions(+), 8 deletions(-) diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index 4235907b785891..0d38c006e18247 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -226,6 +226,68 @@ config SND_HDA_POWER_SAVE_DEFAULT The default time-out value in seconds for HD-audio automatic power-save mode. 0 means to disable the power-save mode. +if SND_HDA_INTEL + +# The options below should not be enabled by distributions or +# users. They are selected by Intel/Skylake or SOF drivers when they +# register for a PCI ID which is also handled by the HDAudio legacy +# driver. When this option is selected and the DSP is detected based on +# the PCI class/subclass/prog-if, the probe of the HDAudio legacy +# aborts. This mechanism removes the need for distributions to use +# blacklists. It can be bypassed with module parameters should the +# Intel/Skylake or SOF drivers fail to handle a specific platform. + +config SND_HDA_INTEL_DSP_DETECTION_SKL + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + Skylake machines. + +config SND_HDA_INTEL_DSP_DETECTION_APL + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + Broxton/ApolloLake machines + +config SND_HDA_INTEL_DSP_DETECTION_KBL + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + KabyLake machines + +config SND_HDA_INTEL_DSP_DETECTION_GLK + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + GeminiLake machines + +config SND_HDA_INTEL_DSP_DETECTION_CNL + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + CannonLake machines + +config SND_HDA_INTEL_DSP_DETECTION_CFL + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + CoffeeLake machines + +config SND_HDA_INTEL_DSP_DETECTION_ICL + bool + help + This option is selected by SOF or SST drivers, not users or distros. + It enables DSP detection based on PCI class information for + IceLake machines + +endif ## SND_HDA_INTEL + endif endmenu diff --git a/sound/pci/hda/hda_controller.h b/sound/pci/hda/hda_controller.h index f099f8452dcfca..47f17fbbba2a37 100644 --- a/sound/pci/hda/hda_controller.h +++ b/sound/pci/hda/hda_controller.h @@ -37,7 +37,7 @@ #else #define AZX_DCAPS_I915_COMPONENT 0 /* NOP */ #endif -/* 14 unused */ +#define AZX_DCAPS_INTEL_SHARED (1 << 14) /* shared with ASoC */ #define AZX_DCAPS_CTX_WORKAROUND (1 << 15) /* X-Fi workaround */ #define AZX_DCAPS_POSFIX_LPIB (1 << 16) /* Use LPIB as default */ /* 17 unused */ diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index d0feeaa7bee4dc..4eea2c71223313 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -357,6 +357,7 @@ enum { AZX_DCAPS_NO_64BIT |\ AZX_DCAPS_4K_BDLE_BOUNDARY | AZX_DCAPS_SNOOP_OFF) +#define AZX_DCAPS_INTEL_DSP_DETECTION(conf) (IS_ENABLED(CONFIG_SND_HDA_INTEL_DSP_DETECTION_##conf) ? AZX_DCAPS_INTEL_SHARED : 0) /* * vga_switcheroo support */ @@ -2130,6 +2131,11 @@ static int azx_probe(struct pci_dev *pci, bool schedule_probe; int err; + /* check if this driver can be used on SKL+ Intel platforms */ + if ((pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) && + pci->class != 0x040300) + return -ENODEV; + if (dev >= SNDRV_CARDS) return -ENODEV; if (!enable[dev]) { @@ -2430,34 +2436,48 @@ static const struct pci_device_id azx_ids[] = { .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, /* Sunrise Point-LP */ { PCI_DEVICE(0x8086, 0x9d70), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | + AZX_DCAPS_INTEL_DSP_DETECTION(SKL) + }, /* Kabylake */ { PCI_DEVICE(0x8086, 0xa171), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, /* Kabylake-LP */ { PCI_DEVICE(0x8086, 0x9d71), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | + AZX_DCAPS_INTEL_DSP_DETECTION(KBL) + }, /* Kabylake-H */ { PCI_DEVICE(0x8086, 0xa2f0), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, /* Coffelake */ { PCI_DEVICE(0x8086, 0xa348), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | + AZX_DCAPS_INTEL_DSP_DETECTION(CFL) + }, /* Cannonlake */ { PCI_DEVICE(0x8086, 0x9dc8), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | + AZX_DCAPS_INTEL_DSP_DETECTION(CNL) + }, /* Icelake */ { PCI_DEVICE(0x8086, 0x34c8), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | + AZX_DCAPS_INTEL_DSP_DETECTION(ICL) + }, /* Broxton-P(Apollolake) */ { PCI_DEVICE(0x8086, 0x5a98), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON | + AZX_DCAPS_INTEL_DSP_DETECTION(APL) + }, /* Broxton-T */ { PCI_DEVICE(0x8086, 0x1a98), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON }, /* Gemini-Lake */ { PCI_DEVICE(0x8086, 0x3198), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON | + AZX_DCAPS_INTEL_DSP_DETECTION(GLK) + }, /* Haswell */ { PCI_DEVICE(0x8086, 0x0a0c), .driver_data = AZX_DRIVER_HDMI | AZX_DCAPS_INTEL_HASWELL }, diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index b3883ea8a81ff7..1e0b6fd893f2a8 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -188,6 +188,12 @@ config SND_SOC_INTEL_SKYLAKE_COMMON select SND_SOC_TOPOLOGY select SND_SOC_INTEL_SST select SND_SOC_HDAC_HDA if SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC + select SND_HDA_INTEL_DSP_DETECTION_SKL if SND_SOC_INTEL_SKL + select SND_HDA_INTEL_DSP_DETECTION_APL if SND_SOC_INTEL_APL + select SND_HDA_INTEL_DSP_DETECTION_KBL if SND_SOC_INTEL_KBL + select SND_HDA_INTEL_DSP_DETECTION_GLK if SND_SOC_INTEL_GLK + select SND_HDA_INTEL_DSP_DETECTION_CNL if SND_SOC_INTEL_CNL + select SND_HDA_INTEL_DSP_DETECTION_CFL if SND_SOC_INTEL_CFL select SND_SOC_ACPI_INTEL_MATCH help If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/ From ff215d07c8fd3febca7f0c0cc2bd75c03dd2c6a1 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Sat, 15 Dec 2018 14:07:23 -0600 Subject: [PATCH 2/5] ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection For HDaudio and Skylake drivers, add module parameter "pci_binding" When pci_binding == 0 (AUTO), the PCI class/subclass info is used to select drivers based on the presence of the DSP. pci_binding == 1 (LEGACY) forces the use of the HDAudio legacy driver, even if the DSP is present. pci_binding == 2 (ASOC) forces the use of the ASOC driver. The information on the DSP presence is bypassed. The value for the module parameter needs to be identical for both drivers. This parameter is intended as a back-up solution if the automatic detection fails or when the DSP usage fails. Such cases should be reported on the alsa-devel mailing list for analysis. Signed-off-by: Pierre-Louis Bossart Signed-off-by: Takashi Iwai (cherry picked from commit d82b51c855a20eb456ac09f2f40ea98312373263) --- include/sound/hdaudio.h | 6 +++++ sound/pci/hda/hda_intel.c | 26 ++++++++++++++++--- sound/soc/intel/skylake/skl.c | 48 ++++++++++++++++++++++++----------- 3 files changed, 62 insertions(+), 18 deletions(-) diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h index f9b2b6330d27a1..b4fa1c7752510b 100644 --- a/include/sound/hdaudio.h +++ b/include/sound/hdaudio.h @@ -98,6 +98,12 @@ enum { HDA_DEV_ASOC, }; +enum { + SND_SKL_PCI_BIND_AUTO, /* automatic selection based on pci class */ + SND_SKL_PCI_BIND_LEGACY,/* bind only with legacy driver */ + SND_SKL_PCI_BIND_ASOC /* bind only with ASoC driver */ +}; + /* direction */ enum { HDA_INPUT, HDA_OUTPUT diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 4eea2c71223313..f0b74186fd38c7 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -172,6 +172,9 @@ module_param_array(beep_mode, bool, NULL, 0444); MODULE_PARM_DESC(beep_mode, "Select HDA Beep registration mode " "(0=off, 1=on) (default=1)."); #endif +static int skl_pci_binding; +module_param_named(pci_binding, skl_pci_binding, int, 0444); +MODULE_PARM_DESC(pci_binding, "PCI binding (0=auto, 1=only legacy, 2=only asoc"); #ifdef CONFIG_PM static int param_set_xint(const char *val, const struct kernel_param *kp); @@ -2132,9 +2135,26 @@ static int azx_probe(struct pci_dev *pci, int err; /* check if this driver can be used on SKL+ Intel platforms */ - if ((pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) && - pci->class != 0x040300) - return -ENODEV; + if (pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) { + switch (skl_pci_binding) { + case SND_SKL_PCI_BIND_AUTO: + if (pci->class != 0x040300) { + dev_info(&pci->dev, "The DSP is enabled on this platform, aborting probe\n"); + return -ENODEV; + } + dev_info(&pci->dev, "No DSP detected, continuing HDaudio legacy probe\n"); + break; + case SND_SKL_PCI_BIND_LEGACY: + dev_info(&pci->dev, "Module parameter forced binding with HDaudio legacy, bypassed detection logic\n"); + break; + case SND_SKL_PCI_BIND_ASOC: + dev_info(&pci->dev, "Module parameter forced binding with SKL+ ASoC driver, aborting probe\n"); + return -ENODEV; + default: + dev_err(&pci->dev, "invalid value for skl_pci_binding module parameter, ignored\n"); + break; + } + } if (dev >= SNDRV_CARDS) return -ENODEV; diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 29d9b0eb83ea15..60c94836bf5bc9 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -40,6 +40,9 @@ #if IS_ENABLED(CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC) #include "../../../soc/codecs/hdac_hda.h" #endif +static int skl_pci_binding; +module_param_named(pci_binding, skl_pci_binding, int, 0444); +MODULE_PARM_DESC(pci_binding, "PCI binding (0=auto, 1=only legacy, 2=only asoc"); /* * initialize the PCI registers @@ -896,21 +899,6 @@ static int skl_first_init(struct hdac_bus *bus) unsigned short gcap; int cp_streams, pb_streams, start_idx; - /* - * detect DSP by checking class/subclass/prog-id information - * class=04 subclass 03 prog-if 00: no DSP, legacy driver needs to be used - * class=04 subclass 01 prog-if 00: DSP is present (and may be required e.g. for DMIC or SSP support) - * class=04 subclass 03 prog-if 80: either of DSP or legacy mode can be used - */ - if (pci->class == 0x040300) { - dev_err(bus->dev, "The DSP is not enabled on this platform, aborting probe\n"); - return -ENODEV; - } else if (pci->class != 0x040100 && pci->class != 0x040380) { - dev_err(bus->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, aborting probe\n", pci->class); - return -ENODEV; - } - dev_info(bus->dev, "DSP detected with PCI class/subclass/prog-if info 0x%06x\n", pci->class); - err = pci_request_regions(pci, "Skylake HD audio"); if (err < 0) return err; @@ -984,6 +972,36 @@ static int skl_probe(struct pci_dev *pci, struct hdac_bus *bus = NULL; int err; + switch (skl_pci_binding) { + case SND_SKL_PCI_BIND_AUTO: + /* + * detect DSP by checking class/subclass/prog-id information + * class=04 subclass 03 prog-if 00: no DSP, use legacy driver + * class=04 subclass 01 prog-if 00: DSP is present + * (and may be required e.g. for DMIC or SSP support) + * class=04 subclass 03 prog-if 80: use DSP or legacy mode + */ + if (pci->class == 0x040300) { + dev_info(&pci->dev, "The DSP is not enabled on this platform, aborting probe\n"); + return -ENODEV; + } + if (pci->class != 0x040100 && pci->class != 0x040380) { + dev_err(&pci->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, aborting probe\n", pci->class); + return -ENODEV; + } + dev_info(&pci->dev, "DSP detected with PCI class/subclass/prog-if info 0x%06x\n", pci->class); + break; + case SND_SKL_PCI_BIND_LEGACY: + dev_info(&pci->dev, "Module parameter forced binding with HDaudio legacy, aborting probe\n"); + return -ENODEV; + case SND_SKL_PCI_BIND_ASOC: + dev_info(&pci->dev, "Module parameter forced binding with SKL driver, bypassed detection logic\n"); + break; + default: + dev_err(&pci->dev, "invalid value for skl_pci_binding module parameter, ignored\n"); + break; + } + /* we use ext core ops, so provide NULL for ops here */ err = skl_create(pci, NULL, &skl); if (err < 0) From 5510151cd0924ffdce57887063e415ec4cf41d00 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Fri, 21 Dec 2018 11:33:05 -0600 Subject: [PATCH 3/5] ASoC: SOF: Intel: add placeholder for CoffeeLake We don't have I2S based plaforms yet so use CannonLake information Signed-off-by: Pierre-Louis Bossart --- sound/soc/sof/intel/Kconfig | 17 +++++++++++++++++ sound/soc/sof/sof-pci-dev.c | 22 ++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/sound/soc/sof/intel/Kconfig b/sound/soc/sof/intel/Kconfig index 6670fc3a43c2cc..ea8a9e9c950236 100644 --- a/sound/soc/sof/intel/Kconfig +++ b/sound/soc/sof/intel/Kconfig @@ -23,6 +23,7 @@ config SND_SOC_SOF_INTEL_PCI select SND_SOC_SOF_APOLLOLAKE if SND_SOC_SOF_APOLLOLAKE_SUPPORT select SND_SOC_SOF_GEMINILAKE if SND_SOC_SOF_GEMINILAKE_SUPPORT select SND_SOC_SOF_CANNONLAKE if SND_SOC_SOF_CANNONLAKE_SUPPORT + select SND_SOC_SOF_COFFEELAKE if SND_SOC_SOF_COFFEELAKE_SUPPORT select SND_SOC_SOF_KABYLAKE if SND_SOC_SOF_KABYLAKE_SUPPORT select SND_SOC_SOF_SKYLAKE if SND_SOC_SOF_SKYLAKE_SUPPORT select SND_SOC_SOF_ICELAKE if SND_SOC_SOF_ICELAKE_SUPPORT @@ -158,6 +159,22 @@ config SND_SOC_SOF_CANNONLAKE This option is not user-selectable but automagically handled by 'select' statements at a higher level +config SND_SOC_SOF_COFFEELAKE_SUPPORT + bool "SOF support for Coffeelake" + help + This adds support for Sound Open Firmware for Intel(R) platforms + using the Coffeelake processors. + Say Y if you have such a device. + If unsure select "N". + +config SND_SOC_SOF_COFFEELAKE + tristate + select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_CFL + help + This option is not user-selectable but automagically handled by + 'select' statements at a higher level + config SND_SOC_SOF_KABYLAKE_SUPPORT bool "SOF support for Kabylake" help diff --git a/sound/soc/sof/sof-pci-dev.c b/sound/soc/sof/sof-pci-dev.c index 47c27d55b593e7..ed5aa088ed5fe4 100644 --- a/sound/soc/sof/sof-pci-dev.c +++ b/sound/soc/sof/sof-pci-dev.c @@ -88,6 +88,24 @@ static const struct sof_dev_desc cnl_desc = { }; #endif +/* + * TODO: For CoffeeLake we use CannonLake configurations for now, + * this will be updated when we have more platforms + */ +#if IS_ENABLED(CONFIG_SND_SOC_SOF_COFFEELAKE) +static const struct sof_dev_desc cfl_desc = { + .machines = snd_soc_acpi_intel_cnl_machines, + .resindex_lpe_base = 0, + .resindex_pcicfg_base = -1, + .resindex_imr_base = -1, + .irqindex_host_ipc = -1, + .resindex_dma_base = -1, + .chip_info = &cnl_chip_info, + .nocodec_fw_filename = "intel/sof-cnl.ri", + .nocodec_tplg_filename = "intel/sof-cnl.tplg" +}; +#endif + #if IS_ENABLED(CONFIG_SND_SOC_SOF_ICELAKE) static const struct sof_dev_desc icl_desc = { .machines = snd_soc_acpi_intel_icl_machines, @@ -311,6 +329,10 @@ static const struct pci_device_id sof_pci_ids[] = { { PCI_DEVICE(0x8086, 0x9dc8), .driver_data = (unsigned long)&cnl_desc}, #endif +#if IS_ENABLED(CONFIG_SND_SOC_SOF_COFFEELAKE) + { PCI_DEVICE(0x8086, 0xa348), + .driver_data = (unsigned long)&cfl_desc}, +#endif #if IS_ENABLED(CONFIG_SND_SOC_SOF_KABYLAKE) { PCI_DEVICE(0x8086, 0x9d71), .driver_data = (unsigned long)&kbl_desc}, From 50a68888fb7fad4908301d2b74d8975d494508be Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Fri, 21 Dec 2018 11:14:32 -0600 Subject: [PATCH 4/5] ASoC: SOF: Intel: enable HDaudio legacy DSP detection Use existing mechanism to prevent HDaudio legacy from probing when SOF Intel drivers are used. Signed-off-by: Pierre-Louis Bossart --- sound/soc/sof/intel/Kconfig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sound/soc/sof/intel/Kconfig b/sound/soc/sof/intel/Kconfig index ea8a9e9c950236..a1b8e8c954592d 100644 --- a/sound/soc/sof/intel/Kconfig +++ b/sound/soc/sof/intel/Kconfig @@ -125,6 +125,7 @@ config SND_SOC_SOF_APOLLOLAKE_SUPPORT config SND_SOC_SOF_APOLLOLAKE tristate select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_APL if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level @@ -140,6 +141,7 @@ config SND_SOC_SOF_GEMINILAKE_SUPPORT config SND_SOC_SOF_GEMINILAKE tristate select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_GLK if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level @@ -155,6 +157,7 @@ config SND_SOC_SOF_CANNONLAKE_SUPPORT config SND_SOC_SOF_CANNONLAKE tristate select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_CNL if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level @@ -170,7 +173,7 @@ config SND_SOC_SOF_COFFEELAKE_SUPPORT config SND_SOC_SOF_COFFEELAKE tristate select SND_SOC_SOF_HDA_COMMON - select SND_HDA_INTEL_DSP_DETECTION_CFL + select SND_HDA_INTEL_DSP_DETECTION_CFL if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level @@ -186,6 +189,7 @@ config SND_SOC_SOF_KABYLAKE_SUPPORT config SND_SOC_SOF_KABYLAKE tristate select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_KBL if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level @@ -201,6 +205,7 @@ config SND_SOC_SOF_SKYLAKE_SUPPORT config SND_SOC_SOF_SKYLAKE tristate select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_SKL if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level @@ -216,6 +221,7 @@ config SND_SOC_SOF_ICELAKE_SUPPORT config SND_SOC_SOF_ICELAKE tristate select SND_SOC_SOF_HDA_COMMON + select SND_HDA_INTEL_DSP_DETECTION_ICL if SND_HDA_INTEL help This option is not user-selectable but automagically handled by 'select' statements at a higher level From a74e97679b4b3e7e03dfb370054ae1b9dbf55f1c Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Fri, 21 Dec 2018 11:22:02 -0600 Subject: [PATCH 5/5] ASoC: Intel: Add mutual exclusion with SOF drivers The choice is done on a platform-per-platform basis, e.g. it's perfectly fine to use the SST/Skylake driver for Kabylake but SOF for CoffeeLake. Signed-off-by: Pierre-Louis Bossart --- sound/soc/intel/Kconfig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sound/soc/intel/Kconfig b/sound/soc/intel/Kconfig index 1e0b6fd893f2a8..0ed345fb07592b 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -120,6 +120,7 @@ config SND_SOC_INTEL_SKYLAKE config SND_SOC_INTEL_SKL tristate "Skylake Platforms" depends on PCI && ACPI + depends on SND_SOC_SOF_SKYLAKE=n select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Skylake platform with the DSP enabled @@ -128,6 +129,7 @@ config SND_SOC_INTEL_SKL config SND_SOC_INTEL_APL tristate "Broxton/ApolloLake Platforms" depends on PCI && ACPI + depends on SND_SOC_SOF_APOLLOLAKE=n select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Broxton/ApolloLake platform with the DSP @@ -136,6 +138,7 @@ config SND_SOC_INTEL_APL config SND_SOC_INTEL_KBL tristate "Kabylake Platforms" depends on PCI && ACPI + depends on SND_SOC_SOF_KABYLAKE=n select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel Kabylake platform with the DSP @@ -144,6 +147,7 @@ config SND_SOC_INTEL_KBL config SND_SOC_INTEL_GLK tristate "GeminiLake Platforms" depends on PCI && ACPI + depends on SND_SOC_SOF_GEMINILAKE=n select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel GeminiLake platform with the DSP @@ -152,6 +156,7 @@ config SND_SOC_INTEL_GLK config SND_SOC_INTEL_CNL tristate "CannonLake/WhiskyLake Platforms" depends on PCI && ACPI + depends on SND_SOC_SOF_CANNONLAKE=n select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CNL/WHL platform with the DSP @@ -160,6 +165,7 @@ config SND_SOC_INTEL_CNL config SND_SOC_INTEL_CFL tristate "CoffeeLake Platforms" depends on PCI && ACPI + depends on SND_SOC_SOF_COFFEELAKE=n select SND_SOC_INTEL_SKYLAKE_FAMILY help If you have a Intel CoffeeLake platform with the DSP