[PATCH v3 1/1] ASoC: mxs-saif: add record function

Wolfram Sang w.sang at pengutronix.de
Fri Sep 9 09:30:51 EDT 2011


On Wed, Sep 07, 2011 at 08:51:50PM +0800, Dong Aisheng wrote:
> 1. add different clkmux mode handling
> SAIF can use two instances to implement full duplex (playback &
> recording) and record saif may work on EXTMASTER mode which is
> using other saif's BITCLK&LRCLK.
> 
> The clkmux mode could be set in pdata->init() in mach-specific code.
> For generic saif driver, it only needs to know who is his master
> and the master id is also provided in mach-specific code.
> 
> 2. support playback and capture simutaneously however the sample
> rates can not be different due to hw limitation.
> 
> Signed-off-by: Dong Aisheng <b29396 at freescale.com>

One thing I see...

> @@ -422,20 +503,39 @@ static int mxs_saif_trigger(struct snd_pcm_substream *substream, int cmd,
>  			__raw_readl(saif->base + SAIF_DATA);
>  		}
>  
> -		dev_dbg(cpu_dai->dev, "CTRL 0x%x STAT 0x%x\n",
> +		master_saif->ongoing = 1;
> +
> +		dev_dbg(saif->dev, "CTRL 0x%x STAT 0x%x\n",
>  			__raw_readl(saif->base + SAIF_CTRL),
>  			__raw_readl(saif->base + SAIF_STAT));
>  
> +		dev_dbg(master_saif->dev, "CTRL 0x%x STAT 0x%x\n",
> +			__raw_readl(master_saif->base + SAIF_CTRL),
> +			__raw_readl(master_saif->base + SAIF_STAT));
>  		break;
>  	case SNDRV_PCM_TRIGGER_SUSPEND:
>  	case SNDRV_PCM_TRIGGER_STOP:
>  	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
>  		dev_dbg(cpu_dai->dev, "stop\n");
>  
> -		clk_disable(saif->clk);
> -		if (!saif->mclk_in_use)
> +		/* wait a while for the current sample to complete */
> +		delay = USEC_PER_SEC / master_saif->cur_rate;
> +
> +		if (!master_saif->mclk_in_use) {
> +			__raw_writel(BM_SAIF_CTRL_RUN,
> +				master_saif->base + SAIF_CTRL + MXS_CLR_ADDR);
> +			udelay(delay);
> +		}
> +		clk_disable(master_saif->clk);
> +
> +		if (saif != master_saif) {
>  			__raw_writel(BM_SAIF_CTRL_RUN,
>  				saif->base + SAIF_CTRL + MXS_CLR_ADDR);
> +			udelay(delay);

I think we should use usleep_range for both udelays here? Having a rate
of 8000, we'd burn 250us here.

Regards,

   Wolfram

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110909/56c6ccac/attachment.sig>


More information about the linux-arm-kernel mailing list