• Takashi Iwai's avatar
    ASoC: Make soc_component_read() returning an error code again · efc913c8
    Takashi Iwai authored
    Along with the recent unification of snd_soc_component_read*()
    functions, the behavior of snd_soc_component_read() was changed
    slightly; namely it returns the register read value directly, and even
    if an error happens, it returns zero (but it prints an error
    message).  That said, the caller side can't know whether it's an error
    or not any longer.
    
    Ideally this shouldn't matter much, but in practice this seems causing
    a regression, as John reported.  And, grepping the tree revealed that
    there are still plenty of callers that do check the error code, so
    we'll need to deal with them in anyway.
    
    As a quick band-aid over the regression, this patch changes the return
    value of snd_soc_component_read() again to the negative error code.
    It can't work, obviously, for 32bit register values, but it should be
    enough for the known regressions, so far.
    
    Fixes: cf6e26c7 ("ASoC: soc-component: merge snd_soc_component_read() and snd_soc_component_read32()")
    Reported-by: default avatarJohn Stultz <john.stultz@linaro.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20200810134631.19742-1-tiwai@suse.deSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    efc913c8
soc-component.c 21.4 KB