[alsa-devel] [PATCH] ASoC: remove a card from the list, if instantiation failed
Mark Brown
broonie at opensource.wolfsonmicro.com
Wed Mar 17 23:57:10 CET 2010
On 17 Mar 2010, at 21:06, Guennadi Liakhovetski
<g.liakhovetski at gmx.de> wrote:
> If instantiation of a card failed, we have to remove it from the card
> list. This fixes an Oops on Migo-R, triggering, when after a failed
> firmware load attempt the driver modules are removed and re-inserted
> again.
This looks like the wrong fix - if the card failed to instantiate
because the component drivers weren't ready then it ought to hang
around so it can be instantiated once they appear. Presumably some
part of the instantiation attempt is failing and not being unwound
properly?
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
> ---
>
> Should also be good for stable.
>
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index c8b0556..307eea0 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -2361,6 +2361,8 @@ static int snd_soc_register_card(struct
> snd_soc_card *card)
> mutex_lock(&client_mutex);
> list_add(&card->list, &card_list);
> snd_soc_instantiate_cards();
> + if (!card->instantiated)
> + list_del(&card->list);
> mutex_unlock(&client_mutex);
>
> dev_dbg(card->dev, "Registered card '%s'\n", card->name);
More information about the Alsa-devel
mailing list