From: Marcus Cooper <[email protected]> The A23 SDK does not mention HDMI capture and this seems to be left over from when this driver was copied from the I2S driver. Remove from codebase.
Signed-off-by: Marcus Cooper <[email protected]> --- sound/soc/sunxi/hdmiaudio/sunxi-hdmiaudio.c | 101 +++++----------------------- 1 file changed, 18 insertions(+), 83 deletions(-) diff --git a/sound/soc/sunxi/hdmiaudio/sunxi-hdmiaudio.c b/sound/soc/sunxi/hdmiaudio/sunxi-hdmiaudio.c index a678fb9..ced8f47 100644 --- a/sound/soc/sunxi/hdmiaudio/sunxi-hdmiaudio.c +++ b/sound/soc/sunxi/hdmiaudio/sunxi-hdmiaudio.c @@ -47,14 +47,6 @@ static struct sunxi_dma_params sunxi_hdmiaudio_pcm_stereo_out = { .dma_addr = 0, }; -static struct sunxi_dma_params sunxi_hdmiaudio_pcm_stereo_in = { - .client.name = "HDMIAUDIO PCM Stereo in", -#if defined CONFIG_ARCH_SUN4I || defined CONFIG_ARCH_SUN5I - .channel = DMACH_HDMIAUDIO, -#endif - .dma_addr = SUNXI_HDMIAUDIOBASE + SUNXI_HDMIAUDIORXFIFO, -}; - struct sunxi_hdmiaudio_info sunxi_hdmiaudio; //clock handle @@ -145,52 +137,8 @@ void sunxi_snd_txctrl_hdmiaudio(struct snd_pcm_substream *substream, int on) } } -void sunxi_snd_rxctrl_hdmiaudio(struct snd_pcm_substream *substream, int on) -{ - u32 reg_val; - - //flush RX FIFO - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOFCTL); - reg_val |= SUNXI_HDMIAUDIOFCTL_FRX; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOFCTL); - - //clear RX counter - writel(0, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIORXCNT); - - if (on) { - /* HDMIAUDIO RX ENABLE */ - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - reg_val |= SUNXI_HDMIAUDIOCTL_RXEN; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - - /* enable DMA DRQ mode for record */ - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOINT); - reg_val |= SUNXI_HDMIAUDIOINT_RXDRQEN; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOINT); - - //Global Enable Digital Audio Interface - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - reg_val |= SUNXI_HDMIAUDIOCTL_GEN; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - } else { - /* HDMIAUDIO RX DISABLE */ - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - reg_val &= ~SUNXI_HDMIAUDIOCTL_RXEN; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - - /* DISBALE dma DRQ mode */ - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOINT); - reg_val &= ~SUNXI_HDMIAUDIOINT_RXDRQEN; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOINT); - - //Global disable Digital Audio Interface - reg_val = readl(sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - reg_val &= ~SUNXI_HDMIAUDIOCTL_GEN; - writel(reg_val, sunxi_hdmiaudio.regs + SUNXI_HDMIAUDIOCTL); - } -} - -static int sunxi_hdmiaudio_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) +static int sunxi_hdmiaudio_set_fmt(struct snd_soc_dai *cpu_dai, + unsigned int fmt) { u32 reg_val; u32 reg_val1; @@ -326,7 +274,8 @@ static int sunxi_hdmiaudio_hw_params(struct snd_pcm_substream *substream, if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK) dma_data = &sunxi_hdmiaudio_pcm_stereo_out; else - dma_data = &sunxi_hdmiaudio_pcm_stereo_in; + printk("error:hdmiaudio can't support capture:%s,line:%d\n", + __func__, __LINE__); snd_soc_dai_set_dma_data(rtd->cpu_dai, substream, dma_data); @@ -345,28 +294,20 @@ static int sunxi_hdmiaudio_trigger(struct snd_pcm_substream *substream, return 0; /* No rx / tx control, etc. on sun7i() */ switch (cmd) { - case SNDRV_PCM_TRIGGER_START: - case SNDRV_PCM_TRIGGER_RESUME: - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: - if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { - sunxi_snd_rxctrl_hdmiaudio(substream, 1); - } else { - sunxi_snd_txctrl_hdmiaudio(substream, 1); - } - sunxi_dma_started(dma_data); - break; - case SNDRV_PCM_TRIGGER_STOP: - case SNDRV_PCM_TRIGGER_SUSPEND: - case SNDRV_PCM_TRIGGER_PAUSE_PUSH: - if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { - sunxi_snd_rxctrl_hdmiaudio(substream, 0); - } else { - sunxi_snd_txctrl_hdmiaudio(substream, 0); - } - break; - default: - ret = -EINVAL; - break; + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_RESUME: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + sunxi_snd_txctrl_hdmiaudio(substream, 1); + sunxi_dma_started(dma_data); + break; + case SNDRV_PCM_TRIGGER_STOP: + case SNDRV_PCM_TRIGGER_SUSPEND: + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + sunxi_snd_txctrl_hdmiaudio(substream, 0); + break; + default: + ret = -EINVAL; + break; } return ret; } @@ -558,12 +499,6 @@ static struct snd_soc_dai_driver sunxi_hdmiaudio_dai = { .rates = SUNXI_I2S_RATES, .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE }, - .capture = { - .channels_min = 1, - .channels_max = 2, - .rates = SUNXI_I2S_RATES, - .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE - }, .symmetric_rates = 1, .ops = &sunxi_hdmiaudio_dai_ops, }; -- 1.8.3.2 -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
