diff options
| author | Cezary Rojewski <cezary.rojewski@intel.com> | 2020-03-05 17:53:08 +0300 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2020-03-10 20:44:24 +0300 | 
| commit | 2ef81057d80456870b97890dd79c8f56a85b1242 (patch) | |
| tree | 6c3f2eaf86a990cfeed3763cd22e603faae7037c | |
| parent | c8061689ffadde941f9c3756f1362bd2b97311c8 (diff) | |
| download | linux-2ef81057d80456870b97890dd79c8f56a85b1242.tar.xz | |
ASoC: Intel: Skylake: Remove superfluous chip initialization
Skylake driver does the controller init operation twice:
- first during probe (only to stop it just before scheduling probe_work)
- and during said probe_work where the actual correct sequence is
executed
To properly complete boot sequence when iDisp codec is present, bus
initialization has to be called only after _i915_init() finishes.
With additional _reset_list preceding _i915_init(), iDisp codec never
gets the chance to enumerate on the link. Remove the superfluous
initialization to address the issue.
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200305145314.32579-2-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
| -rw-r--r-- | sound/soc/intel/skylake/skl.c | 13 | 
1 files changed, 4 insertions, 9 deletions
| diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index f755ca2484cf..d66231525356 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -803,6 +803,9 @@ static void skl_probe_work(struct work_struct *work)  			return;  	} +	skl_init_pci(skl); +	skl_dum_set(bus); +  	err = skl_init_chip(bus, true);  	if (err < 0) {  		dev_err(bus->dev, "Init chip failed with err: %d\n", err); @@ -918,8 +921,6 @@ static int skl_first_init(struct hdac_bus *bus)  		return -ENXIO;  	} -	snd_hdac_bus_reset_link(bus, true); -  	snd_hdac_bus_parse_capabilities(bus);  	/* check if PPCAP exists */ @@ -967,11 +968,7 @@ static int skl_first_init(struct hdac_bus *bus)  	if (err < 0)  		return err; -	/* initialize chip */ -	skl_init_pci(skl); -	skl_dum_set(bus); - -	return skl_init_chip(bus, true); +	return 0;  }  static int skl_probe(struct pci_dev *pci, @@ -1064,8 +1061,6 @@ static int skl_probe(struct pci_dev *pci,  	if (bus->mlcap)  		snd_hdac_ext_bus_get_ml_capabilities(bus); -	snd_hdac_bus_stop_chip(bus); -  	/* create device for soc dmic */  	err = skl_dmic_device_register(skl);  	if (err < 0) { | 
