mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 12:43:55 +08:00
ASoC: lpass-platform: use dma_ch instead of rdma_ch/wrdma_ch
This patch cleans up usage of wrdma_ch and rdma_ch variables into a common variable dma_ch, As there is no real use of tracking the dma channel in two different variables based on stream direction. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Acked-by: Kenneth Westfield <kwestfie@codeaurora.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
e9a16e4ad7
commit
4314f928f7
@ -25,8 +25,7 @@
|
||||
#include "lpass.h"
|
||||
|
||||
struct lpass_pcm_data {
|
||||
int rdma_ch;
|
||||
int wrdma_ch;
|
||||
int dma_ch;
|
||||
int i2s_port;
|
||||
};
|
||||
|
||||
@ -91,10 +90,7 @@ static int lpass_platform_pcmops_open(struct snd_pcm_substream *substream)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
data->rdma_ch = dma_ch;
|
||||
else
|
||||
data->wrdma_ch = dma_ch;
|
||||
data->dma_ch = dma_ch;
|
||||
|
||||
snd_soc_set_runtime_hwparams(substream, &lpass_platform_pcm_hardware);
|
||||
|
||||
@ -121,20 +117,12 @@ static int lpass_platform_pcmops_close(struct snd_pcm_substream *substream)
|
||||
snd_soc_platform_get_drvdata(soc_runtime->platform);
|
||||
struct lpass_variant *v = drvdata->variant;
|
||||
struct lpass_pcm_data *data;
|
||||
int dma_ch, dir = substream->stream;
|
||||
|
||||
data = runtime->private_data;
|
||||
v = drvdata->variant;
|
||||
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
dma_ch = data->rdma_ch;
|
||||
else
|
||||
dma_ch = data->wrdma_ch;
|
||||
|
||||
drvdata->substream[dma_ch] = NULL;
|
||||
|
||||
drvdata->substream[data->dma_ch] = NULL;
|
||||
if (v->free_dma_channel)
|
||||
v->free_dma_channel(drvdata, dma_ch);
|
||||
v->free_dma_channel(drvdata, data->dma_ch);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -155,10 +143,7 @@ static int lpass_platform_pcmops_hw_params(struct snd_pcm_substream *substream,
|
||||
int bitwidth;
|
||||
int ret, dma_port = pcm_data->i2s_port + v->dmactl_audif_start;
|
||||
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
ch = pcm_data->rdma_ch;
|
||||
else
|
||||
ch = pcm_data->wrdma_ch;
|
||||
ch = pcm_data->dma_ch;
|
||||
|
||||
bitwidth = snd_pcm_format_width(format);
|
||||
if (bitwidth < 0) {
|
||||
@ -245,11 +230,7 @@ static int lpass_platform_pcmops_hw_free(struct snd_pcm_substream *substream)
|
||||
unsigned int reg;
|
||||
int ret;
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
reg = LPAIF_RDMACTL_REG(v, pcm_data->rdma_ch);
|
||||
else
|
||||
reg = LPAIF_WRDMACTL_REG(v, pcm_data->wrdma_ch);
|
||||
|
||||
reg = LPAIF_DMACTL_REG(v, pcm_data->dma_ch, substream->stream);
|
||||
ret = regmap_write(drvdata->lpaif_map, reg, 0);
|
||||
if (ret)
|
||||
dev_err(soc_runtime->dev, "%s() error writing to rdmactl reg: %d\n",
|
||||
@ -269,10 +250,7 @@ static int lpass_platform_pcmops_prepare(struct snd_pcm_substream *substream)
|
||||
struct lpass_variant *v = drvdata->variant;
|
||||
int ret, ch, dir = substream->stream;
|
||||
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
ch = pcm_data->rdma_ch;
|
||||
else
|
||||
ch = pcm_data->wrdma_ch;
|
||||
ch = pcm_data->dma_ch;
|
||||
|
||||
ret = regmap_write(drvdata->lpaif_map,
|
||||
LPAIF_DMABASE_REG(v, ch, dir),
|
||||
@ -324,10 +302,7 @@ static int lpass_platform_pcmops_trigger(struct snd_pcm_substream *substream,
|
||||
struct lpass_variant *v = drvdata->variant;
|
||||
int ret, ch, dir = substream->stream;
|
||||
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
ch = pcm_data->rdma_ch;
|
||||
else
|
||||
ch = pcm_data->wrdma_ch;
|
||||
ch = pcm_data->dma_ch;
|
||||
|
||||
switch (cmd) {
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
@ -402,10 +377,7 @@ static snd_pcm_uframes_t lpass_platform_pcmops_pointer(
|
||||
unsigned int base_addr, curr_addr;
|
||||
int ret, ch, dir = substream->stream;
|
||||
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
ch = pcm_data->rdma_ch;
|
||||
else
|
||||
ch = pcm_data->wrdma_ch;
|
||||
ch = pcm_data->dma_ch;
|
||||
|
||||
ret = regmap_read(drvdata->lpaif_map,
|
||||
LPAIF_DMABASE_REG(v, ch, dir), &base_addr);
|
||||
|
Loading…
Reference in New Issue
Block a user