disp: msm: add support for display early wakeup

Display clocks and IRQs are disabled during idle state
on command mode for power saving, and will be enabled
when a new frame commits to display driver. But enable
display clocks and IRQs will cause some latency.
So add a new SDE custom IOCTL for user-space to early wake
up display before first frame commits to kernel.

Change-Id: I6ca0188d321c4964f29c46e588b64d06b9634c59
Signed-off-by: Lei Chen <chenlei@codeaurora.org>
This commit is contained in:
Lei Chen
2020-05-26 16:45:52 +08:00
committed by Gerrit - the friendly Code Review server
vanhempi 2bcfcab1cb
commit eb679f5289
5 muutettua tiedostoa jossa 136 lisäystä ja 0 poistoa

Näytä tiedosto

@@ -167,6 +167,7 @@ struct sde_encoder_ops {
* @rc_state: resource controller state
* @delayed_off_work: delayed worker to schedule disabling of
* clks and resources after IDLE_TIMEOUT time.
* @early_wakeup_work: worker to handle early wakeup event
* @input_event_work: worker to handle input device touch events
* @esd_trigger_work: worker to handle esd trigger events
* @input_handler: handler for input device events
@@ -232,6 +233,7 @@ struct sde_encoder_virt {
struct mutex rc_lock;
enum sde_enc_rc_states rc_state;
struct kthread_delayed_work delayed_off_work;
struct kthread_work early_wakeup_work;
struct kthread_work input_event_work;
struct kthread_work esd_trigger_work;
struct input_handler *input_handler;
@@ -265,6 +267,12 @@ void sde_encoder_get_hw_resources(struct drm_encoder *encoder,
struct sde_encoder_hw_resources *hw_res,
struct drm_connector_state *conn_state);
/**
* sde_encoder_early_wakeup - early wake up display
* @encoder: encoder pointer
*/
void sde_encoder_early_wakeup(struct drm_encoder *drm_enc);
/**
* sde_encoder_register_vblank_callback - provide callback to encoder that
* will be called on the next vblank.