On Sun, Aug 23, 2009 at 11:24:27AM +0200, Jarkko Nikula wrote:
> Functionality of functions omap_mcbsp_xmit_enable and omap_mcbsp_recv_enable
> can be merged into omap_mcbsp_start and omap_mcbsp_stop since API of
> those omap_mcbsp_start and omap_mcbsp_stop was changed recently allowing
> to start and stop individually the transmitter and receiver.
> 
> This cleans up the code in arch/arm/plat-omap/mcbsp.c and in
> sound/soc/omap/omap-mcbsp.c which was the only user for those removed
> functions.
> 
> Signed-off-by: Jarkko Nikula <[email protected]>
> Cc: Eero Nurkkala <[email protected]>
> Cc: Peter Ujfalusi <[email protected]>

Acked-by: Eduardo Valentin <[email protected]>

> ---
>  arch/arm/plat-omap/include/mach/mcbsp.h |    2 -
>  arch/arm/plat-omap/mcbsp.c              |   84 ++++++++++--------------------
>  sound/soc/omap/omap-mcbsp.c             |    5 --
>  3 files changed, 28 insertions(+), 63 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h 
> b/arch/arm/plat-omap/include/mach/mcbsp.h
> index 70e950e..63a3f25 100644
> --- a/arch/arm/plat-omap/include/mach/mcbsp.h
> +++ b/arch/arm/plat-omap/include/mach/mcbsp.h
> @@ -436,8 +436,6 @@ int omap_mcbsp_request(unsigned int id);
>  void omap_mcbsp_free(unsigned int id);
>  void omap_mcbsp_start(unsigned int id, int tx, int rx);
>  void omap_mcbsp_stop(unsigned int id, int tx, int rx);
> -void omap_mcbsp_xmit_enable(unsigned int id, u8 enable);
> -void omap_mcbsp_recv_enable(unsigned int id, u8 enable);
>  void omap_mcbsp_xmit_word(unsigned int id, u32 word);
>  u32 omap_mcbsp_recv_word(unsigned int id);
>  
> diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
> index 28e29b9..7e7d435 100644
> --- a/arch/arm/plat-omap/mcbsp.c
> +++ b/arch/arm/plat-omap/mcbsp.c
> @@ -529,11 +529,13 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx)
>       }
>  
>       /* Enable transmitter and receiver */
> +     tx &= 1;
>       w = OMAP_MCBSP_READ(io_base, SPCR2);
> -     OMAP_MCBSP_WRITE(io_base, SPCR2, w | (tx & 1));
> +     OMAP_MCBSP_WRITE(io_base, SPCR2, w | tx);
>  
> +     rx &= 1;
>       w = OMAP_MCBSP_READ(io_base, SPCR1);
> -     OMAP_MCBSP_WRITE(io_base, SPCR1, w | (rx & 1));
> +     OMAP_MCBSP_WRITE(io_base, SPCR1, w | rx);
>  
>       /*
>        * Worst case: CLKSRG*2 = 8000khz: (1/8000) * 2 * 2 usec
> @@ -549,6 +551,16 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx)
>               OMAP_MCBSP_WRITE(io_base, SPCR2, w | (1 << 7));
>       }
>  
> +     if (cpu_is_omap2430() || cpu_is_omap34xx()) {
> +             /* Release the transmitter and receiver */
> +             w = OMAP_MCBSP_READ(io_base, XCCR);
> +             w &= ~(tx ? XDISABLE : 0);
> +             OMAP_MCBSP_WRITE(io_base, XCCR, w);
> +             w = OMAP_MCBSP_READ(io_base, RCCR);
> +             w &= ~(rx ? RDISABLE : 0);
> +             OMAP_MCBSP_WRITE(io_base, RCCR, w);
> +     }
> +
>       /* Dump McBSP Regs */
>       omap_mcbsp_dump_reg(id);
>  }
> @@ -570,12 +582,24 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx)
>       io_base = mcbsp->io_base;
>  
>       /* Reset transmitter */
> +     tx &= 1;
> +     if (cpu_is_omap2430() || cpu_is_omap34xx()) {
> +             w = OMAP_MCBSP_READ(io_base, XCCR);
> +             w |= (tx ? XDISABLE : 0);
> +             OMAP_MCBSP_WRITE(io_base, XCCR, w);
> +     }
>       w = OMAP_MCBSP_READ(io_base, SPCR2);
> -     OMAP_MCBSP_WRITE(io_base, SPCR2, w & ~(tx & 1));
> +     OMAP_MCBSP_WRITE(io_base, SPCR2, w & ~tx);
>  
>       /* Reset receiver */
> +     rx &= 1;
> +     if (cpu_is_omap2430() || cpu_is_omap34xx()) {
> +             w = OMAP_MCBSP_READ(io_base, RCCR);
> +             w |= (tx ? RDISABLE : 0);
> +             OMAP_MCBSP_WRITE(io_base, RCCR, w);
> +     }
>       w = OMAP_MCBSP_READ(io_base, SPCR1);
> -     OMAP_MCBSP_WRITE(io_base, SPCR1, w & ~(rx & 1));
> +     OMAP_MCBSP_WRITE(io_base, SPCR1, w & ~rx);
>  
>       idle = !((OMAP_MCBSP_READ(io_base, SPCR2) |
>                 OMAP_MCBSP_READ(io_base, SPCR1)) & 1);
> @@ -588,58 +612,6 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx)
>  }
>  EXPORT_SYMBOL(omap_mcbsp_stop);
>  
> -void omap_mcbsp_xmit_enable(unsigned int id, u8 enable)
> -{
> -     struct omap_mcbsp *mcbsp;
> -     void __iomem *io_base;
> -     u16 w;
> -
> -     if (!(cpu_is_omap2430() || cpu_is_omap34xx()))
> -             return;
> -
> -     if (!omap_mcbsp_check_valid_id(id)) {
> -             printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
> -             return;
> -     }
> -
> -     mcbsp = id_to_mcbsp_ptr(id);
> -     io_base = mcbsp->io_base;
> -
> -     w = OMAP_MCBSP_READ(io_base, XCCR);
> -
> -     if (enable)
> -             OMAP_MCBSP_WRITE(io_base, XCCR, w & ~(XDISABLE));
> -     else
> -             OMAP_MCBSP_WRITE(io_base, XCCR, w | XDISABLE);
> -}
> -EXPORT_SYMBOL(omap_mcbsp_xmit_enable);
> -
> -void omap_mcbsp_recv_enable(unsigned int id, u8 enable)
> -{
> -     struct omap_mcbsp *mcbsp;
> -     void __iomem *io_base;
> -     u16 w;
> -
> -     if (!(cpu_is_omap2430() || cpu_is_omap34xx()))
> -             return;
> -
> -     if (!omap_mcbsp_check_valid_id(id)) {
> -             printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
> -             return;
> -     }
> -
> -     mcbsp = id_to_mcbsp_ptr(id);
> -     io_base = mcbsp->io_base;
> -
> -     w = OMAP_MCBSP_READ(io_base, RCCR);
> -
> -     if (enable)
> -             OMAP_MCBSP_WRITE(io_base, RCCR, w & ~(RDISABLE));
> -     else
> -             OMAP_MCBSP_WRITE(io_base, RCCR, w | RDISABLE);
> -}
> -EXPORT_SYMBOL(omap_mcbsp_recv_enable);
> -
>  /* polled mcbsp i/o operations */
>  int omap_mcbsp_pollwrite(unsigned int id, u16 buf)
>  {
> diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
> index 89e8bce..0e173e7 100644
> --- a/sound/soc/omap/omap-mcbsp.c
> +++ b/sound/soc/omap/omap-mcbsp.c
> @@ -231,11 +231,6 @@ static int omap_mcbsp_dai_trigger(struct 
> snd_pcm_substream *substream, int cmd,
>       case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
>               mcbsp_data->active++;
>               omap_mcbsp_start(mcbsp_data->bus_id, play, !play);
> -             /* Make sure data transfer is frame synchronized */
> -             if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> -                     omap_mcbsp_xmit_enable(mcbsp_data->bus_id, 1);
> -             else
> -                     omap_mcbsp_recv_enable(mcbsp_data->bus_id, 1);
>               break;
>  
>       case SNDRV_PCM_TRIGGER_STOP:
> -- 
> 1.6.3.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Eduardo Valentin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to