Add support for MSM8937 MSS it is similar to MSM8917 MSS. It differs primarily in that TZ needs to be informed of the modem start address and pas_id.
Signed-off-by: Barnabás Czémán <[email protected]> --- drivers/remoteproc/qcom_q6v5_mss.c | 54 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c index 47c598693962..718bafdf92c1 100644 --- a/drivers/remoteproc/qcom_q6v5_mss.c +++ b/drivers/remoteproc/qcom_q6v5_mss.c @@ -263,6 +263,7 @@ enum { MSS_MSM8916, MSS_MSM8917, MSS_MSM8926, + MSS_MSM8937, MSS_MSM8953, MSS_MSM8974, MSS_MSM8996, @@ -753,6 +754,7 @@ static int q6v5proc_reset(struct q6v5 *qproc) } else if (qproc->version == MSS_MDM9607 || qproc->version == MSS_MSM8909 || qproc->version == MSS_MSM8917 || + qproc->version == MSS_MSM8937 || qproc->version == MSS_MSM8953 || qproc->version == MSS_MSM8996 || qproc->version == MSS_MSM8998 || @@ -760,7 +762,8 @@ static int q6v5proc_reset(struct q6v5 *qproc) /* Override the ACC value if required */ if (qproc->version == MSS_MDM9607 || - qproc->version == MSS_MSM8917) + qproc->version == MSS_MSM8917 || + qproc->version == MSS_MSM8937) writel(QDSP6SS_ACC_OVERRIDE_VAL_9607, qproc->reg_base + QDSP6SS_STRAP_ACC); else if (qproc->version != MSS_MSM8909 && @@ -823,6 +826,7 @@ static int q6v5proc_reset(struct q6v5 *qproc) /* Turn on L1, L2, ETB and JU memories 1 at a time */ if (qproc->version == MSS_MDM9607 || qproc->version == MSS_MSM8917 || + qproc->version == MSS_MSM8937 || qproc->version == MSS_MSM8953 || qproc->version == MSS_MSM8996) { mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL; @@ -833,7 +837,8 @@ static int q6v5proc_reset(struct q6v5 *qproc) * "inrush current" issues. */ if (qproc->version == MSS_MDM9607 || - qproc->version == MSS_MSM8917) + qproc->version == MSS_MSM8917 || + qproc->version == MSS_MSM8937) reverse = 6; } else { /* MSS_MSM8998, MSS_SDM660 */ @@ -2597,6 +2602,50 @@ static const struct rproc_hexagon_res msm8917_mss = { .version = MSS_MSM8917, }; +static const struct rproc_hexagon_res msm8937_mss = { + .hexagon_mba_image = "mba.mbn", + .proxy_supply = (struct qcom_mss_reg_res[]) { + { + .supply = "pll", + .uA = 100000, + }, + {} + }, + .active_supply = (struct qcom_mss_reg_res[]) { + { + .supply = "mss", + .uV = 1050000, + .uA = 100000, + }, + {} + }, + .proxy_clk_names = (char*[]){ + "xo", + NULL + }, + .active_clk_names = (char*[]){ + "iface", + "bus", + "mem", + NULL + }, + .proxy_pd_names = (char*[]) { + "cx", + "mx", + NULL + }, + .need_mem_protection = false, + .need_pas_mem_setup = true, + .has_alt_reset = false, + .has_mba_logs = false, + .has_spare_reg = false, + .has_qaccept_regs = false, + .has_ext_bhs_reg = false, + .has_ext_cntl_regs = false, + .has_vq6 = false, + .version = MSS_MSM8937, +}; + static const struct rproc_hexagon_res msm8953_mss = { .hexagon_mba_image = "mba.mbn", .proxy_supply = (struct qcom_mss_reg_res[]) { @@ -2782,6 +2831,7 @@ static const struct of_device_id q6v5_of_match[] = { { .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss}, { .compatible = "qcom,msm8917-mss-pil", .data = &msm8917_mss}, { .compatible = "qcom,msm8926-mss-pil", .data = &msm8926_mss}, + { .compatible = "qcom,msm8937-mss-pil", .data = &msm8937_mss}, { .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss}, { .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss}, { .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_mss}, -- 2.52.0

