Lines Matching refs:var
500 static int ivtvfb_set_var(struct ivtv *itv, struct fb_var_screeninfo *var)
510 if (var->nonstd) /* YUV */
516 switch (var->bits_per_pixel) {
524 switch (var->green.length) {
549 oi->bits_per_pixel = var->bits_per_pixel;
550 oi->bytes_per_pixel = var->bits_per_pixel / 8;
553 switch (var->vmode & FB_VMODE_MASK) {
568 ivtv_osd.pixel_stride = var->xres_virtual;
569 ivtv_osd.lines = var->yres_virtual;
576 ivtv_window.width = var->xres;
577 ivtv_window.height = var->yres;
580 if (!var->upper_margin)
581 var->upper_margin++;
582 if (!var->left_margin)
583 var->left_margin++;
584 ivtv_window.top = var->upper_margin - 1;
585 ivtv_window.left = var->left_margin - 1;
597 memcpy(&oi->fbvar_cur, var, sizeof(oi->fbvar_cur));
600 var->xres, var->yres,
601 var->xres_virtual, var->yres_virtual,
602 var->bits_per_pixel);
605 var->left_margin, var->upper_margin);
608 (var->vmode & FB_VMODE_MASK) == FB_VMODE_NONINTERLACED ? "on" : "off");
609 IVTVFB_DEBUG_INFO("Color space: %s\n", var->nonstd ? "YUV" : "RGB");
636 static int _ivtvfb_check_var(struct fb_var_screeninfo *var, struct ivtv *itv)
658 if (var->bits_per_pixel == 8 || var->bits_per_pixel == 32) {
659 var->transp.offset = 24;
660 var->transp.length = 8;
661 var->red.offset = 16;
662 var->red.length = 8;
663 var->green.offset = 8;
664 var->green.length = 8;
665 var->blue.offset = 0;
666 var->blue.length = 8;
668 else if (var->bits_per_pixel == 16) {
670 switch (var->green.length) {
672 var->red.offset = 8;
673 var->red.length = 4;
674 var->green.offset = 4;
675 var->green.length = 4;
676 var->blue.offset = 0;
677 var->blue.length = 4;
678 var->transp.offset = 12;
679 var->transp.length = 1;
682 var->red.offset = 10;
683 var->red.length = 5;
684 var->green.offset = 5;
685 var->green.length = 5;
686 var->blue.offset = 0;
687 var->blue.length = 5;
688 var->transp.offset = 15;
689 var->transp.length = 1;
692 var->red.offset = 11;
693 var->red.length = 5;
694 var->green.offset = 5;
695 var->green.length = 6;
696 var->blue.offset = 0;
697 var->blue.length = 5;
698 var->transp.offset = 0;
699 var->transp.length = 0;
704 IVTVFB_DEBUG_WARN("Invalid colour mode: %d\n", var->bits_per_pixel);
709 if (var->xres > IVTV_OSD_MAX_WIDTH || var->yres > osd_height_limit) {
711 var->xres, var->yres);
716 if (var->xres_virtual > 4095 / (var->bits_per_pixel / 8) ||
717 var->xres_virtual * var->yres_virtual * (var->bits_per_pixel / 8) > oi->video_buffer_size ||
718 var->xres_virtual < var->xres ||
719 var->yres_virtual < var->yres) {
721 var->xres_virtual, var->yres_virtual);
726 if (var->bits_per_pixel == 8) {
728 if (var->xres & 3) {
729 IVTVFB_DEBUG_WARN("Invalid resolution for 8bpp: %d\n", var->xres);
732 if (var->xres_virtual & 3) {
733 IVTVFB_DEBUG_WARN("Invalid virtual resolution for 8bpp: %d)\n", var->xres_virtual);
737 else if (var->bits_per_pixel == 16) {
739 if (var->xres & 1) {
740 IVTVFB_DEBUG_WARN("Invalid resolution for 16bpp: %d\n", var->xres);
743 if (var->xres_virtual & 1) {
744 IVTVFB_DEBUG_WARN("Invalid virtual resolution for 16bpp: %d)\n", var->xres_virtual);
750 if (var->xoffset >= var->xres_virtual || var->yoffset >= var->yres_virtual) {
752 var->xoffset, var->xres_virtual, var->yoffset, var->yres_virtual);
757 if (var->nonstd > 1) {
758 IVTVFB_DEBUG_WARN("Invalid nonstd % d\n", var->nonstd);
763 if (((var->vmode & FB_VMODE_MASK) != FB_VMODE_NONINTERLACED) &&
764 ((var->vmode & FB_VMODE_MASK) != FB_VMODE_INTERLACED)) {
765 IVTVFB_DEBUG_WARN("Invalid video mode: %d\n", var->vmode & FB_VMODE_MASK);
773 if (var->left_margin + var->xres > IVTV_OSD_MAX_WIDTH + 1)
774 var->left_margin = 1 + ((IVTV_OSD_MAX_WIDTH - var->xres) / 2);
776 if (var->upper_margin + var->yres > (itv->is_out_50hz ? 577 : 481))
777 var->upper_margin = 1 + (((itv->is_out_50hz ? 576 : 480) -
778 var->yres) / 2);
781 var->right_margin = hlimit - var->left_margin - var->xres;
782 var->lower_margin = vlimit - var->upper_margin - var->yres;
785 var->hsync_len = 24;
786 var->vsync_len = 2;
791 if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_NONINTERLACED)
792 var->pixclock = pixclock / 2;
794 var->pixclock = pixclock;
796 itv->osd_rect.width = var->xres;
797 itv->osd_rect.height = var->yres;
800 var->xres, var->yres,
801 var->xres_virtual, var->yres_virtual,
802 var->bits_per_pixel);
805 var->left_margin, var->upper_margin);
808 (var->vmode & FB_VMODE_MASK) == FB_VMODE_NONINTERLACED ? "on" : "off");
809 IVTVFB_DEBUG_INFO("Color space: %s\n", var->nonstd ? "YUV" : "RGB");
813 static int ivtvfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
817 return _ivtvfb_check_var(var, itv);
820 static int ivtvfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
825 if (var->yoffset + info->var.yres > info->var.yres_virtual ||
826 var->xoffset + info->var.xres > info->var.xres_virtual)
829 osd_pan_index = var->yoffset * info->fix.line_length
830 + var->xoffset * info->var.bits_per_pixel / 8;
834 itv->yuv_info.osd_x_pan = var->xoffset;
835 itv->yuv_info.osd_y_pan = var->yoffset;
850 rc = ivtvfb_set_var(itv, &info->var);
851 ivtvfb_pan_display(&info->var, info);
868 if (info->var.bits_per_pixel <= 8) {
878 if (info->var.bits_per_pixel == 16) {
879 switch (info->var.green.length) {
1052 oi->ivtvfb_info.var = oi->ivtvfb_defined;