diff mbox

Revert "ASoC: fsl_ssi: remove explicit register defaults"

Message ID 1456065300-23752-1-git-send-email-festevam@gmail.com (mailing list archive)
State Accepted
Commit 56e5fd8feb286ab71f4ca7674505b0d17967376d
Headers show

Commit Message

Fabio Estevam Feb. 21, 2016, 2:35 p.m. UTC
From: Fabio Estevam <fabio.estevam@nxp.com>

Commit 5c408fee2546 ("ASoC: fsl_ssi: remove explicit register defaults")
causes the driver to fail to probe:

fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
fsl-ssi-dai 2028000.ssi: Failed to init register map
fsl-ssi-dai: probe of 2028000.ssi failed with error -22

, so revert this commit.

Cc: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Reported-by: Mika Penttilä <mika.penttila@nextfour.com> 
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
Maciej,

As this currently breaks SSI on 4.5-rc we should better revert it for
this cycle.

We can then add it back to 4.7 when Mark's patch 3245d460a1eb55 
("regmap: cache: Fall back to register by register read for cache defaults")
will be available and then the driver will work fine with your patch.

 sound/soc/fsl/fsl_ssi.c | 42 ++++++++++++++++++++----------------------
 1 file changed, 20 insertions(+), 22 deletions(-)

Comments

Maciej S. Szmigiero Feb. 21, 2016, 7:13 p.m. UTC | #1
On 21.02.2016 15:35, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam@nxp.com>
> 
> Commit 5c408fee2546 ("ASoC: fsl_ssi: remove explicit register defaults")
> causes the driver to fail to probe:
> 
> fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
> fsl-ssi-dai 2028000.ssi: Failed to init register map
> fsl-ssi-dai: probe of 2028000.ssi failed with error -22
> 
> , so revert this commit.
> 
> Cc: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
> Reported-by: Mika Penttilä <mika.penttila@nextfour.com> 
> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
> ---
> Maciej,
> 
> As this currently breaks SSI on 4.5-rc we should better revert it for
> this cycle.
> 
> We can then add it back to 4.7 when Mark's patch 3245d460a1eb55 
> ("regmap: cache: Fall back to register by register read for cache defaults")
> will be available and then the driver will work fine with your patch.

While I see no problem with delaying this patch to next kernel wouldn't
it be easier to simply merge the regmap change as a fix as you
had suggested previously?

Maciej
Fabio Estevam Feb. 21, 2016, 9:41 p.m. UTC | #2
Hi Maciej,

On Sun, Feb 21, 2016 at 4:13 PM, Maciej S. Szmigiero
<mail@maciej.szmigiero.name> wrote:
> On 21.02.2016 15:35, Fabio Estevam wrote:
>> From: Fabio Estevam <fabio.estevam@nxp.com>
>>
>> Commit 5c408fee2546 ("ASoC: fsl_ssi: remove explicit register defaults")
>> causes the driver to fail to probe:
>>
>> fsl-ssi-dai 2028000.ssi: No cache defaults, reading back from HW
>> fsl-ssi-dai 2028000.ssi: Failed to init register map
>> fsl-ssi-dai: probe of 2028000.ssi failed with error -22
>>
>> , so revert this commit.
>>
>> Cc: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
>> Reported-by: Mika Penttilä <mika.penttila@nextfour.com>
>> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
>> ---
>> Maciej,
>>
>> As this currently breaks SSI on 4.5-rc we should better revert it for
>> this cycle.
>>
>> We can then add it back to 4.7 when Mark's patch 3245d460a1eb55
>> ("regmap: cache: Fall back to register by register read for cache defaults")
>> will be available and then the driver will work fine with your patch.
>
> While I see no problem with delaying this patch to next kernel wouldn't
> it be easier to simply merge the regmap change as a fix as you
> had suggested previously?

