Hi Jarkko,

On Wed, Aug 05, 2009 at 09:48:56AM +0200, ext Jarkko Nikula wrote:
> On Thu, 30 Jul 2009 15:49:39 +0300
> Eduardo Valentin <[email protected]> wrote:
> 
> > Now this patch implements again the McBSP threshold
> > usage for OMAP ASoC.
> > 
> > We figured out that there is no need to have so much
> > SW control in order to have DMA in idle state during
> > audio streaming. Configuring McBSP threshold value
> > and DMA to FRAME_SYNC are sufficient.
> > 
> > Signed-off-by: Eduardo Valentin <[email protected]>
> > ---
> >  sound/soc/omap/omap-pcm.c |   37 +++++++++++++++++++++++++++++++++++--
> >  1 files changed, 35 insertions(+), 2 deletions(-)
> > 
> > @@ -192,6 +203,12 @@ static int omap_pcm_trigger(struct snd_pcm_substream 
> > *substream, int cmd)
> >     case SNDRV_PCM_TRIGGER_RESUME:
> >     case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
> >             prtd->period_index = 0;
> > +           /* Configure McBSP internal buffer usage */
> > +           if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> > +                   omap_mcbsp_set_tx_threshold(bus_id, samples - 1);
> > +           else
> > +                   omap_mcbsp_set_rx_threshold(bus_id, samples - 1);
> > +
> >             omap_start_dma(prtd->dma_ch);
> >             break;
> >  
> Oops, didn't notice this before. This will hard glue the DMA and McBSP
> together. Even currently there is only McBSP based DAI link driver,
> there can be others as well. EAC DAI for OMAP2420 would be necessary
> for instance if one wants to develop ASoC support for Nokia N800. Nokia
> N810 could use that too.

True. And the same comment is valid for the patch which adds op mode selection.
My idea to un-glue them is to put some callbacks in omap_mcbsp_data of 
omap-mcbsp.c,
and share it as something more generic, so that they can be called from 
omap-pcm.c.

Something like:

struct omap_dma_data {
        unsigned int                    bus_id;
        unsigned int                    fmt;
        /*
         * Flags indicating is the bus already activated and configured by
         * another substream
         */
        int                             active;
        int                             configured;
        /* threshold callbacks can be added then here */
        void                            *data; /* struct omap_mcbsp_reg_cfg     
regs; can go here */
};

And this goes in omap-pcm.h.

what do you think??

> 
> 
> -- 
> Jarkko

-- 
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