Message ID | 87wq3m4dyf.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Feb 13, 2015 at 04:44:05AM +0000, Kuninori Morimoto wrote: > Ideally the correct fix would somehow make sure that the card itself is > unbound and put back onto the probe_defer list in the future. > We indicate warning to this issue for now. I don't think we should be trying to do this at the ASoC level at all, we should do it at the driver core level. A similar issue applies to other inter device dependencies - if someone manages to remove a GPIO controller, a clock or a regulator for example. The components of a card are really no different here. Like I said in my mail just now let's have a look at how this is supposed to work at the driver core level and ask Greg if there's nothing clear.
Hi Mark > > Ideally the correct fix would somehow make sure that the card itself is > > unbound and put back onto the probe_defer list in the future. > > We indicate warning to this issue for now. > > I don't think we should be trying to do this at the ASoC level at all, > we should do it at the driver core level. A similar issue applies to > other inter device dependencies - if someone manages to remove a GPIO > controller, a clock or a regulator for example. The components of a > card are really no different here. Like I said in my mail just now > let's have a look at how this is supposed to work at the driver core > level and ask Greg if there's nothing clear. Thank you. Yes, we need more generic approach for this.
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index f04e97d..c286a76 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -2719,6 +2719,11 @@ static void snd_soc_component_del_unlocked(struct snd_soc_component *component) /* card is removed temporarily */ if (component->probed && card->instantiated) { + dev_warn(component->dev, + "%s is unbinded. but we recommend you to " + "unbind/bind or rmmod/insmod it by yourself\n", + card->name); + list_add(&card->unbinded_list, &unbinded_card_list); snd_soc_remove_card(card); }