Commit 6db1c6ba authored by Srinivas Kandagatla's avatar Srinivas Kandagatla Committed by Mark Brown

ASoC: qcom: remove hardcoded dma channel

This patch removes hardcoded dma channel value in lpass driver, Now the
dma channel allocation happens in the SOC specific layer. This will
allow different LPASS integrations to use the lpass driver in more
generic way.
Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tested-by: default avatarKenneth Westfield <kwestfie@codeaurora.org>
Acked-by: default avatarKenneth Westfield <kwestfie@codeaurora.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0ae9fd3b
...@@ -63,6 +63,16 @@ static struct snd_soc_dai_driver ipq806x_lpass_cpu_dai_driver = { ...@@ -63,6 +63,16 @@ static struct snd_soc_dai_driver ipq806x_lpass_cpu_dai_driver = {
.ops = &asoc_qcom_lpass_cpu_dai_ops, .ops = &asoc_qcom_lpass_cpu_dai_ops,
}; };
int ipq806x_lpass_alloc_dma_channel(struct lpass_data *drvdata)
{
return IPQ806X_LPAIF_RDMA_CHAN_MI2S;
}
int ipq806x_lpass_free_dma_channel(struct lpass_data *drvdata, int chan)
{
return 0;
}
struct lpass_variant ipq806x_data = { struct lpass_variant ipq806x_data = {
.i2sctrl_reg_base = 0x0010, .i2sctrl_reg_base = 0x0010,
.i2sctrl_reg_stride = 0x04, .i2sctrl_reg_stride = 0x04,
...@@ -75,6 +85,8 @@ struct lpass_variant ipq806x_data = { ...@@ -75,6 +85,8 @@ struct lpass_variant ipq806x_data = {
.rdma_channels = 4, .rdma_channels = 4,
.dai_driver = &ipq806x_lpass_cpu_dai_driver, .dai_driver = &ipq806x_lpass_cpu_dai_driver,
.num_dai = 1, .num_dai = 1,
.alloc_dma_channel = ipq806x_lpass_alloc_dma_channel,
.free_dma_channel = ipq806x_lpass_free_dma_channel,
}; };
static const struct of_device_id ipq806x_lpass_cpu_device_id[] = { static const struct of_device_id ipq806x_lpass_cpu_device_id[] = {
......
This diff is collapsed.
...@@ -63,6 +63,8 @@ struct lpass_variant { ...@@ -63,6 +63,8 @@ struct lpass_variant {
/* SOC specific intialization like clocks */ /* SOC specific intialization like clocks */
int (*init)(struct platform_device *pdev); int (*init)(struct platform_device *pdev);
int (*exit)(struct platform_device *pdev); int (*exit)(struct platform_device *pdev);
int (*alloc_dma_channel)(struct lpass_data *data);
int (*free_dma_channel)(struct lpass_data *data, int ch);
/* SOC specific dais */ /* SOC specific dais */
struct snd_soc_dai_driver *dai_driver; struct snd_soc_dai_driver *dai_driver;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment