[PATCH] ASoC: Make soc_component_read() returning an error code again
John Stultz
john.stultz at linaro.org
Tue Aug 11 06:45:14 CEST 2020
On Mon, Aug 10, 2020 at 6:53 AM Takashi Iwai <tiwai at suse.de> wrote:
>
> 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: cf6e26c71bfd ("ASoC: soc-component: merge snd_soc_component_read() and snd_soc_component_read32()")
> Reported-by: John Stultz <john.stultz at linaro.org>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
> sound/soc/soc-component.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c
> index f0b4f4bc44a4..5504b92946e3 100644
> --- a/sound/soc/soc-component.c
> +++ b/sound/soc/soc-component.c
> @@ -406,7 +406,7 @@ static unsigned int soc_component_read_no_lock(
> ret = -EIO;
>
> if (ret < 0)
> - soc_component_ret(component, ret);
> + return soc_component_ret(component, ret);
So oddly, using this instead of just "return ret;", doesn't seem to
fully resolve the issue for me. It's baffling!
My only guess is at boot up I get a *ton* of error messages:
q6routing remoteproc-adsp:glink-edge:apr:apr-service at 8:routing:
ASoC: error at soc_component_read_no_lock on
remoteproc-adsp:glink-edge:apr:5
which I suspect is causing other failures due to timing issues.
Srini sent me a patch to provide dummy read functions for the routing
and dai components that were missing it, and that seems to properly
avoid the issue.
thanks
-john
More information about the Alsa-devel
mailing list