[alsa-devel] [PATCH] ASoC: omap-mcbsp: When closing the port select PRCM source for CLKS signal
notasas at gmail.com
Thu Mar 8 23:48:59 CET 2012
On Mon, Mar 5, 2012 at 11:38 AM, Peter Ujfalusi <peter.ujfalusi at ti.com> wrote:
> If external source for the CLKS signal selection kept after the port is no
> longer in use the system might refuse to go suspend.
> There is also a chance that the external clock is not running when next
> time the McBSP port is started which can result errors when we try to
> access McBSP registers.
> Reset the CLKS source back to PRCM source unconditionally.
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi at ti.com>
Tested-by: Grazvydas Ignotas <notasas at gmail.com>
> sound/soc/omap/mcbsp.c | 10 ++++++++++
> 1 files changed, 10 insertions(+), 0 deletions(-)
> diff --git a/sound/soc/omap/mcbsp.c b/sound/soc/omap/mcbsp.c
> index d716793..21dbb05 100644
> --- a/sound/soc/omap/mcbsp.c
> +++ b/sound/soc/omap/mcbsp.c
> @@ -548,6 +548,16 @@ void omap_mcbsp_free(struct omap_mcbsp *mcbsp)
> reg_cache = mcbsp->reg_cache;
> + /*
> + * Select CLKS source from internal source unconditionally before
> + * marking the McBSP port as free.
> + * If the external clock source via MCBSP_CLKS pin has been selected the
> + * system will refuse to enter idle if the CLKS pin source is not reset
> + * back to internal source.
> + */
> + if (!cpu_class_is_omap1())
> + omap2_mcbsp_set_clks_src(mcbsp, MCBSP_CLKS_PRCM_SRC);
> if (mcbsp->free)
> dev_err(mcbsp->dev, "McBSP%d was not reserved\n", mcbsp->id);
More information about the Alsa-devel