drm/atomic-helpers: make mode_set hooks optional
With runtime PM the hw might still be off while doing the ->mode_set callbacks - runtime PM get/put should only happen in the enable/disable hooks to properly support DPMS. Which essentially makes these callbacks useless for drivers support runtime PM, so make them optional. Again motivated by discussions with Laurent. Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Acked-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
This commit is contained in:
@@ -723,7 +723,7 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
|
||||
|
||||
funcs = crtc->helper_private;
|
||||
|
||||
if (crtc->state->enable) {
|
||||
if (crtc->state->enable && funcs->mode_set_nofb) {
|
||||
DRM_DEBUG_ATOMIC("modeset on [CRTC:%d]\n",
|
||||
crtc->base.id);
|
||||
|
||||
@@ -759,7 +759,8 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
|
||||
* Each encoder has at most one connector (since we always steal
|
||||
* it away), so we won't call call mode_set hooks twice.
|
||||
*/
|
||||
funcs->mode_set(encoder, mode, adjusted_mode);
|
||||
if (funcs->mode_set)
|
||||
funcs->mode_set(encoder, mode, adjusted_mode);
|
||||
|
||||
if (encoder->bridge && encoder->bridge->funcs->mode_set)
|
||||
encoder->bridge->funcs->mode_set(encoder->bridge,
|
||||
|
Reference in New Issue
Block a user