change i2s dma ch
author林辉辉 <lhh@rock-chips.com>
Thu, 3 Jun 2010 09:20:47 +0000 (09:20 +0000)
committer黄涛 <huangtao@rock-chips.com>
Mon, 21 Jun 2010 05:35:23 +0000 (13:35 +0800)
sound/soc/rk2818/rk2818_i2s.c
sound/soc/rk2818/rk2818_pcm.c

index cba0e83f84f07e07409bdfa2d8904c2dcc08ceea..2c49febc5319a6916753030182643a191be280b8 100755 (executable)
@@ -69,14 +69,14 @@ static struct rockchip_dma_client rockchip_dma_client_in = {
 
 static struct rockchip_pcm_dma_params rockchip_i2s_pcm_stereo_out = {
        .client         = &rockchip_dma_client_out,
-       .channel        = RK28_DMA_CH2, ///0,  //DMACH_I2S_OUT,
+       .channel        = RK28_DMA_CH4, ///0,  //DMACH_I2S_OUT,
        .dma_addr       = RK2818_I2S_PHYS + I2S_TXR_BUFF,
        .dma_size       = 4,
 };
 
 static struct rockchip_pcm_dma_params rockchip_i2s_pcm_stereo_in = {
        .client         = &rockchip_dma_client_in,
-       .channel        = RK28_DMA_CH2,  ///1,  //DMACH_I2S_IN,
+       .channel        = RK28_DMA_CH5,  ///1,  //DMACH_I2S_IN,
        .dma_addr       = RK2818_I2S_PHYS + I2S_RXR_BUFF,
        .dma_size       = 4,
 };
index 5d2519cdf030270f1e0e4e5b32627b5d766d4e2f..827d810aac08503c3db0f079f3142998a292e476 100755 (executable)
@@ -294,6 +294,12 @@ static int rockchip_pcm_hw_params(struct snd_pcm_substream *substream,
                        prtd->params->client, prtd->params->channel);
 
                ret = request_dma(prtd->params->channel, "i2s");  ///prtd->params->client->name);
+               if(ret){
+                       for(prtd->params->channel=5;prtd->params->channel>0;prtd->params->channel--){
+                               ret = request_dma(prtd->params->channel, "i2s");
+                               if(!ret)break;
+                       }
+               }
                if (ret) {
                        DBG(KERN_ERR "failed to get dma channel\n");
                        return ret;