summaryrefslogtreecommitdiffstats
path: root/sound/soc/qcom
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2015-05-21 23:53:05 +0200
committerMark Brown <broonie@kernel.org>2015-05-22 14:27:06 +0200
commit0054055c590ae5ca69f027d42cf171493476f6d8 (patch)
tree759f9331c7140a7c8a455afd563b2073826872b8 /sound/soc/qcom
parentASoC: qcom: make osr clock optional (diff)
downloadlinux-0054055c590ae5ca69f027d42cf171493476f6d8.tar.xz
linux-0054055c590ae5ca69f027d42cf171493476f6d8.zip
ASoC: qcom: add dma channel control offset to variant data
This patch adds ability to pass dma channel control bits start offset, which differ in differnet qcom SOCs. On apq8016 dma channel control bits start after an offset of 1. Tested-by: Kenneth Westfield <kwestfie@codeaurora.org> Acked-by: Kenneth Westfield <kwestfie@codeaurora.org> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/qcom')
-rw-r--r--sound/soc/qcom/lpass-platform.c2
-rw-r--r--sound/soc/qcom/lpass.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/sound/soc/qcom/lpass-platform.c b/sound/soc/qcom/lpass-platform.c
index fc0889196e7a..8ab0ac1dbedc 100644
--- a/sound/soc/qcom/lpass-platform.c
+++ b/sound/soc/qcom/lpass-platform.c
@@ -91,7 +91,7 @@ static int lpass_platform_pcmops_hw_params(struct snd_pcm_substream *substream,
unsigned int channels = params_channels(params);
unsigned int regval;
int bitwidth;
- int ret, rdma_port = pcm_data->i2s_port;
+ int ret, rdma_port = pcm_data->i2s_port + v->rdmactl_audif_start;
bitwidth = snd_pcm_format_width(format);
if (bitwidth < 0) {
diff --git a/sound/soc/qcom/lpass.h b/sound/soc/qcom/lpass.h
index 75e9370cb360..023170a0943d 100644
--- a/sound/soc/qcom/lpass.h
+++ b/sound/soc/qcom/lpass.h
@@ -61,6 +61,11 @@ struct lpass_variant {
u32 rdma_reg_stride;
u32 rdma_channels;
+ /**
+ * on SOCs like APQ8016 the channel control bits start
+ * at different offset to ipq806x
+ **/
+ u32 rdmactl_audif_start;
/* SOC specific intialization like clocks */
int (*init)(struct platform_device *pdev);
int (*exit)(struct platform_device *pdev);