[PATCH] fbv: support bgr555 format

Signed-off-by: Josh.Wu <josh.wu@atmel.com>
diff -Naur fbv-1.0b-ori/fb_display.c fbv-1.0b/fb_display.c
--- fbv-1.0b-ori/fb_display.c	2010-04-02 09:38:15.000000000 +0800
+++ fbv-1.0b/fb_display.c	2010-04-01 18:54:15.000000000 +0800
@@ -297,6 +297,14 @@
 	 ((b >> 3) & 31)        );
 }
 
+inline static unsigned short make15color_bgr(unsigned char r, unsigned char g, unsigned char b)
+{
+    return (
+	(((b >> 3) & 31) << 10) |
+	(((g >> 3) & 31) << 5)  |
+	 ((r >> 3) & 31)        );
+}
+
 inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b)
 {
     return (
@@ -313,6 +321,14 @@
     u_int16_t *s_fbbuff;
     u_int32_t *i_fbbuff;
 
+    int is_bgr555 = 0;
+    struct fb_var_screeninfo var;
+    getVarScreenInfo(fh, &var);
+    if(var.red.offset == 0 && 
+       var.green.offset == 5 && 
+       var.blue.offset == 10)
+	is_bgr555 = 1;
+
     switch(bpp)
     {
 	case 8:
@@ -325,15 +341,23 @@
 	case 15:
 	    *cpp = 2;
 	    s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));
-	    for(i = 0; i < count ; i++)
-		s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
+	    if(is_bgr555)
+	    	for(i = 0; i < count ; i++)
+		    s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
+	    else
+	    	for(i = 0; i < count ; i++)
+		    s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
 	    fbbuff = (void *) s_fbbuff;
 	    break;
 	case 16:
 	    *cpp = 2;
 	    s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));
-	    for(i = 0; i < count ; i++)
-		s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
+	    if(is_bgr555)
+	    	for(i = 0; i < count ; i++)
+		    s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
+	    else
+	    	for(i = 0; i < count ; i++)
+		    s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
 	    fbbuff = (void *) s_fbbuff;
 	    break;
 	case 24:
