lkml.org 
[lkml]   [2021]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.13 179/219] ASoC: Intel: Skylake: Fix passing loadable flag for module
    Date
    From: Gustaw Lewandowski <gustaw.lewandowski@linux.intel.com>

    [ Upstream commit c5ed9c547cba1dc1238c6e8a0c290fd62ee6e127 ]

    skl_get_module_info() tries to set mconfig->module->loadable before
    mconfig->module has been assigned thus flag was always set to false
    and driver did not try to load module binaries.

    Signed-off-by: Gustaw Lewandowski <gustaw.lewandowski@linux.intel.com>
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Tested-by: Lukasz Majczak <lma@semihalf.com>
    Link: https://lore.kernel.org/r/20210818075742.1515155-7-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/intel/skylake/skl-pcm.c | 25 +++++++++----------------
    1 file changed, 9 insertions(+), 16 deletions(-)

    diff --git a/sound/soc/intel/skylake/skl-pcm.c b/sound/soc/intel/skylake/skl-pcm.c
    index b1ca64d2f7ea..031d5dc7e660 100644
    --- a/sound/soc/intel/skylake/skl-pcm.c
    +++ b/sound/soc/intel/skylake/skl-pcm.c
    @@ -1317,21 +1317,6 @@ static int skl_get_module_info(struct skl_dev *skl,
    return -EIO;
    }

    - list_for_each_entry(module, &skl->uuid_list, list) {
    - if (guid_equal(uuid_mod, &module->uuid)) {
    - mconfig->id.module_id = module->id;
    - if (mconfig->module)
    - mconfig->module->loadable = module->is_loadable;
    - ret = 0;
    - break;
    - }
    - }
    -
    - if (ret)
    - return ret;
    -
    - uuid_mod = &module->uuid;
    - ret = -EIO;
    for (i = 0; i < skl->nr_modules; i++) {
    skl_module = skl->modules[i];
    uuid_tplg = &skl_module->uuid;
    @@ -1341,10 +1326,18 @@ static int skl_get_module_info(struct skl_dev *skl,
    break;
    }
    }
    +
    if (skl->nr_modules && ret)
    return ret;

    + ret = -EIO;
    list_for_each_entry(module, &skl->uuid_list, list) {
    + if (guid_equal(uuid_mod, &module->uuid)) {
    + mconfig->id.module_id = module->id;
    + mconfig->module->loadable = module->is_loadable;
    + ret = 0;
    + }
    +
    for (i = 0; i < MAX_IN_QUEUE; i++) {
    pin_id = &mconfig->m_in_pin[i].id;
    if (guid_equal(&pin_id->mod_uuid, &module->uuid))
    @@ -1358,7 +1351,7 @@ static int skl_get_module_info(struct skl_dev *skl,
    }
    }

    - return 0;
    + return ret;
    }

    static int skl_populate_modules(struct skl_dev *skl)
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-09-09 14:37    [W:2.047 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site