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;