Skip to contentSkip to conversation

imxfb: fast read flag and nonstandard field configurable

PATCH In review Antonino A. Daplas 1 participant 1 message Sep 29, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 17/17 imxfb: fast read flag and nonstandard field configurable

From: Pavel Pisa <[email protected]>

The i.MX frame-buffer read operation should be faster for all configurations then drawing each individual character again in response to scroll events.

The nonstandard fields allows to configure frame-buffer special options flags for different display configurations by board specific initialization code.

One of such specific options is reversed order of pixels in each individual byte. i.MX frame-buffer seems to be designed for big-endian use first. The byte order is correctly configured for little-endian ordering, but if 1, 2 or 4 bits per pixel are used, pixels ordering is incompatible to Linux generic frame-buffer drawing functions.

The patch "Allow generic BitBLT functions to work with swapped pixel order in bytes" introduces required functionality into FBDEV core. The pixels ordering selection has to be enabled at compile time CONFIG_FB_CFB_REV_PIXELS_IN_BYTE and for each display configuration which requires it by flag FB_NONSTD_REV_PIX_IN_B in "nonstd" field of info structure.

This patch provides way for board specific code to select this option.

---

 drivers/video/imxfb.c            |    3 ++-
 include/asm-arm/arch-imx/imxfb.h |    1 +
 2 files changed, 3 insertions(+), 1 deletions(-)
drivers/video/imxfb.c +2 -1
index 986ffa6..1160955 100644
@@ -466,7 +466,7 @@ static int __init imxfb_init_fbinfo(stru
 	info->var.vmode	= FB_VMODE_NONINTERLACED;
 
 	info->fbops			= &imxfb_ops;
-	info->flags			= FBINFO_FLAG_DEFAULT;
+	info->flags			= FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST;
 
 	fbi->rgb[RGB_16]		= &def_rgb_16;
 	fbi->rgb[RGB_8]			= &def_rgb_8;
@@ -479,6 +479,7 @@ static int __init imxfb_init_fbinfo(stru
 	info->var.yres_virtual		= inf->yres;
 	fbi->max_bpp			= inf->bpp;
 	info->var.bits_per_pixel	= inf->bpp;
+	info->var.nonstd		= inf->nonstd;
 	info->var.pixclock		= inf->pixclock;
 	info->var.hsync_len		= inf->hsync_len;
 	info->var.left_margin		= inf->left_margin;
include/asm-arm/arch-imx/imxfb.h +1 -0
index 7dbc7bb..3ed9ec8 100644
@@ -7,6 +7,7 @@ struct imxfb_mach_info {
 	u_short		xres;
 	u_short		yres;
 
+	u_int		nonstd;
 	u_char		bpp;
 	u_char		hsync_len;
 	u_char		left_margin;

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/