[PATCH] drm/exynos: remove unnecessary calls to disable_plane()
Hi, On 04/11/2015 03:57 AM, Gustavo Padovan wrote: > From: Gustavo Padovan > > The planes are already disabled by the drm_atomic_helper_commit() code > so we don't need to disable the in these two places. > > Signed-off-by: Gustavo Padovan > --- > drivers/gpu/drm/exynos/exynos_drm_crtc.c| 11 --- > drivers/gpu/drm/exynos/exynos_drm_encoder.c | 8 > 2 files changed, 19 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c > b/drivers/gpu/drm/exynos/exynos_drm_crtc.c > index 519c569..9bf25ff 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c > @@ -47,8 +47,6 @@ static void exynos_drm_crtc_enable(struct drm_crtc *crtc) > static void exynos_drm_crtc_disable(struct drm_crtc *crtc) > { > struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); > - struct drm_plane *plane; > - int ret; > > if (!exynos_crtc->enabled) > return; > @@ -64,15 +62,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc) > exynos_crtc->ops->dpms(exynos_crtc, DRM_MODE_DPMS_OFF); > > exynos_crtc->enabled = false; > - > - drm_for_each_legacy_plane(plane, >dev->mode_config.plane_list) { > - if (plane->crtc != crtc) > - continue; > - > - ret = plane->funcs->disable_plane(plane); > - if (ret) > - DRM_ERROR("Failed to disable plane %d\n", ret); > - } If remove here disable codes, when crtc is disabled, enabled overlay planes may not be disabled. E.g, user can remove fb of crtc via DRM_IOCTL_MODE_RMFB ioctl, then crtc is disabled but overlay planes no. Thanks. > } > > static bool > diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c > b/drivers/gpu/drm/exynos/exynos_drm_encoder.c > index 0648ba4..7b89fd5 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c > @@ -81,17 +81,9 @@ static void exynos_drm_encoder_disable(struct drm_encoder > *encoder) > { > struct exynos_drm_encoder *exynos_encoder = to_exynos_encoder(encoder); > struct exynos_drm_display *display = exynos_encoder->display; > - struct drm_plane *plane; > - struct drm_device *dev = encoder->dev; > > if (display->ops->dpms) > display->ops->dpms(display, DRM_MODE_DPMS_OFF); > - > - /* all planes connected to this encoder should be also disabled. */ > - drm_for_each_legacy_plane(plane, >mode_config.plane_list) { > - if (plane->crtc && (plane->crtc == encoder->crtc)) > - plane->funcs->disable_plane(plane); > - } > } > > static struct drm_encoder_helper_funcs exynos_encoder_helper_funcs = { >
[PATCH] drm/exynos: remove unnecessary calls to disable_plane()
2015-04-13 Joonyoung Shim : > Hi, > > On 04/11/2015 03:57 AM, Gustavo Padovan wrote: > > From: Gustavo Padovan > > > > The planes are already disabled by the drm_atomic_helper_commit() code > > so we don't need to disable the in these two places. > > > > Signed-off-by: Gustavo Padovan > > --- > > drivers/gpu/drm/exynos/exynos_drm_crtc.c| 11 --- > > drivers/gpu/drm/exynos/exynos_drm_encoder.c | 8 > > 2 files changed, 19 deletions(-) > > > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c > > b/drivers/gpu/drm/exynos/exynos_drm_crtc.c > > index 519c569..9bf25ff 100644 > > --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c > > +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c > > @@ -47,8 +47,6 @@ static void exynos_drm_crtc_enable(struct drm_crtc *crtc) > > static void exynos_drm_crtc_disable(struct drm_crtc *crtc) > > { > > struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); > > - struct drm_plane *plane; > > - int ret; > > > > if (!exynos_crtc->enabled) > > return; > > @@ -64,15 +62,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc > > *crtc) > > exynos_crtc->ops->dpms(exynos_crtc, DRM_MODE_DPMS_OFF); > > > > exynos_crtc->enabled = false; > > - > > - drm_for_each_legacy_plane(plane, >dev->mode_config.plane_list) { > > - if (plane->crtc != crtc) > > - continue; > > - > > - ret = plane->funcs->disable_plane(plane); > > - if (ret) > > - DRM_ERROR("Failed to disable plane %d\n", ret); > > - } > > If remove here disable codes, when crtc is disabled, enabled overlay > planes may not be disabled. > > E.g, user can remove fb of crtc via DRM_IOCTL_MODE_RMFB ioctl, then crtc > is disabled but overlay planes no. That not true anymore with atomic modesetting, the overlay planes are also disabled, so we should let the atomic core solve this and remove these pieces of code from here. Gustavo
[PATCH] drm/exynos: remove unnecessary calls to disable_plane()
From: Gustavo PadovanThe planes are already disabled by the drm_atomic_helper_commit() code so we don't need to disable the in these two places. Signed-off-by: Gustavo Padovan --- drivers/gpu/drm/exynos/exynos_drm_crtc.c| 11 --- drivers/gpu/drm/exynos/exynos_drm_encoder.c | 8 2 files changed, 19 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index 519c569..9bf25ff 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c @@ -47,8 +47,6 @@ static void exynos_drm_crtc_enable(struct drm_crtc *crtc) static void exynos_drm_crtc_disable(struct drm_crtc *crtc) { struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); - struct drm_plane *plane; - int ret; if (!exynos_crtc->enabled) return; @@ -64,15 +62,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc) exynos_crtc->ops->dpms(exynos_crtc, DRM_MODE_DPMS_OFF); exynos_crtc->enabled = false; - - drm_for_each_legacy_plane(plane, >dev->mode_config.plane_list) { - if (plane->crtc != crtc) - continue; - - ret = plane->funcs->disable_plane(plane); - if (ret) - DRM_ERROR("Failed to disable plane %d\n", ret); - } } static bool diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c b/drivers/gpu/drm/exynos/exynos_drm_encoder.c index 0648ba4..7b89fd5 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c +++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c @@ -81,17 +81,9 @@ static void exynos_drm_encoder_disable(struct drm_encoder *encoder) { struct exynos_drm_encoder *exynos_encoder = to_exynos_encoder(encoder); struct exynos_drm_display *display = exynos_encoder->display; - struct drm_plane *plane; - struct drm_device *dev = encoder->dev; if (display->ops->dpms) display->ops->dpms(display, DRM_MODE_DPMS_OFF); - - /* all planes connected to this encoder should be also disabled. */ - drm_for_each_legacy_plane(plane, >mode_config.plane_list) { - if (plane->crtc && (plane->crtc == encoder->crtc)) - plane->funcs->disable_plane(plane); - } } static struct drm_encoder_helper_funcs exynos_encoder_helper_funcs = { -- 2.1.0