Maximum framebuffer width on OMAP5+ DSS is 4096, instead of 2048. This patch makes omapdrm ask the respective dispc for the limits. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> --- drivers/gpu/drm/omapdrm/dss/dispc.c | 9 +++++++++ drivers/gpu/drm/omapdrm/dss/omapdss.h | 1 + drivers/gpu/drm/omapdrm/omap_drv.c | 11 +++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c index 9034b97240db..1db64edbbbfd 100644 --- a/drivers/gpu/drm/omapdrm/dss/dispc.c +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c @@ -4148,6 +4148,14 @@ static void dispc_free_irq(void *dev_id) dispc.user_data = NULL; } +static void dispc_get_min_max_size(u32 *min_w, u32 *min_h, u32 *max_w, u32 *max_h) +{ + *min_w = 8; + *min_h = 2; + *max_w = dispc.feat->mgr_width_max; + *max_h = dispc.feat->mgr_height_max; +} + /* * Workaround for errata i734 in DSS dispc * - LCD1 Gamma Correction Is Not Working When GFX Pipe Is Disabled @@ -4321,6 +4329,7 @@ static const struct dispc_ops dispc_ops = { .get_num_ovls = dispc_get_num_ovls, .get_num_mgrs = dispc_get_num_mgrs, + .get_min_max_size = dispc_get_min_max_size, .mgr_enable = dispc_mgr_enable, .mgr_is_enabled = dispc_mgr_is_enabled, diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h index 74cba1ef7ee9..8d04b02a7d35 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h @@ -906,6 +906,7 @@ struct dispc_ops { int (*get_num_ovls)(void); int (*get_num_mgrs)(void); + void (*get_min_max_size)(u32 *min_w, u32 *min_h, u32 *max_w, u32 *max_h); void (*mgr_enable)(enum omap_channel channel, bool enable); bool (*mgr_is_enabled)(enum omap_channel channel); diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c index eecf8649c0f7..f53343c24335 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.c +++ b/drivers/gpu/drm/omapdrm/omap_drv.c @@ -315,6 +315,7 @@ static int omap_modeset_init(struct drm_device *dev) int num_crtcs; int i, id = 0; int ret; + u32 min_w, min_h, max_w, max_h; drm_mode_config_init(dev); @@ -475,14 +476,16 @@ static int omap_modeset_init(struct drm_device *dev) priv->num_planes, priv->num_crtcs, priv->num_encoders, priv->num_connectors); - dev->mode_config.min_width = 8; - dev->mode_config.min_height = 2; + priv->dispc_ops->get_min_max_size(&min_w, &min_h, &max_w, &max_h); + + dev->mode_config.min_width = min_w; + dev->mode_config.min_height = min_h; /* note: eventually will need some cpu_is_omapXYZ() type stuff here * to fill in these limits properly on different OMAP generations.. */ - dev->mode_config.max_width = 2048; - dev->mode_config.max_height = 2048; + dev->mode_config.max_width = max_w; + dev->mode_config.max_height = max_h; dev->mode_config.funcs = &omap_mode_config_funcs; -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel