• Jie Yang's avatar
    ASoC: Intel: Fix block is enabled multiple times issue · 35c0a8c0
    Jie Yang authored
    During FW parsing and loading, block_list_prepare() may
    be called for each raw data block copying and this may
    made the hsw_block_enable() called mutiple times, which
    increase block->users many times. The result of this is
    hsw_block_disable() can't power gated the related block
    when trying to free the blocks during suspend, and the
    power gating status also confused.
    
    Here check the block user status, only calling enable()
    for those blocks who has no user yet. Remember that
    this works correctlly on current case, where there are
    enough SRAM memory so different module won't share a
    memory block. For further usage, we may need restructure
    the struct sst_mem_block to save the module list who is
    using it.
    Signed-off-by: default avatarJie Yang <yang.jie@intel.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    35c0a8c0
sst-firmware.c 28.3 KB