From fd1a8ee78e829a7dd9f1e7bb5cc10b2f99d83daa Mon Sep 17 00:00:00 2001 From: Harshdeep Dhatt Date: Thu, 16 Jul 2020 13:10:51 -0600 Subject: [PATCH] msm: kgsl: Make sure first boot sequence is complete during touch event It's possible that a touch event may happen before the first kgsl instance is opened, which triggers the first boot sequence. This sequence must happen before touch event can trigger a power on sequence. Change-Id: I21af7865f4b02408d4f00814b4af6c9b9e8f5545 Signed-off-by: Harshdeep Dhatt --- drivers/gpu/msm/adreno_a6xx_gmu.c | 8 ++++++-- drivers/gpu/msm/adreno_a6xx_rgmu.c | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/msm/adreno_a6xx_gmu.c b/drivers/gpu/msm/adreno_a6xx_gmu.c index edd48127fe52..ecc5461e2ee7 100644 --- a/drivers/gpu/msm/adreno_a6xx_gmu.c +++ b/drivers/gpu/msm/adreno_a6xx_gmu.c @@ -3168,8 +3168,12 @@ static void a6xx_gmu_touch_wakeup(struct adreno_device *adreno_dev) struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev); int ret; - /* Do not wake up a suspended device through touch event */ - if (test_bit(GMU_PRIV_PM_SUSPEND, &gmu->flags)) + /* + * Do not wake up a suspended device or until the first boot sequence + * has been completed. + */ + if (test_bit(GMU_PRIV_PM_SUSPEND, &gmu->flags) || + !test_bit(GMU_PRIV_FIRST_BOOT_DONE, &gmu->flags)) return; if (test_bit(GMU_PRIV_GPU_STARTED, &gmu->flags)) diff --git a/drivers/gpu/msm/adreno_a6xx_rgmu.c b/drivers/gpu/msm/adreno_a6xx_rgmu.c index e1f0dde2f9d8..0b0846230a2d 100644 --- a/drivers/gpu/msm/adreno_a6xx_rgmu.c +++ b/drivers/gpu/msm/adreno_a6xx_rgmu.c @@ -897,8 +897,12 @@ static void a6xx_rgmu_touch_wakeup(struct adreno_device *adreno_dev) struct a6xx_rgmu_device *rgmu = to_a6xx_rgmu(adreno_dev); int ret; - /* Do not wake up a suspended device through touch event */ - if (test_bit(RGMU_PRIV_PM_SUSPEND, &rgmu->flags)) + /* + * Do not wake up a suspended device or until the first boot sequence + * has been completed. + */ + if (test_bit(RGMU_PRIV_PM_SUSPEND, &rgmu->flags) || + !test_bit(RGMU_PRIV_FIRST_BOOT_DONE, &rgmu->flags)) return; if (test_bit(RGMU_PRIV_GPU_STARTED, &rgmu->flags))