On Wed, Jun 18, 2014 at 06:22:30PM +0200, Sylwester Nawrocki wrote: > +struct odroidx2_drv_data odroidx2_drvdata = { > + .dapm_widgets = odroidx2_dapm_widgets, > + .num_dapm_widgets = ARRAY_SIZE(odroidx2_dapm_widgets), > +}; > + > +struct odroidx2_drv_data odroidu3_drvdata = { > + .dapm_widgets = odroidu3_dapm_widgets, > + .num_dapm_widgets = ARRAY_SIZE(odroidu3_dapm_widgets), > +}; > + ret = snd_soc_of_parse_audio_routing(card, "samsung,audio-routing"); > + if (ret < 0) > + return ret; Given that the widgets don't have any actions defined and the routing is all done by DT it might be easier and more flexible to just define all the widgets all the time and let them hang there if they're not in use, that way you don't need multiple compatible strings. If you do that you're then very close to being able to use simple-card...