Add an exception case when filtering out display mode so that if a virtual wide plane is available then display wider than 2048 can be supported as long as the required timing parameters can also be met. Signed-off-by: Benoit Parrot <bparrot@xxxxxx> --- drivers/gpu/drm/omapdrm/omap_connector.c | 3 ++- drivers/gpu/drm/omapdrm/omap_plane.c | 12 ++++++++++++ drivers/gpu/drm/omapdrm/omap_plane.h | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c index d5e059abb555..517f7fa80ce1 100644 --- a/drivers/gpu/drm/omapdrm/omap_connector.c +++ b/drivers/gpu/drm/omapdrm/omap_connector.c @@ -203,7 +203,8 @@ static int omap_connector_mode_valid(struct drm_connector *connector, u16 width, height; priv->dispc_ops->ovl_get_max_size(&width, &height); - if (mode->hdisplay > width) + if (mode->hdisplay > width && + !omap_have_any_virtual_plane(dev)) r = -EINVAL; } diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c index 21c927bbf5a7..8529abdcdeb8 100644 --- a/drivers/gpu/drm/omapdrm/omap_plane.c +++ b/drivers/gpu/drm/omapdrm/omap_plane.c @@ -209,6 +209,18 @@ bool is_omap_plane_virtual(struct drm_plane *plane) return omap_plane->virtual_plane; } +bool omap_have_any_virtual_plane(struct drm_device *dev) +{ + struct drm_plane *plane; + + drm_for_each_plane(plane, dev) { + if (is_omap_plane_virtual(plane)) + return true; + } + + return false; +} + /* helper to install properties which are common to planes and crtcs */ void omap_plane_install_properties(struct drm_plane *plane, struct drm_mode_object *obj) diff --git a/drivers/gpu/drm/omapdrm/omap_plane.h b/drivers/gpu/drm/omapdrm/omap_plane.h index 48815a05f4fe..86b1c2022231 100644 --- a/drivers/gpu/drm/omapdrm/omap_plane.h +++ b/drivers/gpu/drm/omapdrm/omap_plane.h @@ -35,5 +35,6 @@ struct drm_plane *omap_plane_init(struct drm_device *dev, void omap_plane_install_properties(struct drm_plane *plane, struct drm_mode_object *obj); bool is_omap_plane_virtual(struct drm_plane *plane); +bool omap_have_any_virtual_plane(struct drm_device *dev); #endif /* __OMAPDRM_PLANE_H__ */ -- 2.9.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel