Merge "msm: kgsl: Call adreno_init only once on startup"
diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c
index c7e5717..9b45432 100644
--- a/drivers/gpu/msm/adreno.c
+++ b/drivers/gpu/msm/adreno.c
@@ -1640,6 +1640,8 @@
adreno_ringbuffer_close(&adreno_dev->ringbuffer);
kgsl_device_platform_remove(device);
+ clear_bit(ADRENO_DEVICE_INITIALIZED, &adreno_dev->priv);
+
return 0;
}
@@ -1649,6 +1651,12 @@
int i;
kgsl_pwrctrl_set_state(device, KGSL_STATE_INIT);
+ /*
+ * initialization only needs to be done once initially until
+ * device is shutdown
+ */
+ if (test_bit(ADRENO_DEVICE_INITIALIZED, &adreno_dev->priv))
+ return 0;
/* Power up the device */
kgsl_pwrctrl_enable(device);
@@ -1674,6 +1682,7 @@
BUG_ON(1);
}
+ kgsl_pwrctrl_set_state(device, KGSL_STATE_INIT);
/*
* Check if firmware supports the sync lock PM4 packets needed
* for IOMMUv1
@@ -1710,6 +1719,8 @@
if (adreno_is_a3xx(adreno_dev))
adreno_a3xx_pwron_fixup_init(adreno_dev);
+ set_bit(ADRENO_DEVICE_INITIALIZED, &adreno_dev->priv);
+
return 0;
}
diff --git a/drivers/gpu/msm/adreno.h b/drivers/gpu/msm/adreno.h
index 78f1822..6fe3027 100644
--- a/drivers/gpu/msm/adreno.h
+++ b/drivers/gpu/msm/adreno.h
@@ -197,6 +197,7 @@
enum adreno_device_flags {
ADRENO_DEVICE_PWRON = 0,
ADRENO_DEVICE_PWRON_FIXUP = 1,
+ ADRENO_DEVICE_INITIALIZED = 2,
};
#define PERFCOUNTER_FLAG_NONE 0x0