ALSA: hda - Revert DSP detection on legacy HD-audio driver
diff mbox series

Message ID 20181231181720.11396-1-tiwai@suse.de
State New
Headers show
Series
  • ALSA: hda - Revert DSP detection on legacy HD-audio driver
Related show

Commit Message

Takashi Iwai Dec. 31, 2018, 6:17 p.m. UTC
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(-)

Comments

kbuild test robot Dec. 31, 2018, 8:48 p.m. UTC | #1
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-detection-on-legacy-HD-audio-driver/20190101-022353
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
kbuild test robot Jan. 1, 2019, 6:53 a.m. UTC | #2
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-detection-on-legacy-HD-audio-driver/20190101-022353
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
Takashi Iwai Jan. 1, 2019, 8:08 a.m. UTC | #3
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

Patch
diff mbox series

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/