Revert "ASoC: fsl_ssi: remove explicit register defaults"
Subsystems (3)
Fabio Estevam
reviewerPATCH 1/1 Revert "ASoC: fsl_ssi: remove explicit register defaults"
From: Fabio Estevam <[email protected]>
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.
---
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(-)
sound/soc/fsl/fsl_ssi.c +20 -22
@@ -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, - ®config); + &fsl_ssi_regconfig); }else { ssi_private->has_ipg_clk_name = true; ssi_private->regs =devm_regmap_init_mmio_clk (&pdev->dev, -"ipg" , iomem, ®config); +"ipg" , iomem, &fsl_ssi_regconfig); }if (IS_ERR (ssi_private->regs)) {dev_err (&pdev->dev,"Failed to init register map\n" );
Signature · 6 lines
1.9.1 _______________________________________________ Alsa-devel mailing list [email protected] http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Quoted 17 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
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 <[email protected]>Reported-by Mika Penttilä <[email protected]>Signed-off-by Fabio Estevam <[email protected]>---
Maciej,
Quoted 6 lines
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
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Fabio Estevam
reviewerHi Maciej,
Quoted 21 lines · Maciej S. Szmigiero
Quoted 20 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
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 <[email protected]>Reported-by Mika Penttilä <[email protected]>Signed-off-by Fabio Estevam <[email protected]>---
Maciej,As this currently breaks SSI on 4.5-rc we should better revert it for this cycle.
Quoted 7 lines
Quoted 3 lines
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.
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Mark Brown
maintainerQuoted 4 lines · Fabio Estevam
From: Fabio Estevam <[email protected]>
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.
Quoted 6 lines
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
reviewerHi Mark,
Quoted 3 lines · Mark Brown
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
maintainerQuoted 11 lines · Fabio Estevam
Quoted 3 lines · Mark Brown
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.
Mark Brown
maintainerApplied "ASoC: fsl_ssi: Go back to explicit register defaults" to the asoc tree
In reply to Fabio EstevamThe patch
ASoC: fsl_ssi: Go back to explicit register defaults
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
56e5fd8feb286ab71f4ca7674505b0d17967376dMon Sep 17 00:00:00 2001
From: Fabio Estevam <[email protected]>
Date: Sun, 21 Feb 2016 11:35:00 -0300
Subject: [PATCH] ASoC: fsl_ssi: Go back to explicit register defaults
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
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.
--- sound/soc/fsl/fsl_ssi.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-)
sound/soc/fsl/fsl_ssi.c +20 -22
@@ -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, - ®config); + &fsl_ssi_regconfig); }else { ssi_private->has_ipg_clk_name = true; ssi_private->regs =devm_regmap_init_mmio_clk (&pdev->dev, -"ipg" , iomem, ®config); +"ipg" , iomem, &fsl_ssi_regconfig); }if (IS_ERR (ssi_private->regs)) {dev_err (&pdev->dev,"Failed to init register map\n" );
Signature · 1 line
2.7.0