[PATCH 4/6] libweston: fbdev: set fb device info upon the first run.

nerdopolis bluescreen_avenger at verizon.net
Tue Oct 3 03:14:26 UTC 2017


On Tuesday, September 26, 2017 9:45:43 AM EDT Pekka Paalanen wrote:
> On Thu, 14 Sep 2017 23:08:51 -0400
> nerdopolis <bluescreen_avenger at verizon.net> wrote:
> 
> > On Wednesday, September 6, 2017 8:17:21 AM EDT nerdopolis wrote:
> > > This attempts to wake up secondary framebuffer devices
> > > (/dev/fb1 and up) as usually these devices start powered off, and
> > > the FBIOPUT_VSCREENINFO ioctl turns it on. This was tested on a
> > > qemu system with the options:
> > > 
> > > -vga none -device VGA,id=video0 -device secondary-vga,id=video1 \
> > > -device secondary-vga,id=video2
> > > ---
> > >  libweston/compositor-fbdev.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > > 
> > > diff --git a/libweston/compositor-fbdev.c b/libweston/compositor-fbdev.c
> > > index b4f0685c..a9cc08be 100644
> > > --- a/libweston/compositor-fbdev.c
> > > +++ b/libweston/compositor-fbdev.c
> > > @@ -356,6 +356,13 @@ fbdev_frame_buffer_open(struct fbdev_output *output, const char *fb_dev,
> > >  		return -1;
> > >  	}
> > >  
> > > +	/* Attempt to correct the framebuffer settings */
> > > +	if (fbdev_set_screen_info(output, fd,
> > > +	                          &output->fb_info) < 0) {
> > > +		weston_log("Failed to set mode settings. "
> > > +		           "Attempting to open output anyway.\n");
> > > +	}
> > > +
> > >  	/* Grab the screen info. */
> > >  	if (fbdev_query_screen_info(output, fd, screen_info) < 0) {
> > >  		weston_log("Failed to get frame buffer info: %s\n",
> > >   
> > Hi
> > 
> > Nix this one, I tried it on a UDL (USB display link device) framebuffer, and it
> > changes the resolution/vsync that my screen cannot handle, and I'll need to 
> > figure out why it does that (as UDL (the framebuffer only one) starts off) with
> > the screen all green...
> > 
> > ...It worked for QEMU, but not for real hardware
> > 
> > Sorry about this...
> > ...I'll try to see what I can come up with, and why it does that....
> 
> Hi,
> 
> yeah, we definitely do not want to set_screen_info before first
> query_screen_info. If there is something valid set already, we want to
> keep it. If there is not, then how do you know what to set?
> 
> What screen info values do you think this patch is setting? All
> zeroes? ;-)
> 
Thanks for all the reviews!

This was an attempt to use the fact that set_screen_info sends the 
FBIOPUT_VSCREENINFO ioctl, which turns on the screen (if it's a /dev/fb1 as 
those usually are off upon boot. At least with the DisplayLink devices, and 
secondary-vga devices I've tested on)

I seem to have fixed this, It works on my QEMU configuration I mentioned,
it does not throw my screen out of wack on real hardware, but I think there is 
a bug with UDL (displaylink) or something where Plymouth starts, and freezes 
the display, and prevents the framebuffer from displaying (even when I cat 
/dev/urandom
into /dev/fb1 as a test...

This is with the udl driver (not udlfb), ...and this might be out of the
concern of Weston.
> 
> Thanks,
> pq




More information about the wayland-devel mailing list