Lines Matching defs:specs

292 static void parse_vendor_block(unsigned char *block, struct fb_monspecs *specs)
294 specs->manufacturer[0] = ((block[0] & 0x7c) >> 2) + '@';
295 specs->manufacturer[1] = ((block[0] & 0x03) << 3) +
297 specs->manufacturer[2] = (block[1] & 0x1f) + '@';
298 specs->manufacturer[3] = 0;
299 specs->model = block[2] + (block[3] << 8);
300 specs->serial = block[4] + (block[5] << 8) +
302 specs->year = block[9] + 1990;
303 specs->week = block[8];
304 DPRINTK(" Manufacturer: %s\n", specs->manufacturer);
305 DPRINTK(" Model: %x\n", specs->model);
306 DPRINTK(" Serial#: %u\n", specs->serial);
307 DPRINTK(" Year: %u Week %u\n", specs->year, specs->week);
311 struct fb_monspecs *specs)
313 specs->dpms = 0;
315 specs->dpms |= FB_DPMS_ACTIVE_OFF;
317 specs->dpms |= FB_DPMS_SUSPEND;
319 specs->dpms |= FB_DPMS_STANDBY;
326 static void get_chroma(unsigned char *block, struct fb_monspecs *specs)
335 specs->chroma.redx = tmp/1024;
336 DPRINTK(" RedX: 0.%03d ", specs->chroma.redx);
341 specs->chroma.redy = tmp/1024;
342 DPRINTK("RedY: 0.%03d\n", specs->chroma.redy);
347 specs->chroma.greenx = tmp/1024;
348 DPRINTK(" GreenX: 0.%03d ", specs->chroma.greenx);
353 specs->chroma.greeny = tmp/1024;
354 DPRINTK("GreenY: 0.%03d\n", specs->chroma.greeny);
359 specs->chroma.bluex = tmp/1024;
360 DPRINTK(" BlueX: 0.%03d ", specs->chroma.bluex);
365 specs->chroma.bluey = tmp/1024;
366 DPRINTK("BlueY: 0.%03d\n", specs->chroma.bluey);
371 specs->chroma.whitex = tmp/1024;
372 DPRINTK(" WhiteX: 0.%03d ", specs->chroma.whitex);
377 specs->chroma.whitey = tmp/1024;
378 DPRINTK("WhiteY: 0.%03d\n", specs->chroma.whitey);
495 int ver, int rev, const struct fb_monspecs *specs)
544 if (specs && specs->dclkmax
545 && PICOS2KHZ(mode->pixclock) * 1000 > specs->dclkmax) {
554 int ver, int rev, const struct fb_monspecs *specs)
559 num += get_std_timing(block, &mode[num], ver, rev, specs);
608 * @specs: monitor specifications, may be NULL
617 const struct fb_monspecs *specs)
659 num += get_std_timing(block, &mode[num], ver, rev, specs);
665 ver, rev, specs);
695 static int fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *specs)
706 specs->hfmin = H_MIN_RATE * 1000;
707 specs->hfmax = H_MAX_RATE * 1000;
708 specs->vfmin = V_MIN_RATE;
709 specs->vfmax = V_MAX_RATE;
710 specs->dclkmax = MAX_PIXEL_CLOCK * 1000000;
711 specs->gtf = (GTF_SUPPORT) ? 1 : 0;
724 modes = fb_create_modedb(edid, &num_modes, specs);
749 if (specs->dclkmax == 0 || specs->dclkmax < pixclock)
750 specs->dclkmax = pixclock;
752 if (specs->dclkmin == 0 || specs->dclkmin > pixclock)
753 specs->dclkmin = pixclock;
755 if (specs->hfmax == 0 || specs->hfmax < hscan)
756 specs->hfmax = hscan;
758 if (specs->hfmin == 0 || specs->hfmin > hscan)
759 specs->hfmin = hscan;
761 if (specs->vfmax == 0 || specs->vfmax < hz)
762 specs->vfmax = hz;
764 if (specs->vfmin == 0 || specs->vfmin > hz)
765 specs->vfmin = hz;
771 specs->hfmin/1000, specs->hfmax/1000, specs->vfmin,
772 specs->vfmax, specs->dclkmax/1000000);
776 static void get_monspecs(unsigned char *edid, struct fb_monspecs *specs)
782 fb_get_monitor_limits(edid, specs);
785 specs->input = 0;
787 specs->input |= FB_DISP_DDI;
794 specs->input |= FB_DISP_ANA_700_300;
798 specs->input |= FB_DISP_ANA_714_286;
802 specs->input |= FB_DISP_ANA_1000_400;
806 specs->input |= FB_DISP_ANA_700_000;
815 specs->signal = 0;
818 specs->signal |= FB_SIGNAL_BLANK_BLANK;
822 specs->signal |= FB_SIGNAL_SEPARATE;
826 specs->signal |= FB_SIGNAL_COMPOSITE;
830 specs->signal |= FB_SIGNAL_SYNC_ON_GREEN;
834 specs->signal |= FB_SIGNAL_SERRATION_ON;
837 specs->max_x = block[1];
838 specs->max_y = block[2];
840 if (specs->max_x)
841 DPRINTK("%d\n", specs->max_x);
845 if (specs->max_y)
846 DPRINTK("%d\n", specs->max_y);
851 specs->gamma = c+100;
853 DPRINTK("%d.%d\n", specs->gamma/100, specs->gamma % 100);
855 get_dpms_capabilities(block[4], specs);
860 specs->input |= FB_DISP_MONO;
864 specs->input |= FB_DISP_RGB;
868 specs->input |= FB_DISP_MULTI;
872 specs->input |= FB_DISP_UNKNOWN;
876 get_chroma(block, specs);
878 specs->misc = 0;
882 specs->misc |= FB_MISC_PRIM_COLOR;
886 specs->misc |= FB_MISC_1ST_DETAIL;
890 specs->gtf = 1;
937 void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs)
951 memset(specs, 0, sizeof(struct fb_monspecs));
953 specs->version = edid[EDID_STRUCT_VERSION];
954 specs->revision = edid[EDID_STRUCT_REVISION];
959 DPRINTK(" EDID Version %d.%d\n", (int) specs->version,
960 (int) specs->revision);
962 parse_vendor_block(edid + ID_MANUFACTURER_NAME, specs);
967 copy_string(block, specs->serial_no);
968 DPRINTK(" Serial Number: %s\n", specs->serial_no);
970 copy_string(block, specs->ascii);
971 DPRINTK(" ASCII Block: %s\n", specs->ascii);
973 copy_string(block, specs->monitor);
974 DPRINTK(" Monitor Name: %s\n", specs->monitor);
979 get_monspecs(edid, specs);
981 specs->modedb = fb_create_modedb(edid, &specs->modedb_len, specs);
982 if (!specs->modedb)
990 for (i = 0; i < specs->modedb_len; i++) {
991 if (specs->modedb[i].flag & FB_MODE_IS_DETAILED) {
998 specs->misc &= ~FB_MISC_1ST_DETAIL;
1192 * Calculates video mode based on monitor specs using VESA GTF.
1200 * If FB_IGNOREMON bit is set in @flags, monitor specs will be
1409 void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs)