[Intel-gfx] [PATCH] drm: Fix for invalid pruning of modes in dual display cases

Jani Nikula jani.nikula at linux.intel.com
Tue Dec 13 10:28:59 UTC 2016


On Tue, 13 Dec 2016, Vidya Srinivas <vidya.srinivas at intel.com> wrote:
> Currently in dual display connected boot scenarios, minimum of the resolutions
> is taken for fb width and height as reference. Based on this resolution, other
> modes are pruned.
>
> Example Scenario: If DSI mode is 2560x1440 and HDMI is 1920x1080, during the probing
> the fb width and height is set to max 1920x1080 and the DSI mode gets pruned as it is
> more than the reference. As a result, there is no DSI display.
> Patch fixes this issue by taking the max of the resolutions and creating the fb
> based on the same.
>
> Signed-off-by: Vidya Srinivas <vidya.srinivas at intel.com>
> Signed-off-by: Uma Shankar <uma.shankar at intel.com>
> ---
>  drivers/gpu/drm/drm_fb_helper.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index e934b54..6afc06f 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -1482,8 +1482,8 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
>  	memset(&sizes, 0, sizeof(struct drm_fb_helper_surface_size));
>  	sizes.surface_depth = 24;
>  	sizes.surface_bpp = 32;
> -	sizes.fb_width = (unsigned)-1;
> -	sizes.fb_height = (unsigned)-1;
> +	sizes.fb_width = 0;
> +	sizes.fb_height = 0;
>  
>  	/* if driver picks 8 or 16 by default use that
>  	   for both depth/bpp */
> @@ -1560,9 +1560,9 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
>  		}
>  
>  		if (lasth)
> -			sizes.fb_width  = min_t(u32, desired_mode->hdisplay + x, sizes.fb_width);
> +			sizes.fb_width  = max_t(u32, desired_mode->hdisplay + x, sizes.fb_width);
>  		if (lastv)
> -			sizes.fb_height = min_t(u32, desired_mode->vdisplay + y, sizes.fb_height);
> +			sizes.fb_height = max_t(u32, desired_mode->vdisplay + y, sizes.fb_height);
>  	}
>  
>  	if (crtc_count == 0 || sizes.fb_width == -1 || sizes.fb_height == -1) {

Not commenting on the main change itself, but just as a reminder, these
checks will need updating too.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Technology Center


More information about the dri-devel mailing list