ixp4xx: remove linux 3.10 support
[openwrt.git] / target / linux / brcm2708 / patches-3.10 / 0167-bcm2708fb-Allow-swapping-of-red-blue-in-24-32-modes.patch
1 From 4072d89852bcc0d69eab31908b0ea7870c6b9e1e Mon Sep 17 00:00:00 2001
2 From: popcornmix <popcornmix@gmail.com>
3 Date: Wed, 12 Feb 2014 12:01:56 +0000
4 Subject: [PATCH 167/196] bcm2708fb: Allow swapping of red/blue in 24/32 modes
5
6 ---
7  drivers/video/bcm2708_fb.c | 14 +++++++++++---
8  1 file changed, 11 insertions(+), 3 deletions(-)
9
10 diff --git a/drivers/video/bcm2708_fb.c b/drivers/video/bcm2708_fb.c
11 index e8bbcc3..86f07fd 100644
12 --- a/drivers/video/bcm2708_fb.c
13 +++ b/drivers/video/bcm2708_fb.c
14 @@ -53,6 +53,7 @@ static u32 dma_busy_wait_threshold = 1<<15;
15  module_param(dma_busy_wait_threshold, int, 0644);
16  MODULE_PARM_DESC(dma_busy_wait_threshold, "Busy-wait for DMA completion below this area");
17  
18 +static int fbswap = 0;     /* module parameter */
19  
20  /* this data structure describes each frame buffer device we find */
21  
22 @@ -185,7 +186,12 @@ static int bcm2708_fb_set_bitfields(struct fb_var_screeninfo *var)
23          * encoded in the pixel data.  Calculate their position from
24          * the bitfield length defined above.
25          */
26 -       if (ret == 0 && var->bits_per_pixel >= 24) {
27 +       if (ret == 0 && var->bits_per_pixel >= 24 && fbswap) {
28 +               var->blue.offset = 0;
29 +               var->green.offset = var->blue.offset + var->blue.length;
30 +               var->red.offset = var->green.offset + var->green.length;
31 +               var->transp.offset = var->red.offset + var->red.length;
32 +       } else if (ret == 0 && var->bits_per_pixel >= 24) {
33                 var->red.offset = 0;
34                 var->green.offset = var->red.offset + var->red.length;
35                 var->blue.offset = var->green.offset + var->green.length;
36 @@ -618,8 +624,8 @@ static int bcm2708_fb_register(struct bcm2708_fb *fb)
37  
38         fb_set_var(&fb->fb, &fb->fb.var);
39  
40 -       print_debug("BCM2708FB: registering framebuffer (%dx%d@%d)\n", fbwidth,
41 -               fbheight, fbdepth);
42 +       print_debug("BCM2708FB: registering framebuffer (%dx%d@%d) (%d)\n", fbwidth
43 +               fbheight, fbdepth, fbswap);
44  
45         ret = register_framebuffer(&fb->fb);
46         print_debug("BCM2708FB: register framebuffer (%d)\n", ret);
47 @@ -746,6 +752,7 @@ module_exit(bcm2708_fb_exit);
48  module_param(fbwidth, int, 0644);
49  module_param(fbheight, int, 0644);
50  module_param(fbdepth, int, 0644);
51 +module_param(fbswap, int, 0644);
52  
53  MODULE_DESCRIPTION("BCM2708 framebuffer driver");
54  MODULE_LICENSE("GPL");
55 @@ -753,3 +760,4 @@ MODULE_LICENSE("GPL");
56  MODULE_PARM_DESC(fbwidth, "Width of ARM Framebuffer");
57  MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer");
58  MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer");
59 +MODULE_PARM_DESC(fbswap, "Swap order of red and blue in 24 and 32 bit modes");
60 -- 
61 1.9.1
62