Hi Daniel, Am Mittwoch, den 17.07.2019, 17:16 +0300 schrieb Daniel Baluta: > > On Wed, Jul 17, 2019 at 1:59 PM Lucas Stach <l.stach@xxxxxxxxxxxxxx> wrote: > > > > The SAI block on the i.MX8M moved the register layout, as 2 version > > registers were added at the start of the register map. We deal with > > this by moving the start of the regmap, so both register layouts > > look the same to accesses going through the regmap. > > > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > > This is a little bit tricky. We need the verid register in order > to differentiate IPs which can support 1:1 ratio for bclk:mclk And this patch doesn't prevent this usage. If needed we can just read the verid via a plain readl on the base mapping in the probe function and cache it in struct fsl_sai. This seems way less intrusive than carrying a register offset through all of the regmap accessors and validation functions. I simply haven't implemented it in this patch, as I had no need for it right now. Regards, Lucas > I am working now for upstreaming all SAI patches that we have > in our internal tree. > > > --- > > .../devicetree/bindings/sound/fsl-sai.txt | 2 +- > > sound/soc/fsl/fsl_sai.c | 19 +++++++++++++++++++ > > sound/soc/fsl/fsl_sai.h | 1 + > > 3 files changed, 21 insertions(+), 1 deletion(-) > > > > diff --git a/Documentation/devicetree/bindings/sound/fsl-sai.txt b/Documentation/devicetree/bindings/sound/fsl-sai.txt > > index 2e726b983845..037871d2f505 100644 > > --- a/Documentation/devicetree/bindings/sound/fsl-sai.txt > > +++ b/Documentation/devicetree/bindings/sound/fsl-sai.txt > > @@ -8,7 +8,7 @@ codec/DSP interfaces. > > Required properties: > > > > - compatible : Compatible list, contains "fsl,vf610-sai", > > - "fsl,imx6sx-sai" or "fsl,imx6ul-sai" > > + "fsl,imx6sx-sai", "fsl,imx6ul-sai" or "fsl,imx8mq-sai" > > > > - reg : Offset and length of the register set for the device. > > > > diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c > > index b3cd055a61c7..a10201078e40 100644 > > --- a/sound/soc/fsl/fsl_sai.c > > +++ b/sound/soc/fsl/fsl_sai.c > > @@ -808,6 +808,16 @@ static int fsl_sai_probe(struct platform_device *pdev) > > if (IS_ERR(base)) > > return PTR_ERR(base); > > > > + /* > > + * New versions of the SAI have 2 32bit version registers added at the > > + * start of the register map. To avoid dealing with this shift all over > > + * the driver, we move the start of the regmap to make both register > > + * layouts look the same to the regmap. This means we can't read the > > + * version registers through the regmap, but this is small price to pay. > > + */ > > + if (sai->soc_data->has_version_registers) > > + base += 8; > > + > > sai->regmap = devm_regmap_init_mmio_clk(&pdev->dev, > > "bus", base, &fsl_sai_regmap_config); > > > > @@ -923,18 +933,27 @@ static int fsl_sai_remove(struct platform_device *pdev) > > > > static const struct fsl_sai_soc_data fsl_sai_vf610_data = { > > .use_imx_pcm = false, > > + .has_version_registers = false, > > .fifo_depth = 32, > > }; > > > > static const struct fsl_sai_soc_data fsl_sai_imx6sx_data = { > > .use_imx_pcm = true, > > + .has_version_registers = false, > > .fifo_depth = 32, > > }; > > > > +static const struct fsl_sai_soc_data fsl_sai_imx8m_data = { > > + .use_imx_pcm = true, > > + .has_version_registers = true, > > + .fifo_depth = 128, > > +}; > > + > > static const struct of_device_id fsl_sai_ids[] = { > > { .compatible = "fsl,vf610-sai", .data = &fsl_sai_vf610_data }, > > { .compatible = "fsl,imx6sx-sai", .data = &fsl_sai_imx6sx_data }, > > { .compatible = "fsl,imx6ul-sai", .data = &fsl_sai_imx6sx_data }, > > + { .compatible = "fsl,imx8mq-sai", .data = &fsl_sai_imx8m_data }, > > { /* sentinel */ } > > }; > > MODULE_DEVICE_TABLE(of, fsl_sai_ids); > > diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h > > index 7c1ef671da28..b6a9053ed400 100644 > > --- a/sound/soc/fsl/fsl_sai.h > > +++ b/sound/soc/fsl/fsl_sai.h > > @@ -128,6 +128,7 @@ > > > > struct fsl_sai_soc_data { > > bool use_imx_pcm; > > + bool has_version_registers; > > unsigned int fifo_depth; > > }; > > > > -- > > 2.20.1 > > > > _______________________________________________ > > Alsa-devel mailing list > > Alsa-devel@xxxxxxxxxxxxxxxx > > https://mailman.alsa-project.org/mailman/listinfo/alsa-devel _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel