disp: msm: sde: trigger pm_qos vote with irq enable
Video mode display keeps the MDP clocks in ON state but disables irq during static screen to avoid cpu wakeup. In such case, CPU pm_qos vote should also be removed to allow LPM transition. This change triggers the pm_qos vote based on mdp interrupt enable counts instead of runtime_pm callback. It works for multi-display concurrency also. Change-Id: I7a60f3f593e409269e00abd7499c4a5756035615 Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
This commit is contained in:
@@ -222,6 +222,8 @@ struct sde_irq_callback {
|
||||
* @enable_counts array of IRQ enable counts
|
||||
* @cb_lock: callback lock
|
||||
* @debugfs_file: debugfs file for irq statistics
|
||||
* @curr_irq_enable_count: Atomic counter keep track of total current irq enable
|
||||
* It is used to keep pm_qos vote on CPU.
|
||||
*/
|
||||
struct sde_irq {
|
||||
u32 total_irqs;
|
||||
@@ -230,6 +232,7 @@ struct sde_irq {
|
||||
atomic_t *irq_counts;
|
||||
spinlock_t cb_lock;
|
||||
struct dentry *debugfs_file;
|
||||
atomic_t curr_irq_enable_count;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -667,4 +670,12 @@ void sde_kms_timeline_status(struct drm_device *dev);
|
||||
*/
|
||||
int sde_kms_handle_recovery(struct drm_encoder *encoder);
|
||||
|
||||
/**
|
||||
* Notifies the irq enable on first interrupt enable and irq disable
|
||||
* on last interrupt disable.
|
||||
* @sde_kms: poiner to sde_kms structure
|
||||
* @enable: true if irq enabled, false for disabled state.
|
||||
*/
|
||||
void sde_kms_irq_enable_notify(struct sde_kms *sde_kms, bool enable);
|
||||
|
||||
#endif /* __sde_kms_H__ */
|
||||
|
Reference in New Issue
Block a user