From ff43683350077bdfbb5ae4bb42f715b76e977bba Mon Sep 17 00:00:00 2001 From: Dhaval Patel Date: Fri, 30 Oct 2020 16:51:05 -0700 Subject: [PATCH] disp: msm: avoid setting AMC and WAKE tage on icc vote Setting AMC and WAKE tag triggers AMC only and WAKE+SLEEP only vote. These dynamic tag switching is not allowed on interconnect driver. Display SW usecases also need ACTIVE_ONLY tag for solver enabled and disabled configuration. ACTIVE_ONLY tag triggers AMC+SLEEP for solver disabled and WAKE+SLEEP for solver enabled configuration. Change-Id: I5abcc104378595724e5b5ae594c4b8c7a7922875 Signed-off-by: Dhaval Patel --- msm/sde_rsc.c | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/msm/sde_rsc.c b/msm/sde_rsc.c index dc04c68f7d..e06b5f7fe9 100644 --- a/msm/sde_rsc.c +++ b/msm/sde_rsc.c @@ -63,21 +63,6 @@ static struct sde_rsc_priv *rsc_prv_list[MAX_RSC_COUNT]; static struct device *rpmh_dev[MAX_RSC_COUNT]; -static void sde_rsc_set_data_bus_mode(struct sde_power_handle *phandle, u32 tag) -{ - int i = 0, j = 0; - - for (i = 0; i < SDE_POWER_HANDLE_DBUS_ID_MAX; i++) { - if (!phandle->data_bus_handle[i].bus_active_only) - continue; - - for (j = 0; j < phandle->data_bus_handle[i].data_paths_cnt; j++) - icc_set_tag(phandle->data_bus_handle[i].data_bus_hdl[j], - tag); - - } -} - /** * sde_rsc_client_create() - create the client for sde rsc. * Different displays like DSI, HDMI, DP, WB, etc should call this @@ -531,11 +516,8 @@ static int sde_rsc_switch_to_cmd(struct sde_rsc_priv *rsc, if (rsc->hw_ops.state_update) { rc = rsc->hw_ops.state_update(rsc, SDE_RSC_CMD_STATE); - if (!rc) { + if (!rc) rpmh_mode_solver_set(rsc->rpmh_dev, true); - sde_rsc_set_data_bus_mode(&rsc->phandle, - QCOM_ICC_TAG_WAKE); - } } /* vsync wait not needed during VID->CMD switch (rev 4+ HW only) */ @@ -594,11 +576,8 @@ static int sde_rsc_switch_to_clk(struct sde_rsc_priv *rsc, if (rsc->hw_ops.state_update) { rc = rsc->hw_ops.state_update(rsc, SDE_RSC_CLK_STATE); - if (!rc) { + if (!rc) rpmh_mode_solver_set(rsc->rpmh_dev, false); - sde_rsc_set_data_bus_mode(&rsc->phandle, - QCOM_ICC_TAG_AMC); - } } /* indicate wait for vsync for cmd/vid to clk state switch */ @@ -684,13 +663,9 @@ static int sde_rsc_switch_to_vid(struct sde_rsc_priv *rsc, if (rsc->hw_ops.state_update) { rc = rsc->hw_ops.state_update(rsc, SDE_RSC_VID_STATE); - if (!rc) { + if (!rc) rpmh_mode_solver_set(rsc->rpmh_dev, rsc->version >= SDE_RSC_REV_3); - sde_rsc_set_data_bus_mode(&rsc->phandle, - rsc->version >= SDE_RSC_REV_3 ? - QCOM_ICC_TAG_WAKE : QCOM_ICC_TAG_AMC); - } } /* vsync wait not needed during CMD->VID switch (rev 4+ HW only) */ @@ -774,11 +749,8 @@ static int sde_rsc_switch_to_idle(struct sde_rsc_priv *rsc, } else if (rsc->hw_ops.state_update) { rc = rsc->hw_ops.state_update(rsc, SDE_RSC_IDLE_STATE); rsc->post_poms = false; - if (!rc) { + if (!rc) rpmh_mode_solver_set(rsc->rpmh_dev, true); - sde_rsc_set_data_bus_mode(&rsc->phandle, - QCOM_ICC_TAG_WAKE); - } } return rc;