summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-07-06 23:41:15 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-07-06 23:41:15 -0700
commitabfdf9aa5a9199e8bf9107506d022afb166a2396 (patch)
tree67d7c55c7136b75840da6809da80b2961cbfc1e3 /drivers/gpu
parent0c44f3c838e32d6c4928a3d175b5406b4b4af293 (diff)
parenta92d182205df6877c29b4a2e1760b6f43fec1d2f (diff)
Merge "msm: kgsl: Make sure regulators are ON before GPU clocks are forced on"
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/msm/kgsl_pwrctrl.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index 63315e86d172..ad8b0131bb46 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -1022,6 +1022,8 @@ static void __force_on(struct kgsl_device *device, int flag, int on)
if (on) {
switch (flag) {
case KGSL_PWRFLAGS_CLK_ON:
+ /* make sure pwrrail is ON before enabling clocks */
+ kgsl_pwrctrl_pwrrail(device, KGSL_PWRFLAGS_ON);
kgsl_pwrctrl_clk(device, KGSL_PWRFLAGS_ON,
KGSL_STATE_ACTIVE);
break;
@@ -1817,7 +1819,12 @@ static int kgsl_pwrctrl_pwrrail(struct kgsl_device *device, int state)
struct kgsl_pwrctrl *pwr = &device->pwrctrl;
int status = 0;
- if (test_bit(KGSL_PWRFLAGS_POWER_ON, &pwr->ctrl_flags))
+ /*
+ * Disabling the regulator means also disabling dependent clocks.
+ * Hence don't disable it if force clock ON is set.
+ */
+ if (test_bit(KGSL_PWRFLAGS_POWER_ON, &pwr->ctrl_flags) ||
+ test_bit(KGSL_PWRFLAGS_CLK_ON, &pwr->ctrl_flags))
return 0;
if (state == KGSL_PWRFLAGS_OFF) {