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) {
210 if (fbi->fb.var.grayscale)
223 val = chan_to_field(red, &fbi->fb.var.red);
224 val |= chan_to_field(green, &fbi->fb.var.green);
225 val |= chan_to_field(blue, &fbi->fb.var.blue);
242 static inline int var_to_depth(struct fb_var_screeninfo *var)
244 return var->red.length + var->green.length +
245 var->blue.length + var->transp.length;
249 static int pxafb_var_to_bpp(struct fb_var_screeninfo *var)
253 switch (var->bits_per_pixel) {
260 switch (var_to_depth(var)) {
267 switch (var_to_depth(var)) {
288 static uint32_t pxafb_var_to_lccr3(struct fb_var_screeninfo *var)
290 int bpp = pxafb_var_to_bpp(var);
298 switch (var_to_depth(var)) {
299 case 16: lccr3 |= var->transp.length ? LCCR3_PDFOR_3 : 0; break;
301 case 24: lccr3 |= var->transp.length ? LCCR3_PDFOR_2 : LCCR3_PDFOR_3;
319 * var->bits_per_pixel and given depth
321 static void pxafb_set_pixfmt(struct fb_var_screeninfo *var, int depth)
324 depth = var->bits_per_pixel;
326 if (var->bits_per_pixel < 16) {
328 var->red.offset = 0; var->red.length = 8;
329 var->green.offset = 0; var->green.length = 8;
330 var->blue.offset = 0; var->blue.length = 8;
331 var->transp.offset = 0; var->transp.length = 8;
335 case 16: var->transp.length ?
336 SET_PIXFMT(var, 5, 5, 5, 1) : /* RGBT555 */
337 SET_PIXFMT(var, 5, 6, 5, 0); break; /* RGB565 */
338 case 18: SET_PIXFMT(var, 6, 6, 6, 0); break; /* RGB666 */
339 case 19: SET_PIXFMT(var, 6, 6, 6, 1); break; /* RGBT666 */
340 case 24: var->transp.length ?
341 SET_PIXFMT(var, 8, 8, 7, 1) : /* RGBT887 */
342 SET_PIXFMT(var, 8, 8, 8, 0); break; /* RGB888 */
343 case 25: SET_PIXFMT(var, 8, 8, 8, 1); break; /* RGBT888 */
354 static unsigned int pxafb_display_dma_period(struct fb_var_screeninfo *var)
360 return var->pixclock * 8 * 16 / var->bits_per_pixel;
369 struct fb_var_screeninfo *var)
377 if (modelist[i].xres >= var->xres &&
378 modelist[i].yres >= var->yres &&
381 modelist[i].bpp >= var->bits_per_pixel) {
391 static void pxafb_setmode(struct fb_var_screeninfo *var,
394 var->xres = mode->xres;
395 var->yres = mode->yres;
396 var->bits_per_pixel = mode->bpp;
397 var->pixclock = mode->pixclock;
398 var->hsync_len = mode->hsync_len;
399 var->left_margin = mode->left_margin;
400 var->right_margin = mode->right_margin;
401 var->vsync_len = mode->vsync_len;
402 var->upper_margin = mode->upper_margin;
403 var->lower_margin = mode->lower_margin;
404 var->sync = mode->sync;
405 var->grayscale = mode->cmap_greyscale;
406 var->transp.length = mode->transparency;
409 pxafb_set_pixfmt(var, mode->depth);
413 struct fb_var_screeninfo *var)
417 var->xres = max_t(int, var->xres, MIN_XRES);
418 var->yres = max_t(int, var->yres, MIN_YRES);
421 clamp_val(var->hsync_len, 1, 64);
422 clamp_val(var->vsync_len, 1, 64);
423 clamp_val(var->left_margin, 1, 255);
424 clamp_val(var->right_margin, 1, 255);
425 clamp_val(var->upper_margin, 1, 255);
426 clamp_val(var->lower_margin, 1, 255);
430 line_length = var->xres * var->bits_per_pixel / 8;
432 var->xres = line_length * 8 / var->bits_per_pixel;
435 var->xres_virtual = var->xres;
437 if (var->accel_flags & FB_ACCELF_TEXT)
438 var->yres_virtual = fbi->fb.fix.smem_len / line_length;
440 var->yres_virtual = max(var->yres_virtual, var->yres);
443 if (var->xres > MAX_XRES || var->yres > MAX_YRES)
446 if (var->yres > var->yres_virtual)
454 * Get the video params out of 'var'. If a value doesn't fit, round it up,
461 static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
470 mode = pxafb_getmode(inf, var);
473 pxafb_setmode(var, mode);
477 err = pxafb_var_to_bpp(var);
481 pxafb_set_pixfmt(var, var_to_depth(var));
483 err = pxafb_adjust_timing(fbi, var);
489 pxafb_display_dma_period(var));
502 struct fb_var_screeninfo *var = &info->var;
504 if (var->bits_per_pixel >= 16)
517 fbi->fb.fix.line_length = var->xres_virtual *
518 var->bits_per_pixel / 8;
519 if (var->bits_per_pixel >= 16)
522 fbi->palette_size = var->bits_per_pixel == 1 ?
523 4 : 1 << var->bits_per_pixel;
527 if (fbi->fb.var.bits_per_pixel >= 16)
530 fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0);
532 pxafb_activate_var(var, fbi);
537 static int pxafb_pan_display(struct fb_var_screeninfo *var,
550 memcpy(&newvar, &fbi->fb.var, sizeof(newvar));
551 newvar.xoffset = var->xoffset;
552 newvar.yoffset = var->yoffset;
554 newvar.vmode |= var->vmode & FB_VMODE_YWRAP;
613 int size = ofb->fb.fix.line_length * ofb->fb.var.yres_virtual;
654 int size, div = 1, pfor = NONSTD_TO_PFOR(ofb->fb.var.nonstd);
658 size = ofb->fb.fix.line_length * ofb->fb.var.yres_virtual;
661 size = ofb->fb.var.xres_virtual * ofb->fb.var.yres_virtual;
677 int pfor = NONSTD_TO_PFOR(ofb->fb.var.nonstd);
752 ofb->fb.var.height = -1;
753 ofb->fb.var.width = -1;
754 ofb->fb.var.xres = ofb->fb.var.xres_virtual = 0;
755 ofb->fb.var.yres = ofb->fb.var.yres_virtual = 0;
762 static int overlayfb_check_var(struct fb_var_screeninfo *var,
766 struct fb_var_screeninfo *base_var = &ofb->fbi->fb.var;
769 xpos = NONSTD_TO_XPOS(var->nonstd);
770 ypos = NONSTD_TO_YPOS(var->nonstd);
771 pfor = NONSTD_TO_PFOR(var->nonstd);
773 bpp = pxafb_var_to_bpp(var);
784 bpp = pxafb_var_to_bpp(var);
788 pxafb_set_pixfmt(var, var_to_depth(var));
803 var->xres = roundup(var->xres * bpp, 32) / bpp;
805 if ((xpos + var->xres > base_var->xres) ||
806 (ypos + var->yres > base_var->yres))
809 var->xres_virtual = var->xres;
810 var->yres_virtual = max(var->yres, var->yres_virtual);
816 struct fb_var_screeninfo *var = &ofb->fb.var;
817 int pfor = NONSTD_TO_PFOR(var->nonstd);
821 case OVERLAY_FORMAT_RGB: bpp = var->bits_per_pixel; break;
828 ofb->fb.fix.line_length = var->xres_virtual * bpp / 8;
830 size = PAGE_ALIGN(ofb->fb.fix.line_length * var->yres_virtual);
842 struct fb_var_screeninfo *var = &info->var;
849 bpp = pxafb_var_to_bpp(var);
850 xpos = NONSTD_TO_XPOS(var->nonstd);
851 ypos = NONSTD_TO_YPOS(var->nonstd);
852 pfor = NONSTD_TO_PFOR(var->nonstd);
854 ofb->control[0] = OVLxC1_PPL(var->xres) | OVLxC1_LPO(var->yres) |
883 ofb->fb.var.activate = FB_ACTIVATE_NOW;
884 ofb->fb.var.height = -1;
885 ofb->fb.var.width = -1;
886 ofb->fb.var.vmode = FB_VMODE_NONINTERLACED;
1041 if ((pcd == 0) || (fbi->fb.var.hsync_len == 0)) {
1046 htime = clk_get_rate(fbi->clk) / (pcd * fbi->fb.var.hsync_len);
1106 struct fb_var_screeninfo *var,
1110 int nbytes, dma, pal, bpp = var->bits_per_pixel;
1116 nbytes = fix->line_length * var->yres;
1117 offset = fix->line_length * var->yoffset + fbi->video_mem_phys;
1231 struct fb_var_screeninfo *var)
1244 LCCR1_DisWdth(var->xres) |
1249 fbi->reg_lccr2 = LCCR2_DisHght(var->yres);
1251 fbi->reg_lccr3 |= (var->sync & FB_SYNC_HOR_HIGH_ACT) ? LCCR3_HSP : 0;
1252 fbi->reg_lccr3 |= (var->sync & FB_SYNC_VERT_HIGH_ACT) ? LCCR3_VSP : 0;
1319 struct fb_var_screeninfo *var)
1321 unsigned int lines_per_panel, pcd = get_pcd(fbi, var->pixclock);
1324 LCCR1_DisWdth(var->xres) +
1325 LCCR1_HorSnchWdth(var->hsync_len) +
1326 LCCR1_BegLnDel(var->left_margin) +
1327 LCCR1_EndLnDel(var->right_margin);
1333 lines_per_panel = var->yres;
1339 LCCR2_VrtSnchWdth(var->vsync_len) +
1340 LCCR2_BegFrmDel(var->upper_margin) +
1341 LCCR2_EndFrmDel(var->lower_margin);
1344 (var->sync & FB_SYNC_HOR_HIGH_ACT ?
1346 (var->sync & FB_SYNC_VERT_HIGH_ACT ?
1357 * Configures LCD Controller based on entries in var parameter.
1360 static int pxafb_activate_var(struct fb_var_screeninfo *var,
1370 setup_smart_timing(fbi, var);
1373 setup_parallel_timing(fbi, var);
1375 setup_base_frame(fbi, var, 0);
1381 fbi->reg_lccr3 |= pxafb_var_to_lccr3(var);
1423 fbi->lcd_power(on, &fbi->fb.var);
1669 pcd = get_pcd(fbi, fbi->fb.var.pixclock);
1772 pxafb_setmode(&fbi->fb.var, &inf->modes[0]);
1818 fbi->fb.var.nonstd = 0;
1819 fbi->fb.var.activate = FB_ACTIVATE_NOW;
1820 fbi->fb.var.height = -1;
1821 fbi->fb.var.width = -1;
1822 fbi->fb.var.accel_flags = FB_ACCELF_TEXT;
1823 fbi->fb.var.vmode = FB_VMODE_NONINTERLACED;
2347 ret = pxafb_check_var(&fbi->fb.var, &fbi->fb);