From: Igor Grinberg <grinberg@compulab.co.il>
To: Mike Dunn <mikedunn@newsguy.com>
Cc: Marek Vasut <marex@denx.de>,
alsa-devel@alsa-project.org, Eric Miao <eric.y.miao@gmail.com>,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
Robert Jarzmik <robert.jarzmik@free.fr>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/4] ALSA: pxa2xx: fix ac97 cold reset
Date: Mon, 07 Jan 2013 11:16:55 +0200 [thread overview]
Message-ID: <50EA9287.5030304@compulab.co.il> (raw)
In-Reply-To: <1357499640-13871-2-git-send-email-mikedunn@newsguy.com>
On 01/06/13 21:13, Mike Dunn wrote:
> Cold reset on the pxa27x currently fails and
>
> pxa2xx_ac97_try_cold_reset: cold reset timeout (GSR=0x44)
>
> appears in the kernel log. Through trial-and-error (the pxa270 developer's
> manual is mostly incoherent on the topic of ac97 reset), I got cold reset to
> complete by setting the WARM_RST bit in the GCR register (and later noticed that
> pxa3xx does this for cold reset as well). Also, a timeout loop is needed to
> wait for the reset to complete.
>
> Tested on a palm treo 680 machine.
>
> Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
> ---
> sound/arm/pxa2xx-ac97-lib.c | 8 ++++++--
> 1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/sound/arm/pxa2xx-ac97-lib.c b/sound/arm/pxa2xx-ac97-lib.c
> index 6fc0ae9..1ecd0a66 100644
> --- a/sound/arm/pxa2xx-ac97-lib.c
> +++ b/sound/arm/pxa2xx-ac97-lib.c
> @@ -148,6 +148,8 @@ static inline void pxa_ac97_warm_pxa27x(void)
>
> static inline void pxa_ac97_cold_pxa27x(void)
> {
> + unsigned int timeout;
> +
> GCR &= GCR_COLD_RST; /* clear everything but nCRST */
> GCR &= ~GCR_COLD_RST; /* then assert nCRST */
>
> @@ -157,8 +159,10 @@ static inline void pxa_ac97_cold_pxa27x(void)
> clk_enable(ac97conf_clk);
> udelay(5);
> clk_disable(ac97conf_clk);
> - GCR = GCR_COLD_RST;
> - udelay(50);
> + GCR = GCR_COLD_RST | GCR_WARM_RST;
> + timeout = 100; /* wait for the codec-ready bit to be set */
> + while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
> + mdelay(1);
Can we use msleep() instead?
May be this will require to change the granularity to 10...
> }
> #endif
>
--
Regards,
Igor.
WARNING: multiple messages have this Message-ID (diff)
From: grinberg@compulab.co.il (Igor Grinberg)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/4] ALSA: pxa2xx: fix ac97 cold reset
Date: Mon, 07 Jan 2013 11:16:55 +0200 [thread overview]
Message-ID: <50EA9287.5030304@compulab.co.il> (raw)
In-Reply-To: <1357499640-13871-2-git-send-email-mikedunn@newsguy.com>
On 01/06/13 21:13, Mike Dunn wrote:
> Cold reset on the pxa27x currently fails and
>
> pxa2xx_ac97_try_cold_reset: cold reset timeout (GSR=0x44)
>
> appears in the kernel log. Through trial-and-error (the pxa270 developer's
> manual is mostly incoherent on the topic of ac97 reset), I got cold reset to
> complete by setting the WARM_RST bit in the GCR register (and later noticed that
> pxa3xx does this for cold reset as well). Also, a timeout loop is needed to
> wait for the reset to complete.
>
> Tested on a palm treo 680 machine.
>
> Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
> ---
> sound/arm/pxa2xx-ac97-lib.c | 8 ++++++--
> 1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/sound/arm/pxa2xx-ac97-lib.c b/sound/arm/pxa2xx-ac97-lib.c
> index 6fc0ae9..1ecd0a66 100644
> --- a/sound/arm/pxa2xx-ac97-lib.c
> +++ b/sound/arm/pxa2xx-ac97-lib.c
> @@ -148,6 +148,8 @@ static inline void pxa_ac97_warm_pxa27x(void)
>
> static inline void pxa_ac97_cold_pxa27x(void)
> {
> + unsigned int timeout;
> +
> GCR &= GCR_COLD_RST; /* clear everything but nCRST */
> GCR &= ~GCR_COLD_RST; /* then assert nCRST */
>
> @@ -157,8 +159,10 @@ static inline void pxa_ac97_cold_pxa27x(void)
> clk_enable(ac97conf_clk);
> udelay(5);
> clk_disable(ac97conf_clk);
> - GCR = GCR_COLD_RST;
> - udelay(50);
> + GCR = GCR_COLD_RST | GCR_WARM_RST;
> + timeout = 100; /* wait for the codec-ready bit to be set */
> + while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
> + mdelay(1);
Can we use msleep() instead?
May be this will require to change the granularity to 10...
> }
> #endif
>
--
Regards,
Igor.
next prev parent reply other threads:[~2013-01-07 9:16 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-06 19:13 [PATCH 0/4] ALSA: pxa27x: ac97 reset fixes Mike Dunn
2013-01-06 19:13 ` Mike Dunn
2013-01-06 19:13 ` [PATCH 1/4] ALSA: pxa2xx: fix ac97 cold reset Mike Dunn
2013-01-06 19:13 ` Mike Dunn
2013-01-07 9:16 ` Igor Grinberg [this message]
2013-01-07 9:16 ` Igor Grinberg
2013-01-07 13:36 ` Mike Dunn
2013-01-07 13:36 ` Mike Dunn
2013-01-07 13:57 ` Igor Grinberg
2013-01-07 13:57 ` Igor Grinberg
2013-01-07 14:19 ` Mike Dunn
2013-01-07 14:19 ` Mike Dunn
2013-01-07 15:28 ` Igor Grinberg
2013-01-07 15:28 ` Igor Grinberg
2013-01-06 19:13 ` [PATCH 2/4] ALSA: pxa27x: fix ac97 warm reset bug work-around code Mike Dunn
2013-01-06 19:13 ` Mike Dunn
2013-01-07 9:31 ` Igor Grinberg
2013-01-07 9:31 ` Igor Grinberg
2013-01-07 11:06 ` Russell King - ARM Linux
2013-01-07 11:06 ` Russell King - ARM Linux
2013-01-07 13:40 ` Mike Dunn
2013-01-07 13:40 ` Mike Dunn
2013-01-06 19:13 ` [PATCH 3/4] ALSA: pxa27x: ac97 controller driver requests gpio Mike Dunn
2013-01-06 19:13 ` Mike Dunn
2013-01-07 9:36 ` Igor Grinberg
2013-01-07 9:36 ` Igor Grinberg
2013-01-07 9:42 ` Igor Grinberg
2013-01-07 9:42 ` Igor Grinberg
2013-01-07 14:10 ` Mike Dunn
2013-01-07 14:10 ` Mike Dunn
2013-01-07 15:38 ` Igor Grinberg
2013-01-07 15:38 ` Igor Grinberg
2013-01-07 16:40 ` Mike Dunn
2013-01-07 16:40 ` Mike Dunn
2013-01-06 19:14 ` [PATCH 4/4] ALSA: pxa27x: rename pxa27x_assert_ac97() Mike Dunn
2013-01-06 19:14 ` Mike Dunn
2013-01-07 9:39 ` Igor Grinberg
2013-01-07 9:39 ` Igor Grinberg
2013-01-07 14:34 ` Mike Dunn
2013-01-07 14:34 ` Mike Dunn
2013-01-07 15:41 ` Igor Grinberg
2013-01-07 15:41 ` Igor Grinberg
2013-01-06 20:33 ` [PATCH 0/4] ALSA: pxa27x: ac97 reset fixes Robert Jarzmik
2013-01-06 20:33 ` Robert Jarzmik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50EA9287.5030304@compulab.co.il \
--to=grinberg@compulab.co.il \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=eric.y.miao@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marex@denx.de \
--cc=mikedunn@newsguy.com \
--cc=robert.jarzmik@free.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.