Commit 2ef81057 authored by Cezary Rojewski's avatar Cezary Rojewski Committed by Mark Brown

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: default avatarCezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200305145314.32579-2-cezary.rojewski@intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent c8061689
...@@ -803,6 +803,9 @@ static void skl_probe_work(struct work_struct *work) ...@@ -803,6 +803,9 @@ static void skl_probe_work(struct work_struct *work)
return; return;
} }
skl_init_pci(skl);
skl_dum_set(bus);
err = skl_init_chip(bus, true); err = skl_init_chip(bus, true);
if (err < 0) { if (err < 0) {
dev_err(bus->dev, "Init chip failed with err: %d\n", err); 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) ...@@ -918,8 +921,6 @@ static int skl_first_init(struct hdac_bus *bus)
return -ENXIO; return -ENXIO;
} }
snd_hdac_bus_reset_link(bus, true);
snd_hdac_bus_parse_capabilities(bus); snd_hdac_bus_parse_capabilities(bus);
/* check if PPCAP exists */ /* check if PPCAP exists */
...@@ -967,11 +968,7 @@ static int skl_first_init(struct hdac_bus *bus) ...@@ -967,11 +968,7 @@ static int skl_first_init(struct hdac_bus *bus)
if (err < 0) if (err < 0)
return err; return err;
/* initialize chip */ return 0;
skl_init_pci(skl);
skl_dum_set(bus);
return skl_init_chip(bus, true);
} }
static int skl_probe(struct pci_dev *pci, static int skl_probe(struct pci_dev *pci,
...@@ -1064,8 +1061,6 @@ static int skl_probe(struct pci_dev *pci, ...@@ -1064,8 +1061,6 @@ static int skl_probe(struct pci_dev *pci,
if (bus->mlcap) if (bus->mlcap)
snd_hdac_ext_bus_get_ml_capabilities(bus); snd_hdac_ext_bus_get_ml_capabilities(bus);
snd_hdac_bus_stop_chip(bus);
/* create device for soc dmic */ /* create device for soc dmic */
err = skl_dmic_device_register(skl); err = skl_dmic_device_register(skl);
if (err < 0) { if (err < 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment