* [PATCH] imx-ssi.c: fix I2S slave setup
@ 2010-05-26 16:37 Eric Bénard
2010-05-27 0:57 ` [alsa-devel] " Mark Brown
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Eric Bénard @ 2010-05-26 16:37 UTC (permalink / raw)
To: linux-arm-kernel
* without this fix, the waveform on the SSI port are not real
I2S signal (at least on i.MX27's SSI4)
* original Freescale's driver has
if (((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_I2S)
&& ssi_mode->network_mode) {
scr &= ~SSI_SCR_I2S_MODE_MASK;
scr |= SSI_SCR_I2S_MODE_SLAVE;
}
So as now the SSI is set in network mode as a default when running in
I2S format, it seems reasonable to also set I2S_MODE_SLAVE
Signed-off-by: Eric B?nard <eric@eukrea.com>
---
sound/soc/imx/imx-ssi.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/sound/soc/imx/imx-ssi.c b/sound/soc/imx/imx-ssi.c
index 80b4fee..c5e1626 100644
--- a/sound/soc/imx/imx-ssi.c
+++ b/sound/soc/imx/imx-ssi.c
@@ -83,8 +83,6 @@ static int imx_ssi_set_dai_tdm_slot(struct snd_soc_dai *cpu_dai,
/*
* SSI DAI format configuration.
* Should only be called when port is inactive (i.e. SSIEN = 0).
- * Note: We don't use the I2S modes but instead manually configure the
- * SSI for I2S because the I2S mode is only a register preset.
*/
static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
{
@@ -98,7 +96,7 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
case SND_SOC_DAIFMT_I2S:
/* data on rising edge of bclk, frame low 1clk before data */
strcr |= SSI_STCR_TFSI | SSI_STCR_TEFS | SSI_STCR_TXBIT0;
- scr |= SSI_SCR_NET;
+ scr |= SSI_SCR_NET | SSI_SCR_I2S_MODE_SLAVE;
break;
case SND_SOC_DAIFMT_LEFT_J:
/* data on rising edge of bclk, frame high with data */
--
1.6.3.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [alsa-devel] [PATCH] imx-ssi.c: fix I2S slave setup
2010-05-26 16:37 [PATCH] imx-ssi.c: fix I2S slave setup Eric Bénard
@ 2010-05-27 0:57 ` Mark Brown
2010-05-27 1:44 ` Eric Bénard
2010-05-27 2:04 ` Mark Brown
2010-05-27 8:24 ` Sascha Hauer
2 siblings, 1 reply; 5+ messages in thread
From: Mark Brown @ 2010-05-27 0:57 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, May 26, 2010 at 06:37:53PM +0200, Eric B??nard wrote:
> * without this fix, the waveform on the SSI port are not real
> I2S signal (at least on i.MX27's SSI4)
As I said in reply to your previous patch the current mainline i.MX
driver is not able to master the clocks at all?
^ permalink raw reply [flat|nested] 5+ messages in thread
* [alsa-devel] [PATCH] imx-ssi.c: fix I2S slave setup
2010-05-27 0:57 ` [alsa-devel] " Mark Brown
@ 2010-05-27 1:44 ` Eric Bénard
0 siblings, 0 replies; 5+ messages in thread
From: Eric Bénard @ 2010-05-27 1:44 UTC (permalink / raw)
To: linux-arm-kernel
Hi Mark,
Le 27/05/2010 02:57, Mark Brown a ?crit :
> On Wed, May 26, 2010 at 06:37:53PM +0200, Eric B??nard wrote:
>> * without this fix, the waveform on the SSI port are not real
>> I2S signal (at least on i.MX27's SSI4)
>
> As I said in reply to your previous patch the current mainline i.MX
> driver is not able to master the clocks at all?
>
the problem in not on the clocks (which are generated by the external
codec which is the master), but on the way the i.MX's SSI outputs the
data vs the framesync provided by the external codec.
If this setting is not the right one (even if sound works perfectly here
with it), then there is a bug somewhere else preventing the i.MX's SSI
to provide he right data to my TLV320AIC23B using I2S.
Please find attached the patches which add the TLV320 support to our
i.MX27 board because the bug may be there :-)
Eric
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] imx-ssi.c: fix I2S slave setup
2010-05-26 16:37 [PATCH] imx-ssi.c: fix I2S slave setup Eric Bénard
2010-05-27 0:57 ` [alsa-devel] " Mark Brown
@ 2010-05-27 2:04 ` Mark Brown
2010-05-27 8:24 ` Sascha Hauer
2 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2010-05-27 2:04 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, May 26, 2010 at 06:37:53PM +0200, Eric B??nard wrote:
> * without this fix, the waveform on the SSI port are not real
> I2S signal (at least on i.MX27's SSI4)
BTW, please do also remember to CC maintainers on patches as documented
in Documentation/SubmittingPatches.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] imx-ssi.c: fix I2S slave setup
2010-05-26 16:37 [PATCH] imx-ssi.c: fix I2S slave setup Eric Bénard
2010-05-27 0:57 ` [alsa-devel] " Mark Brown
2010-05-27 2:04 ` Mark Brown
@ 2010-05-27 8:24 ` Sascha Hauer
2 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2010-05-27 8:24 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, May 26, 2010 at 06:37:53PM +0200, Eric B?nard wrote:
> * without this fix, the waveform on the SSI port are not real
> I2S signal (at least on i.MX27's SSI4)
>
> * original Freescale's driver has
> if (((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_I2S)
> && ssi_mode->network_mode) {
> scr &= ~SSI_SCR_I2S_MODE_MASK;
> scr |= SSI_SCR_I2S_MODE_SLAVE;
> }
> So as now the SSI is set in network mode as a default when running in
> I2S format, it seems reasonable to also set I2S_MODE_SLAVE
>
> Signed-off-by: Eric B?nard <eric@eukrea.com>
> ---
> sound/soc/imx/imx-ssi.c | 4 +---
> 1 files changed, 1 insertions(+), 3 deletions(-)
>
> diff --git a/sound/soc/imx/imx-ssi.c b/sound/soc/imx/imx-ssi.c
> index 80b4fee..c5e1626 100644
> --- a/sound/soc/imx/imx-ssi.c
> +++ b/sound/soc/imx/imx-ssi.c
> @@ -83,8 +83,6 @@ static int imx_ssi_set_dai_tdm_slot(struct snd_soc_dai *cpu_dai,
> /*
> * SSI DAI format configuration.
> * Should only be called when port is inactive (i.e. SSIEN = 0).
> - * Note: We don't use the I2S modes but instead manually configure the
> - * SSI for I2S because the I2S mode is only a register preset.
> */
> static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
> {
> @@ -98,7 +96,7 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
> case SND_SOC_DAIFMT_I2S:
> /* data on rising edge of bclk, frame low 1clk before data */
> strcr |= SSI_STCR_TFSI | SSI_STCR_TEFS | SSI_STCR_TXBIT0;
> - scr |= SSI_SCR_NET;
> + scr |= SSI_SCR_NET | SSI_SCR_I2S_MODE_SLAVE;
You should also zero out the SSI_I2S_MODE_MASK in the scr = readl()...
above.
Otherwise I'm ok with this patch.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-05-27 8:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-26 16:37 [PATCH] imx-ssi.c: fix I2S slave setup Eric Bénard
2010-05-27 0:57 ` [alsa-devel] " Mark Brown
2010-05-27 1:44 ` Eric Bénard
2010-05-27 2:04 ` Mark Brown
2010-05-27 8:24 ` Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).