msm: mdss: enable runtime autosuspend for mdp device
With MDSS idle power collapse feature enabled, it is possible that the runtime suspend callback for MDP device to be called when there are no display updates. This results in MDSS GDSC to be turned off in idle screen usecases, and would subsequently be turned back on upon the next update. However, toggling GDSC can be an expensive operation and should only be done when it is expected to be off for a substantial time. To achieve this, enable the runtime autosuspend status for the mdp device. Change-Id: I6e4127efe7b01d7e164b0763d34995c82c2e8be9 Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
This commit is contained in:
parent
ef439517fe
commit
f8e6cabbfc
1 changed files with 10 additions and 3 deletions
|
@ -58,6 +58,7 @@
|
|||
#include "mdss_mdp_trace.h"
|
||||
|
||||
#define AXI_HALT_TIMEOUT_US 0x4000
|
||||
#define AUTOSUSPEND_TIMEOUT_MS 200
|
||||
|
||||
struct mdss_data_type *mdss_res;
|
||||
|
||||
|
@ -728,7 +729,8 @@ void mdss_bus_bandwidth_ctrl(int enable)
|
|||
if (!enable) {
|
||||
msm_bus_scale_client_update_request(
|
||||
mdata->bus_hdl, 0);
|
||||
pm_runtime_put(&mdata->pdev->dev);
|
||||
pm_runtime_mark_last_busy(&mdata->pdev->dev);
|
||||
pm_runtime_put_autosuspend(&mdata->pdev->dev);
|
||||
} else {
|
||||
pm_runtime_get_sync(&mdata->pdev->dev);
|
||||
msm_bus_scale_client_update_request(
|
||||
|
@ -777,8 +779,10 @@ void mdss_mdp_clk_ctrl(int enable)
|
|||
if (mdata->vsync_ena)
|
||||
mdss_mdp_clk_update(MDSS_CLK_MDP_VSYNC, enable);
|
||||
|
||||
if (!enable)
|
||||
pm_runtime_put(&mdata->pdev->dev);
|
||||
if (!enable) {
|
||||
pm_runtime_mark_last_busy(&mdata->pdev->dev);
|
||||
pm_runtime_put_autosuspend(&mdata->pdev->dev);
|
||||
}
|
||||
}
|
||||
|
||||
mutex_unlock(&mdp_clk_lock);
|
||||
|
@ -1464,6 +1468,9 @@ static int mdss_mdp_probe(struct platform_device *pdev)
|
|||
goto probe_done;
|
||||
}
|
||||
|
||||
pm_runtime_set_autosuspend_delay(&pdev->dev, AUTOSUSPEND_TIMEOUT_MS);
|
||||
if (mdata->idle_pc_enabled)
|
||||
pm_runtime_use_autosuspend(&pdev->dev);
|
||||
pm_runtime_set_suspended(&pdev->dev);
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
if (!pm_runtime_enabled(&pdev->dev))
|
||||
|
|
Loading…
Add table
Reference in a new issue