Lines Matching refs:var
33 * (var->xoffset was changed even if no set_screen_base avail.)
263 * * checks var and eventually tweaks it to something supported,
265 * int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);
267 * * set the video mode according to info->var *
281 * int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info);
326 * int (*decode_var)(struct fb_var_screeninfo *var,
328 * Get the video params out of 'var'. If a value doesn't fit, round
334 * int (*encode_var)(struct fb_var_screeninfo *var,
336 * Fill the 'var' structure based on the values in 'par' and maybe
363 int (*decode_var)(struct fb_var_screeninfo *var,
365 int (*encode_var)(struct fb_var_screeninfo *var,
371 int (*pan_display)(struct fb_var_screeninfo *var,
591 static int tt_decode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
593 int xres = var->xres;
594 int yres = var->yres;
595 int bpp = var->bits_per_pixel;
597 int yres_virtual = var->yres_virtual;
637 } else if (var->xres > sttt_xres || var->yres > st_yres) {
650 if (var->sync & FB_SYNC_EXT)
659 if (var->yoffset + yres > yres_virtual && yres_virtual)
662 par->screen_base = screen_base + var->yoffset * linelen;
667 static int tt_encode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
670 memset(var, 0, sizeof(struct fb_var_screeninfo));
671 var->red.offset = 0;
672 var->red.length = 4;
673 var->red.msb_right = 0;
674 var->grayscale = 0;
676 var->pixclock = 31041;
677 var->left_margin = 120; /* these may be incorrect */
678 var->right_margin = 100;
679 var->upper_margin = 8;
680 var->lower_margin = 16;
681 var->hsync_len = 140;
682 var->vsync_len = 30;
684 var->height = -1;
685 var->width = -1;
688 var->sync = 0;
690 var->sync = FB_SYNC_EXT;
694 var->xres = sttt_xres / 2;
695 var->xres_virtual = sttt_xres_virtual / 2;
696 var->yres = st_yres / 2;
697 var->bits_per_pixel = 4;
700 var->xres = sttt_xres;
701 var->xres_virtual = sttt_xres_virtual;
702 var->yres = st_yres / 2;
703 var->bits_per_pixel = 2;
706 var->xres = sttt_xres;
707 var->xres_virtual = sttt_xres_virtual;
708 var->yres = st_yres;
709 var->bits_per_pixel = 1;
712 var->xres = sttt_xres / 2;
713 var->xres_virtual = sttt_xres_virtual / 2;
714 var->yres = tt_yres;
715 var->bits_per_pixel = 8;
718 var->xres = sttt_xres;
719 var->xres_virtual = sttt_xres_virtual;
720 var->yres = tt_yres;
721 var->bits_per_pixel = 4;
724 var->red.length = 0;
725 var->xres = sttt_xres * 2;
726 var->xres_virtual = sttt_xres_virtual * 2;
727 var->yres = tt_yres * 2;
728 var->bits_per_pixel = 1;
731 var->blue = var->green = var->red;
732 var->transp.offset = 0;
733 var->transp.length = 0;
734 var->transp.msb_right = 0;
735 linelen = var->xres_virtual * var->bits_per_pixel / 8;
737 var->yres_virtual = var->yres;
740 var->yres_virtual = par->yres_virtual;
743 var->yres_virtual = screen_len / linelen;
746 var->yres_virtual = 2 * var->yres;
748 var->yres_virtual = var->yres + hwscroll * 16;
750 var->xoffset = 0;
752 var->yoffset = (par->screen_base - screen_base) / linelen;
754 var->yoffset = 0;
755 var->nonstd = 0;
756 var->activate = 0;
757 var->vmode = FB_VMODE_NONINTERLACED;
892 static int falcon_decode_var(struct fb_var_screeninfo *var,
895 int bpp = var->bits_per_pixel;
896 int xres = var->xres;
897 int yres = var->yres;
898 int xres_virtual = var->xres_virtual;
899 int yres_virtual = var->yres_virtual;
914 Get the video params out of 'var'. If a value doesn't fit, round
931 Currently interlace and doubleline mode in var are ignored.
969 var->xres > myvar->xres ||
970 var->yres > myvar->yres)
1024 if (var->pixclock > 1)
1025 var->pixclock -= 1;
1050 if (var->pixclock > f32.t * plen)
1055 if (var->pixclock == 0) {
1064 left_margin = var->left_margin;
1065 right_margin = var->right_margin;
1066 hsync_len = var->hsync_len;
1067 upper_margin = var->upper_margin;
1068 lower_margin = var->lower_margin;
1069 vsync_len = var->vsync_len;
1070 if (var->vmode & FB_VMODE_INTERLACED) {
1074 } else if (var->vmode & FB_VMODE_DOUBLE) {
1084 if (var->pixclock == 0) {
1115 if (f25.t * i >= var->pixclock &&
1120 if (f32.t * i >= var->pixclock &&
1125 if (fext.t && fext.t * i >= var->pixclock &&
1135 left_margin = var->left_margin;
1136 right_margin = var->right_margin;
1137 hsync_len = var->hsync_len;
1138 upper_margin = var->upper_margin;
1139 lower_margin = var->lower_margin;
1140 vsync_len = var->vsync_len;
1142 if (var->vmode & FB_VMODE_INTERLACED) {
1148 } else if (var->vmode & FB_VMODE_DOUBLE) {
1180 if (var->sync & FB_SYNC_HOR_HIGH_ACT)
1182 if (var->sync & FB_SYNC_VERT_HIGH_ACT)
1357 if (var->yoffset + yres > yres_virtual && yres_virtual)
1360 par->screen_base = screen_base + var->yoffset * linelen;
1368 static int falcon_encode_var(struct fb_var_screeninfo *var,
1377 memset(var, 0, sizeof(struct fb_var_screeninfo));
1379 var->pixclock = hw->sync & 0x1 ? fext.t :
1382 var->height = -1;
1383 var->width = -1;
1385 var->sync = 0;
1387 var->sync |= FB_SYNC_HOR_HIGH_ACT;
1389 var->sync |= FB_SYNC_VERT_HIGH_ACT;
1391 var->vmode = FB_VMODE_NONINTERLACED;
1393 var->vmode |= FB_VMODE_INTERLACED;
1395 var->vmode |= FB_VMODE_DOUBLE;
1402 var->yres = hw->vde - hw->vdb;
1403 if (!(var->vmode & FB_VMODE_INTERLACED))
1404 var->yres >>= 1;
1405 if (var->vmode & FB_VMODE_DOUBLE)
1406 var->yres >>= 1;
1417 var->bits_per_pixel = 1;
1419 var->bits_per_pixel = 16;
1421 var->bits_per_pixel = 8;
1423 var->bits_per_pixel = 4;
1425 var->bits_per_pixel = 2;
1427 var->bits_per_pixel = 1;
1429 var->xres = hw->line_width * 16 / var->bits_per_pixel;
1430 var->xres_virtual = var->xres + hw->line_offset * 16 / var->bits_per_pixel;
1432 var->xres_virtual += 16;
1434 if (var->bits_per_pixel == 16) {
1435 var->red.offset = 11;
1436 var->red.length = 5;
1437 var->red.msb_right = 0;
1438 var->green.offset = 5;
1439 var->green.length = 6;
1440 var->green.msb_right = 0;
1441 var->blue.offset = 0;
1442 var->blue.length = 5;
1443 var->blue.msb_right = 0;
1445 var->red.offset = 0;
1446 var->red.length = hw->ste_mode ? 4 : 6;
1447 if (var->red.length > var->bits_per_pixel)
1448 var->red.length = var->bits_per_pixel;
1449 var->red.msb_right = 0;
1450 var->grayscale = 0;
1451 var->blue = var->green = var->red;
1453 var->transp.offset = 0;
1454 var->transp.length = 0;
1455 var->transp.msb_right = 0;
1457 linelen = var->xres_virtual * var->bits_per_pixel / 8;
1460 var->yres_virtual = par->yres_virtual;
1463 var->yres_virtual = screen_len / linelen;
1466 var->yres_virtual = 2 * var->yres;
1468 var->yres_virtual = var->yres + hwscroll * 16;
1470 var->xoffset = 0; /* TODO change this */
1480 hde_off = ((128 / var->bits_per_pixel + 2) * plen);
1482 hdb_off = (64 + base_off + (128 / var->bits_per_pixel + 2) * plen)
1485 hdb_off = (base_off + (128 / var->bits_per_pixel + 18) * plen)
1490 var->left_margin = hdb_off + prescale * ((hw->hdb & 0x1ff) -
1493 var->right_margin = prescale * (hw->hht + 2 - hw->hde) - hde_off;
1496 var->right_margin = prescale * (hw->hht + 2 - hw->hbb);
1497 var->hsync_len = prescale * (hw->hht + 2 - hw->hss);
1500 var->upper_margin = hw->vdb / 2; /* round down to full lines */
1501 var->lower_margin = (hw->vft + 1 - hw->vde + 1) / 2; /* round up */
1502 var->vsync_len = (hw->vft + 1 - hw->vss + 1) / 2; /* round up */
1503 if (var->vmode & FB_VMODE_INTERLACED) {
1504 var->upper_margin *= 2;
1505 var->lower_margin *= 2;
1506 var->vsync_len *= 2;
1507 } else if (var->vmode & FB_VMODE_DOUBLE) {
1508 var->upper_margin = (var->upper_margin + 1) / 2;
1509 var->lower_margin = (var->lower_margin + 1) / 2;
1510 var->vsync_len = (var->vsync_len + 1) / 2;
1513 var->pixclock *= plen;
1514 var->left_margin /= plen;
1515 var->right_margin /= plen;
1516 var->hsync_len /= plen;
1518 var->right_margin -= var->hsync_len;
1519 var->lower_margin -= var->vsync_len;
1522 var->yoffset = (par->screen_base - screen_base) / linelen;
1524 var->yoffset = 0;
1525 var->nonstd = 0; /* what is this for? */
1526 var->activate = 0;
1651 static int falcon_pan_display(struct fb_var_screeninfo *var,
1657 int bpp = info->var.bits_per_pixel;
1660 var->xoffset = up(var->xoffset, 32);
1662 par->hw.falcon.xoffset = var->xoffset & 15;
1665 var->xoffset = up(var->xoffset, 2);
1668 (info->var.xres_virtual - info->var.xres) / 16;
1671 xoffset = var->xoffset - par->hw.falcon.xoffset;
1674 (var->yoffset * info->var.xres_virtual + xoffset) * bpp / 8;
1817 static int stste_decode_var(struct fb_var_screeninfo *var,
1820 int xres = var->xres;
1821 int yres = var->yres;
1822 int bpp = var->bits_per_pixel;
1824 int yres_virtual = var->yres_virtual;
1857 if (var->sync & FB_SYNC_EXT)
1866 if (var->yoffset + yres > yres_virtual && yres_virtual)
1869 par->screen_base = screen_base + var->yoffset * linelen;
1874 static int stste_encode_var(struct fb_var_screeninfo *var,
1878 memset(var, 0, sizeof(struct fb_var_screeninfo));
1879 var->red.offset = 0;
1880 var->red.length = ATARIHW_PRESENT(EXTD_SHIFTER) ? 4 : 3;
1881 var->red.msb_right = 0;
1882 var->grayscale = 0;
1884 var->pixclock = 31041;
1885 var->left_margin = 120; /* these are incorrect */
1886 var->right_margin = 100;
1887 var->upper_margin = 8;
1888 var->lower_margin = 16;
1889 var->hsync_len = 140;
1890 var->vsync_len = 30;
1892 var->height = -1;
1893 var->width = -1;
1896 var->sync = 0;
1898 var->sync = FB_SYNC_EXT;
1902 var->xres = sttt_xres / 2;
1903 var->yres = st_yres / 2;
1904 var->bits_per_pixel = 4;
1907 var->xres = sttt_xres;
1908 var->yres = st_yres / 2;
1909 var->bits_per_pixel = 2;
1912 var->xres = sttt_xres;
1913 var->yres = st_yres;
1914 var->bits_per_pixel = 1;
1917 var->blue = var->green = var->red;
1918 var->transp.offset = 0;
1919 var->transp.length = 0;
1920 var->transp.msb_right = 0;
1921 var->xres_virtual = sttt_xres_virtual;
1922 linelen = var->xres_virtual * var->bits_per_pixel / 8;
1926 var->yres_virtual = var->yres;
1929 var->yres_virtual = par->yres_virtual;
1932 var->yres_virtual = screen_len / linelen;
1935 var->yres_virtual = 2 * var->yres;
1937 var->yres_virtual = var->yres + hwscroll * 16;
1939 var->xoffset = 0;
1941 var->yoffset = (par->screen_base - screen_base) / linelen;
1943 var->yoffset = 0;
1944 var->nonstd = 0;
1945 var->activate = 0;
1946 var->vmode = FB_VMODE_NONINTERLACED;
2134 static int ext_decode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
2138 if (var->bits_per_pixel > myvar->bits_per_pixel ||
2139 var->xres > myvar->xres ||
2140 var->xres_virtual > myvar->xres_virtual ||
2141 var->yres > myvar->yres ||
2142 var->xoffset > 0 ||
2143 var->yoffset > 0)
2150 static int ext_encode_var(struct fb_var_screeninfo *var, struct atafb_par *par)
2152 memset(var, 0, sizeof(struct fb_var_screeninfo));
2153 var->red.offset = 0;
2154 var->red.length = (external_pmode == -1) ? external_depth / 3 :
2156 var->red.msb_right = 0;
2157 var->grayscale = 0;
2159 var->pixclock = 31041;
2160 var->left_margin = 120; /* these are surely incorrect */
2161 var->right_margin = 100;
2162 var->upper_margin = 8;
2163 var->lower_margin = 16;
2164 var->hsync_len = 140;
2165 var->vsync_len = 30;
2167 var->height = -1;
2168 var->width = -1;
2170 var->sync = 0;
2172 var->xres = external_xres;
2173 var->yres = external_yres;
2174 var->xres_virtual = external_xres_virtual;
2175 var->bits_per_pixel = external_depth;
2177 var->blue = var->green = var->red;
2178 var->transp.offset = 0;
2179 var->transp.length = 0;
2180 var->transp.msb_right = 0;
2181 var->yres_virtual = var->yres;
2182 var->xoffset = 0;
2183 var->yoffset = 0;
2184 var->nonstd = 0;
2185 var->activate = 0;
2186 var->vmode = FB_VMODE_NONINTERLACED;
2272 static int pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
2277 (!ATARIHW_PRESENT(EXTD_SHIFTER) && var->xoffset))
2279 var->xoffset = up(var->xoffset, 16);
2281 (var->yoffset * info->var.xres_virtual + var->xoffset)
2282 * info->var.bits_per_pixel / 8;
2362 static int do_fb_set_var(struct fb_var_screeninfo *var, int isactive)
2367 err = fbhw->decode_var(var, &par);
2370 activate = var->activate;
2371 if (((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) && isactive)
2373 fbhw->encode_var(var, &par);
2374 var->activate = activate;
2386 err = fbhw->decode_var(&info->var, &par);
2394 static int atafb_get_var(struct fb_var_screeninfo *var, struct fb_info *info)
2399 fbhw->encode_var(var, &par);
2409 atafb_get_var(&info->var, info);
2428 atafb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
2430 int xoffset = var->xoffset;
2431 int yoffset = var->yoffset;
2434 if (var->vmode & FB_VMODE_YWRAP) {
2435 if (yoffset < 0 || yoffset >= info->var.yres_virtual || xoffset)
2438 if (xoffset + info->var.xres > info->var.xres_virtual ||
2439 yoffset + info->var.yres > info->var.yres_virtual)
2444 err = fbhw->pan_display(var, info);
2450 info->var.xoffset = xoffset;
2451 info->var.yoffset = yoffset;
2453 if (var->vmode & FB_VMODE_YWRAP)
2454 info->var.vmode |= FB_VMODE_YWRAP;
2456 info->var.vmode &= ~FB_VMODE_YWRAP;
2486 if (info->var.bits_per_pixel == 16) {
2498 x2 = x2 < info->var.xres_virtual ? x2 : info->var.xres_virtual;
2499 y2 = y2 < info->var.yres_virtual ? y2 : info->var.yres_virtual;
2503 if (info->var.bits_per_pixel == 1)
2506 else if (info->var.bits_per_pixel == 2)
2509 else if (info->var.bits_per_pixel == 4)
2527 if (info->var.bits_per_pixel == 16) {
2538 x2 = x2 < info->var.xres_virtual ? x2 : info->var.xres_virtual;
2539 y2 = y2 < info->var.yres_virtual ? y2 : info->var.yres_virtual;
2551 if (sx + width > info->var.xres_virtual ||
2552 sy + height > info->var.yres_virtual)
2561 if (info->var.bits_per_pixel == 1)
2563 else if (info->var.bits_per_pixel == 2)
2565 else if (info->var.bits_per_pixel == 4)
2583 if (info->var.bits_per_pixel == 16) {
2598 x2 = x2 < info->var.xres_virtual ? x2 : info->var.xres_virtual;
2599 y2 = y2 < info->var.yres_virtual ? y2 : info->var.yres_virtual;
2613 if (info->var.bits_per_pixel == 1)
2617 else if (info->var.bits_per_pixel == 2)
2621 else if (info->var.bits_per_pixel == 4)
2635 info->var.bits_per_pixel);
2696 /* check var by decoding var into hw par, rounding if necessary,
2697 * then encoding hw par back into new, validated var */
2698 static int atafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
2704 // if ((err = ata_decode_var(var, &par)))
2705 err = fbhw->decode_var(var, &par);
2710 fbhw->encode_var(var, &par);
2714 /* actually set hw par by decoding var, then setting hardware from
2721 fbhw->decode_var(&info->var, par);
2750 struct fb_var_screeninfo var;
2755 var = atafb_predefined[default_par - 1];
2756 var.activate = FB_ACTIVATE_TEST;
2757 if (do_fb_set_var(&var, 1))
2762 var = atafb_predefined[detected_mode - 1]; /* autodetect */
2763 var.activate = FB_ACTIVATE_TEST;
2764 if (!do_fb_set_var(&var, 1))
2775 var = atafb_predefined[default_par - 1];
2776 var.activate = FB_ACTIVATE_TEST;
2777 if (!do_fb_set_var(&var,1))
2781 min_mem = var.xres_virtual * var.yres_virtual * var.bits_per_pixel / 8;
3171 // try to set default (detected; requested) var
3177 // so set sane var first, then call atafb_set_par
3178 atafb_get_var(&fb_info.var, &fb_info);
3185 if (!fb_find_mode(&fb_info.var, &fb_info, mode_option, atafb_modedb,
3187 fb_info.var.bits_per_pixel)) {
3196 fb_alloc_cmap(&(fb_info.cmap), 1 << fb_info.var.bits_per_pixel, 0);
3199 dev_info(&pdev->dev, "Determined %dx%d, depth %d\n", fb_info.var.xres,
3200 fb_info.var.yres, fb_info.var.bits_per_pixel);
3201 if ((fb_info.var.xres != fb_info.var.xres_virtual) ||
3202 (fb_info.var.yres != fb_info.var.yres_virtual))
3204 fb_info.var.xres_virtual, fb_info.var.yres_virtual);