disp: msm: add low power mode notifier
Introduce low power mode so that listeners are aware when display is going into low power mode. This requires moving notifier inside sde code to be able to retrieve the low power state. Change-Id: I8671e86af29c959d97e1b8ad758a07719ffa4bec (cherry picked from commit c4b15f56dd63d24d6f4482deab2423809c700d7a) Signed-off-by: Adrian Salido <salidoa@google.com> [samtran@codeaurora.org: move changes to different file as downstream use of notifier struct comes from different file] Signed-off-by: Samantha Tran <samtran@codeaurora.org> Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org> Signed-off-by: Narendra Muppalla <NarendraM@codeaurora.org>
Bu işleme şunda yer alıyor:

işlemeyi yapan:
Narendra Muppalla

ebeveyn
d478974b21
işleme
fb50dda175
@@ -184,8 +184,7 @@ msm_disable_connector_outputs(struct drm_device *dev,
|
||||
{
|
||||
struct drm_connector *connector;
|
||||
struct drm_connector_state *old_conn_state;
|
||||
struct drm_panel_notifier notifier_data;
|
||||
int i, blank;
|
||||
int i;
|
||||
|
||||
for_each_old_connector_in_state(old_state, connector,
|
||||
old_conn_state, i) {
|
||||
@@ -223,15 +222,6 @@ msm_disable_connector_outputs(struct drm_device *dev,
|
||||
DRM_DEBUG_ATOMIC("disabling [ENCODER:%d:%s]\n",
|
||||
encoder->base.id, encoder->name);
|
||||
|
||||
if (connector->state->crtc &&
|
||||
connector->state->crtc->state->active_changed) {
|
||||
blank = DRM_PANEL_BLANK_POWERDOWN;
|
||||
notifier_data.data = ␣
|
||||
if (connector->panel)
|
||||
drm_panel_notifier_call_chain(connector->panel,
|
||||
DRM_PANEL_EARLY_EVENT_BLANK,
|
||||
¬ifier_data);
|
||||
}
|
||||
/*
|
||||
* Each encoder has at most one connector (since we always steal
|
||||
* it away), so we won't call disable hooks twice.
|
||||
@@ -247,14 +237,6 @@ msm_disable_connector_outputs(struct drm_device *dev,
|
||||
funcs->dpms(encoder, DRM_MODE_DPMS_OFF);
|
||||
|
||||
drm_bridge_post_disable(encoder->bridge);
|
||||
if (connector->state->crtc &&
|
||||
connector->state->crtc->state->active_changed) {
|
||||
DRM_DEBUG_ATOMIC("Notify blank\n");
|
||||
if (connector->panel)
|
||||
drm_panel_notifier_call_chain(connector->panel,
|
||||
DRM_PANEL_EVENT_BLANK,
|
||||
¬ifier_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -410,12 +392,10 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
|
||||
struct drm_crtc_state *new_crtc_state;
|
||||
struct drm_connector *connector;
|
||||
struct drm_connector_state *new_conn_state;
|
||||
struct drm_panel_notifier notifier_data;
|
||||
struct msm_drm_private *priv = dev->dev_private;
|
||||
struct msm_kms *kms = priv->kms;
|
||||
int bridge_enable_count = 0;
|
||||
int i, blank;
|
||||
bool splash = false;
|
||||
int i;
|
||||
|
||||
SDE_ATRACE_BEGIN("msm_enable");
|
||||
for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state,
|
||||
@@ -475,19 +455,6 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
|
||||
DRM_DEBUG_ATOMIC("enabling [ENCODER:%d:%s]\n",
|
||||
encoder->base.id, encoder->name);
|
||||
|
||||
if (kms && kms->funcs && kms->funcs->check_for_splash)
|
||||
splash = kms->funcs->check_for_splash(kms);
|
||||
|
||||
if (splash || (connector->state->crtc &&
|
||||
connector->state->crtc->state->active_changed)) {
|
||||
blank = DRM_PANEL_BLANK_UNBLANK;
|
||||
notifier_data.data = ␣
|
||||
DRM_DEBUG_ATOMIC("Notify early unblank\n");
|
||||
if (connector->panel)
|
||||
drm_panel_notifier_call_chain(connector->panel,
|
||||
DRM_PANEL_EARLY_EVENT_BLANK,
|
||||
¬ifier_data);
|
||||
}
|
||||
/*
|
||||
* Each encoder has at most one connector (since we always steal
|
||||
* it away), so we won't call enable hooks twice.
|
||||
@@ -536,15 +503,6 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
|
||||
encoder->base.id, encoder->name);
|
||||
|
||||
drm_bridge_enable(encoder->bridge);
|
||||
|
||||
if (splash || (connector->state->crtc &&
|
||||
connector->state->crtc->state->active_changed)) {
|
||||
DRM_DEBUG_ATOMIC("Notify unblank\n");
|
||||
if (connector->panel)
|
||||
drm_panel_notifier_call_chain(connector->panel,
|
||||
DRM_PANEL_EVENT_BLANK,
|
||||
¬ifier_data);
|
||||
}
|
||||
}
|
||||
SDE_ATRACE_END("msm_enable");
|
||||
}
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle