[alsa-devel] [PATCH] ALSA: hda - Revert DSP detection on legacy HD-audio driver
This essentially reverts the commits c337104b1a16 ("ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected") and d82b51c855a2 ("ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection") for the path of legacy HD-audio controller (snd-hda-intel).
The automatic DSP detection and skip of binding with the legacy driver caused regressions on several machines like Dell XPS13. They give the PCI class 0x40380 indicating the availability of DSP while they don't work with ASoC SKL driver (yet).
As the support of ASoC driver for such devices isn't available, it's better to revert the whole DSP-detection-and-skip behavior of the legacy driver, so that we can get the old good driver working on such devices.
The pci_binding option for ASoC SKL driver is still kept so that it can work without blacklisting.
Fixes: c337104b1a16 ("ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected") Reported-by: Linus Torvalds torvalds@linux-foundation.org Reported-by: Hans de Goede hdegoede@redhat.com Reported-by: Azat Khuzhin dohardgopro@gmail.com Cc: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Signed-off-by: Takashi Iwai tiwai@suse.de --- include/sound/hdaudio.h | 6 ---- sound/pci/hda/Kconfig | 62 ---------------------------------- sound/pci/hda/hda_controller.h | 2 +- sound/pci/hda/hda_intel.c | 54 ++++------------------------- sound/soc/intel/Kconfig | 6 ---- 5 files changed, 8 insertions(+), 122 deletions(-)
diff --git a/include/sound/hdaudio.h b/include/sound/hdaudio.h index b4fa1c775251..f9b2b6330d27 100644 --- a/include/sound/hdaudio.h +++ b/include/sound/hdaudio.h @@ -98,12 +98,6 @@ 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/Kconfig b/sound/pci/hda/Kconfig index 0d38c006e182..4235907b7858 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -226,68 +226,6 @@ 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 e0c3fcbaa028..7185ed574b41 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 -#define AZX_DCAPS_INTEL_SHARED (1 << 14) /* shared with ASoC */ +/* 14 unused */ #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 e42cc2230977..e784130ea4e0 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -172,9 +172,6 @@ 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); @@ -360,7 +357,6 @@ 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 */ @@ -2052,28 +2048,6 @@ 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) { - 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; if (!enable[dev]) { @@ -2380,48 +2354,34 @@ 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 | - AZX_DCAPS_INTEL_DSP_DETECTION(SKL) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, /* 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 | - AZX_DCAPS_INTEL_DSP_DETECTION(KBL) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE }, /* 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 | - AZX_DCAPS_INTEL_DSP_DETECTION(CFL) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* Cannonlake */ { PCI_DEVICE(0x8086, 0x9dc8), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | - AZX_DCAPS_INTEL_DSP_DETECTION(CNL) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* Icelake */ { PCI_DEVICE(0x8086, 0x34c8), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE | - AZX_DCAPS_INTEL_DSP_DETECTION(ICL) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* Broxton-P(Apollolake) */ { PCI_DEVICE(0x8086, 0x5a98), - .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON | - AZX_DCAPS_INTEL_DSP_DETECTION(APL) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON }, /* 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 | - AZX_DCAPS_INTEL_DSP_DETECTION(GLK) - }, + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON }, /* 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 2fd1b61e8331..99a62ba409df 100644 --- a/sound/soc/intel/Kconfig +++ b/sound/soc/intel/Kconfig @@ -188,12 +188,6 @@ 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/
On Mon, Dec 31, 2018 at 10:17 AM Takashi Iwai tiwai@suse.de wrote:
This essentially reverts the commits c337104b1a16 ("ALSA: HD-Audio:..."
I was cc'd, but I'm assuming that you didn't mean for me to apply this directly, and will be sending a pull request later.
But if you *did* want me to apply this as a patch, holler.
Linus
On Mon, 31 Dec 2018 19:20:38 +0100, Linus Torvalds wrote:
On Mon, Dec 31, 2018 at 10:17 AM Takashi Iwai tiwai@suse.de wrote:
This essentially reverts the commits c337104b1a16 ("ALSA: HD-Audio:..."
I was cc'd, but I'm assuming that you didn't mean for me to apply this directly, and will be sending a pull request later.
But if you *did* want me to apply this as a patch, holler.
Heh, I've put you in Cc for testing the patch, but I don't mind either way as long as the patch goes in to 4.21 / 5.0 ;)
And yes, I'm going to send a pull request in the new year including this one, in anyway.
thanks,
Takashi
Hi Takashi,
I love your patch! Yet something to improve:
[auto build test ERROR on sound/for-next] [also build test ERROR on next-20181224] [cannot apply to v4.20] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Takashi-Iwai/ALSA-hda-Revert-DSP-de... base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next config: x86_64-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
All errors (new ones prefixed by >>):
sound/soc//intel/skylake/skl.c: In function 'skl_probe':
sound/soc//intel/skylake/skl.c:976:7: error: 'SND_SKL_PCI_BIND_AUTO' undeclared (first use in this function)
case SND_SKL_PCI_BIND_AUTO: ^~~~~~~~~~~~~~~~~~~~~ sound/soc//intel/skylake/skl.c:976:7: note: each undeclared identifier is reported only once for each function it appears in
sound/soc//intel/skylake/skl.c:994:7: error: 'SND_SKL_PCI_BIND_LEGACY' undeclared (first use in this function); did you mean 'SND_SKL_PCI_BIND_AUTO'?
case SND_SKL_PCI_BIND_LEGACY: ^~~~~~~~~~~~~~~~~~~~~~~ SND_SKL_PCI_BIND_AUTO
sound/soc//intel/skylake/skl.c:997:7: error: 'SND_SKL_PCI_BIND_ASOC' undeclared (first use in this function); did you mean 'SND_SKL_PCI_BIND_AUTO'?
case SND_SKL_PCI_BIND_ASOC: ^~~~~~~~~~~~~~~~~~~~~ SND_SKL_PCI_BIND_AUTO --
sound/soc/intel/skylake/skl.c:976:14: error: undefined identifier 'SND_SKL_PCI_BIND_AUTO' sound/soc/intel/skylake/skl.c:994:14: error: undefined identifier 'SND_SKL_PCI_BIND_LEGACY' sound/soc/intel/skylake/skl.c:997:14: error: undefined identifier 'SND_SKL_PCI_BIND_ASOC' sound/soc/intel/skylake/skl.c:976:14: error: incompatible types for 'case' statement
sound/soc/intel/skylake/skl.c:994:14: error: incompatible types for 'case' statement sound/soc/intel/skylake/skl.c:997:14: error: incompatible types for 'case' statement
sound/soc/intel/skylake/skl.c:976:14: error: Expected constant expression in case statement
sound/soc/intel/skylake/skl.c:994:14: error: Expected constant expression in case statement sound/soc/intel/skylake/skl.c:997:14: error: Expected constant expression in case statement sound/soc/intel/skylake/skl.c: In function 'skl_probe': sound/soc/intel/skylake/skl.c:976:7: error: 'SND_SKL_PCI_BIND_AUTO' undeclared (first use in this function) case SND_SKL_PCI_BIND_AUTO: ^~~~~~~~~~~~~~~~~~~~~ sound/soc/intel/skylake/skl.c:976:7: note: each undeclared identifier is reported only once for each function it appears in sound/soc/intel/skylake/skl.c:994:7: error: 'SND_SKL_PCI_BIND_LEGACY' undeclared (first use in this function); did you mean 'SND_SKL_PCI_BIND_AUTO'? case SND_SKL_PCI_BIND_LEGACY: ^~~~~~~~~~~~~~~~~~~~~~~ SND_SKL_PCI_BIND_AUTO sound/soc/intel/skylake/skl.c:997:7: error: 'SND_SKL_PCI_BIND_ASOC' undeclared (first use in this function); did you mean 'SND_SKL_PCI_BIND_AUTO'? case SND_SKL_PCI_BIND_ASOC: ^~~~~~~~~~~~~~~~~~~~~ SND_SKL_PCI_BIND_AUTO
vim +/SND_SKL_PCI_BIND_AUTO +976 sound/soc//intel/skylake/skl.c
d8c2dab838 Jeeja KP 2015-07-09 967 d8c2dab838 Jeeja KP 2015-07-09 968 static int skl_probe(struct pci_dev *pci, d8c2dab838 Jeeja KP 2015-07-09 969 const struct pci_device_id *pci_id) d8c2dab838 Jeeja KP 2015-07-09 970 { d8c2dab838 Jeeja KP 2015-07-09 971 struct skl *skl; d8c2dab838 Jeeja KP 2015-07-09 972 struct hdac_bus *bus = NULL; d8c2dab838 Jeeja KP 2015-07-09 973 int err; d8c2dab838 Jeeja KP 2015-07-09 974 d82b51c855 Pierre-Louis Bossart 2018-12-15 975 switch (skl_pci_binding) { d82b51c855 Pierre-Louis Bossart 2018-12-15 @976 case SND_SKL_PCI_BIND_AUTO: d82b51c855 Pierre-Louis Bossart 2018-12-15 977 /* d82b51c855 Pierre-Louis Bossart 2018-12-15 978 * detect DSP by checking class/subclass/prog-id information d82b51c855 Pierre-Louis Bossart 2018-12-15 979 * class=04 subclass 03 prog-if 00: no DSP, use legacy driver d82b51c855 Pierre-Louis Bossart 2018-12-15 980 * class=04 subclass 01 prog-if 00: DSP is present d82b51c855 Pierre-Louis Bossart 2018-12-15 981 * (and may be required e.g. for DMIC or SSP support) d82b51c855 Pierre-Louis Bossart 2018-12-15 982 * class=04 subclass 03 prog-if 80: use DSP or legacy mode d82b51c855 Pierre-Louis Bossart 2018-12-15 983 */ d82b51c855 Pierre-Louis Bossart 2018-12-15 984 if (pci->class == 0x040300) { d82b51c855 Pierre-Louis Bossart 2018-12-15 985 dev_info(&pci->dev, "The DSP is not enabled on this platform, aborting probe\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 986 return -ENODEV; d82b51c855 Pierre-Louis Bossart 2018-12-15 987 } d82b51c855 Pierre-Louis Bossart 2018-12-15 988 if (pci->class != 0x040100 && pci->class != 0x040380) { d82b51c855 Pierre-Louis Bossart 2018-12-15 989 dev_err(&pci->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, aborting probe\n", pci->class); d82b51c855 Pierre-Louis Bossart 2018-12-15 990 return -ENODEV; d82b51c855 Pierre-Louis Bossart 2018-12-15 991 } d82b51c855 Pierre-Louis Bossart 2018-12-15 992 dev_info(&pci->dev, "DSP detected with PCI class/subclass/prog-if info 0x%06x\n", pci->class); d82b51c855 Pierre-Louis Bossart 2018-12-15 993 break; d82b51c855 Pierre-Louis Bossart 2018-12-15 @994 case SND_SKL_PCI_BIND_LEGACY: d82b51c855 Pierre-Louis Bossart 2018-12-15 995 dev_info(&pci->dev, "Module parameter forced binding with HDaudio legacy, aborting probe\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 996 return -ENODEV; d82b51c855 Pierre-Louis Bossart 2018-12-15 @997 case SND_SKL_PCI_BIND_ASOC: d82b51c855 Pierre-Louis Bossart 2018-12-15 998 dev_info(&pci->dev, "Module parameter forced binding with SKL driver, bypassed detection logic\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 999 break; d82b51c855 Pierre-Louis Bossart 2018-12-15 1000 default: d82b51c855 Pierre-Louis Bossart 2018-12-15 1001 dev_err(&pci->dev, "invalid value for skl_pci_binding module parameter, ignored\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 1002 break; d82b51c855 Pierre-Louis Bossart 2018-12-15 1003 } d82b51c855 Pierre-Louis Bossart 2018-12-15 1004 d8c2dab838 Jeeja KP 2015-07-09 1005 /* we use ext core ops, so provide NULL for ops here */ d8c2dab838 Jeeja KP 2015-07-09 1006 err = skl_create(pci, NULL, &skl); d8c2dab838 Jeeja KP 2015-07-09 1007 if (err < 0) d8c2dab838 Jeeja KP 2015-07-09 1008 return err; d8c2dab838 Jeeja KP 2015-07-09 1009 76f56fae1c Rakesh Ughreja 2018-06-01 1010 bus = skl_to_bus(skl); d8c2dab838 Jeeja KP 2015-07-09 1011 76f56fae1c Rakesh Ughreja 2018-06-01 1012 err = skl_first_init(bus); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1013 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1014 dev_err(bus->dev, "skl_first_init failed with err: %d\n", err); d8c2dab838 Jeeja KP 2015-07-09 1015 goto out_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1016 } d8c2dab838 Jeeja KP 2015-07-09 1017 4b235c43de Vinod Koul 2016-02-19 1018 skl->pci_id = pci->device; 4b235c43de Vinod Koul 2016-02-19 1019 2e9dc2b645 Vinod Koul 2016-06-22 1020 device_disable_async_suspend(bus->dev); 2e9dc2b645 Vinod Koul 2016-06-22 1021 87b2bdf022 Jeeja KP 2015-10-07 1022 skl->nhlt = skl_nhlt_init(bus->dev); 87b2bdf022 Jeeja KP 2015-10-07 1023 979cf59acc Wei Yongjun 2016-08-12 1024 if (skl->nhlt == NULL) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1025 #if !IS_ENABLED(CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC) f231c34ca9 Pierre-Louis Bossart 2018-12-07 1026 dev_err(bus->dev, "no nhlt info found\n"); 979cf59acc Wei Yongjun 2016-08-12 1027 err = -ENODEV; ab1b732d53 Vinod Koul 2017-05-04 1028 goto out_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1029 #else f231c34ca9 Pierre-Louis Bossart 2018-12-07 1030 dev_warn(bus->dev, "no nhlt info found, continuing to try to enable HDaudio codec\n"); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1031 #endif f231c34ca9 Pierre-Louis Bossart 2018-12-07 1032 } else { 87b2bdf022 Jeeja KP 2015-10-07 1033 0cf5a17159 Subhransu S. Prusty 2017-01-11 1034 err = skl_nhlt_create_sysfs(skl); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1035 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1036 dev_err(bus->dev, "skl_nhlt_create_sysfs failed with err: %d\n", err); 0cf5a17159 Subhransu S. Prusty 2017-01-11 1037 goto out_nhlt_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1038 } 0cf5a17159 Subhransu S. Prusty 2017-01-11 1039 4b235c43de Vinod Koul 2016-02-19 1040 skl_nhlt_update_topology_bin(skl); 4b235c43de Vinod Koul 2016-02-19 1041 bc2bd45b1f Sriram Periyasamy 2017-11-22 1042 /* create device for dsp clk */ bc2bd45b1f Sriram Periyasamy 2017-11-22 1043 err = skl_clock_device_register(skl); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1044 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1045 dev_err(bus->dev, "skl_clock_device_register failed with err: %d\n", err); bc2bd45b1f Sriram Periyasamy 2017-11-22 1046 goto out_clk_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1047 } f231c34ca9 Pierre-Louis Bossart 2018-12-07 1048 } f231c34ca9 Pierre-Louis Bossart 2018-12-07 1049 f231c34ca9 Pierre-Louis Bossart 2018-12-07 1050 pci_set_drvdata(skl->pci, bus); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1051 bc2bd45b1f Sriram Periyasamy 2017-11-22 1052 752c93aa72 Pankaj Bharadiya 2017-12-18 1053 err = skl_find_machine(skl, (void *)pci_id->driver_data); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1054 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1055 dev_err(bus->dev, "skl_find_machine failed with err: %d\n", err); c286b3f960 Jeeja KP 2016-05-05 1056 goto out_nhlt_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1057 } cc18c5fdcd Vinod Koul 2015-11-05 1058 2a29b200c6 Jeeja KP 2015-10-07 1059 err = skl_init_dsp(skl); 2a29b200c6 Jeeja KP 2015-10-07 1060 if (err < 0) { 2a29b200c6 Jeeja KP 2015-10-07 1061 dev_dbg(bus->dev, "error failed to register dsp\n"); 752c93aa72 Pankaj Bharadiya 2017-12-18 1062 goto out_nhlt_free; 2a29b200c6 Jeeja KP 2015-10-07 1063 } 0c8ba9d285 Jayachandran B 2015-12-18 1064 skl->skl_sst->enable_miscbdcge = skl_enable_miscbdcge; fc9fdd61c4 Sanyog Kale 2018-03-13 1065 skl->skl_sst->clock_power_gating = skl_clock_power_gating; 7f981bdcf5 Pierre-Louis Bossart 2018-12-07 1066 ec8ae5703d Vinod Koul 2016-08-04 1067 if (bus->mlcap) 76f56fae1c Rakesh Ughreja 2018-06-01 1068 snd_hdac_ext_bus_get_ml_capabilities(bus); 0505700104 Jeeja KP 2015-07-09 1069 ab1b732d53 Vinod Koul 2017-05-04 1070 snd_hdac_bus_stop_chip(bus); ab1b732d53 Vinod Koul 2017-05-04 1071 d8c2dab838 Jeeja KP 2015-07-09 1072 /* create device for soc dmic */ d8c2dab838 Jeeja KP 2015-07-09 1073 err = skl_dmic_device_register(skl); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1074 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1075 dev_err(bus->dev, "skl_dmic_device_register failed with err: %d\n", err); 2a29b200c6 Jeeja KP 2015-10-07 1076 goto out_dsp_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1077 } d8c2dab838 Jeeja KP 2015-07-09 1078 ab1b732d53 Vinod Koul 2017-05-04 1079 schedule_work(&skl->probe_work); d8c2dab838 Jeeja KP 2015-07-09 1080 d8c2dab838 Jeeja KP 2015-07-09 1081 return 0; d8c2dab838 Jeeja KP 2015-07-09 1082 2a29b200c6 Jeeja KP 2015-10-07 1083 out_dsp_free: 2a29b200c6 Jeeja KP 2015-10-07 1084 skl_free_dsp(skl); bc2bd45b1f Sriram Periyasamy 2017-11-22 1085 out_clk_free: bc2bd45b1f Sriram Periyasamy 2017-11-22 1086 skl_clock_device_unregister(skl); c286b3f960 Jeeja KP 2016-05-05 1087 out_nhlt_free: c286b3f960 Jeeja KP 2016-05-05 1088 skl_nhlt_free(skl->nhlt); d8c2dab838 Jeeja KP 2015-07-09 1089 out_free: 76f56fae1c Rakesh Ughreja 2018-06-01 1090 skl_free(bus); d8c2dab838 Jeeja KP 2015-07-09 1091 d8c2dab838 Jeeja KP 2015-07-09 1092 return err; d8c2dab838 Jeeja KP 2015-07-09 1093 } d8c2dab838 Jeeja KP 2015-07-09 1094
:::::: The code at line 976 was first introduced by commit :::::: d82b51c855a20eb456ac09f2f40ea98312373263 ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection
:::::: TO: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com :::::: CC: Takashi Iwai tiwai@suse.de
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Takashi,
I love your patch! Yet something to improve:
[auto build test ERROR on sound/for-next] [also build test ERROR on next-20181224] [cannot apply to v4.20] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Takashi-Iwai/ALSA-hda-Revert-DSP-de... base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next config: i386-randconfig-a0-201900 (attached as .config) compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4 reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
sound/soc//intel/skylake/skl.c: In function 'skl_probe': sound/soc//intel/skylake/skl.c:976:7: error: 'SND_SKL_PCI_BIND_AUTO' undeclared (first use in this function) case SND_SKL_PCI_BIND_AUTO: ^ sound/soc//intel/skylake/skl.c:976:7: note: each undeclared identifier is reported only once for each function it appears in
sound/soc//intel/skylake/skl.c:994:7: error: 'SND_SKL_PCI_BIND_LEGACY' undeclared (first use in this function)
case SND_SKL_PCI_BIND_LEGACY: ^
sound/soc//intel/skylake/skl.c:997:7: error: 'SND_SKL_PCI_BIND_ASOC' undeclared (first use in this function)
case SND_SKL_PCI_BIND_ASOC: ^
vim +/SND_SKL_PCI_BIND_LEGACY +994 sound/soc//intel/skylake/skl.c
d8c2dab838 Jeeja KP 2015-07-09 967 d8c2dab838 Jeeja KP 2015-07-09 968 static int skl_probe(struct pci_dev *pci, d8c2dab838 Jeeja KP 2015-07-09 969 const struct pci_device_id *pci_id) d8c2dab838 Jeeja KP 2015-07-09 970 { d8c2dab838 Jeeja KP 2015-07-09 971 struct skl *skl; d8c2dab838 Jeeja KP 2015-07-09 972 struct hdac_bus *bus = NULL; d8c2dab838 Jeeja KP 2015-07-09 973 int err; d8c2dab838 Jeeja KP 2015-07-09 974 d82b51c855 Pierre-Louis Bossart 2018-12-15 975 switch (skl_pci_binding) { d82b51c855 Pierre-Louis Bossart 2018-12-15 @976 case SND_SKL_PCI_BIND_AUTO: d82b51c855 Pierre-Louis Bossart 2018-12-15 977 /* d82b51c855 Pierre-Louis Bossart 2018-12-15 978 * detect DSP by checking class/subclass/prog-id information d82b51c855 Pierre-Louis Bossart 2018-12-15 979 * class=04 subclass 03 prog-if 00: no DSP, use legacy driver d82b51c855 Pierre-Louis Bossart 2018-12-15 980 * class=04 subclass 01 prog-if 00: DSP is present d82b51c855 Pierre-Louis Bossart 2018-12-15 981 * (and may be required e.g. for DMIC or SSP support) d82b51c855 Pierre-Louis Bossart 2018-12-15 982 * class=04 subclass 03 prog-if 80: use DSP or legacy mode d82b51c855 Pierre-Louis Bossart 2018-12-15 983 */ d82b51c855 Pierre-Louis Bossart 2018-12-15 984 if (pci->class == 0x040300) { d82b51c855 Pierre-Louis Bossart 2018-12-15 985 dev_info(&pci->dev, "The DSP is not enabled on this platform, aborting probe\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 986 return -ENODEV; d82b51c855 Pierre-Louis Bossart 2018-12-15 987 } d82b51c855 Pierre-Louis Bossart 2018-12-15 988 if (pci->class != 0x040100 && pci->class != 0x040380) { d82b51c855 Pierre-Louis Bossart 2018-12-15 989 dev_err(&pci->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, aborting probe\n", pci->class); d82b51c855 Pierre-Louis Bossart 2018-12-15 990 return -ENODEV; d82b51c855 Pierre-Louis Bossart 2018-12-15 991 } d82b51c855 Pierre-Louis Bossart 2018-12-15 992 dev_info(&pci->dev, "DSP detected with PCI class/subclass/prog-if info 0x%06x\n", pci->class); d82b51c855 Pierre-Louis Bossart 2018-12-15 993 break; d82b51c855 Pierre-Louis Bossart 2018-12-15 @994 case SND_SKL_PCI_BIND_LEGACY: d82b51c855 Pierre-Louis Bossart 2018-12-15 995 dev_info(&pci->dev, "Module parameter forced binding with HDaudio legacy, aborting probe\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 996 return -ENODEV; d82b51c855 Pierre-Louis Bossart 2018-12-15 @997 case SND_SKL_PCI_BIND_ASOC: d82b51c855 Pierre-Louis Bossart 2018-12-15 998 dev_info(&pci->dev, "Module parameter forced binding with SKL driver, bypassed detection logic\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 999 break; d82b51c855 Pierre-Louis Bossart 2018-12-15 1000 default: d82b51c855 Pierre-Louis Bossart 2018-12-15 1001 dev_err(&pci->dev, "invalid value for skl_pci_binding module parameter, ignored\n"); d82b51c855 Pierre-Louis Bossart 2018-12-15 1002 break; d82b51c855 Pierre-Louis Bossart 2018-12-15 1003 } d82b51c855 Pierre-Louis Bossart 2018-12-15 1004 d8c2dab838 Jeeja KP 2015-07-09 1005 /* we use ext core ops, so provide NULL for ops here */ d8c2dab838 Jeeja KP 2015-07-09 1006 err = skl_create(pci, NULL, &skl); d8c2dab838 Jeeja KP 2015-07-09 1007 if (err < 0) d8c2dab838 Jeeja KP 2015-07-09 1008 return err; d8c2dab838 Jeeja KP 2015-07-09 1009 76f56fae1c Rakesh Ughreja 2018-06-01 1010 bus = skl_to_bus(skl); d8c2dab838 Jeeja KP 2015-07-09 1011 76f56fae1c Rakesh Ughreja 2018-06-01 1012 err = skl_first_init(bus); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1013 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1014 dev_err(bus->dev, "skl_first_init failed with err: %d\n", err); d8c2dab838 Jeeja KP 2015-07-09 1015 goto out_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1016 } d8c2dab838 Jeeja KP 2015-07-09 1017 4b235c43de Vinod Koul 2016-02-19 1018 skl->pci_id = pci->device; 4b235c43de Vinod Koul 2016-02-19 1019 2e9dc2b645 Vinod Koul 2016-06-22 1020 device_disable_async_suspend(bus->dev); 2e9dc2b645 Vinod Koul 2016-06-22 1021 87b2bdf022 Jeeja KP 2015-10-07 1022 skl->nhlt = skl_nhlt_init(bus->dev); 87b2bdf022 Jeeja KP 2015-10-07 1023 979cf59acc Wei Yongjun 2016-08-12 1024 if (skl->nhlt == NULL) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1025 #if !IS_ENABLED(CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC) f231c34ca9 Pierre-Louis Bossart 2018-12-07 1026 dev_err(bus->dev, "no nhlt info found\n"); 979cf59acc Wei Yongjun 2016-08-12 1027 err = -ENODEV; ab1b732d53 Vinod Koul 2017-05-04 1028 goto out_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1029 #else f231c34ca9 Pierre-Louis Bossart 2018-12-07 1030 dev_warn(bus->dev, "no nhlt info found, continuing to try to enable HDaudio codec\n"); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1031 #endif f231c34ca9 Pierre-Louis Bossart 2018-12-07 1032 } else { 87b2bdf022 Jeeja KP 2015-10-07 1033 0cf5a17159 Subhransu S. Prusty 2017-01-11 1034 err = skl_nhlt_create_sysfs(skl); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1035 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1036 dev_err(bus->dev, "skl_nhlt_create_sysfs failed with err: %d\n", err); 0cf5a17159 Subhransu S. Prusty 2017-01-11 1037 goto out_nhlt_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1038 } 0cf5a17159 Subhransu S. Prusty 2017-01-11 1039 4b235c43de Vinod Koul 2016-02-19 1040 skl_nhlt_update_topology_bin(skl); 4b235c43de Vinod Koul 2016-02-19 1041 bc2bd45b1f Sriram Periyasamy 2017-11-22 1042 /* create device for dsp clk */ bc2bd45b1f Sriram Periyasamy 2017-11-22 1043 err = skl_clock_device_register(skl); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1044 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1045 dev_err(bus->dev, "skl_clock_device_register failed with err: %d\n", err); bc2bd45b1f Sriram Periyasamy 2017-11-22 1046 goto out_clk_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1047 } f231c34ca9 Pierre-Louis Bossart 2018-12-07 1048 } f231c34ca9 Pierre-Louis Bossart 2018-12-07 1049 f231c34ca9 Pierre-Louis Bossart 2018-12-07 1050 pci_set_drvdata(skl->pci, bus); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1051 bc2bd45b1f Sriram Periyasamy 2017-11-22 1052 752c93aa72 Pankaj Bharadiya 2017-12-18 1053 err = skl_find_machine(skl, (void *)pci_id->driver_data); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1054 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1055 dev_err(bus->dev, "skl_find_machine failed with err: %d\n", err); c286b3f960 Jeeja KP 2016-05-05 1056 goto out_nhlt_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1057 } cc18c5fdcd Vinod Koul 2015-11-05 1058 2a29b200c6 Jeeja KP 2015-10-07 1059 err = skl_init_dsp(skl); 2a29b200c6 Jeeja KP 2015-10-07 1060 if (err < 0) { 2a29b200c6 Jeeja KP 2015-10-07 1061 dev_dbg(bus->dev, "error failed to register dsp\n"); 752c93aa72 Pankaj Bharadiya 2017-12-18 1062 goto out_nhlt_free; 2a29b200c6 Jeeja KP 2015-10-07 1063 } 0c8ba9d285 Jayachandran B 2015-12-18 1064 skl->skl_sst->enable_miscbdcge = skl_enable_miscbdcge; fc9fdd61c4 Sanyog Kale 2018-03-13 1065 skl->skl_sst->clock_power_gating = skl_clock_power_gating; 7f981bdcf5 Pierre-Louis Bossart 2018-12-07 1066 ec8ae5703d Vinod Koul 2016-08-04 1067 if (bus->mlcap) 76f56fae1c Rakesh Ughreja 2018-06-01 1068 snd_hdac_ext_bus_get_ml_capabilities(bus); 0505700104 Jeeja KP 2015-07-09 1069 ab1b732d53 Vinod Koul 2017-05-04 1070 snd_hdac_bus_stop_chip(bus); ab1b732d53 Vinod Koul 2017-05-04 1071 d8c2dab838 Jeeja KP 2015-07-09 1072 /* create device for soc dmic */ d8c2dab838 Jeeja KP 2015-07-09 1073 err = skl_dmic_device_register(skl); f231c34ca9 Pierre-Louis Bossart 2018-12-07 1074 if (err < 0) { f231c34ca9 Pierre-Louis Bossart 2018-12-07 1075 dev_err(bus->dev, "skl_dmic_device_register failed with err: %d\n", err); 2a29b200c6 Jeeja KP 2015-10-07 1076 goto out_dsp_free; f231c34ca9 Pierre-Louis Bossart 2018-12-07 1077 } d8c2dab838 Jeeja KP 2015-07-09 1078 ab1b732d53 Vinod Koul 2017-05-04 1079 schedule_work(&skl->probe_work); d8c2dab838 Jeeja KP 2015-07-09 1080 d8c2dab838 Jeeja KP 2015-07-09 1081 return 0; d8c2dab838 Jeeja KP 2015-07-09 1082 2a29b200c6 Jeeja KP 2015-10-07 1083 out_dsp_free: 2a29b200c6 Jeeja KP 2015-10-07 1084 skl_free_dsp(skl); bc2bd45b1f Sriram Periyasamy 2017-11-22 1085 out_clk_free: bc2bd45b1f Sriram Periyasamy 2017-11-22 1086 skl_clock_device_unregister(skl); c286b3f960 Jeeja KP 2016-05-05 1087 out_nhlt_free: c286b3f960 Jeeja KP 2016-05-05 1088 skl_nhlt_free(skl->nhlt); d8c2dab838 Jeeja KP 2015-07-09 1089 out_free: 76f56fae1c Rakesh Ughreja 2018-06-01 1090 skl_free(bus); d8c2dab838 Jeeja KP 2015-07-09 1091 d8c2dab838 Jeeja KP 2015-07-09 1092 return err; d8c2dab838 Jeeja KP 2015-07-09 1093 } d8c2dab838 Jeeja KP 2015-07-09 1094
:::::: The code at line 994 was first introduced by commit :::::: d82b51c855a20eb456ac09f2f40ea98312373263 ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection
:::::: TO: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com :::::: CC: Takashi Iwai tiwai@suse.de
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
On Mon, 31 Dec 2018 19:17:20 +0100, Takashi Iwai wrote:
This essentially reverts the commits c337104b1a16 ("ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected") and d82b51c855a2 ("ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection") for the path of legacy HD-audio controller (snd-hda-intel).
The automatic DSP detection and skip of binding with the legacy driver caused regressions on several machines like Dell XPS13. They give the PCI class 0x40380 indicating the availability of DSP while they don't work with ASoC SKL driver (yet).
As the support of ASoC driver for such devices isn't available, it's better to revert the whole DSP-detection-and-skip behavior of the legacy driver, so that we can get the old good driver working on such devices.
The pci_binding option for ASoC SKL driver is still kept so that it can work without blacklisting.
Fixes: c337104b1a16 ("ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected") Reported-by: Linus Torvalds torvalds@linux-foundation.org Reported-by: Hans de Goede hdegoede@redhat.com Reported-by: Azat Khuzhin dohardgopro@gmail.com Cc: Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com Signed-off-by: Takashi Iwai tiwai@suse.de
I seem to have forgotten to exclude the global header change, which broke the build in sound/soc/intel/skylake. Will submit a v2 patch.
Sorry for the trouble.
Takashi
participants (3)
-
kbuild test robot
-
Linus Torvalds
-
Takashi Iwai