[PATCH v2 3/3] ASoC: fsl_easrc: Add EASRC ASoC CPU DAI and platform drivers

Shengjiu Wang shengjiu.wang at gmail.com
Wed Feb 26 02:51:39 CET 2020


On Tue, Feb 25, 2020 at 4:05 PM Nicolin Chen <nicoleotsuka at gmail.com> wrote:
>
> On Mon, Feb 24, 2020 at 08:53:25AM +0000, S.j. Wang wrote:
> > Hi
> >
> > > >
> > > > Signed-off-by: Shengjiu Wang <shengjiu.wang at nxp.com>
> > > > ---
> > > >  sound/soc/fsl/Kconfig           |   10 +
> > > >  sound/soc/fsl/Makefile          |    2 +
> > > >  sound/soc/fsl/fsl_asrc_common.h |    1 +
> > > >  sound/soc/fsl/fsl_easrc.c       | 2265 +++++++++++++++++++++++++++++++
> > > >  sound/soc/fsl/fsl_easrc.h       |  668 +++++++++
> > > >  sound/soc/fsl/fsl_easrc_dma.c   |  440 ++++++
> > >
> > > I see a 90% similarity between fsl_asrc_dma and fsl_easrc_dma files.
> > > Would it be possible reuse the existing code? Could share structures from
> > > my point of view, just like it reuses "enum asrc_pair_index", I know
> > > differentiating "pair" and "context" is a big point here though.
> > >
> > > A possible quick solution for that, off the top of my head, could be:
> > >
> > > 1) in fsl_asrc_common.h
> > >
> > >         struct fsl_asrc {
> > >                 ....
> > >         };
> > >
> > >         struct fsl_asrc_pair {
> > >                 ....
> > >         };
> > >
> > > 2) in fsl_easrc.h
> > >
> > >         /* Renaming shared structures */
> > >         #define fsl_easrc fsl_asrc
> > >         #define fsl_easrc_context fsl_asrc_pair
> > >
> > > May be a good idea to see if others have some opinion too.
> > >
> >
> > We need to modify the fsl_asrc and fsl_asrc_pair, let them
> > To be used by both driver,  also we need to put the specific
> > Definition for each module to same struct, right?
>
> Yea. A merged structure if that doesn't look that bad. I see most
> of the fields in struct fsl_asrc are being reused by in fsl_easrc.
>
> > >
> > > > +static const struct regmap_config fsl_easrc_regmap_config = {
> > > > +     .readable_reg = fsl_easrc_readable_reg,
> > > > +     .volatile_reg = fsl_easrc_volatile_reg,
> > > > +     .writeable_reg = fsl_easrc_writeable_reg,
> > >
> > > Can we use regmap_range and regmap_access_table?
> > >
> >
> > Can the regmap_range support discontinuous registers?  The
> > reg_stride = 4.
>
> I think it does. Giving an example here:
> https://github.com/torvalds/linux/blob/master/drivers/mfd/da9063-i2c.c

The register in this i2c driver are continuous,  from 0x00, 0x01, 0x02...

But our case is 0x00, 0x04, 0x08, does it work?

best regards
wang shengjiu


More information about the Alsa-devel mailing list