On Tue, Apr 14, 2020 at 08:43:07AM +0800, Shengjiu Wang wrote: > There is a new ASRC included in i.MX serial platform, there > are some common definition can be shared with each other. > So move the common definition to a separate header file. > > And add fsl_asrc_pair_priv and fsl_asrc_priv for > the variable specific for the module, which can be used > internally. > > Signed-off-by: Shengjiu Wang <shengjiu.wang@xxxxxxx> > diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c > +static size_t fsl_asrc_get_pair_priv_size(void) > +{ > + return sizeof(struct fsl_asrc_pair_priv); > +} Perhaps we haven't understood completely each other's point. Yet, would the following change work? > diff --git a/sound/soc/fsl/fsl_asrc_common.h b/sound/soc/fsl/fsl_asrc_common.h > new file mode 100644 > index 000000000000..b15244e027d0 > --- /dev/null > +++ b/sound/soc/fsl/fsl_asrc_common.h > +struct fsl_asrc { > + size_t (*get_pair_priv_size)(void); + size_t pair_priv_size; > diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c > @@ -992,25 +1012,32 @@ static int fsl_asrc_probe(struct platform_device *pdev) > + asrc->get_pair_priv_size = fsl_asrc_get_pair_priv_size; + asrc->pair_priv_size = sizeof(struct fsl_asrc_pair_priv); > diff --git a/sound/soc/fsl/fsl_asrc_dma.c b/sound/soc/fsl/fsl_asrc_dma.c > @@ -311,11 +311,12 @@ static int fsl_asrc_dma_startup(struct snd_soc_component *component, > return ret; > } > > - pair = kzalloc(sizeof(struct fsl_asrc_pair), GFP_KERNEL); > + pair = kzalloc(sizeof(*pair) + asrc->get_pair_priv_size(), GFP_KERNEL); + pair = kzalloc(sizeof(*pair) + asrc->pair_priv_size, GFP_KERNEL);