lkml.org 
[lkml]   [2020]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 91/98] ASoC: Intel: Skylake: Remove superfluous chip initialization
    Date
    From: Cezary Rojewski <cezary.rojewski@intel.com>

    commit 2ef81057d80456870b97890dd79c8f56a85b1242 upstream.

    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>
    Cc: <stable@vger.kernel.org> # 5.4.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    sound/soc/intel/skylake/skl.c | 13 ++++---------
    1 file changed, 4 insertions(+), 9 deletions(-)

    --- a/sound/soc/intel/skylake/skl.c
    +++ b/sound/soc/intel/skylake/skl.c
    @@ -807,6 +807,9 @@ static void skl_probe_work(struct work_s
    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);
    @@ -922,8 +925,6 @@ static int skl_first_init(struct hdac_bu
    return -ENXIO;
    }

    - snd_hdac_bus_reset_link(bus, true);
    -
    snd_hdac_bus_parse_capabilities(bus);

    /* check if PPCAP exists */
    @@ -971,11 +972,7 @@ static int skl_first_init(struct hdac_bu
    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,
    @@ -1080,8 +1077,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) {

    \
     
     \ /
      Last update: 2020-12-01 10:41    [W:4.146 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site