Thread (4 messages) 4 messages, 3 authors, 2020-02-26

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

From: Shengjiu Wang <shengjiu.wang@gmail.com>
Date: 2020-02-26 01:51:55
Also in: alsa-devel, linux-devicetree, lkml

On Tue, Feb 25, 2020 at 4:05 PM Nicolin Chen [off-list ref] wrote:
On Mon, Feb 24, 2020 at 08:53:25AM +0000, S.j. Wang wrote:
quoted
Hi
quoted
quoted
Signed-off-by: Shengjiu Wang <redacted>
---
 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.
quoted
quoted
quoted
+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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help