Lines Matching refs:var

33  *				  (var->xoffset was changed even if no set_screen_base avail.)
251 * * checks var and eventually tweaks it to something supported,
253 * int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);
255 * * set the video mode according to info->var *
269 * int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info);
314 * int (*decode_var)(struct fb_var_screeninfo *var,
316 * Get the video params out of 'var'. If a value doesn't fit, round
322 * int (*encode_var)(struct fb_var_screeninfo *var,
324 * Fill the 'var' structure based on the values in 'par' and maybe
351 int (*decode_var)(struct fb_var_screeninfo *var,
353 int (*encode_var)(struct fb_var_screeninfo *var,
359 int (*pan_display)(struct fb_var_screeninfo *var,
579 static int tt_decode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
581 int xres = var->xres;
582 int yres = var->yres;
583 int bpp = var->bits_per_pixel;
585 int yres_virtual = var->yres_virtual;
625 } else if (var->xres > sttt_xres || var->yres > st_yres) {
638 if (var->sync & FB_SYNC_EXT)
647 if (var->yoffset + yres > yres_virtual && yres_virtual)
650 par->screen_base = screen_base + var->yoffset * linelen;
655 static int tt_encode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
658 memset(var, 0, sizeof(struct fb_var_screeninfo));
659 var->red.offset = 0;
660 var->red.length = 4;
661 var->red.msb_right = 0;
662 var->grayscale = 0;
664 var->pixclock = 31041;
665 var->left_margin = 120; /* these may be incorrect */
666 var->right_margin = 100;
667 var->upper_margin = 8;
668 var->lower_margin = 16;
669 var->hsync_len = 140;
670 var->vsync_len = 30;
672 var->height = -1;
673 var->width = -1;
676 var->sync = 0;
678 var->sync = FB_SYNC_EXT;
682 var->xres = sttt_xres / 2;
683 var->xres_virtual = sttt_xres_virtual / 2;
684 var->yres = st_yres / 2;
685 var->bits_per_pixel = 4;
688 var->xres = sttt_xres;
689 var->xres_virtual = sttt_xres_virtual;
690 var->yres = st_yres / 2;
691 var->bits_per_pixel = 2;
694 var->xres = sttt_xres;
695 var->xres_virtual = sttt_xres_virtual;
696 var->yres = st_yres;
697 var->bits_per_pixel = 1;
700 var->xres = sttt_xres / 2;
701 var->xres_virtual = sttt_xres_virtual / 2;
702 var->yres = tt_yres;
703 var->bits_per_pixel = 8;
706 var->xres = sttt_xres;
707 var->xres_virtual = sttt_xres_virtual;
708 var->yres = tt_yres;
709 var->bits_per_pixel = 4;
712 var->red.length = 0;
713 var->xres = sttt_xres * 2;
714 var->xres_virtual = sttt_xres_virtual * 2;
715 var->yres = tt_yres * 2;
716 var->bits_per_pixel = 1;
719 var->blue = var->green = var->red;
720 var->transp.offset = 0;
721 var->transp.length = 0;
722 var->transp.msb_right = 0;
723 linelen = var->xres_virtual * var->bits_per_pixel / 8;
725 var->yres_virtual = var->yres;
728 var->yres_virtual = par->yres_virtual;
731 var->yres_virtual = screen_len / linelen;
734 var->yres_virtual = 2 * var->yres;
736 var->yres_virtual = var->yres + hwscroll * 16;
738 var->xoffset = 0;
740 var->yoffset = (par->screen_base - screen_base) / linelen;
742 var->yoffset = 0;
743 var->nonstd = 0;
744 var->activate = 0;
745 var->vmode = FB_VMODE_NONINTERLACED;
880 static int falcon_decode_var(struct fb_var_screeninfo *var,
883 int bpp = var->bits_per_pixel;
884 int xres = var->xres;
885 int yres = var->yres;
886 int xres_virtual = var->xres_virtual;
887 int yres_virtual = var->yres_virtual;
902 Get the video params out of 'var'. If a value doesn't fit, round
919 Currently interlace and doubleline mode in var are ignored.
957 var->xres > myvar->xres ||
958 var->yres > myvar->yres)
1034 if (var->pixclock > f32.t * plen)
1039 if (var->pixclock == 0) {
1048 left_margin = var->left_margin;
1049 right_margin = var->right_margin;
1050 hsync_len = var->hsync_len;
1051 upper_margin = var->upper_margin;
1052 lower_margin = var->lower_margin;
1053 vsync_len = var->vsync_len;
1054 if (var->vmode & FB_VMODE_INTERLACED) {
1058 } else if (var->vmode & FB_VMODE_DOUBLE) {
1068 if (var->pixclock == 0) {
1096 if (f25.t * i >= var->pixclock &&
1101 if (f32.t * i >= var->pixclock &&
1106 if (fext.t && fext.t * i >= var->pixclock &&
1116 left_margin = var->left_margin;
1117 right_margin = var->right_margin;
1118 hsync_len = var->hsync_len;
1119 upper_margin = var->upper_margin;
1120 lower_margin = var->lower_margin;
1121 vsync_len = var->vsync_len;
1123 if (var->vmode & FB_VMODE_INTERLACED) {
1129 } else if (var->vmode & FB_VMODE_DOUBLE) {
1161 if (var->sync & FB_SYNC_HOR_HIGH_ACT)
1163 if (var->sync & FB_SYNC_VERT_HIGH_ACT)
1338 if (var->yoffset + yres > yres_virtual && yres_virtual)
1341 par->screen_base = screen_base + var->yoffset * linelen;
1349 static int falcon_encode_var(struct fb_var_screeninfo *var,
1358 memset(var, 0, sizeof(struct fb_var_screeninfo));
1360 var->pixclock = hw->sync & 0x1 ? fext.t :
1363 var->height = -1;
1364 var->width = -1;
1366 var->sync = 0;
1368 var->sync |= FB_SYNC_HOR_HIGH_ACT;
1370 var->sync |= FB_SYNC_VERT_HIGH_ACT;
1372 var->vmode = FB_VMODE_NONINTERLACED;
1374 var->vmode |= FB_VMODE_INTERLACED;
1376 var->vmode |= FB_VMODE_DOUBLE;
1383 var->yres = hw->vde - hw->vdb;
1384 if (!(var->vmode & FB_VMODE_INTERLACED))
1385 var->yres >>= 1;
1386 if (var->vmode & FB_VMODE_DOUBLE)
1387 var->yres >>= 1;
1398 var->bits_per_pixel = 1;
1400 var->bits_per_pixel = 16;
1402 var->bits_per_pixel = 8;
1404 var->bits_per_pixel = 4;
1406 var->bits_per_pixel = 2;
1408 var->bits_per_pixel = 1;
1410 var->xres = hw->line_width * 16 / var->bits_per_pixel;
1411 var->xres_virtual = var->xres + hw->line_offset * 16 / var->bits_per_pixel;
1413 var->xres_virtual += 16;
1415 if (var->bits_per_pixel == 16) {
1416 var->red.offset = 11;
1417 var->red.length = 5;
1418 var->red.msb_right = 0;
1419 var->green.offset = 5;
1420 var->green.length = 6;
1421 var->green.msb_right = 0;
1422 var->blue.offset = 0;
1423 var->blue.length = 5;
1424 var->blue.msb_right = 0;
1426 var->red.offset = 0;
1427 var->red.length = hw->ste_mode ? 4 : 6;
1428 if (var->red.length > var->bits_per_pixel)
1429 var->red.length = var->bits_per_pixel;
1430 var->red.msb_right = 0;
1431 var->grayscale = 0;
1432 var->blue = var->green = var->red;
1434 var->transp.offset = 0;
1435 var->transp.length = 0;
1436 var->transp.msb_right = 0;
1438 linelen = var->xres_virtual * var->bits_per_pixel / 8;
1441 var->yres_virtual = par->yres_virtual;
1444 var->yres_virtual = screen_len / linelen;
1447 var->yres_virtual = 2 * var->yres;
1449 var->yres_virtual = var->yres + hwscroll * 16;
1451 var->xoffset = 0; /* TODO change this */
1461 hde_off = ((128 / var->bits_per_pixel + 2) * plen);
1463 hdb_off = (64 + base_off + (128 / var->bits_per_pixel + 2) * plen)
1466 hdb_off = (base_off + (128 / var->bits_per_pixel + 18) * plen)
1471 var->left_margin = hdb_off + prescale * ((hw->hdb & 0x1ff) -
1474 var->right_margin = prescale * (hw->hht + 2 - hw->hde) - hde_off;
1477 var->right_margin = prescale * (hw->hht + 2 - hw->hbb);
1478 var->hsync_len = prescale * (hw->hht + 2 - hw->hss);
1481 var->upper_margin = hw->vdb / 2; /* round down to full lines */
1482 var->lower_margin = (hw->vft + 1 - hw->vde + 1) / 2; /* round up */
1483 var->vsync_len = (hw->vft + 1 - hw->vss + 1) / 2; /* round up */
1484 if (var->vmode & FB_VMODE_INTERLACED) {
1485 var->upper_margin *= 2;
1486 var->lower_margin *= 2;
1487 var->vsync_len *= 2;
1488 } else if (var->vmode & FB_VMODE_DOUBLE) {
1489 var->upper_margin = (var->upper_margin + 1) / 2;
1490 var->lower_margin = (var->lower_margin + 1) / 2;
1491 var->vsync_len = (var->vsync_len + 1) / 2;
1494 var->pixclock *= plen;
1495 var->left_margin /= plen;
1496 var->right_margin /= plen;
1497 var->hsync_len /= plen;
1499 var->right_margin -= var->hsync_len;
1500 var->lower_margin -= var->vsync_len;
1503 var->yoffset = (par->screen_base - screen_base) / linelen;
1505 var->yoffset = 0;
1506 var->nonstd = 0; /* what is this for? */
1507 var->activate = 0;
1632 static int falcon_pan_display(struct fb_var_screeninfo *var,
1638 int bpp = info->var.bits_per_pixel;
1641 var->xoffset = round_up(var->xoffset, 32);
1643 par->hw.falcon.xoffset = var->xoffset & 15;
1646 var->xoffset = round_up(var->xoffset, 2);
1649 (info->var.xres_virtual - info->var.xres) / 16;
1652 xoffset = var->xoffset - par->hw.falcon.xoffset;
1655 (var->yoffset * info->var.xres_virtual + xoffset) * bpp / 8;
1798 static int stste_decode_var(struct fb_var_screeninfo *var,
1801 int xres = var->xres;
1802 int yres = var->yres;
1803 int bpp = var->bits_per_pixel;
1805 int yres_virtual = var->yres_virtual;
1838 if (var->sync & FB_SYNC_EXT)
1847 if (var->yoffset + yres > yres_virtual && yres_virtual)
1850 par->screen_base = screen_base + var->yoffset * linelen;
1855 static int stste_encode_var(struct fb_var_screeninfo *var,
1859 memset(var, 0, sizeof(struct fb_var_screeninfo));
1860 var->red.offset = 0;
1861 var->red.length = ATARIHW_PRESENT(EXTD_SHIFTER) ? 4 : 3;
1862 var->red.msb_right = 0;
1863 var->grayscale = 0;
1865 var->pixclock = 31041;
1866 var->left_margin = 120; /* these are incorrect */
1867 var->right_margin = 100;
1868 var->upper_margin = 8;
1869 var->lower_margin = 16;
1870 var->hsync_len = 140;
1871 var->vsync_len = 30;
1873 var->height = -1;
1874 var->width = -1;
1877 var->sync = 0;
1879 var->sync = FB_SYNC_EXT;
1883 var->xres = sttt_xres / 2;
1884 var->yres = st_yres / 2;
1885 var->bits_per_pixel = 4;
1888 var->xres = sttt_xres;
1889 var->yres = st_yres / 2;
1890 var->bits_per_pixel = 2;
1893 var->xres = sttt_xres;
1894 var->yres = st_yres;
1895 var->bits_per_pixel = 1;
1898 var->blue = var->green = var->red;
1899 var->transp.offset = 0;
1900 var->transp.length = 0;
1901 var->transp.msb_right = 0;
1902 var->xres_virtual = sttt_xres_virtual;
1903 linelen = var->xres_virtual * var->bits_per_pixel / 8;
1907 var->yres_virtual = var->yres;
1910 var->yres_virtual = par->yres_virtual;
1913 var->yres_virtual = screen_len / linelen;
1916 var->yres_virtual = 2 * var->yres;
1918 var->yres_virtual = var->yres + hwscroll * 16;
1920 var->xoffset = 0;
1922 var->yoffset = (par->screen_base - screen_base) / linelen;
1924 var->yoffset = 0;
1925 var->nonstd = 0;
1926 var->activate = 0;
1927 var->vmode = FB_VMODE_NONINTERLACED;
2115 static int ext_decode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
2119 if (var->bits_per_pixel > myvar->bits_per_pixel ||
2120 var->xres > myvar->xres ||
2121 var->xres_virtual > myvar->xres_virtual ||
2122 var->yres > myvar->yres ||
2123 var->xoffset > 0 ||
2124 var->yoffset > 0)
2131 static int ext_encode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
2133 memset(var, 0, sizeof(struct fb_var_screeninfo));
2134 var->red.offset = 0;
2135 var->red.length = (external_pmode == -1) ? external_depth / 3 :
2137 var->red.msb_right = 0;
2138 var->grayscale = 0;
2140 var->pixclock = 31041;
2141 var->left_margin = 120; /* these are surely incorrect */
2142 var->right_margin = 100;
2143 var->upper_margin = 8;
2144 var->lower_margin = 16;
2145 var->hsync_len = 140;
2146 var->vsync_len = 30;
2148 var->height = -1;
2149 var->width = -1;
2151 var->sync = 0;
2153 var->xres = external_xres;
2154 var->yres = external_yres;
2155 var->xres_virtual = external_xres_virtual;
2156 var->bits_per_pixel = external_depth;
2158 var->blue = var->green = var->red;
2159 var->transp.offset = 0;
2160 var->transp.length = 0;
2161 var->transp.msb_right = 0;
2162 var->yres_virtual = var->yres;
2163 var->xoffset = 0;
2164 var->yoffset = 0;
2165 var->nonstd = 0;
2166 var->activate = 0;
2167 var->vmode = FB_VMODE_NONINTERLACED;
2257 static int pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
2262 (!ATARIHW_PRESENT(EXTD_SHIFTER) && var->xoffset))
2264 var->xoffset = round_up(var->xoffset, 16);
2266 (var->yoffset * info->var.xres_virtual + var->xoffset)
2267 * info->var.bits_per_pixel / 8;
2347 static int do_fb_set_var(struct fb_var_screeninfo *var, int isactive)
2352 err = fbhw->decode_var(var, &par);
2355 activate = var->activate;
2356 if (((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) && isactive)
2358 fbhw->encode_var(var, &par);
2359 var->activate = activate;
2371 err = fbhw->decode_var(&info->var, &par);
2379 static int atafb_get_var(struct fb_var_screeninfo *var, struct fb_info *info)
2384 fbhw->encode_var(var, &par);
2394 atafb_get_var(&info->var, info);
2403 atafb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
2408 return fbhw->pan_display(var, info);
2425 if (info->var.bits_per_pixel == 16) {
2437 x2 = x2 < info->var.xres_virtual ? x2 : info->var.xres_virtual;
2438 y2 = y2 < info->var.yres_virtual ? y2 : info->var.yres_virtual;
2442 if (info->var.bits_per_pixel == 1)
2445 else if (info->var.bits_per_pixel == 2)
2448 else if (info->var.bits_per_pixel == 4)
2466 if (info->var.bits_per_pixel == 16) {
2477 x2 = x2 < info->var.xres_virtual ? x2 : info->var.xres_virtual;
2478 y2 = y2 < info->var.yres_virtual ? y2 : info->var.yres_virtual;
2490 if (sx + width > info->var.xres_virtual ||
2491 sy + height > info->var.yres_virtual)
2500 if (info->var.bits_per_pixel == 1)
2502 else if (info->var.bits_per_pixel == 2)
2504 else if (info->var.bits_per_pixel == 4)
2520 if (info->var.bits_per_pixel == 16) {
2535 x2 = x2 < info->var.xres_virtual ? x2 : info->var.xres_virtual;
2536 y2 = y2 < info->var.yres_virtual ? y2 : info->var.yres_virtual;
2546 if (info->var.bits_per_pixel == 1)
2550 else if (info->var.bits_per_pixel == 2)
2554 else if (info->var.bits_per_pixel == 4)
2568 info->var.bits_per_pixel);
2629 /* check var by decoding var into hw par, rounding if necessary,
2630 * then encoding hw par back into new, validated var */
2631 static int atafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
2637 // if ((err = ata_decode_var(var, &par)))
2638 err = fbhw->decode_var(var, &par);
2643 fbhw->encode_var(var, &par);
2647 /* actually set hw par by decoding var, then setting hardware from
2654 fbhw->decode_var(&info->var, par);
2684 struct fb_var_screeninfo var;
2689 var = atafb_predefined[default_par - 1];
2690 var.activate = FB_ACTIVATE_TEST;
2691 if (do_fb_set_var(&var, 1))
2696 var = atafb_predefined[detected_mode - 1]; /* autodetect */
2697 var.activate = FB_ACTIVATE_TEST;
2698 if (!do_fb_set_var(&var, 1))
2709 var = atafb_predefined[default_par - 1];
2710 var.activate = FB_ACTIVATE_TEST;
2711 if (!do_fb_set_var(&var,1))
2715 min_mem = var.xres_virtual * var.yres_virtual * var.bits_per_pixel / 8;
3105 // try to set default (detected; requested) var
3111 // so set sane var first, then call atafb_set_par
3112 atafb_get_var(&fb_info.var, &fb_info);
3118 if (!fb_find_mode(&fb_info.var, &fb_info, mode_option, atafb_modedb,
3120 fb_info.var.bits_per_pixel)) {
3129 fb_alloc_cmap(&(fb_info.cmap), 1 << fb_info.var.bits_per_pixel, 0);
3132 dev_info(&pdev->dev, "Determined %dx%d, depth %d\n", fb_info.var.xres,
3133 fb_info.var.yres, fb_info.var.bits_per_pixel);
3134 if ((fb_info.var.xres != fb_info.var.xres_virtual) ||
3135 (fb_info.var.yres != fb_info.var.yres_virtual))
3137 fb_info.var.xres_virtual, fb_info.var.yres_virtual);