Files
linux/drivers/video
Mikulas Patocka dd154e74b0 tgafb: fix mode setting with fbset
commit 6249665890 upstream.

Mode setting in the TGA driver is broken for these reasons:

- info->fix.line_length is set just once in tgafb_init_fix function. If
  we change videomode, info->fix.line_length is not recalculated - so
  the video mode is changed but the screen is corrupted because of wrong
  info->fix.line_length.

- info->fix.smem_len is set in tgafb_init_fix to the size of the default
  video mode (640x480). If we set a higher resolution,
  info->fix.smem_len is smaller than the current screen size, preventing
  the userspace program from mapping the framebuffer.

This patch fixes it:

- info->fix.line_length initialization is moved to tgafb_set_par so that
  it is recalculated with each mode change.

- info->fix.smem_len is set to a fixed value representing the real
  amount of video ram (the values are taken from xfree86 driver).

- add a check to tgafb_check_var to prevent us from setting a videomode
  that doesn't fit into videoram.

- in tgafb_register, tgafb_init_fix is moved upwards, to be called
  before fb_find_mode (because fb_find_mode already needs the videoram
  size set in tgafb_init_fix).

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-05-30 21:52:12 -07:00
..
2013-02-22 23:31:31 -05:00
2014-05-13 13:59:42 +02:00
2013-04-18 13:03:53 +10:00
2013-02-22 23:31:31 -05:00
2013-04-24 08:41:41 +03:00
2013-04-26 08:28:56 +03:00
2013-03-20 16:26:32 +01:00
2013-04-12 14:01:40 +10:00
2013-11-20 12:27:47 -08:00
2013-05-02 14:59:21 +03:00
2013-04-12 15:21:36 +02:00
2013-04-24 08:41:42 +03:00
2013-04-26 08:28:56 +03:00
2013-04-12 15:21:36 +02:00
2014-05-30 21:52:12 -07:00
2013-04-26 08:28:56 +03:00
2013-04-26 08:28:56 +03:00