xserver-multidpi/hw/xfree86/ddc/print_vdif.c
2004-04-23 19:54:30 +00:00

223 lines
6.5 KiB
C

/* $XFree86: xc/programs/Xserver/hw/xfree86/ddc/print_vdif.c,v 1.4tsi Exp $ */
#include "vdif.h"
#include "misc.h"
#include "xf86DDC.h"
static void print_vdif(xf86VdifPtr l, char *s);
static void print_timings(xf86VdifTimingPtr *pt);
static void print_limits(xf86VdifLimitsPtr *pl);
static void print_gamma(xf86VdifGammaPtr *pg);
static void print_type(CARD8 c);
static void print_polarity(CARD8 c);
void
xf86print_vdif(xf86vdifPtr v)
{
print_vdif(v->vdif,v->strings);
print_limits(v->limits);
print_timings(v->timings);
print_gamma(v->gamma);
}
static void
print_vdif(xf86VdifPtr l, char *s)
{
ErrorF("Version %i.%i",l->VDIFVersion,l->VDIFRevision);
ErrorF(" Date: %i/%i/%i, Manufactured: %i/%i/%i\n",l->Date[0],
l->Date[1],l->Date[2],l->DateManufactured[0],
l->DateManufactured[1],l->DateManufactured[2]);
ErrorF("File Revision: %i",l->FileRevision);
ErrorF("Manufacturer: %s\n",s + l->Manufacturer);
ErrorF("ModelNumber: %s\n",s + l->ModelNumber);
ErrorF("VDIFIndex: %s\n",s +l->MinVDIFIndex);
ErrorF("Version: %s\n",s + l->Version);
ErrorF("SerialNumber %s\n",s + l->SerialNumber);
ErrorF("MonitorType: ");
switch (l->MonitorType) {
case VDIF_MONITOR_MONOCHROME:
ErrorF("Mono\n");
break;
case VDIF_MONITOR_COLOR:
ErrorF("Color\n");
break;
}
ErrorF("CRT Size: %i inches\n",l->CRTSize);
switch (l->MonitorType) {
case VDIF_MONITOR_MONOCHROME:
ErrorF("Border: %i percent\n",
l->BorderRed);
ErrorF("Phosphor Decay: 1: %i,",l->RedPhosphorDecay);
if (l->GreenPhosphorDecay !=0)
ErrorF(" 2: %i,",l->GreenPhosphorDecay);
if (l->BluePhosphorDecay !=0)
ErrorF(" 3: %i",l->BluePhosphorDecay);
ErrorF(" ms\n");
if (l->RedChromaticity_x)
ErrorF("Chromaticity: 1: x:%f, y:%f; ",
l->RedChromaticity_x/1000.0,l->RedChromaticity_y/1000.0);
if (l->GreenChromaticity_x)
ErrorF("Chromaticity: 2: x:%f, y:%f; ",
l->GreenChromaticity_x/1000.0,l->GreenChromaticity_y/1000.0);
if (l->BlueChromaticity_x)
ErrorF("Chromaticity: 3: x:%f, y:%f ",
l->BlueChromaticity_x/1000.0,l->BlueChromaticity_y/1000.0);
ErrorF("\n");
ErrorF("Gamma: %f\n",l->RedGamma/1000.0);
break;
case VDIF_MONITOR_COLOR:
ErrorF("Border: Red: %i Green: %i Blue: %i percent\n",
l->BorderRed,l->BorderGreen,l->BorderBlue);
ErrorF("Phosphor Decay: Red: %i, Green: %i, Blue: %i ms\n",
l->RedPhosphorDecay,l->GreenPhosphorDecay,l->BluePhosphorDecay);
ErrorF("Chromaticity: Red: x:%f, y:%f; Green: x:%f, y:%f; "
"Blue: x:%f, y:%f\n",
l->RedChromaticity_x/1000.0,l->RedChromaticity_y/1000.0,
l->GreenChromaticity_x/1000.0,l->GreenChromaticity_y/1000.0,
l->BlueChromaticity_x/1000.0,l->BlueChromaticity_y/1000.0);
ErrorF("Gamma: Red:%f, Green:%f, Blue:%f\n",l->RedGamma/1000.0,
l->GreenGamma/1000.0,l->BlueGamma/1000.0);
break;
}
ErrorF("White Point: x: %f y: %f Y: %f\n",l->WhitePoint_x/1000.0,
l->WhitePoint_y/1000.0,l->WhitePoint_Y/1000.0);
}
static void
print_limits(xf86VdifLimitsPtr *pl)
{
int i = 0;
xf86VdifLimitsPtr l;
while((l = pl[i]) != NULL) {
ErrorF("Max display resolution: %i x %i pixel\n",l->MaxHorPixel,
l->MaxVerPixel);
ErrorF("Size of active area: %i x %i millimeters\n",l->MaxHorActiveLength,
l->MaxVerActiveHeight);
ErrorF("Video Type: ");
print_type(l->VideoType);
ErrorF("Sync Type: ");
print_type(l->SyncType);
ErrorF("Sync Configuration ");
switch (l->SyncConfiguration) {
case VDIF_SYNC_SEPARATE:
ErrorF("separate\n");
break;
case VDIF_SYNC_C:
ErrorF("composite C\n");
break;
case VDIF_SYNC_CP:
ErrorF("composite CP\n");
break;
case VDIF_SYNC_G:
ErrorF("composite G\n");
break;
case VDIF_SYNC_GP:
ErrorF("composite GP\n");
break;
case VDIF_SYNC_OTHER:
ErrorF("other\n");
break;
}
ErrorF("Termination Resistance: %i\n",l->TerminationResistance);
ErrorF("Levels: white: %i, black: %i, blank: %i, sync: %i mV\n",
l->WhiteLevel,l->BlackLevel,l->BlankLevel,l->SyncLevel);
ErrorF("Max. Pixel Clock: %f MHz\n",l->MaxPixelClock/1000.0);
ErrorF("Freq. Range: Hor.: %f - %f kHz, Ver.: %f - %f Hz\n",
l->MaxHorFrequency/1000.0,l->MinHorFrequency/1000.0,
l->MaxVerFrequency/1000.0,l->MinVerFrequency/1000.0);
ErrorF("Retrace time: Hor: %f us, Ver: %f ms\n",l->MinHorRetrace/1000.0,
l->MinVerRetrace/1000.0);
}
}
static void
print_timings(xf86VdifTimingPtr *pt)
{
int i = 0;
xf86VdifTimingPtr t;
while((t = pt[i]) != NULL) {
ErrorF("SVGA / SVPMI mode number: %i\n",t->PreadjustedTimingName);
ErrorF("Mode %i x %i\n",t->HorPixel,t->VerPixel);
ErrorF("Size: %i x %i mm\n",t->HorAddrLength,t->VerAddrHeight);
ErrorF("Ratios: %i/%i\n",t->PixelWidthRatio,t->PixelHeightRatio);
ErrorF("Character width: %i",t->CharacterWidth);
ErrorF("Clock: %f MHz HFreq.: %f kHz, VFreq: %f Hz\n",t->PixelClock/1000.0,
t->HorFrequency/1000.0,t->VerFrequency/1000.0);
ErrorF("Htotal: %f us, Vtotal %f ms\n", t->HorTotalTime/1000.0,
t->VerTotalTime/1000.0);
ErrorF("HDisp: %f, HBlankStart: %f, HBlankLength: %f, "
"HSyncStart: %f HSyncEnd: %f us\n",t->HorAddrTime/1000.0,
t->HorBlankStart/1000.0,t->HorBlankTime/1000.0,
t->HorSyncStart/1000.0,t->HorSyncTime/1000.0);
ErrorF("VDisp: %f, VBlankStart: %f, VBlankLength: %f, "
"VSyncStart: %f VSyncEnd: %f us\n",t->VerAddrTime/1000.0,
t->VerBlankStart/1000.0,t->VerBlankTime/1000.0,
t->VerSyncStart/1000.0,t->VerSyncTime/1000.0);
ErrorF("Scan Type: ");
switch (t->ScanType) {
case VDIF_SCAN_INTERLACED:
ErrorF("interlaced ");
break;
case VDIF_SCAN_NONINTERLACED:
ErrorF("non interlaced ");
break;
case VDIF_SCAN_OTHER:
ErrorF("other ");
break;
}
ErrorF("Polarity: H: ");
print_polarity(t->HorSyncPolarity);
ErrorF("V: ");
print_polarity(t->VerSyncPolarity);
ErrorF("\n");
}
}
static void
print_gamma(xf86VdifGammaPtr *pg)
{
int i = 0;
xf86VdifGammaPtr g;
while((g = pg[i]) != NULL) {
ErrorF("Gamma Table Entries: %i\n",g->GammaTableEntries);
}
}
static void
print_type(CARD8 c)
{
switch (c) {
case VDIF_VIDEO_TTL :
ErrorF("TTL\n");
break;
case VDIF_VIDEO_ANALOG :
ErrorF("Analog\n");
break;
case VDIF_VIDEO_ECL:
ErrorF("ECL\n");
break;
case VDIF_VIDEO_DECL:
ErrorF("DECL\n");
break;
case VDIF_VIDEO_OTHER:
ErrorF("other\n");
break;
}
}
static void
print_polarity(CARD8 c)
{
switch (c) {
case VDIF_POLARITY_NEGATIVE:
ErrorF(" Neg.");
break;
case VDIF_POLARITY_POSITIVE:
ErrorF(" Pos.");
break;
}
}