Commit e681b1a6 authored by Srinivasa Rao Mandadapu's avatar Srinivasa Rao Mandadapu Committed by Mark Brown

ASoC: qcom: Fix typo error in HDMI regmap config callbacks

Had a typo in lpass platform driver that resulted in crash
during suspend/resume with an HDMI dongle connected.

The regmap read/write/volatile regesters validation callbacks in lpass-cpu
were using MI2S rdma_channels count instead of hdmi_rdma_channels.

This typo error causing to read registers from the regmap beyond the length
of the mapping created by ioremap().

This fix avoids the need for reducing number hdmi_rdma_channels,
which is done in
commit 7dfe20ee ("ASoC: qcom: Fix number of HDMI RDMA channels on sc7180").
So reverting the same.

Fixes: 7cb37b7b ("ASoC: qcom: Add support for lpass hdmi driver")
Signed-off-by: default avatarSrinivasa Rao Mandadapu <srivasam@codeaurora.org>
Link: https://lore.kernel.org/r/20210202062727.22469-1-srivasam@codeaurora.orgReviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
Tested-by: default avatarStephen Boyd <swboyd@chromium.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent e1711b1f
...@@ -594,7 +594,7 @@ static bool lpass_hdmi_regmap_writeable(struct device *dev, unsigned int reg) ...@@ -594,7 +594,7 @@ static bool lpass_hdmi_regmap_writeable(struct device *dev, unsigned int reg)
return true; return true;
} }
for (i = 0; i < v->rdma_channels; ++i) { for (i = 0; i < v->hdmi_rdma_channels; ++i) {
if (reg == LPAIF_HDMI_RDMACTL_REG(v, i)) if (reg == LPAIF_HDMI_RDMACTL_REG(v, i))
return true; return true;
if (reg == LPAIF_HDMI_RDMABASE_REG(v, i)) if (reg == LPAIF_HDMI_RDMABASE_REG(v, i))
...@@ -640,7 +640,7 @@ static bool lpass_hdmi_regmap_readable(struct device *dev, unsigned int reg) ...@@ -640,7 +640,7 @@ static bool lpass_hdmi_regmap_readable(struct device *dev, unsigned int reg)
if (reg == LPASS_HDMITX_APP_IRQSTAT_REG(v)) if (reg == LPASS_HDMITX_APP_IRQSTAT_REG(v))
return true; return true;
for (i = 0; i < v->rdma_channels; ++i) { for (i = 0; i < v->hdmi_rdma_channels; ++i) {
if (reg == LPAIF_HDMI_RDMACTL_REG(v, i)) if (reg == LPAIF_HDMI_RDMACTL_REG(v, i))
return true; return true;
if (reg == LPAIF_HDMI_RDMABASE_REG(v, i)) if (reg == LPAIF_HDMI_RDMABASE_REG(v, i))
...@@ -667,7 +667,7 @@ static bool lpass_hdmi_regmap_volatile(struct device *dev, unsigned int reg) ...@@ -667,7 +667,7 @@ static bool lpass_hdmi_regmap_volatile(struct device *dev, unsigned int reg)
if (reg == LPASS_HDMI_TX_LEGACY_ADDR(v)) if (reg == LPASS_HDMI_TX_LEGACY_ADDR(v))
return true; return true;
for (i = 0; i < v->rdma_channels; ++i) { for (i = 0; i < v->hdmi_rdma_channels; ++i) {
if (reg == LPAIF_HDMI_RDMACURR_REG(v, i)) if (reg == LPAIF_HDMI_RDMACURR_REG(v, i))
return true; return true;
} }
...@@ -817,7 +817,7 @@ int asoc_qcom_lpass_cpu_platform_probe(struct platform_device *pdev) ...@@ -817,7 +817,7 @@ int asoc_qcom_lpass_cpu_platform_probe(struct platform_device *pdev)
} }
lpass_hdmi_regmap_config.max_register = LPAIF_HDMI_RDMAPER_REG(variant, lpass_hdmi_regmap_config.max_register = LPAIF_HDMI_RDMAPER_REG(variant,
variant->hdmi_rdma_channels); variant->hdmi_rdma_channels - 1);
drvdata->hdmiif_map = devm_regmap_init_mmio(dev, drvdata->hdmiif, drvdata->hdmiif_map = devm_regmap_init_mmio(dev, drvdata->hdmiif,
&lpass_hdmi_regmap_config); &lpass_hdmi_regmap_config);
if (IS_ERR(drvdata->hdmiif_map)) { if (IS_ERR(drvdata->hdmiif_map)) {
......
...@@ -171,7 +171,7 @@ static struct lpass_variant sc7180_data = { ...@@ -171,7 +171,7 @@ static struct lpass_variant sc7180_data = {
.rdma_channels = 5, .rdma_channels = 5,
.hdmi_rdma_reg_base = 0x64000, .hdmi_rdma_reg_base = 0x64000,
.hdmi_rdma_reg_stride = 0x1000, .hdmi_rdma_reg_stride = 0x1000,
.hdmi_rdma_channels = 3, .hdmi_rdma_channels = 4,
.dmactl_audif_start = 1, .dmactl_audif_start = 1,
.wrdma_reg_base = 0x18000, .wrdma_reg_base = 0x18000,
.wrdma_reg_stride = 0x1000, .wrdma_reg_stride = 0x1000,
......
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