Lines Matching refs:specs
292 static void parse_vendor_block(unsigned char *block, struct fb_monspecs *specs) in parse_vendor_block() argument
294 specs->manufacturer[0] = ((block[0] & 0x7c) >> 2) + '@'; in parse_vendor_block()
295 specs->manufacturer[1] = ((block[0] & 0x03) << 3) + in parse_vendor_block()
297 specs->manufacturer[2] = (block[1] & 0x1f) + '@'; in parse_vendor_block()
298 specs->manufacturer[3] = 0; in parse_vendor_block()
299 specs->model = block[2] + (block[3] << 8); in parse_vendor_block()
300 specs->serial = block[4] + (block[5] << 8) + in parse_vendor_block()
302 specs->year = block[9] + 1990; in parse_vendor_block()
303 specs->week = block[8]; in parse_vendor_block()
304 DPRINTK(" Manufacturer: %s\n", specs->manufacturer); in parse_vendor_block()
305 DPRINTK(" Model: %x\n", specs->model); in parse_vendor_block()
306 DPRINTK(" Serial#: %u\n", specs->serial); in parse_vendor_block()
307 DPRINTK(" Year: %u Week %u\n", specs->year, specs->week); in parse_vendor_block()
311 struct fb_monspecs *specs) in get_dpms_capabilities() argument
313 specs->dpms = 0; in get_dpms_capabilities()
315 specs->dpms |= FB_DPMS_ACTIVE_OFF; in get_dpms_capabilities()
317 specs->dpms |= FB_DPMS_SUSPEND; in get_dpms_capabilities()
319 specs->dpms |= FB_DPMS_STANDBY; in get_dpms_capabilities()
326 static void get_chroma(unsigned char *block, struct fb_monspecs *specs) in get_chroma() argument
335 specs->chroma.redx = tmp/1024; in get_chroma()
336 DPRINTK(" RedX: 0.%03d ", specs->chroma.redx); in get_chroma()
341 specs->chroma.redy = tmp/1024; in get_chroma()
342 DPRINTK("RedY: 0.%03d\n", specs->chroma.redy); in get_chroma()
347 specs->chroma.greenx = tmp/1024; in get_chroma()
348 DPRINTK(" GreenX: 0.%03d ", specs->chroma.greenx); in get_chroma()
353 specs->chroma.greeny = tmp/1024; in get_chroma()
354 DPRINTK("GreenY: 0.%03d\n", specs->chroma.greeny); in get_chroma()
359 specs->chroma.bluex = tmp/1024; in get_chroma()
360 DPRINTK(" BlueX: 0.%03d ", specs->chroma.bluex); in get_chroma()
365 specs->chroma.bluey = tmp/1024; in get_chroma()
366 DPRINTK("BlueY: 0.%03d\n", specs->chroma.bluey); in get_chroma()
371 specs->chroma.whitex = tmp/1024; in get_chroma()
372 DPRINTK(" WhiteX: 0.%03d ", specs->chroma.whitex); in get_chroma()
377 specs->chroma.whitey = tmp/1024; in get_chroma()
378 DPRINTK("WhiteY: 0.%03d\n", specs->chroma.whitey); in get_chroma()
495 int ver, int rev, const struct fb_monspecs *specs) in get_std_timing() argument
544 if (specs && specs->dclkmax in get_std_timing()
545 && PICOS2KHZ(mode->pixclock) * 1000 > specs->dclkmax) { in get_std_timing()
554 int ver, int rev, const struct fb_monspecs *specs) in get_dst_timing() argument
559 num += get_std_timing(block, &mode[num], ver, rev, specs); in get_dst_timing()
616 const struct fb_monspecs *specs) in fb_create_modedb() argument
658 num += get_std_timing(block, &mode[num], ver, rev, specs); in fb_create_modedb()
664 ver, rev, specs); in fb_create_modedb()
694 static int fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *specs) in fb_get_monitor_limits() argument
705 specs->hfmin = H_MIN_RATE * 1000; in fb_get_monitor_limits()
706 specs->hfmax = H_MAX_RATE * 1000; in fb_get_monitor_limits()
707 specs->vfmin = V_MIN_RATE; in fb_get_monitor_limits()
708 specs->vfmax = V_MAX_RATE; in fb_get_monitor_limits()
709 specs->dclkmax = MAX_PIXEL_CLOCK * 1000000; in fb_get_monitor_limits()
710 specs->gtf = (GTF_SUPPORT) ? 1 : 0; in fb_get_monitor_limits()
723 modes = fb_create_modedb(edid, &num_modes, specs); in fb_get_monitor_limits()
748 if (specs->dclkmax == 0 || specs->dclkmax < pixclock) in fb_get_monitor_limits()
749 specs->dclkmax = pixclock; in fb_get_monitor_limits()
751 if (specs->dclkmin == 0 || specs->dclkmin > pixclock) in fb_get_monitor_limits()
752 specs->dclkmin = pixclock; in fb_get_monitor_limits()
754 if (specs->hfmax == 0 || specs->hfmax < hscan) in fb_get_monitor_limits()
755 specs->hfmax = hscan; in fb_get_monitor_limits()
757 if (specs->hfmin == 0 || specs->hfmin > hscan) in fb_get_monitor_limits()
758 specs->hfmin = hscan; in fb_get_monitor_limits()
760 if (specs->vfmax == 0 || specs->vfmax < hz) in fb_get_monitor_limits()
761 specs->vfmax = hz; in fb_get_monitor_limits()
763 if (specs->vfmin == 0 || specs->vfmin > hz) in fb_get_monitor_limits()
764 specs->vfmin = hz; in fb_get_monitor_limits()
770 specs->hfmin/1000, specs->hfmax/1000, specs->vfmin, in fb_get_monitor_limits()
771 specs->vfmax, specs->dclkmax/1000000); in fb_get_monitor_limits()
775 static void get_monspecs(unsigned char *edid, struct fb_monspecs *specs) in get_monspecs() argument
781 fb_get_monitor_limits(edid, specs); in get_monspecs()
784 specs->input = 0; in get_monspecs()
786 specs->input |= FB_DISP_DDI; in get_monspecs()
793 specs->input |= FB_DISP_ANA_700_300; in get_monspecs()
797 specs->input |= FB_DISP_ANA_714_286; in get_monspecs()
801 specs->input |= FB_DISP_ANA_1000_400; in get_monspecs()
805 specs->input |= FB_DISP_ANA_700_000; in get_monspecs()
814 specs->signal = 0; in get_monspecs()
817 specs->signal |= FB_SIGNAL_BLANK_BLANK; in get_monspecs()
821 specs->signal |= FB_SIGNAL_SEPARATE; in get_monspecs()
825 specs->signal |= FB_SIGNAL_COMPOSITE; in get_monspecs()
829 specs->signal |= FB_SIGNAL_SYNC_ON_GREEN; in get_monspecs()
833 specs->signal |= FB_SIGNAL_SERRATION_ON; in get_monspecs()
836 specs->max_x = block[1]; in get_monspecs()
837 specs->max_y = block[2]; in get_monspecs()
839 if (specs->max_x) in get_monspecs()
840 DPRINTK("%d\n", specs->max_x); in get_monspecs()
844 if (specs->max_y) in get_monspecs()
845 DPRINTK("%d\n", specs->max_y); in get_monspecs()
850 specs->gamma = c+100; in get_monspecs()
852 DPRINTK("%d.%d\n", specs->gamma/100, specs->gamma % 100); in get_monspecs()
854 get_dpms_capabilities(block[4], specs); in get_monspecs()
859 specs->input |= FB_DISP_MONO; in get_monspecs()
863 specs->input |= FB_DISP_RGB; in get_monspecs()
867 specs->input |= FB_DISP_MULTI; in get_monspecs()
871 specs->input |= FB_DISP_UNKNOWN; in get_monspecs()
875 get_chroma(block, specs); in get_monspecs()
877 specs->misc = 0; in get_monspecs()
881 specs->misc |= FB_MISC_PRIM_COLOR; in get_monspecs()
885 specs->misc |= FB_MISC_1ST_DETAIL; in get_monspecs()
889 specs->gtf = 1; in get_monspecs()
936 void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) in fb_edid_to_monspecs() argument
950 memset(specs, 0, sizeof(struct fb_monspecs)); in fb_edid_to_monspecs()
952 specs->version = edid[EDID_STRUCT_VERSION]; in fb_edid_to_monspecs()
953 specs->revision = edid[EDID_STRUCT_REVISION]; in fb_edid_to_monspecs()
958 DPRINTK(" EDID Version %d.%d\n", (int) specs->version, in fb_edid_to_monspecs()
959 (int) specs->revision); in fb_edid_to_monspecs()
961 parse_vendor_block(edid + ID_MANUFACTURER_NAME, specs); in fb_edid_to_monspecs()
966 copy_string(block, specs->serial_no); in fb_edid_to_monspecs()
967 DPRINTK(" Serial Number: %s\n", specs->serial_no); in fb_edid_to_monspecs()
969 copy_string(block, specs->ascii); in fb_edid_to_monspecs()
970 DPRINTK(" ASCII Block: %s\n", specs->ascii); in fb_edid_to_monspecs()
972 copy_string(block, specs->monitor); in fb_edid_to_monspecs()
973 DPRINTK(" Monitor Name: %s\n", specs->monitor); in fb_edid_to_monspecs()
978 get_monspecs(edid, specs); in fb_edid_to_monspecs()
980 specs->modedb = fb_create_modedb(edid, &specs->modedb_len, specs); in fb_edid_to_monspecs()
987 for (i = 0; i < specs->modedb_len; i++) { in fb_edid_to_monspecs()
988 if (specs->modedb[i].flag & FB_MODE_IS_DETAILED) { in fb_edid_to_monspecs()
995 specs->misc &= ~FB_MISC_1ST_DETAIL; in fb_edid_to_monspecs()
1005 void fb_edid_add_monspecs(unsigned char *edid, struct fb_monspecs *specs) in fb_edid_add_monspecs() argument
1040 specs->misc |= FB_MISC_HDMI; in fb_edid_add_monspecs()
1058 m = kzalloc((specs->modedb_len + num + svd_n) * in fb_edid_add_monspecs()
1064 memcpy(m, specs->modedb, specs->modedb_len * sizeof(struct fb_videomode)); in fb_edid_add_monspecs()
1066 for (i = specs->modedb_len; i < specs->modedb_len + num; i++) { in fb_edid_add_monspecs()
1067 get_detailed_timing(edid + edt[i - specs->modedb_len], &m[i]); in fb_edid_add_monspecs()
1068 if (i == specs->modedb_len) in fb_edid_add_monspecs()
1073 for (i = specs->modedb_len + num; i < specs->modedb_len + num + svd_n; i++) { in fb_edid_add_monspecs()
1074 int idx = svd[i - specs->modedb_len - num]; in fb_edid_add_monspecs()
1086 kfree(specs->modedb); in fb_edid_add_monspecs()
1087 specs->modedb = m; in fb_edid_add_monspecs()
1088 specs->modedb_len = specs->modedb_len + num + svd_n; in fb_edid_add_monspecs()
1497 void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) in fb_edid_to_monspecs() argument
1500 void fb_edid_add_monspecs(unsigned char *edid, struct fb_monspecs *specs) in fb_edid_add_monspecs() argument