Пример #1
0
/* audio_setup_dma()
 *
 * Just a simple funcion to control DMA setting for AC'97 audio
 */
static void audio_setup_dma(struct audio_stream_a *s, int stream_id)
{
#ifdef CONFIG_SND_WMT_SOC_AC97
	struct snd_pcm_runtime *runtime = s->stream->runtime;
#endif

	DBG_DETAIL();

#ifdef CONFIG_SND_WMT_SOC_I2S
	if (!strcmp(wmt_dai_name, "i2s")) {
		if (stream_id == SNDRV_PCM_STREAM_PLAYBACK)
			s->dma_cfg.DefaultCCR = I2S_TX_DMA_32BITS_CFG  ;
		else
			s->dma_cfg.DefaultCCR = I2S_RX_DMA_32BITS_CFG  ;
	}
#endif
#ifdef CONFIG_SND_WMT_SOC_AC97
	if (!strcmp(wmt_dai_name, "ac97")) {
		if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) {
			/* From memory to device */
			switch (runtime->channels * runtime->format) {
			case 1:
				s->dma_cfg.DefaultCCR = AC97_TX_DMA_8BITS_CFG;     /* setup 1 bytes*/
				break ;
			case 2:
				s->dma_cfg.DefaultCCR = AC97_TX_DMA_16BITS_CFG;    /* setup 2 bytes*/
				break ;
			case 4:
				s->dma_cfg.DefaultCCR = AC97_TX_DMA_32BITS_CFG;    /* setup 4 byte*/
				break ;
			}
		}
		else {
			/* From device to memory */
			switch (runtime->channels * runtime->format) {
			case 1:
				s->dma_cfg.DefaultCCR = AC97_RX_DMA_8BITS_CFG ;     /* setup 1 bytes*/
				break ;
			case 2:
				s->dma_cfg.DefaultCCR = AC97_RX_DMA_16BITS_CFG ;    /* setup 2 bytes*/
				break ;
			case 4:
				s->dma_cfg.DefaultCCR = AC97_RX_DMA_32BITS_CFG ;    /* setup 4 byte*/
				break ;
			}
		}
	}
#endif

	s->dma_cfg.ChunkSize = 1;
	if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) {
		pcm_out_dma_cfg = &s->dma_cfg;
	}
	
	//DPRINTK("s pointer: %d. audio dma %d cfg.DefaultCCR 0x%x ", (int)s, s->dmach, (unsigned int)s->dma_cfg.DefaultCCR);
	//DPRINTK("cfg.ChunkSize 0x%x ", s->dma_cfg.ChunkSize);
	wmt_setup_dma(s->dmach, s->dma_cfg) ;
}
Пример #2
0
/* audio_setup_dma()
 *
 * Just a simple funcion to control DMA setting for AC'97 audio
 */
static void audio_setup_dma(struct audio_stream_a *s, int stream_id)
{
	struct snd_pcm_runtime *runtime = s->stream->runtime;

	DBG_DETAIL();

	if (stream_id == SNDRV_PCM_STREAM_PLAYBACK) {
		/* From memory to device */
		switch (runtime->channels * runtime->format) {
		case 1:
			s->dma_cfg.DefaultCCR = PCM_TX_DMA_8BITS_CFG;     /* setup 1 bytes*/
			break ;
		case 2:
			s->dma_cfg.DefaultCCR = PCM_TX_DMA_16BITS_CFG;    /* setup 2 bytes*/
			break ;
		case 4:
			s->dma_cfg.DefaultCCR = PCM_TX_DMA_32BITS_CFG;    /* setup 4 byte*/
			break ;
		}
	}
	else {
		/* From device to memory */
		switch (runtime->channels * runtime->format) {
		case 1:
			s->dma_cfg.DefaultCCR = PCM_RX_DMA_8BITS_CFG ;     /* setup 1 bytes*/
			break ;
		case 2:
			s->dma_cfg.DefaultCCR = PCM_RX_DMA_16BITS_CFG ;    /* setup 2 bytes*/
			break ;
		case 4:
			s->dma_cfg.DefaultCCR = PCM_RX_DMA_32BITS_CFG ;    /* setup 4 byte*/
			break ;
		}
	}

	s->dma_cfg.ChunkSize = 1;
	
	wmt_setup_dma(s->dmach, s->dma_cfg) ;
}