msm: kgsl: Disable the IOMMU clocks on a timestamp
Add a function which adds an event to disable the iommu clocks
based on a timestamp. If timestamp elapses then the event function
will disable the iommu clocks. Remove the disabling of iommu clocks
from the power control code.
Change-Id: Ic1263771f8c532131059283dde05425a73554974
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c
index b280183..ad0ec48 100644
--- a/drivers/gpu/msm/adreno.c
+++ b/drivers/gpu/msm/adreno.c
@@ -374,9 +374,19 @@
KGSL_IOMMU_SETSTATE_NOP_OFFSET);
sizedwords += (cmds - &link[0]);
- if (sizedwords)
- adreno_ringbuffer_issuecmds(device,
- KGSL_CMD_FLAGS_PMODE, &link[0], sizedwords);
+ if (sizedwords) {
+ unsigned int ts;
+ /*
+ * add an interrupt at the end of commands so that the smmu
+ * disable clock off function will get called
+ */
+ *cmds++ = cp_type3_packet(CP_INTERRUPT, 1);
+ *cmds++ = CP_INT_CNTL__RB_INT_MASK;
+ sizedwords += 2;
+ ts = adreno_ringbuffer_issuecmds(device, KGSL_CMD_FLAGS_PMODE,
+ &link[0], sizedwords);
+ kgsl_mmu_disable_clk_on_ts(&device->mmu, ts, true);
+ }
done:
if (num_iommu_units)
kfree(reg_map_array);