On 03/17/2016 12:25 PM, Mark Brown wrote:
On Thu, Mar 17, 2016 at 10:38:36AM +0000, Pan, Harry wrote:
Allow me to explain more detail that I saw during debug; since the commit 6e78108bda78 (ASoC: core: Don't probe the component which is dummy), an exception has been made that dummy component won't be probed, thus the 'card' passed into soc_probe_component() would not be assigned to this component. In the other hand, the component struct is initially created in snd_soc_register_platform() by kzalloc() of platform struct, its 'card' pointer is remaining an NULL pointer even the widget node being read.
Perhaps another option is to refine soc_probe_component(), which I have not dive in.
Another approach might be to create a separate dummy component for each card rather than trying to reuse the same one for all of them (which was what the commit you mention was doing) - that way we don't need to worry about it getting added to multiple cards which was the original problem that was being looked at here.
I'd say as a quick fix for stable check that card is not NULL in dapm_widget_show_component(). And as a longterm fix get rid of dapm_widget file. Nobody should hopefully use it anymore with debugfs being available as the far better alternative.
- Lars