Message ID | 1454347760-10856-1-git-send-email-srinivas.kandagatla@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Feb 01, 2016 at 09:29:20AM -0800, Srinivas Kandagatla wrote: > diff --git a/sound/soc/qcom/lpass-apq8016.c > b/sound/soc/qcom/lpass-apq8016.c > index df44f09..3eef0c3 100644 > --- a/sound/soc/qcom/lpass-apq8016.c > +++ b/sound/soc/qcom/lpass-apq8016.c ... > @@ -213,7 +225,11 @@ static struct lpass_variant apq8016_data = { > .rdma_reg_base = 0x8400, > .rdma_reg_stride = 0x1000, > .rdma_channels = 2, > - .rdmactl_audif_start = 1, > + .dmactl_audif_start = 1, Changing rdma.. to dma.. should be done in patch 3 (ASoC: qcom: rename rdmactl_audif_start to dmactrl_audif_start). The build should fail otherwise if bisecting between this patch and patch 3.
On 03/02/16 00:37, Kenneth Westfield wrote: > On Mon, Feb 01, 2016 at 09:29:20AM -0800, Srinivas Kandagatla wrote: >> diff --git a/sound/soc/qcom/lpass-apq8016.c >> b/sound/soc/qcom/lpass-apq8016.c >> index df44f09..3eef0c3 100644 >> --- a/sound/soc/qcom/lpass-apq8016.c >> +++ b/sound/soc/qcom/lpass-apq8016.c > > ... > >> @@ -213,7 +225,11 @@ static struct lpass_variant apq8016_data = { >> .rdma_reg_base = 0x8400, >> .rdma_reg_stride = 0x1000, >> .rdma_channels = 2, >> - .rdmactl_audif_start = 1, >> + .dmactl_audif_start = 1, > > Changing rdma.. to dma.. should be done in patch 3 (ASoC: qcom: rename > rdmactl_audif_start to dmactrl_audif_start). The build should > fail otherwise if bisecting between this patch and patch 3. Agreed, will sort this out in next version. >
diff --git a/sound/soc/qcom/lpass-apq8016.c b/sound/soc/qcom/lpass-apq8016.c index df44f09..3eef0c3 100644 --- a/sound/soc/qcom/lpass-apq8016.c +++ b/sound/soc/qcom/lpass-apq8016.c @@ -137,11 +137,23 @@ static int apq8016_lpass_alloc_dma_channel(struct lpass_data *drvdata, int direction) { struct lpass_variant *v = drvdata->variant; - int chan = find_first_zero_bit(&drvdata->dma_ch_bit_map, + int chan = 0; + + if (direction == SNDRV_PCM_STREAM_PLAYBACK) { + chan = find_first_zero_bit(&drvdata->dma_ch_bit_map, v->rdma_channels); - if (chan >= v->rdma_channels) - return -EBUSY; + if (chan >= v->rdma_channels) + return -EBUSY; + } else { + chan = find_next_zero_bit(&drvdata->dma_ch_bit_map, + v->wrdma_channel_start + + v->wrdma_channels, + v->wrdma_channel_start); + + if (chan >= v->wrdma_channel_start + v->wrdma_channels) + return -EBUSY; + } set_bit(chan, &drvdata->dma_ch_bit_map); @@ -213,7 +225,11 @@ static struct lpass_variant apq8016_data = { .rdma_reg_base = 0x8400, .rdma_reg_stride = 0x1000, .rdma_channels = 2, - .rdmactl_audif_start = 1, + .dmactl_audif_start = 1, + .wrdma_reg_base = 0xB000, + .wrdma_reg_stride = 0x1000, + .wrdma_channel_start = 5, + .wrdma_channels = 2, .dai_driver = apq8016_lpass_cpu_dai_driver, .num_dai = ARRAY_SIZE(apq8016_lpass_cpu_dai_driver), .init = apq8016_lpass_init,
This patch adds wrdma support in lpass-apq8016 by providing the register offsets and adding support in dma channel allocation callback. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> --- sound/soc/qcom/lpass-apq8016.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-)