Lines Matching refs:var

85 static int pxafb_activate_var(struct fb_var_screeninfo *var,
89 struct fb_var_screeninfo *var, int branch);
151 if (fbi->fb.var.grayscale) { in pxafb_setpalettereg()
210 if (fbi->fb.var.grayscale) in pxafb_setcolreg()
223 val = chan_to_field(red, &fbi->fb.var.red); in pxafb_setcolreg()
224 val |= chan_to_field(green, &fbi->fb.var.green); in pxafb_setcolreg()
225 val |= chan_to_field(blue, &fbi->fb.var.blue); in pxafb_setcolreg()
242 static inline int var_to_depth(struct fb_var_screeninfo *var) in var_to_depth() argument
244 return var->red.length + var->green.length + in var_to_depth()
245 var->blue.length + var->transp.length; in var_to_depth()
249 static int pxafb_var_to_bpp(struct fb_var_screeninfo *var) in pxafb_var_to_bpp() argument
253 switch (var->bits_per_pixel) { in pxafb_var_to_bpp()
260 switch (var_to_depth(var)) { in pxafb_var_to_bpp()
267 switch (var_to_depth(var)) { in pxafb_var_to_bpp()
288 static uint32_t pxafb_var_to_lccr3(struct fb_var_screeninfo *var) in pxafb_var_to_lccr3() argument
290 int bpp = pxafb_var_to_bpp(var); in pxafb_var_to_lccr3()
298 switch (var_to_depth(var)) { in pxafb_var_to_lccr3()
299 case 16: lccr3 |= var->transp.length ? LCCR3_PDFOR_3 : 0; break; in pxafb_var_to_lccr3()
301 case 24: lccr3 |= var->transp.length ? LCCR3_PDFOR_2 : LCCR3_PDFOR_3; in pxafb_var_to_lccr3()
321 static void pxafb_set_pixfmt(struct fb_var_screeninfo *var, int depth) in pxafb_set_pixfmt() argument
324 depth = var->bits_per_pixel; in pxafb_set_pixfmt()
326 if (var->bits_per_pixel < 16) { in pxafb_set_pixfmt()
328 var->red.offset = 0; var->red.length = 8; in pxafb_set_pixfmt()
329 var->green.offset = 0; var->green.length = 8; in pxafb_set_pixfmt()
330 var->blue.offset = 0; var->blue.length = 8; in pxafb_set_pixfmt()
331 var->transp.offset = 0; var->transp.length = 8; in pxafb_set_pixfmt()
335 case 16: var->transp.length ? in pxafb_set_pixfmt()
336 SET_PIXFMT(var, 5, 5, 5, 1) : /* RGBT555 */ in pxafb_set_pixfmt()
337 SET_PIXFMT(var, 5, 6, 5, 0); break; /* RGB565 */ in pxafb_set_pixfmt()
338 case 18: SET_PIXFMT(var, 6, 6, 6, 0); break; /* RGB666 */ in pxafb_set_pixfmt()
339 case 19: SET_PIXFMT(var, 6, 6, 6, 1); break; /* RGBT666 */ in pxafb_set_pixfmt()
340 case 24: var->transp.length ? in pxafb_set_pixfmt()
341 SET_PIXFMT(var, 8, 8, 7, 1) : /* RGBT887 */ in pxafb_set_pixfmt()
342 SET_PIXFMT(var, 8, 8, 8, 0); break; /* RGB888 */ in pxafb_set_pixfmt()
343 case 25: SET_PIXFMT(var, 8, 8, 8, 1); break; /* RGBT888 */ in pxafb_set_pixfmt()
354 static unsigned int pxafb_display_dma_period(struct fb_var_screeninfo *var) in pxafb_display_dma_period() argument
360 return var->pixclock * 8 * 16 / var->bits_per_pixel; in pxafb_display_dma_period()
369 struct fb_var_screeninfo *var) in pxafb_getmode() argument
377 if (modelist[i].xres >= var->xres && in pxafb_getmode()
378 modelist[i].yres >= var->yres && in pxafb_getmode()
381 modelist[i].bpp >= var->bits_per_pixel) { in pxafb_getmode()
391 static void pxafb_setmode(struct fb_var_screeninfo *var, in pxafb_setmode() argument
394 var->xres = mode->xres; in pxafb_setmode()
395 var->yres = mode->yres; in pxafb_setmode()
396 var->bits_per_pixel = mode->bpp; in pxafb_setmode()
397 var->pixclock = mode->pixclock; in pxafb_setmode()
398 var->hsync_len = mode->hsync_len; in pxafb_setmode()
399 var->left_margin = mode->left_margin; in pxafb_setmode()
400 var->right_margin = mode->right_margin; in pxafb_setmode()
401 var->vsync_len = mode->vsync_len; in pxafb_setmode()
402 var->upper_margin = mode->upper_margin; in pxafb_setmode()
403 var->lower_margin = mode->lower_margin; in pxafb_setmode()
404 var->sync = mode->sync; in pxafb_setmode()
405 var->grayscale = mode->cmap_greyscale; in pxafb_setmode()
406 var->transp.length = mode->transparency; in pxafb_setmode()
409 pxafb_set_pixfmt(var, mode->depth); in pxafb_setmode()
413 struct fb_var_screeninfo *var) in pxafb_adjust_timing() argument
417 var->xres = max_t(int, var->xres, MIN_XRES); in pxafb_adjust_timing()
418 var->yres = max_t(int, var->yres, MIN_YRES); in pxafb_adjust_timing()
421 clamp_val(var->hsync_len, 1, 64); in pxafb_adjust_timing()
422 clamp_val(var->vsync_len, 1, 64); in pxafb_adjust_timing()
423 clamp_val(var->left_margin, 1, 255); in pxafb_adjust_timing()
424 clamp_val(var->right_margin, 1, 255); in pxafb_adjust_timing()
425 clamp_val(var->upper_margin, 1, 255); in pxafb_adjust_timing()
426 clamp_val(var->lower_margin, 1, 255); in pxafb_adjust_timing()
430 line_length = var->xres * var->bits_per_pixel / 8; in pxafb_adjust_timing()
432 var->xres = line_length * 8 / var->bits_per_pixel; in pxafb_adjust_timing()
435 var->xres_virtual = var->xres; in pxafb_adjust_timing()
437 if (var->accel_flags & FB_ACCELF_TEXT) in pxafb_adjust_timing()
438 var->yres_virtual = fbi->fb.fix.smem_len / line_length; in pxafb_adjust_timing()
440 var->yres_virtual = max(var->yres_virtual, var->yres); in pxafb_adjust_timing()
443 if (var->xres > MAX_XRES || var->yres > MAX_YRES) in pxafb_adjust_timing()
446 if (var->yres > var->yres_virtual) in pxafb_adjust_timing()
461 static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) in pxafb_check_var() argument
470 mode = pxafb_getmode(inf, var); in pxafb_check_var()
473 pxafb_setmode(var, mode); in pxafb_check_var()
477 err = pxafb_var_to_bpp(var); in pxafb_check_var()
481 pxafb_set_pixfmt(var, var_to_depth(var)); in pxafb_check_var()
483 err = pxafb_adjust_timing(fbi, var); in pxafb_check_var()
489 pxafb_display_dma_period(var)); in pxafb_check_var()
502 struct fb_var_screeninfo *var = &info->var; in pxafb_set_par() local
504 if (var->bits_per_pixel >= 16) in pxafb_set_par()
517 fbi->fb.fix.line_length = var->xres_virtual * in pxafb_set_par()
518 var->bits_per_pixel / 8; in pxafb_set_par()
519 if (var->bits_per_pixel >= 16) in pxafb_set_par()
522 fbi->palette_size = var->bits_per_pixel == 1 ? in pxafb_set_par()
523 4 : 1 << var->bits_per_pixel; in pxafb_set_par()
527 if (fbi->fb.var.bits_per_pixel >= 16) in pxafb_set_par()
530 fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0); in pxafb_set_par()
532 pxafb_activate_var(var, fbi); in pxafb_set_par()
537 static int pxafb_pan_display(struct fb_var_screeninfo *var, in pxafb_pan_display() argument
550 memcpy(&newvar, &fbi->fb.var, sizeof(newvar)); in pxafb_pan_display()
551 newvar.xoffset = var->xoffset; in pxafb_pan_display()
552 newvar.yoffset = var->yoffset; in pxafb_pan_display()
554 newvar.vmode |= var->vmode & FB_VMODE_YWRAP; in pxafb_pan_display()
615 int size = ofb->fb.fix.line_length * ofb->fb.var.yres_virtual; in overlay1fb_setup()
656 int size, div = 1, pfor = NONSTD_TO_PFOR(ofb->fb.var.nonstd); in overlay2fb_setup()
660 size = ofb->fb.fix.line_length * ofb->fb.var.yres_virtual; in overlay2fb_setup()
663 size = ofb->fb.var.xres_virtual * ofb->fb.var.yres_virtual; in overlay2fb_setup()
679 int pfor = NONSTD_TO_PFOR(ofb->fb.var.nonstd); in overlay2fb_enable()
754 ofb->fb.var.height = -1; in overlayfb_release()
755 ofb->fb.var.width = -1; in overlayfb_release()
756 ofb->fb.var.xres = ofb->fb.var.xres_virtual = 0; in overlayfb_release()
757 ofb->fb.var.yres = ofb->fb.var.yres_virtual = 0; in overlayfb_release()
764 static int overlayfb_check_var(struct fb_var_screeninfo *var, in overlayfb_check_var() argument
768 struct fb_var_screeninfo *base_var = &ofb->fbi->fb.var; in overlayfb_check_var()
771 xpos = NONSTD_TO_XPOS(var->nonstd); in overlayfb_check_var()
772 ypos = NONSTD_TO_YPOS(var->nonstd); in overlayfb_check_var()
773 pfor = NONSTD_TO_PFOR(var->nonstd); in overlayfb_check_var()
775 bpp = pxafb_var_to_bpp(var); in overlayfb_check_var()
786 bpp = pxafb_var_to_bpp(var); in overlayfb_check_var()
790 pxafb_set_pixfmt(var, var_to_depth(var)); in overlayfb_check_var()
805 var->xres = roundup(var->xres * bpp, 32) / bpp; in overlayfb_check_var()
807 if ((xpos + var->xres > base_var->xres) || in overlayfb_check_var()
808 (ypos + var->yres > base_var->yres)) in overlayfb_check_var()
811 var->xres_virtual = var->xres; in overlayfb_check_var()
812 var->yres_virtual = max(var->yres, var->yres_virtual); in overlayfb_check_var()
818 struct fb_var_screeninfo *var = &ofb->fb.var; in overlayfb_check_video_memory() local
819 int pfor = NONSTD_TO_PFOR(var->nonstd); in overlayfb_check_video_memory()
823 case OVERLAY_FORMAT_RGB: bpp = var->bits_per_pixel; break; in overlayfb_check_video_memory()
830 ofb->fb.fix.line_length = var->xres_virtual * bpp / 8; in overlayfb_check_video_memory()
832 size = PAGE_ALIGN(ofb->fb.fix.line_length * var->yres_virtual); in overlayfb_check_video_memory()
844 struct fb_var_screeninfo *var = &info->var; in overlayfb_set_par() local
851 bpp = pxafb_var_to_bpp(var); in overlayfb_set_par()
852 xpos = NONSTD_TO_XPOS(var->nonstd); in overlayfb_set_par()
853 ypos = NONSTD_TO_YPOS(var->nonstd); in overlayfb_set_par()
854 pfor = NONSTD_TO_PFOR(var->nonstd); in overlayfb_set_par()
856 ofb->control[0] = OVLxC1_PPL(var->xres) | OVLxC1_LPO(var->yres) | in overlayfb_set_par()
885 ofb->fb.var.activate = FB_ACTIVATE_NOW; in init_pxafb_overlay()
886 ofb->fb.var.height = -1; in init_pxafb_overlay()
887 ofb->fb.var.width = -1; in init_pxafb_overlay()
888 ofb->fb.var.vmode = FB_VMODE_NONINTERLACED; in init_pxafb_overlay()
1044 if ((pcd == 0) || (fbi->fb.var.hsync_len == 0)) { in set_hsync_time()
1049 htime = clk_get_rate(fbi->clk) / (pcd * fbi->fb.var.hsync_len); in set_hsync_time()
1109 struct fb_var_screeninfo *var, in setup_base_frame() argument
1113 int nbytes, dma, pal, bpp = var->bits_per_pixel; in setup_base_frame()
1119 nbytes = fix->line_length * var->yres; in setup_base_frame()
1120 offset = fix->line_length * var->yoffset + fbi->video_mem_phys; in setup_base_frame()
1234 struct fb_var_screeninfo *var) in setup_smart_timing() argument
1247 LCCR1_DisWdth(var->xres) | in setup_smart_timing()
1252 fbi->reg_lccr2 = LCCR2_DisHght(var->yres); in setup_smart_timing()
1254 fbi->reg_lccr3 |= (var->sync & FB_SYNC_HOR_HIGH_ACT) ? LCCR3_HSP : 0; in setup_smart_timing()
1255 fbi->reg_lccr3 |= (var->sync & FB_SYNC_VERT_HIGH_ACT) ? LCCR3_VSP : 0; in setup_smart_timing()
1322 struct fb_var_screeninfo *var) in setup_parallel_timing() argument
1324 unsigned int lines_per_panel, pcd = get_pcd(fbi, var->pixclock); in setup_parallel_timing()
1327 LCCR1_DisWdth(var->xres) + in setup_parallel_timing()
1328 LCCR1_HorSnchWdth(var->hsync_len) + in setup_parallel_timing()
1329 LCCR1_BegLnDel(var->left_margin) + in setup_parallel_timing()
1330 LCCR1_EndLnDel(var->right_margin); in setup_parallel_timing()
1336 lines_per_panel = var->yres; in setup_parallel_timing()
1342 LCCR2_VrtSnchWdth(var->vsync_len) + in setup_parallel_timing()
1343 LCCR2_BegFrmDel(var->upper_margin) + in setup_parallel_timing()
1344 LCCR2_EndFrmDel(var->lower_margin); in setup_parallel_timing()
1347 (var->sync & FB_SYNC_HOR_HIGH_ACT ? in setup_parallel_timing()
1349 (var->sync & FB_SYNC_VERT_HIGH_ACT ? in setup_parallel_timing()
1363 static int pxafb_activate_var(struct fb_var_screeninfo *var, in pxafb_activate_var() argument
1373 setup_smart_timing(fbi, var); in pxafb_activate_var()
1376 setup_parallel_timing(fbi, var); in pxafb_activate_var()
1378 setup_base_frame(fbi, var, 0); in pxafb_activate_var()
1384 fbi->reg_lccr3 |= pxafb_var_to_lccr3(var); in pxafb_activate_var()
1426 fbi->lcd_power(on, &fbi->fb.var); in __pxafb_lcd_power()
1672 pcd = get_pcd(fbi, fbi->fb.var.pixclock); in pxafb_freq_transition()
1775 pxafb_setmode(&fbi->fb.var, &inf->modes[0]); in pxafb_decode_mach_info()
1821 fbi->fb.var.nonstd = 0; in pxafb_init_fbinfo()
1822 fbi->fb.var.activate = FB_ACTIVATE_NOW; in pxafb_init_fbinfo()
1823 fbi->fb.var.height = -1; in pxafb_init_fbinfo()
1824 fbi->fb.var.width = -1; in pxafb_init_fbinfo()
1825 fbi->fb.var.accel_flags = FB_ACCELF_TEXT; in pxafb_init_fbinfo()
1826 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED; in pxafb_init_fbinfo()
2352 ret = pxafb_check_var(&fbi->fb.var, &fbi->fb); in pxafb_probe()