Re: [PATCH v2] drm: get fbdev size from cmdline mode if it exists

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 10, 2017 at 12:21:09PM +0100, Vincent Abriou wrote:
> In case no connector is found while creating the fbdev, gives the
> possibility to specify the default fbdev size by firstly checking if the
> command line is defining a preferred mode. Else go into fallback and set
> 1024x768 fbdev size as it was already done.
> 
> Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx>
> Signed-off-by: Vincent Abriou <vincent.abriou@xxxxxx>

btw on all this there's also the possible solution to delay setup of the
fbdev until the first connector switches to connected, and then only
allocting the fb and doing the setup. Tegra has that, and Thierry did some
patches to move that logic into the fb helpers. But there's some locking
issues that need to be fixed first, hence why those patches haven't landed
yet.

But if you never probe the right mode, this here sounds like a good idea
too.
-Daniel
> ---
> Patch v2:
>  add a break in the connector for loop when a first cmdline mode is found
> 
>  drivers/gpu/drm/drm_fb_helper.c | 34 +++++++++++++++++++++++++++++-----
>  1 file changed, 29 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 0ab6aaa..b38285f 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -1526,6 +1526,7 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
>  	}
>  
>  	crtc_count = 0;
> +
>  	for (i = 0; i < fb_helper->crtc_count; i++) {
>  		struct drm_display_mode *desired_mode;
>  		struct drm_mode_set *mode_set;
> @@ -1570,11 +1571,34 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
>  	}
>  
>  	if (crtc_count == 0 || sizes.fb_width == -1 || sizes.fb_height == -1) {
> -		/* hmm everyone went away - assume VGA cable just fell out
> -		   and will come back later. */
> -		DRM_INFO("Cannot find any crtc or sizes - going 1024x768\n");
> -		sizes.fb_width = sizes.surface_width = 1024;
> -		sizes.fb_height = sizes.surface_height = 768;
> +		struct drm_display_mode *mode = NULL;
> +		/* hmm everyone went away - assume cable just fell out and will
> +		 * come back later.
> +		 * Get fb size from command line mode (if existing) else fb size
> +		 * is set to 1024x768
> +		 */
> +		for (i = 0; i < fb_helper->connector_count; i++) {
> +			struct drm_fb_helper_connector *fb_helper_conn;
> +
> +			fb_helper_conn = fb_helper->connector_info[i];
> +			mode = drm_pick_cmdline_mode(fb_helper_conn);
> +			if (mode)
> +				break;
> +		}
> +
> +		if (mode) {
> +			sizes.fb_width = mode->hdisplay;
> +			sizes.fb_height = mode->vdisplay;
> +			DRM_INFO("Cannot find any crtc or sizes - use cmdline %dx%d\n",
> +				 sizes.fb_width, sizes.fb_height);
> +		} else {
> +			sizes.fb_width = 1024;
> +			sizes.fb_height = 768;
> +			DRM_INFO("Cannot find any crtc or sizes - going 1024x768\n");
> +		}
> +
> +		sizes.surface_width = sizes.fb_width;
> +		sizes.surface_height = sizes.fb_height;
>  	}
>  
>  	/* push down into drivers */
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux