Loading drivers/video/amba-clcd.c +10 −4 Original line number Diff line number Diff line Loading @@ -125,11 +125,11 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) case 2: case 4: case 8: var->red.length = 8; var->red.length = var->bits_per_pixel; var->red.offset = 0; var->green.length = 8; var->green.length = var->bits_per_pixel; var->green.offset = 0; var->blue.length = 8; var->blue.length = var->bits_per_pixel; var->blue.offset = 0; break; case 16: Loading @@ -146,7 +146,7 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) var->blue.offset = 10; } break; case 24: case 32: if (fb->panel->cntl & CNTL_LCDTFT) { var->red.length = 8; var->green.length = 8; Loading Loading @@ -178,6 +178,12 @@ static int clcdfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) if (fb->board->check) ret = fb->board->check(fb, var); if (ret == 0 && var->xres_virtual * var->bits_per_pixel / 8 * var->yres_virtual > fb->fb.fix.smem_len) ret = -EINVAL; if (ret == 0) ret = clcdfb_set_bitfields(fb, var); Loading include/asm-arm/hardware/amba_clcd.h +19 −12 Original line number Diff line number Diff line Loading @@ -153,7 +153,7 @@ struct clcd_fb { static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) { u32 val; u32 val, cpl; /* * Program the CLCD controller registers and start the CLCD Loading @@ -164,7 +164,10 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) val |= (fb->fb.var.left_margin - 1) << 24; regs->tim0 = val; val = fb->fb.var.yres - 1; val = fb->fb.var.yres; if (fb->panel->cntl & CNTL_LCDDUAL) val /= 2; val -= 1; val |= (fb->fb.var.vsync_len - 1) << 10; val |= fb->fb.var.lower_margin << 16; val |= fb->fb.var.upper_margin << 24; Loading @@ -174,13 +177,17 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) val |= fb->fb.var.sync & FB_SYNC_HOR_HIGH_ACT ? 0 : TIM2_IHS; val |= fb->fb.var.sync & FB_SYNC_VERT_HIGH_ACT ? 0 : TIM2_IVS; if (fb->panel->cntl & CNTL_LCDTFT) val |= (fb->fb.var.xres_virtual - 1) << 16; else if (fb->panel->cntl & CNTL_LCDBW) printk("what value for CPL for stnmono panels?"); else val |= ((fb->fb.var.xres_virtual * 8 / 3) - 1) << 16; regs->tim2 = val; cpl = fb->fb.var.xres_virtual; if (fb->panel->cntl & CNTL_LCDTFT) /* TFT */ /* / 1 */; else if (!fb->fb.var.grayscale) /* STN color */ cpl = cpl * 8 / 3; else if (fb->panel->cntl & CNTL_LCDMONO8) /* STN monochrome, 8bit */ cpl /= 8; else /* STN monochrome, 4bit */ cpl /= 4; regs->tim2 = val | ((cpl - 1) << 16); regs->tim3 = fb->panel->tim3; Loading @@ -204,7 +211,7 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) case 16: val |= CNTL_LCDBPP16; break; case 24: case 32: val |= CNTL_LCDBPP24; break; } Loading @@ -215,8 +222,8 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) static inline int clcdfb_check(struct clcd_fb *fb, struct fb_var_screeninfo *var) { var->xres_virtual = var->xres = (var->xres + 7) & ~7; var->yres_virtual = var->yres; var->xres_virtual = var->xres = (var->xres + 15) & ~15; var->yres_virtual = var->yres = (var->yres + 1) & ~1; #define CHECK(e,l,h) (var->e < l || var->e > h) if (CHECK(right_margin, (5+1), 256) || /* back porch */ Loading include/asm-arm/hardware/clock.h +5 −2 Original line number Diff line number Diff line Loading @@ -26,10 +26,13 @@ struct clk; /** * clk_get - lookup and obtain a reference to a clock producer. * @dev: device for clock "consumer" * @id: device ID * @id: clock comsumer ID * * Returns a struct clk corresponding to the clock producer, or * valid IS_ERR() condition containing errno. * valid IS_ERR() condition containing errno. The implementation * uses @dev and @id to determine the clock consumer, and thereby * the clock producer. (IOW, @id may be identical strings, but * clk_get may return different clock producers depending on @dev.) */ struct clk *clk_get(struct device *dev, const char *id); Loading Loading
drivers/video/amba-clcd.c +10 −4 Original line number Diff line number Diff line Loading @@ -125,11 +125,11 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) case 2: case 4: case 8: var->red.length = 8; var->red.length = var->bits_per_pixel; var->red.offset = 0; var->green.length = 8; var->green.length = var->bits_per_pixel; var->green.offset = 0; var->blue.length = 8; var->blue.length = var->bits_per_pixel; var->blue.offset = 0; break; case 16: Loading @@ -146,7 +146,7 @@ clcdfb_set_bitfields(struct clcd_fb *fb, struct fb_var_screeninfo *var) var->blue.offset = 10; } break; case 24: case 32: if (fb->panel->cntl & CNTL_LCDTFT) { var->red.length = 8; var->green.length = 8; Loading Loading @@ -178,6 +178,12 @@ static int clcdfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) if (fb->board->check) ret = fb->board->check(fb, var); if (ret == 0 && var->xres_virtual * var->bits_per_pixel / 8 * var->yres_virtual > fb->fb.fix.smem_len) ret = -EINVAL; if (ret == 0) ret = clcdfb_set_bitfields(fb, var); Loading
include/asm-arm/hardware/amba_clcd.h +19 −12 Original line number Diff line number Diff line Loading @@ -153,7 +153,7 @@ struct clcd_fb { static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) { u32 val; u32 val, cpl; /* * Program the CLCD controller registers and start the CLCD Loading @@ -164,7 +164,10 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) val |= (fb->fb.var.left_margin - 1) << 24; regs->tim0 = val; val = fb->fb.var.yres - 1; val = fb->fb.var.yres; if (fb->panel->cntl & CNTL_LCDDUAL) val /= 2; val -= 1; val |= (fb->fb.var.vsync_len - 1) << 10; val |= fb->fb.var.lower_margin << 16; val |= fb->fb.var.upper_margin << 24; Loading @@ -174,13 +177,17 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) val |= fb->fb.var.sync & FB_SYNC_HOR_HIGH_ACT ? 0 : TIM2_IHS; val |= fb->fb.var.sync & FB_SYNC_VERT_HIGH_ACT ? 0 : TIM2_IVS; if (fb->panel->cntl & CNTL_LCDTFT) val |= (fb->fb.var.xres_virtual - 1) << 16; else if (fb->panel->cntl & CNTL_LCDBW) printk("what value for CPL for stnmono panels?"); else val |= ((fb->fb.var.xres_virtual * 8 / 3) - 1) << 16; regs->tim2 = val; cpl = fb->fb.var.xres_virtual; if (fb->panel->cntl & CNTL_LCDTFT) /* TFT */ /* / 1 */; else if (!fb->fb.var.grayscale) /* STN color */ cpl = cpl * 8 / 3; else if (fb->panel->cntl & CNTL_LCDMONO8) /* STN monochrome, 8bit */ cpl /= 8; else /* STN monochrome, 4bit */ cpl /= 4; regs->tim2 = val | ((cpl - 1) << 16); regs->tim3 = fb->panel->tim3; Loading @@ -204,7 +211,7 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) case 16: val |= CNTL_LCDBPP16; break; case 24: case 32: val |= CNTL_LCDBPP24; break; } Loading @@ -215,8 +222,8 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) static inline int clcdfb_check(struct clcd_fb *fb, struct fb_var_screeninfo *var) { var->xres_virtual = var->xres = (var->xres + 7) & ~7; var->yres_virtual = var->yres; var->xres_virtual = var->xres = (var->xres + 15) & ~15; var->yres_virtual = var->yres = (var->yres + 1) & ~1; #define CHECK(e,l,h) (var->e < l || var->e > h) if (CHECK(right_margin, (5+1), 256) || /* back porch */ Loading
include/asm-arm/hardware/clock.h +5 −2 Original line number Diff line number Diff line Loading @@ -26,10 +26,13 @@ struct clk; /** * clk_get - lookup and obtain a reference to a clock producer. * @dev: device for clock "consumer" * @id: device ID * @id: clock comsumer ID * * Returns a struct clk corresponding to the clock producer, or * valid IS_ERR() condition containing errno. * valid IS_ERR() condition containing errno. The implementation * uses @dev and @id to determine the clock consumer, and thereby * the clock producer. (IOW, @id may be identical strings, but * clk_get may return different clock producers depending on @dev.) */ struct clk *clk_get(struct device *dev, const char *id); Loading