[alsa-devel] [PATCH] ASoC: omap-mcbsp: When closing the port select PRCM source for CLKS signal

Grazvydas Ignotas 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);
> +
>        spin_lock(&mcbsp->lock);
>        if (mcbsp->free)
>                dev_err(mcbsp->dev, "McBSP%d was not reserved\n", mcbsp->id);
> --
> 1.7.8.5
>

-- 
Gražvydas


More information about the Alsa-devel mailing list