Lines Matching refs:var
81 static int pxafb_activate_var(struct fb_var_screeninfo *var,
85 struct fb_var_screeninfo *var, int branch);
147 if (fbi->fb.var.grayscale) { in pxafb_setpalettereg()
206 if (fbi->fb.var.grayscale) in pxafb_setcolreg()
219 val = chan_to_field(red, &fbi->fb.var.red); in pxafb_setcolreg()
220 val |= chan_to_field(green, &fbi->fb.var.green); in pxafb_setcolreg()
221 val |= chan_to_field(blue, &fbi->fb.var.blue); in pxafb_setcolreg()
238 static inline int var_to_depth(struct fb_var_screeninfo *var) in var_to_depth() argument
240 return var->red.length + var->green.length + in var_to_depth()
241 var->blue.length + var->transp.length; in var_to_depth()
245 static int pxafb_var_to_bpp(struct fb_var_screeninfo *var) in pxafb_var_to_bpp() argument
249 switch (var->bits_per_pixel) { in pxafb_var_to_bpp()
256 switch (var_to_depth(var)) { in pxafb_var_to_bpp()
263 switch (var_to_depth(var)) { in pxafb_var_to_bpp()
284 static uint32_t pxafb_var_to_lccr3(struct fb_var_screeninfo *var) in pxafb_var_to_lccr3() argument
286 int bpp = pxafb_var_to_bpp(var); in pxafb_var_to_lccr3()
294 switch (var_to_depth(var)) { in pxafb_var_to_lccr3()
295 case 16: lccr3 |= var->transp.length ? LCCR3_PDFOR_3 : 0; break; in pxafb_var_to_lccr3()
297 case 24: lccr3 |= var->transp.length ? LCCR3_PDFOR_2 : LCCR3_PDFOR_3; in pxafb_var_to_lccr3()
317 static void pxafb_set_pixfmt(struct fb_var_screeninfo *var, int depth) in pxafb_set_pixfmt() argument
320 depth = var->bits_per_pixel; in pxafb_set_pixfmt()
322 if (var->bits_per_pixel < 16) { in pxafb_set_pixfmt()
324 var->red.offset = 0; var->red.length = 8; in pxafb_set_pixfmt()
325 var->green.offset = 0; var->green.length = 8; in pxafb_set_pixfmt()
326 var->blue.offset = 0; var->blue.length = 8; in pxafb_set_pixfmt()
327 var->transp.offset = 0; var->transp.length = 8; in pxafb_set_pixfmt()
331 case 16: var->transp.length ? in pxafb_set_pixfmt()
332 SET_PIXFMT(var, 5, 5, 5, 1) : /* RGBT555 */ in pxafb_set_pixfmt()
333 SET_PIXFMT(var, 5, 6, 5, 0); break; /* RGB565 */ in pxafb_set_pixfmt()
334 case 18: SET_PIXFMT(var, 6, 6, 6, 0); break; /* RGB666 */ in pxafb_set_pixfmt()
335 case 19: SET_PIXFMT(var, 6, 6, 6, 1); break; /* RGBT666 */ in pxafb_set_pixfmt()
336 case 24: var->transp.length ? in pxafb_set_pixfmt()
337 SET_PIXFMT(var, 8, 8, 7, 1) : /* RGBT887 */ in pxafb_set_pixfmt()
338 SET_PIXFMT(var, 8, 8, 8, 0); break; /* RGB888 */ in pxafb_set_pixfmt()
339 case 25: SET_PIXFMT(var, 8, 8, 8, 1); break; /* RGBT888 */ in pxafb_set_pixfmt()
350 static unsigned int pxafb_display_dma_period(struct fb_var_screeninfo *var) in pxafb_display_dma_period() argument
356 return var->pixclock * 8 * 16 / var->bits_per_pixel; in pxafb_display_dma_period()
365 struct fb_var_screeninfo *var) in pxafb_getmode() argument
373 if (modelist[i].xres >= var->xres && in pxafb_getmode()
374 modelist[i].yres >= var->yres && in pxafb_getmode()
377 modelist[i].bpp >= var->bits_per_pixel) { in pxafb_getmode()
387 static void pxafb_setmode(struct fb_var_screeninfo *var, in pxafb_setmode() argument
390 var->xres = mode->xres; in pxafb_setmode()
391 var->yres = mode->yres; in pxafb_setmode()
392 var->bits_per_pixel = mode->bpp; in pxafb_setmode()
393 var->pixclock = mode->pixclock; in pxafb_setmode()
394 var->hsync_len = mode->hsync_len; in pxafb_setmode()
395 var->left_margin = mode->left_margin; in pxafb_setmode()
396 var->right_margin = mode->right_margin; in pxafb_setmode()
397 var->vsync_len = mode->vsync_len; in pxafb_setmode()
398 var->upper_margin = mode->upper_margin; in pxafb_setmode()
399 var->lower_margin = mode->lower_margin; in pxafb_setmode()
400 var->sync = mode->sync; in pxafb_setmode()
401 var->grayscale = mode->cmap_greyscale; in pxafb_setmode()
402 var->transp.length = mode->transparency; in pxafb_setmode()
405 pxafb_set_pixfmt(var, mode->depth); in pxafb_setmode()
409 struct fb_var_screeninfo *var) in pxafb_adjust_timing() argument
413 var->xres = max_t(int, var->xres, MIN_XRES); in pxafb_adjust_timing()
414 var->yres = max_t(int, var->yres, MIN_YRES); in pxafb_adjust_timing()
417 clamp_val(var->hsync_len, 1, 64); in pxafb_adjust_timing()
418 clamp_val(var->vsync_len, 1, 64); in pxafb_adjust_timing()
419 clamp_val(var->left_margin, 1, 255); in pxafb_adjust_timing()
420 clamp_val(var->right_margin, 1, 255); in pxafb_adjust_timing()
421 clamp_val(var->upper_margin, 1, 255); in pxafb_adjust_timing()
422 clamp_val(var->lower_margin, 1, 255); in pxafb_adjust_timing()
426 line_length = var->xres * var->bits_per_pixel / 8; in pxafb_adjust_timing()
428 var->xres = line_length * 8 / var->bits_per_pixel; in pxafb_adjust_timing()
431 var->xres_virtual = var->xres; in pxafb_adjust_timing()
433 if (var->accel_flags & FB_ACCELF_TEXT) in pxafb_adjust_timing()
434 var->yres_virtual = fbi->fb.fix.smem_len / line_length; in pxafb_adjust_timing()
436 var->yres_virtual = max(var->yres_virtual, var->yres); in pxafb_adjust_timing()
439 if (var->xres > MAX_XRES || var->yres > MAX_YRES) in pxafb_adjust_timing()
442 if (var->yres > var->yres_virtual) in pxafb_adjust_timing()
457 static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) in pxafb_check_var() argument
466 mode = pxafb_getmode(inf, var); in pxafb_check_var()
469 pxafb_setmode(var, mode); in pxafb_check_var()
473 err = pxafb_var_to_bpp(var); in pxafb_check_var()
477 pxafb_set_pixfmt(var, var_to_depth(var)); in pxafb_check_var()
479 err = pxafb_adjust_timing(fbi, var); in pxafb_check_var()
485 pxafb_display_dma_period(var)); in pxafb_check_var()
498 struct fb_var_screeninfo *var = &info->var; in pxafb_set_par() local
500 if (var->bits_per_pixel >= 16) in pxafb_set_par()
513 fbi->fb.fix.line_length = var->xres_virtual * in pxafb_set_par()
514 var->bits_per_pixel / 8; in pxafb_set_par()
515 if (var->bits_per_pixel >= 16) in pxafb_set_par()
518 fbi->palette_size = var->bits_per_pixel == 1 ? in pxafb_set_par()
519 4 : 1 << var->bits_per_pixel; in pxafb_set_par()
523 if (fbi->fb.var.bits_per_pixel >= 16) in pxafb_set_par()
526 fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0); in pxafb_set_par()
528 pxafb_activate_var(var, fbi); in pxafb_set_par()
533 static int pxafb_pan_display(struct fb_var_screeninfo *var, in pxafb_pan_display() argument
546 memcpy(&newvar, &fbi->fb.var, sizeof(newvar)); in pxafb_pan_display()
547 newvar.xoffset = var->xoffset; in pxafb_pan_display()
548 newvar.yoffset = var->yoffset; in pxafb_pan_display()
550 newvar.vmode |= var->vmode & FB_VMODE_YWRAP; in pxafb_pan_display()
611 int size = ofb->fb.fix.line_length * ofb->fb.var.yres_virtual; in overlay1fb_setup()
652 int size, div = 1, pfor = NONSTD_TO_PFOR(ofb->fb.var.nonstd); in overlay2fb_setup()
656 size = ofb->fb.fix.line_length * ofb->fb.var.yres_virtual; in overlay2fb_setup()
659 size = ofb->fb.var.xres_virtual * ofb->fb.var.yres_virtual; in overlay2fb_setup()
675 int pfor = NONSTD_TO_PFOR(ofb->fb.var.nonstd); in overlay2fb_enable()
750 ofb->fb.var.height = -1; in overlayfb_release()
751 ofb->fb.var.width = -1; in overlayfb_release()
752 ofb->fb.var.xres = ofb->fb.var.xres_virtual = 0; in overlayfb_release()
753 ofb->fb.var.yres = ofb->fb.var.yres_virtual = 0; in overlayfb_release()
760 static int overlayfb_check_var(struct fb_var_screeninfo *var, in overlayfb_check_var() argument
764 struct fb_var_screeninfo *base_var = &ofb->fbi->fb.var; in overlayfb_check_var()
767 xpos = NONSTD_TO_XPOS(var->nonstd); in overlayfb_check_var()
768 ypos = NONSTD_TO_YPOS(var->nonstd); in overlayfb_check_var()
769 pfor = NONSTD_TO_PFOR(var->nonstd); in overlayfb_check_var()
771 bpp = pxafb_var_to_bpp(var); in overlayfb_check_var()
782 bpp = pxafb_var_to_bpp(var); in overlayfb_check_var()
786 pxafb_set_pixfmt(var, var_to_depth(var)); in overlayfb_check_var()
801 var->xres = roundup(var->xres * bpp, 32) / bpp; in overlayfb_check_var()
803 if ((xpos + var->xres > base_var->xres) || in overlayfb_check_var()
804 (ypos + var->yres > base_var->yres)) in overlayfb_check_var()
807 var->xres_virtual = var->xres; in overlayfb_check_var()
808 var->yres_virtual = max(var->yres, var->yres_virtual); in overlayfb_check_var()
814 struct fb_var_screeninfo *var = &ofb->fb.var; in overlayfb_check_video_memory() local
815 int pfor = NONSTD_TO_PFOR(var->nonstd); in overlayfb_check_video_memory()
819 case OVERLAY_FORMAT_RGB: bpp = var->bits_per_pixel; break; in overlayfb_check_video_memory()
826 ofb->fb.fix.line_length = var->xres_virtual * bpp / 8; in overlayfb_check_video_memory()
828 size = PAGE_ALIGN(ofb->fb.fix.line_length * var->yres_virtual); in overlayfb_check_video_memory()
840 struct fb_var_screeninfo *var = &info->var; in overlayfb_set_par() local
847 bpp = pxafb_var_to_bpp(var); in overlayfb_set_par()
848 xpos = NONSTD_TO_XPOS(var->nonstd); in overlayfb_set_par()
849 ypos = NONSTD_TO_YPOS(var->nonstd); in overlayfb_set_par()
850 pfor = NONSTD_TO_PFOR(var->nonstd); in overlayfb_set_par()
852 ofb->control[0] = OVLxC1_PPL(var->xres) | OVLxC1_LPO(var->yres) | in overlayfb_set_par()
881 ofb->fb.var.activate = FB_ACTIVATE_NOW; in init_pxafb_overlay()
882 ofb->fb.var.height = -1; in init_pxafb_overlay()
883 ofb->fb.var.width = -1; in init_pxafb_overlay()
884 ofb->fb.var.vmode = FB_VMODE_NONINTERLACED; in init_pxafb_overlay()
1040 if ((pcd == 0) || (fbi->fb.var.hsync_len == 0)) { in set_hsync_time()
1045 htime = clk_get_rate(fbi->clk) / (pcd * fbi->fb.var.hsync_len); in set_hsync_time()
1105 struct fb_var_screeninfo *var, in setup_base_frame() argument
1109 int nbytes, dma, pal, bpp = var->bits_per_pixel; in setup_base_frame()
1115 nbytes = fix->line_length * var->yres; in setup_base_frame()
1116 offset = fix->line_length * var->yoffset + fbi->video_mem_phys; in setup_base_frame()
1231 struct fb_var_screeninfo *var) in setup_smart_timing() argument
1244 LCCR1_DisWdth(var->xres) | in setup_smart_timing()
1249 fbi->reg_lccr2 = LCCR2_DisHght(var->yres); in setup_smart_timing()
1251 fbi->reg_lccr3 |= (var->sync & FB_SYNC_HOR_HIGH_ACT) ? LCCR3_HSP : 0; in setup_smart_timing()
1252 fbi->reg_lccr3 |= (var->sync & FB_SYNC_VERT_HIGH_ACT) ? LCCR3_VSP : 0; in setup_smart_timing()
1320 struct fb_var_screeninfo *var) in setup_parallel_timing() argument
1322 unsigned int lines_per_panel, pcd = get_pcd(fbi, var->pixclock); in setup_parallel_timing()
1325 LCCR1_DisWdth(var->xres) + in setup_parallel_timing()
1326 LCCR1_HorSnchWdth(var->hsync_len) + in setup_parallel_timing()
1327 LCCR1_BegLnDel(var->left_margin) + in setup_parallel_timing()
1328 LCCR1_EndLnDel(var->right_margin); in setup_parallel_timing()
1334 lines_per_panel = var->yres; in setup_parallel_timing()
1340 LCCR2_VrtSnchWdth(var->vsync_len) + in setup_parallel_timing()
1341 LCCR2_BegFrmDel(var->upper_margin) + in setup_parallel_timing()
1342 LCCR2_EndFrmDel(var->lower_margin); in setup_parallel_timing()
1345 (var->sync & FB_SYNC_HOR_HIGH_ACT ? in setup_parallel_timing()
1347 (var->sync & FB_SYNC_VERT_HIGH_ACT ? in setup_parallel_timing()
1361 static int pxafb_activate_var(struct fb_var_screeninfo *var, in pxafb_activate_var() argument
1371 setup_smart_timing(fbi, var); in pxafb_activate_var()
1374 setup_parallel_timing(fbi, var); in pxafb_activate_var()
1376 setup_base_frame(fbi, var, 0); in pxafb_activate_var()
1382 fbi->reg_lccr3 |= pxafb_var_to_lccr3(var); in pxafb_activate_var()
1424 fbi->lcd_power(on, &fbi->fb.var); in __pxafb_lcd_power()
1652 pcd = get_pcd(fbi, fbi->fb.var.pixclock); in pxafb_freq_transition()
1666 struct fb_var_screeninfo *var = &fbi->fb.var; in pxafb_freq_policy() local
1672 "new clock %d kHz\n", pxafb_display_dma_period(var), in pxafb_freq_policy()
1773 pxafb_setmode(&fbi->fb.var, &inf->modes[0]); in pxafb_decode_mach_info()
1820 fbi->fb.var.nonstd = 0; in pxafb_init_fbinfo()
1821 fbi->fb.var.activate = FB_ACTIVATE_NOW; in pxafb_init_fbinfo()
1822 fbi->fb.var.height = -1; in pxafb_init_fbinfo()
1823 fbi->fb.var.width = -1; in pxafb_init_fbinfo()
1824 fbi->fb.var.accel_flags = FB_ACCELF_TEXT; in pxafb_init_fbinfo()
1825 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED; in pxafb_init_fbinfo()
2203 ret = pxafb_check_var(&fbi->fb.var, &fbi->fb); in pxafb_probe()