That would work too, but as we are late in the 4.5-rc cycle we face
the risk of breaking some other drivers after applying 3245d460a1eb55
("regmap: cache: Fall back to register by register read for cache
defaults").

So either this revert or applying 3245d460a1eb55 would work, but the
revert is bit safer IMHO.
Mark Brown Feb. 22, 2016, 2:59 a.m. UTC | #3
On Sun, Feb 21, 2016 at 11:35:00AM -0300, Fabio Estevam wrote:

> From: Fabio Estevam <fabio.estevam@nxp.com>
> 
> Commit 5c408fee2546 ("ASoC: fsl_ssi: remove explicit register defaults")
> causes the driver to fail to probe:

Please use subject lines matching the style for the subsystem.  This
makes it easier for people to identify relevant patches.

> As this currently breaks SSI on 4.5-rc we should better revert it for
> this cycle.

> We can then add it back to 4.7 when Mark's patch 3245d460a1eb55 
> ("regmap: cache: Fall back to register by register read for cache defaults")
> will be available and then the driver will work fine with your patch.

There's no problem adding it back for v4.6 for that matter, the changes
will all have long enough to soak (and have already been soaking for a
little while).  I'll do that.
Fabio Estevam March 7, 2016, 12:11 a.m. UTC | #4
Hi Mark,

On Sun, Feb 21, 2016 at 11:59 PM, Mark Brown <broonie@kernel.org> wrote:

> There's no problem adding it back for v4.6 for that matter, the changes
> will all have long enough to soak (and have already been soaking for a
> little while).  I'll do that.

I see you applied this one as 56e5fd8feb286ab7 ("ASoC: fsl_ssi: Go
back to explicit register defaults") into your fix/fsl-ssi branch, but
it is still not present in 4.5-rc7.

Any plans to make this one into 4.5 final?

Thanks
Mark Brown March 7, 2016, 2:20 a.m. UTC | #5
On Sun, Mar 06, 2016 at 09:11:56PM -0300, Fabio Estevam wrote:
> On Sun, Feb 21, 2016 at 11:59 PM, Mark Brown <broonie@kernel.org> wrote:

> > There's no problem adding it back for v4.6 for that matter, the changes
> > will all have long enough to soak (and have already been soaking for a
> > little while).  I'll do that.

> I see you applied this one as 56e5fd8feb286ab7 ("ASoC: fsl_ssi: Go
> back to explicit register defaults") into your fix/fsl-ssi branch, but
> it is still not present in 4.5-rc7.

> Any plans to make this one into 4.5 final?

It'll go next time I send fixes.
diff mbox

Patch

diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index ed8de10..40dfd8a 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -112,6 +112,20 @@  struct fsl_ssi_rxtx_reg_val {
 	struct fsl_ssi_reg_val tx;
 };
 
+static const struct reg_default fsl_ssi_reg_defaults[] = {
+	{CCSR_SSI_SCR,     0x00000000},
+	{CCSR_SSI_SIER,    0x00003003},
+	{CCSR_SSI_STCR,    0x00000200},
+	{CCSR_SSI_SRCR,    0x00000200},
+	{CCSR_SSI_STCCR,   0x00040000},
+	{CCSR_SSI_SRCCR,   0x00040000},
+	{CCSR_SSI_SACNT,   0x00000000},
+	{CCSR_SSI_STMSK,   0x00000000},
+	{CCSR_SSI_SRMSK,   0x00000000},
+	{CCSR_SSI_SACCEN,  0x00000000},
+	{CCSR_SSI_SACCDIS, 0x00000000},
+};
+
 static bool fsl_ssi_readable_reg(struct device *dev, unsigned int reg)
 {
 	switch (reg) {
@@ -176,7 +190,8 @@  static const struct regmap_config fsl_ssi_regconfig = {
 	.val_bits = 32,
 	.reg_stride = 4,
 	.val_format_endian = REGMAP_ENDIAN_NATIVE,
-	.num_reg_defaults_raw = CCSR_SSI_SACCDIS / sizeof(uint32_t) + 1,
+	.reg_defaults = fsl_ssi_reg_defaults,
+	.num_reg_defaults = ARRAY_SIZE(fsl_ssi_reg_defaults),
 	.readable_reg = fsl_ssi_readable_reg,
 	.volatile_reg = fsl_ssi_volatile_reg,
 	.precious_reg = fsl_ssi_precious_reg,
@@ -186,7 +201,6 @@  static const struct regmap_config fsl_ssi_regconfig = {
 
 struct fsl_ssi_soc_data {
 	bool imx;
-	bool imx21regs; /* imx21-class SSI - no SACC{ST,EN,DIS} regs */
 	bool offline_config;
 	u32 sisr_write_mask;
 };
@@ -289,7 +303,6 @@  static struct fsl_ssi_soc_data fsl_ssi_mpc8610 = {
 
 static struct fsl_ssi_soc_data fsl_ssi_imx21 = {
 	.imx = true,
-	.imx21regs = true,
 	.offline_config = true,
 	.sisr_write_mask = 0,
 };
@@ -573,12 +586,8 @@  static void fsl_ssi_setup_ac97(struct fsl_ssi_private *ssi_private)
 	 */
 	regmap_write(regs, CCSR_SSI_SACNT,
 			CCSR_SSI_SACNT_AC97EN | CCSR_SSI_SACNT_FV);
-
-	/* no SACC{ST,EN,DIS} regs on imx21-class SSI */
-	if (!ssi_private->soc->imx21regs) {
-		regmap_write(regs, CCSR_SSI_SACCDIS, 0xff);
-		regmap_write(regs, CCSR_SSI_SACCEN, 0x300);
-	}
+	regmap_write(regs, CCSR_SSI_SACCDIS, 0xff);
+	regmap_write(regs, CCSR_SSI_SACCEN, 0x300);
 
 	/*
 	 * Enable SSI, Transmit and Receive. AC97 has to communicate with the
@@ -1388,7 +1397,6 @@  static int fsl_ssi_probe(struct platform_device *pdev)
 	struct resource *res;
 	void __iomem *iomem;
 	char name[64];
-	struct regmap_config regconfig = fsl_ssi_regconfig;
 
 	of_id = of_match_device(fsl_ssi_ids, &pdev->dev);
 	if (!of_id || !of_id->data)
@@ -1436,25 +1444,15 @@  static int fsl_ssi_probe(struct platform_device *pdev)
 		return PTR_ERR(iomem);
 	ssi_private->ssi_phys = res->start;
 
-	if (ssi_private->soc->imx21regs) {
-		/*
-		 * According to datasheet imx21-class SSI
-		 * don't have SACC{ST,EN,DIS} regs.
-		 */
-		regconfig.max_register = CCSR_SSI_SRMSK;
-		regconfig.num_reg_defaults_raw =
-			CCSR_SSI_SRMSK / sizeof(uint32_t) + 1;
-	}
-
 	ret = of_property_match_string(np, "clock-names", "ipg");
 	if (ret < 0) {
 		ssi_private->has_ipg_clk_name = false;
 		ssi_private->regs = devm_regmap_init_mmio(&pdev->dev, iomem,
-			&regconfig);
+			&fsl_ssi_regconfig);
 	} else {
 		ssi_private->has_ipg_clk_name = true;
 		ssi_private->regs = devm_regmap_init_mmio_clk(&pdev->dev,
-			"ipg", iomem, &regconfig);
+			"ipg", iomem, &fsl_ssi_regconfig);
 	}
 	if (IS_ERR(ssi_private->regs)) {
 		dev_err(&pdev->dev, "Failed to init register map\n");