Hi Sameer Thank you for the patch > Add new members in struct 'asoc_simple_priv'. Idea is to leverage > simple or graph card driver as much as possible and vendor can > maintain a thin driver to control the behavior by populating these > newly exposed members. re-use simple/audio-graph driver is nice idea. My planning next new audio-graph2 can renuse it. > diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h > index 86a1e95..9825308 100644 > --- a/include/sound/simple_card_utils.h > +++ b/include/sound/simple_card_utils.h > @@ -56,6 +56,10 @@ struct asoc_simple_priv { > struct asoc_simple_dai *dais; > struct snd_soc_codec_conf *codec_conf; > struct gpio_desc *pa_gpio; > + const struct snd_soc_ops *ops; > + unsigned int force_dpcm:1; > + uintptr_t dpcm_selectable; > + void *data; > }; I have opinions about these. About dpcm_selectable, indeed current audio-graph is using it as "uintptr_t", but as you know, it checks whether it was non-NULL or not only. This means we can use it as bit-field. BTW, do we need to have dpcm_selectable at priv ? One note is that, -scu- user is only me (locally), and it will be removed when audio-graph2 was created. (My plan is keep code for you, but remove compatible) About *data, I think we can avoid *data if driver side priv includes asoc_simple_priv ? struct my_priv { struct asoc_simple_priv *simple; ... }; #define simple_to_priv(_simple) container_of((_simple), struct my_priv, simple) Thank you for your help !! Best regards --- Kuninori Morimoto