msm: sde: Add dynamic OT support for rotator REGDMA

Dynamic OT is applied before rotator operation to control QoS.
Since REGDMA cannot access QoS registers directly, rotator
driver needs to wait for rotator idle before changing any
OT settings.  Once new OT is applied, REGDMA can resume
queueing until OT changes again.

CRs-Fixed: 989206
Change-Id: I2fd07a957b0d8414c855fafcff7a2613695efff0
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
index 4d0c5e2..2476309 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_core.h
@@ -169,7 +169,6 @@
 	atomic_t num_active;
 	int max_active;
 	wait_queue_head_t wait_queue;
-	struct sde_rot_entry *workload;
 };
 
 struct sde_rot_queue {
@@ -225,6 +224,8 @@
 	struct mutex work_dis_lock;
 	u32 *work_distribution;
 	int last_wb_idx; /* last known wb index, used when above count is 0 */
+	u32 rdot_limit;
+	u32 wrot_limit;
 };
 
 struct sde_rot_file_private {
@@ -275,6 +276,8 @@
 	struct sde_rot_clk *rot_clk;
 	int num_rot_clk;
 	int core_clk_idx;
+	u32 rdot_limit;
+	u32 wrot_limit;
 
 	u32 hwacquire_timeout;
 	struct sde_mult_factor pixel_per_clk;