From: 邱建斌 Date: Tue, 16 Jul 2013 08:16:49 +0000 (+0800) Subject: spdif: spdif use dma static mode X-Git-Tag: firefly_0821_release~6888 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=67cc50eb990c127748fa6b6e06bf824207e7f75d;p=firefly-linux-kernel-4.4.55.git spdif: spdif use dma static mode --- diff --git a/arch/arm/mach-rk30/devices.c b/arch/arm/mach-rk30/devices.c old mode 100644 new mode 100755 index 4f781d6a32f2..24083f58a31f --- a/arch/arm/mach-rk30/devices.c +++ b/arch/arm/mach-rk30/devices.c @@ -1163,7 +1163,7 @@ static struct resource resources_spdif[] = { }; struct platform_device rk29_device_spdif = { .name = "rk-spdif", - .id = 0, + .id = -1, .num_resources = ARRAY_SIZE(resources_spdif), .resource = resources_spdif, }; diff --git a/sound/soc/rk29/rk_hdmi_spdif.c b/sound/soc/rk29/rk_hdmi_spdif.c old mode 100644 new mode 100755 index 0e69efc164d4..c93a23957b4e --- a/sound/soc/rk29/rk_hdmi_spdif.c +++ b/sound/soc/rk29/rk_hdmi_spdif.c @@ -107,7 +107,7 @@ static struct snd_soc_dai_link rk_dai = { .name = "SPDIF", .stream_name = "SPDIF PCM Playback", .platform_name = "rockchip-audio", - .cpu_dai_name = "rk-spdif.0", + .cpu_dai_name = "rk-spdif", .codec_dai_name = "dit-hifi", .codec_name = "spdif-dit", .ops = &rk_spdif_ops, diff --git a/sound/soc/rk29/rk_spdif.c b/sound/soc/rk29/rk_spdif.c old mode 100644 new mode 100755 index d3eedba78680..39ad0df0686c --- a/sound/soc/rk29/rk_spdif.c +++ b/sound/soc/rk29/rk_spdif.c @@ -140,12 +140,12 @@ static void spdif_snd_txctrl(struct rockchip_spdif_info *spdif, int on) writel(xfer, regs + XFER); writel(opr|0x10, regs + DMACR); RK_SPDIF_DBG("on xfer=0x%x,opr=0x%x\n",readl(regs + XFER),readl(regs + DMACR)); - } else{ - xfer &= ~XFER_TRAN_START; - opr &= ~DMACR_TRAN_DMA_ENABLE; + }else{ + xfer &= ~XFER_TRAN_START; + opr &= ~DMACR_TRAN_DMA_ENABLE; writel(xfer, regs + XFER); writel(opr|0x10, regs + DMACR); - } + } } static int spdif_set_syclk(struct snd_soc_dai *cpu_dai, @@ -218,7 +218,7 @@ static int spdif_hw_params(struct snd_pcm_substream *substream, cfgr = readl(regs + CFGR) & CFGR_VALID_DATA_MASK; - cfgr &= ~CFGR_VALID_DATA_MASK; + cfgr &= ~CFGR_VALID_DATA_MASK; switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: cfgr |= CFGR_VALID_DATA_16bit; @@ -244,9 +244,9 @@ static int spdif_hw_params(struct snd_pcm_substream *substream, writel(cfgr, regs + CFGR); - dmac = readl(regs + DMACR) & DMACR_TRAN_DMA_MASK & (~DMACR_TRAN_DATA_LEVEL_MASK); - dmac |= 0x10; - writel(dmac, regs + DMACR); + dmac = readl(regs + DMACR) & DMACR_TRAN_DMA_MASK & (~DMACR_TRAN_DATA_LEVEL_MASK); + dmac |= 0x10; + writel(dmac, regs + DMACR); spin_unlock_irqrestore(&spdif->lock, flags); @@ -343,7 +343,6 @@ static __devinit int spdif_probe(struct platform_device *pdev) iomux_set(SPDIF_TX); #endif - dma_res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "spdif_dma"); if (!dma_res) { printk("spdif:Unable to get dma resource.\n"); @@ -369,8 +368,7 @@ static __devinit int spdif_probe(struct platform_device *pdev) } clk_enable(spdif->clk); clk_set_rate(spdif->clk, 11289600); - -#if 1// defined (CONFIG_ARCH_RK30) + spdif->hclk = clk_get(&pdev->dev, "hclk_spdif"); if (IS_ERR(spdif->hclk)) { printk("spdif:failed to get spdif hclk\n"); @@ -379,7 +377,6 @@ static __devinit int spdif_probe(struct platform_device *pdev) } clk_enable(spdif->hclk); clk_set_rate(spdif->hclk, 11289600); -#endif /* Request S/PDIF Register's memory region */ if (!request_mem_region(mem_res->start, @@ -410,7 +407,7 @@ static __devinit int spdif_probe(struct platform_device *pdev) spdif_stereo_out.channel = dma_res->start; spdif->dma_playback = &spdif_stereo_out; -#ifdef CONFIG_SND_DMA_EVENT_STATIC +#ifdef CONFIG_SND_I2S_DMA_EVENT_STATIC WARN_ON(rk29_dma_request(spdif_stereo_out.channel, spdif_stereo_out.client, NULL)); #endif @@ -427,10 +424,8 @@ err2: clk_put(spdif->clk); err1: clk_disable(spdif->hclk); - clk_put(spdif->hclk); -#if 1//defined (CONFIG_ARCH_RK30) + clk_put(spdif->hclk); err0: -#endif return ret; }