r3058 - branches/src/target/kernel/2.6.23.x/patches
shoragan at sita.openmoko.org
shoragan at sita.openmoko.org
Sat Sep 29 15:29:16 CEST 2007
Author: shoragan
Date: 2007-09-29 15:29:16 +0200 (Sat, 29 Sep 2007)
New Revision: 3058
Added:
branches/src/target/kernel/2.6.23.x/patches/fix-s3c2410fb-register-access.patch
Modified:
branches/src/target/kernel/2.6.23.x/patches/series
Log:
Fix access to the framebuffer registers.
Some have (but not all) been fixed by Ben Dooks in
http://www.fluff.org/ben/linux-26/2623/2623-rc1-move-fixup-lcd.patch
Added: branches/src/target/kernel/2.6.23.x/patches/fix-s3c2410fb-register-access.patch
===================================================================
--- branches/src/target/kernel/2.6.23.x/patches/fix-s3c2410fb-register-access.patch 2007-09-28 22:33:13 UTC (rev 3057)
+++ branches/src/target/kernel/2.6.23.x/patches/fix-s3c2410fb-register-access.patch 2007-09-29 13:29:16 UTC (rev 3058)
@@ -0,0 +1,85 @@
+Index: linux-2.6.22/drivers/video/s3c2410fb.c
+===================================================================
+--- linux-2.6.22.orig/drivers/video/s3c2410fb.c
++++ linux-2.6.22/drivers/video/s3c2410fb.c
+@@ -123,6 +123,7 @@
+
+ static void s3c2410fb_set_lcdaddr(struct s3c2410fb_info *fbi)
+ {
++ void __iomem *regs = fbi->io;
+ struct fb_var_screeninfo *var = &fbi->fb->var;
+ unsigned long saddr1, saddr2, saddr3;
+
+@@ -137,9 +138,9 @@
+ dprintk("LCDSADDR2 = 0x%08lx\n", saddr2);
+ dprintk("LCDSADDR3 = 0x%08lx\n", saddr3);
+
+- writel(saddr1, S3C2410_LCDSADDR1);
+- writel(saddr2, S3C2410_LCDSADDR2);
+- writel(saddr3, S3C2410_LCDSADDR3);
++ writel(saddr1, regs + S3C2410_LCDSADDR1);
++ writel(saddr2, regs + S3C2410_LCDSADDR2);
++ writel(saddr3, regs + S3C2410_LCDSADDR3);
+ }
+
+ /* s3c2410fb_calc_pixclk()
+@@ -289,6 +290,7 @@
+ static void s3c2410fb_activate_var(struct s3c2410fb_info *fbi,
+ struct fb_var_screeninfo *var)
+ {
++ void __iomem *regs = fbi->io;
+ int hs;
+
+ fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_MODEMASK;
+@@ -432,16 +434,16 @@
+ dprintk("lcdcon[4] = 0x%08lx\n", fbi->regs.lcdcon4);
+ dprintk("lcdcon[5] = 0x%08lx\n", fbi->regs.lcdcon5);
+
+- writel(fbi->regs.lcdcon1 & ~S3C2410_LCDCON1_ENVID, S3C2410_LCDCON1);
+- writel(fbi->regs.lcdcon2, S3C2410_LCDCON2);
+- writel(fbi->regs.lcdcon3, S3C2410_LCDCON3);
+- writel(fbi->regs.lcdcon4, S3C2410_LCDCON4);
+- writel(fbi->regs.lcdcon5, S3C2410_LCDCON5);
++ writel(fbi->regs.lcdcon1 & ~S3C2410_LCDCON1_ENVID, regs + S3C2410_LCDCON1);
++ writel(fbi->regs.lcdcon2, regs + S3C2410_LCDCON2);
++ writel(fbi->regs.lcdcon3, regs + S3C2410_LCDCON3);
++ writel(fbi->regs.lcdcon4, regs + S3C2410_LCDCON4);
++ writel(fbi->regs.lcdcon5, regs + S3C2410_LCDCON5);
+
+ /* set lcd address pointers */
+ s3c2410fb_set_lcdaddr(fbi);
+
+- writel(fbi->regs.lcdcon1, S3C2410_LCDCON1);
++ writel(fbi->regs.lcdcon1, regs + S3C2410_LCDCON1);
+ }
+
+
+@@ -549,7 +551,7 @@
+ val |= ((green >> 5) & 0x07e0);
+ val |= ((blue >> 11) & 0x001f);
+
+- writel(val, S3C2410_TFTPAL(regno));
++ writel(val, fbi->io + S3C2410_TFTPAL(regno));
+ schedule_palette_update(fbi, regno, val);
+ }
+
+@@ -581,16 +583,17 @@
+ */
+ static int s3c2410fb_blank(int blank_mode, struct fb_info *info)
+ {
++ struct s3c2410fb_info *fbi = info->par;
+ dprintk("blank(mode=%d, info=%p)\n", blank_mode, info);
+
+ if (mach_info == NULL)
+ return -EINVAL;
+
+ if (blank_mode == FB_BLANK_UNBLANK)
+- writel(0x0, S3C2410_TPAL);
++ writel(0x0, fbi->io + S3C2410_TPAL);
+ else {
+ dprintk("setting TPAL to output 0x000000\n");
+- writel(S3C2410_TPAL_EN, S3C2410_TPAL);
++ writel(S3C2410_TPAL_EN, fbi->io + S3C2410_TPAL);
+ }
+
+ return 0;
Modified: branches/src/target/kernel/2.6.23.x/patches/series
===================================================================
--- branches/src/target/kernel/2.6.23.x/patches/series 2007-09-28 22:33:13 UTC (rev 3057)
+++ branches/src/target/kernel/2.6.23.x/patches/series 2007-09-29 13:29:16 UTC (rev 3058)
@@ -45,3 +45,4 @@
s3c2410-udc-include-fix.patch
neo1973-soc-include-fix.patch
explicitly-link-notes-section.patch
+fix-s3c2410fb-register-access.patch
More information about the commitlog
mailing list