Changeset 1754
- Timestamp:
- 04/14/07 08:31:23 (6 years ago)
- Location:
- trunk/src/target/kernel/patches
- Files:
-
- 2 edited
-
s3c2410_fb-truecolor.patch (modified) (2 diffs)
-
series (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/target/kernel/patches/s3c2410_fb-truecolor.patch
r1558 r1754 1 Index: linux-2.6.20.4/drivers/video/s3c2410fb.c 1 Patch to enable 24bit truecolor support (32bit per pixel) support to 2 s3c2410fb.c 3 Index: linux-2.6.20.4-moko/arch/arm/mach-s3c2410/mach-gta01.c 2 4 =================================================================== 3 --- linux-2.6.20.4 .orig/drivers/video/s3c2410fb.c 2007-03-28 23:12:49.000000000 +02004 +++ linux-2.6.20.4 /drivers/video/s3c2410fb.c 2007-03-29 22:22:40.000000000 +02005 @@ - 104,7 +104,7 @@5 --- linux-2.6.20.4-moko.orig/arch/arm/mach-s3c2410/mach-gta01.c 2007-04-08 14:01:47.000000000 +0200 6 +++ linux-2.6.20.4-moko/arch/arm/mach-s3c2410/mach-gta01.c 2007-04-08 14:02:09.000000000 +0200 7 @@ -321,7 +321,7 @@ 6 8 7 8 static struct s3c2410fb_mach_info *mach_info; 9 - 10 +#define CONFIG_FB_S3C2410_DEBUG 11 /* Debugging stuff */ 12 #ifdef CONFIG_FB_S3C2410_DEBUG 13 static int debug = 1; 14 @@ -315,8 +315,13 @@ 9 .bpp = { 10 .min = 1, 11 - .max = 16, 12 + .max = 32, 13 .defval = 16, 14 }, 15 }; 16 Index: linux-2.6.20.4-moko/drivers/video/s3c2410fb.c 17 =================================================================== 18 --- linux-2.6.20.4-moko.orig/drivers/video/s3c2410fb.c 2007-04-08 12:59:39.000000000 +0200 19 +++ linux-2.6.20.4-moko/drivers/video/s3c2410fb.c 2007-04-08 14:02:09.000000000 +0200 20 @@ -263,6 +263,7 @@ 21 } 22 break; 23 case 24: 24 + case 32: 25 /* 24 bpp 888 */ 26 var->red.length = 8; 27 var->red.offset = 16; 28 @@ -315,6 +316,12 @@ 15 29 break; 16 30 case 16: … … 23 37 + fbi->regs.lcdcon5 &= ~S3C2410_LCDCON5_HWSWP; 24 38 break; 25 - 39 26 40 default: 27 /* invalid pixel depth */ 28 dev_err(fbi->dev, "invalid bpp %d\n", var->bits_per_pixel); 29 @@ -451,6 +456,8 @@ 41 @@ -450,6 +457,8 @@ 42 30 43 switch (var->bits_per_pixel) 31 44 { 45 + case 32: 46 + case 24: 32 47 case 16: 33 + case 24:34 + case 32:35 48 fbi->fb->fix.visual = FB_VISUAL_TRUECOLOR; 36 49 break; 37 case 1: 38 @@ -514,11 +521,21 @@ 39 50 @@ -515,9 +524,17 @@ 40 51 if (regno < 16) { 41 52 u32 *pal = fbi->fb->pseudo_palette; 42 - 43 +#if 1 53 44 54 + switch (info->var.bits_per_pixel) { 45 55 + case 16: 46 + val = (red & 0xf800) | ((green & 0xfc00) >> 5) | ((blue ^ 0xf800) >> 11);47 + break;48 + case 32:49 + red >>= 8; green >>= 8; blue >>= 8; transp >>= 8;50 + val = (transp << 24) | (red << 16) | (green << 8) | blue;51 + break;52 + }53 +#else54 56 val = chan_to_field(red, &fbi->fb->var.red); 55 57 val |= chan_to_field(green, &fbi->fb->var.green); 56 58 val |= chan_to_field(blue, &fbi->fb->var.blue); 57 - 58 +#endif 59 + break; 60 + case 32: 61 + red >>= 8; green >>= 8; blue >>= 8; transp >>= 8; 62 + val = (transp << 24) | (red << 16) | (green << 8) | blue; 63 + break; 64 + } 65 59 66 pal[regno] = val; 60 67 } 61 break;62 @@ -710,9 +727,15 @@63 /* ensure temporary palette disabled */64 writel(0x00, S3C2410_TPAL);65 66 + /* johnny */67 + mdelay(500);68 /* Enable video by setting the ENVID bit to 1 */69 fbi->regs.lcdcon1 |= S3C2410_LCDCON1_ENVID;70 writel(fbi->regs.lcdcon1, S3C2410_LCDCON1);71 +72 + mdelay(500);73 + fbi->regs.lcdcon5 |= S3C2410_LCDCON5_PWREN;74 + writel(fbi->regs.lcdcon5, S3C2410_LCDCON5);75 return 0;76 }77 78 @@ -839,7 +862,31 @@79 fbinfo->var.left_margin = S3C2410_LCDCON3_GET_HFPD(mregs->lcdcon3) + 1;80 fbinfo->var.right_margin = S3C2410_LCDCON3_GET_HBPD(mregs->lcdcon3) + 1;81 fbinfo->var.hsync_len = S3C2410_LCDCON4_GET_HSPW(mregs->lcdcon4) + 1;82 -83 +// johnny84 + switch (fbinfo->var.bits_per_pixel)85 + {86 + case 16:87 + fbinfo->var.red.offset = 11;88 + fbinfo->var.red.length = 5;89 + fbinfo->var.green.offset = 5;90 + fbinfo->var.green.length = 6;91 + fbinfo->var.blue.offset = 0;92 + fbinfo->var.blue.length = 5;93 + fbinfo->var.transp.offset = 0;94 + fbinfo->var.transp.length = 0;95 + break;96 + case 32:97 + fbinfo->var.red.offset = 16;98 + fbinfo->var.red.length = 8;99 + fbinfo->var.green.offset = 8;100 + fbinfo->var.green.length = 8;101 + fbinfo->var.blue.offset = 0;102 + fbinfo->var.blue.length = 8;103 + fbinfo->var.transp.offset = 24;104 + fbinfo->var.transp.length = 8;105 + break;106 + }107 +#if 0108 fbinfo->var.red.offset = 11;109 fbinfo->var.green.offset = 5;110 fbinfo->var.blue.offset = 0;111 @@ -848,10 +895,11 @@112 fbinfo->var.green.length = 6;113 fbinfo->var.blue.length = 5;114 fbinfo->var.transp.length = 0;115 +#endif116 fbinfo->fix.smem_len = mach_info->xres.max *117 mach_info->yres.max *118 mach_info->bpp.max / 8;119 -120 + dprintk("fix.smem_len=%d\n",fbinfo->fix.smem_len);121 for (i = 0; i < 256; i++)122 info->palette_buffer[i] = PALETTE_BUFF_CLEAR;123 124 @@ -934,6 +982,11 @@125 126 local_irq_save(flags);127 128 + /* johnny */129 + fbi->regs.lcdcon5 &= ~S3C2410_LCDCON5_PWREN;130 + writel(fbi->regs.lcdcon5, S3C2410_LCDCON5);131 +132 + mdelay(2000);133 fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID;134 writel(fbi->regs.lcdcon1, S3C2410_LCDCON1);135 136 @@ -997,8 +1050,6 @@137 clk_enable(info->clk);138 msleep(1);139 140 - s3c2410fb_init_registers(info);141 -142 return 0;143 }144 -
trunk/src/target/kernel/patches/series
r1558 r1754 39 39 config-nr-tty-devices.patch 40 40 hxd8-core.patch 41 #s3c2410_fb-truecolor.patch41 s3c2410_fb-truecolor.patch
Note: See TracChangeset
for help on using the changeset viewer.
