msm: ipa: fix GSI enable for GSI 1.2
GSI version is not passed correctly to GSI driver in order
to enable MCS.
Change-Id: I00f456de830c84dcf736eea5332c501bd15f4aef
CRs-Fixed: 1097871
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Signed-off-by: Amir Levy <alevy@codeaurora.org>
diff --git a/drivers/platform/msm/gsi/gsi.c b/drivers/platform/msm/gsi/gsi.c
index eadb4b7..dcc2a24 100644
--- a/drivers/platform/msm/gsi/gsi.c
+++ b/drivers/platform/msm/gsi/gsi.c
@@ -2700,11 +2700,16 @@
}
EXPORT_SYMBOL(gsi_configure_regs);
-int gsi_enable_fw(phys_addr_t gsi_base_addr, u32 gsi_size)
+int gsi_enable_fw(phys_addr_t gsi_base_addr, u32 gsi_size, enum gsi_ver ver)
{
void __iomem *gsi_base;
uint32_t value;
+ if (ver <= GSI_VER_ERR || ver >= GSI_VER_MAX) {
+ GSIERR("Incorrect version %d\n", ver);
+ return -GSI_STATUS_ERROR;
+ }
+
gsi_base = ioremap_nocache(gsi_base_addr, gsi_size);
if (!gsi_base) {
GSIERR("ioremap failed for 0x%pa\n", &gsi_base_addr);
@@ -2712,7 +2717,7 @@
}
/* Enable the MCS and set to x2 clocks */
- if (gsi_ctx->per.ver >= GSI_VER_1_2) {
+ if (ver >= GSI_VER_1_2) {
value = ((1 << GSI_GSI_MCS_CFG_MCS_ENABLE_SHFT) &
GSI_GSI_MCS_CFG_MCS_ENABLE_BMSK);
gsi_writel(value, gsi_base + GSI_GSI_MCS_CFG_OFFS);