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 <pdhaval@codeaurora.org>
This commit is contained in:
@@ -63,21 +63,6 @@
|
|||||||
static struct sde_rsc_priv *rsc_prv_list[MAX_RSC_COUNT];
|
static struct sde_rsc_priv *rsc_prv_list[MAX_RSC_COUNT];
|
||||||
static struct device *rpmh_dev[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.
|
* sde_rsc_client_create() - create the client for sde rsc.
|
||||||
* Different displays like DSI, HDMI, DP, WB, etc should call this
|
* 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) {
|
if (rsc->hw_ops.state_update) {
|
||||||
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_CMD_STATE);
|
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_CMD_STATE);
|
||||||
if (!rc) {
|
if (!rc)
|
||||||
rpmh_mode_solver_set(rsc->rpmh_dev, true);
|
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) */
|
/* 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) {
|
if (rsc->hw_ops.state_update) {
|
||||||
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_CLK_STATE);
|
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_CLK_STATE);
|
||||||
if (!rc) {
|
if (!rc)
|
||||||
rpmh_mode_solver_set(rsc->rpmh_dev, false);
|
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 */
|
/* 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) {
|
if (rsc->hw_ops.state_update) {
|
||||||
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_VID_STATE);
|
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_VID_STATE);
|
||||||
if (!rc) {
|
if (!rc)
|
||||||
rpmh_mode_solver_set(rsc->rpmh_dev,
|
rpmh_mode_solver_set(rsc->rpmh_dev,
|
||||||
rsc->version >= SDE_RSC_REV_3);
|
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) */
|
/* 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) {
|
} else if (rsc->hw_ops.state_update) {
|
||||||
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_IDLE_STATE);
|
rc = rsc->hw_ops.state_update(rsc, SDE_RSC_IDLE_STATE);
|
||||||
rsc->post_poms = false;
|
rsc->post_poms = false;
|
||||||
if (!rc) {
|
if (!rc)
|
||||||
rpmh_mode_solver_set(rsc->rpmh_dev, true);
|
rpmh_mode_solver_set(rsc->rpmh_dev, true);
|
||||||
sde_rsc_set_data_bus_mode(&rsc->phandle,
|
|
||||||
QCOM_ICC_TAG_WAKE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
Reference in New Issue
Block a user