1*e2c79ab7SJonathan Neuschäfer/* 2*e2c79ab7SJonathan Neuschäfer edid.S: EDID data template 3*e2c79ab7SJonathan Neuschäfer 4*e2c79ab7SJonathan Neuschäfer Copyright (C) 2012 Carsten Emde <C.Emde@osadl.org> 5*e2c79ab7SJonathan Neuschäfer 6*e2c79ab7SJonathan Neuschäfer This program is free software; you can redistribute it and/or 7*e2c79ab7SJonathan Neuschäfer modify it under the terms of the GNU General Public License 8*e2c79ab7SJonathan Neuschäfer as published by the Free Software Foundation; either version 2 9*e2c79ab7SJonathan Neuschäfer of the License, or (at your option) any later version. 10*e2c79ab7SJonathan Neuschäfer 11*e2c79ab7SJonathan Neuschäfer This program is distributed in the hope that it will be useful, 12*e2c79ab7SJonathan Neuschäfer but WITHOUT ANY WARRANTY; without even the implied warranty of 13*e2c79ab7SJonathan Neuschäfer MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*e2c79ab7SJonathan Neuschäfer GNU General Public License for more details. 15*e2c79ab7SJonathan Neuschäfer 16*e2c79ab7SJonathan Neuschäfer You should have received a copy of the GNU General Public License 17*e2c79ab7SJonathan Neuschäfer along with this program; if not, write to the Free Software 18*e2c79ab7SJonathan Neuschäfer Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19*e2c79ab7SJonathan Neuschäfer*/ 20*e2c79ab7SJonathan Neuschäfer 21*e2c79ab7SJonathan Neuschäfer 22*e2c79ab7SJonathan Neuschäfer/* Manufacturer */ 23*e2c79ab7SJonathan Neuschäfer#define MFG_LNX1 'L' 24*e2c79ab7SJonathan Neuschäfer#define MFG_LNX2 'N' 25*e2c79ab7SJonathan Neuschäfer#define MFG_LNX3 'X' 26*e2c79ab7SJonathan Neuschäfer#define SERIAL 0 27*e2c79ab7SJonathan Neuschäfer#define YEAR 2012 28*e2c79ab7SJonathan Neuschäfer#define WEEK 5 29*e2c79ab7SJonathan Neuschäfer 30*e2c79ab7SJonathan Neuschäfer/* EDID 1.3 standard definitions */ 31*e2c79ab7SJonathan Neuschäfer#define XY_RATIO_16_10 0b00 32*e2c79ab7SJonathan Neuschäfer#define XY_RATIO_4_3 0b01 33*e2c79ab7SJonathan Neuschäfer#define XY_RATIO_5_4 0b10 34*e2c79ab7SJonathan Neuschäfer#define XY_RATIO_16_9 0b11 35*e2c79ab7SJonathan Neuschäfer 36*e2c79ab7SJonathan Neuschäfer/* Provide defaults for the timing bits */ 37*e2c79ab7SJonathan Neuschäfer#ifndef ESTABLISHED_TIMING1_BITS 38*e2c79ab7SJonathan Neuschäfer#define ESTABLISHED_TIMING1_BITS 0x00 39*e2c79ab7SJonathan Neuschäfer#endif 40*e2c79ab7SJonathan Neuschäfer#ifndef ESTABLISHED_TIMING2_BITS 41*e2c79ab7SJonathan Neuschäfer#define ESTABLISHED_TIMING2_BITS 0x00 42*e2c79ab7SJonathan Neuschäfer#endif 43*e2c79ab7SJonathan Neuschäfer#ifndef ESTABLISHED_TIMING3_BITS 44*e2c79ab7SJonathan Neuschäfer#define ESTABLISHED_TIMING3_BITS 0x00 45*e2c79ab7SJonathan Neuschäfer#endif 46*e2c79ab7SJonathan Neuschäfer 47*e2c79ab7SJonathan Neuschäfer#define mfgname2id(v1,v2,v3) \ 48*e2c79ab7SJonathan Neuschäfer ((((v1-'@')&0x1f)<<10)+(((v2-'@')&0x1f)<<5)+((v3-'@')&0x1f)) 49*e2c79ab7SJonathan Neuschäfer#define swap16(v1) ((v1>>8)+((v1&0xff)<<8)) 50*e2c79ab7SJonathan Neuschäfer#define lsbs2(v1,v2) (((v1&0x0f)<<4)+(v2&0x0f)) 51*e2c79ab7SJonathan Neuschäfer#define msbs2(v1,v2) ((((v1>>8)&0x0f)<<4)+((v2>>8)&0x0f)) 52*e2c79ab7SJonathan Neuschäfer#define msbs4(v1,v2,v3,v4) \ 53*e2c79ab7SJonathan Neuschäfer ((((v1>>8)&0x03)<<6)+(((v2>>8)&0x03)<<4)+\ 54*e2c79ab7SJonathan Neuschäfer (((v3>>4)&0x03)<<2)+((v4>>4)&0x03)) 55*e2c79ab7SJonathan Neuschäfer#define pixdpi2mm(pix,dpi) ((pix*25)/dpi) 56*e2c79ab7SJonathan Neuschäfer#define xsize pixdpi2mm(XPIX,DPI) 57*e2c79ab7SJonathan Neuschäfer#define ysize pixdpi2mm(YPIX,DPI) 58*e2c79ab7SJonathan Neuschäfer 59*e2c79ab7SJonathan Neuschäfer .data 60*e2c79ab7SJonathan Neuschäfer 61*e2c79ab7SJonathan Neuschäfer/* Fixed header pattern */ 62*e2c79ab7SJonathan Neuschäferheader: .byte 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00 63*e2c79ab7SJonathan Neuschäfer 64*e2c79ab7SJonathan Neuschäfermfg_id: .hword swap16(mfgname2id(MFG_LNX1, MFG_LNX2, MFG_LNX3)) 65*e2c79ab7SJonathan Neuschäfer 66*e2c79ab7SJonathan Neuschäferprod_code: .hword 0 67*e2c79ab7SJonathan Neuschäfer 68*e2c79ab7SJonathan Neuschäfer/* Serial number. 32 bits, little endian. */ 69*e2c79ab7SJonathan Neuschäferserial_number: .long SERIAL 70*e2c79ab7SJonathan Neuschäfer 71*e2c79ab7SJonathan Neuschäfer/* Week of manufacture */ 72*e2c79ab7SJonathan Neuschäferweek: .byte WEEK 73*e2c79ab7SJonathan Neuschäfer 74*e2c79ab7SJonathan Neuschäfer/* Year of manufacture, less 1990. (1990-2245) 75*e2c79ab7SJonathan Neuschäfer If week=255, it is the model year instead */ 76*e2c79ab7SJonathan Neuschäferyear: .byte YEAR-1990 77*e2c79ab7SJonathan Neuschäfer 78*e2c79ab7SJonathan Neuschäferversion: .byte VERSION /* EDID version, usually 1 (for 1.3) */ 79*e2c79ab7SJonathan Neuschäferrevision: .byte REVISION /* EDID revision, usually 3 (for 1.3) */ 80*e2c79ab7SJonathan Neuschäfer 81*e2c79ab7SJonathan Neuschäfer/* If Bit 7=1 Digital input. If set, the following bit definitions apply: 82*e2c79ab7SJonathan Neuschäfer Bits 6-1 Reserved, must be 0 83*e2c79ab7SJonathan Neuschäfer Bit 0 Signal is compatible with VESA DFP 1.x TMDS CRGB, 84*e2c79ab7SJonathan Neuschäfer 1 pixel per clock, up to 8 bits per color, MSB aligned, 85*e2c79ab7SJonathan Neuschäfer If Bit 7=0 Analog input. If clear, the following bit definitions apply: 86*e2c79ab7SJonathan Neuschäfer Bits 6-5 Video white and sync levels, relative to blank 87*e2c79ab7SJonathan Neuschäfer 00=+0.7/-0.3 V; 01=+0.714/-0.286 V; 88*e2c79ab7SJonathan Neuschäfer 10=+1.0/-0.4 V; 11=+0.7/0 V 89*e2c79ab7SJonathan Neuschäfer Bit 4 Blank-to-black setup (pedestal) expected 90*e2c79ab7SJonathan Neuschäfer Bit 3 Separate sync supported 91*e2c79ab7SJonathan Neuschäfer Bit 2 Composite sync (on HSync) supported 92*e2c79ab7SJonathan Neuschäfer Bit 1 Sync on green supported 93*e2c79ab7SJonathan Neuschäfer Bit 0 VSync pulse must be serrated when somposite or 94*e2c79ab7SJonathan Neuschäfer sync-on-green is used. */ 95*e2c79ab7SJonathan Neuschäfervideo_parms: .byte 0x6d 96*e2c79ab7SJonathan Neuschäfer 97*e2c79ab7SJonathan Neuschäfer/* Maximum horizontal image size, in centimetres 98*e2c79ab7SJonathan Neuschäfer (max 292 cm/115 in at 16:9 aspect ratio) */ 99*e2c79ab7SJonathan Neuschäfermax_hor_size: .byte xsize/10 100*e2c79ab7SJonathan Neuschäfer 101*e2c79ab7SJonathan Neuschäfer/* Maximum vertical image size, in centimetres. 102*e2c79ab7SJonathan Neuschäfer If either byte is 0, undefined (e.g. projector) */ 103*e2c79ab7SJonathan Neuschäfermax_vert_size: .byte ysize/10 104*e2c79ab7SJonathan Neuschäfer 105*e2c79ab7SJonathan Neuschäfer/* Display gamma, minus 1, times 100 (range 1.00-3.5 */ 106*e2c79ab7SJonathan Neuschäfergamma: .byte 120 107*e2c79ab7SJonathan Neuschäfer 108*e2c79ab7SJonathan Neuschäfer/* Bit 7 DPMS standby supported 109*e2c79ab7SJonathan Neuschäfer Bit 6 DPMS suspend supported 110*e2c79ab7SJonathan Neuschäfer Bit 5 DPMS active-off supported 111*e2c79ab7SJonathan Neuschäfer Bits 4-3 Display type: 00=monochrome; 01=RGB colour; 112*e2c79ab7SJonathan Neuschäfer 10=non-RGB multicolour; 11=undefined 113*e2c79ab7SJonathan Neuschäfer Bit 2 Standard sRGB colour space. Bytes 25-34 must contain 114*e2c79ab7SJonathan Neuschäfer sRGB standard values. 115*e2c79ab7SJonathan Neuschäfer Bit 1 Preferred timing mode specified in descriptor block 1. 116*e2c79ab7SJonathan Neuschäfer Bit 0 GTF supported with default parameter values. */ 117*e2c79ab7SJonathan Neuschäferdsp_features: .byte 0xea 118*e2c79ab7SJonathan Neuschäfer 119*e2c79ab7SJonathan Neuschäfer/* Chromaticity coordinates. */ 120*e2c79ab7SJonathan Neuschäfer/* Red and green least-significant bits 121*e2c79ab7SJonathan Neuschäfer Bits 7-6 Red x value least-significant 2 bits 122*e2c79ab7SJonathan Neuschäfer Bits 5-4 Red y value least-significant 2 bits 123*e2c79ab7SJonathan Neuschäfer Bits 3-2 Green x value lst-significant 2 bits 124*e2c79ab7SJonathan Neuschäfer Bits 1-0 Green y value least-significant 2 bits */ 125*e2c79ab7SJonathan Neuschäferred_green_lsb: .byte 0x5e 126*e2c79ab7SJonathan Neuschäfer 127*e2c79ab7SJonathan Neuschäfer/* Blue and white least-significant 2 bits */ 128*e2c79ab7SJonathan Neuschäferblue_white_lsb: .byte 0xc0 129*e2c79ab7SJonathan Neuschäfer 130*e2c79ab7SJonathan Neuschäfer/* Red x value most significant 8 bits. 131*e2c79ab7SJonathan Neuschäfer 0-255 encodes 0-0.996 (255/256); 0-0.999 (1023/1024) with lsbits */ 132*e2c79ab7SJonathan Neuschäferred_x_msb: .byte 0xa4 133*e2c79ab7SJonathan Neuschäfer 134*e2c79ab7SJonathan Neuschäfer/* Red y value most significant 8 bits */ 135*e2c79ab7SJonathan Neuschäferred_y_msb: .byte 0x59 136*e2c79ab7SJonathan Neuschäfer 137*e2c79ab7SJonathan Neuschäfer/* Green x and y value most significant 8 bits */ 138*e2c79ab7SJonathan Neuschäfergreen_x_y_msb: .byte 0x4a,0x98 139*e2c79ab7SJonathan Neuschäfer 140*e2c79ab7SJonathan Neuschäfer/* Blue x and y value most significant 8 bits */ 141*e2c79ab7SJonathan Neuschäferblue_x_y_msb: .byte 0x25,0x20 142*e2c79ab7SJonathan Neuschäfer 143*e2c79ab7SJonathan Neuschäfer/* Default white point x and y value most significant 8 bits */ 144*e2c79ab7SJonathan Neuschäferwhite_x_y_msb: .byte 0x50,0x54 145*e2c79ab7SJonathan Neuschäfer 146*e2c79ab7SJonathan Neuschäfer/* Established timings */ 147*e2c79ab7SJonathan Neuschäfer/* Bit 7 720x400 @ 70 Hz 148*e2c79ab7SJonathan Neuschäfer Bit 6 720x400 @ 88 Hz 149*e2c79ab7SJonathan Neuschäfer Bit 5 640x480 @ 60 Hz 150*e2c79ab7SJonathan Neuschäfer Bit 4 640x480 @ 67 Hz 151*e2c79ab7SJonathan Neuschäfer Bit 3 640x480 @ 72 Hz 152*e2c79ab7SJonathan Neuschäfer Bit 2 640x480 @ 75 Hz 153*e2c79ab7SJonathan Neuschäfer Bit 1 800x600 @ 56 Hz 154*e2c79ab7SJonathan Neuschäfer Bit 0 800x600 @ 60 Hz */ 155*e2c79ab7SJonathan Neuschäferestbl_timing1: .byte ESTABLISHED_TIMING1_BITS 156*e2c79ab7SJonathan Neuschäfer 157*e2c79ab7SJonathan Neuschäfer/* Bit 7 800x600 @ 72 Hz 158*e2c79ab7SJonathan Neuschäfer Bit 6 800x600 @ 75 Hz 159*e2c79ab7SJonathan Neuschäfer Bit 5 832x624 @ 75 Hz 160*e2c79ab7SJonathan Neuschäfer Bit 4 1024x768 @ 87 Hz, interlaced (1024x768) 161*e2c79ab7SJonathan Neuschäfer Bit 3 1024x768 @ 60 Hz 162*e2c79ab7SJonathan Neuschäfer Bit 2 1024x768 @ 72 Hz 163*e2c79ab7SJonathan Neuschäfer Bit 1 1024x768 @ 75 Hz 164*e2c79ab7SJonathan Neuschäfer Bit 0 1280x1024 @ 75 Hz */ 165*e2c79ab7SJonathan Neuschäferestbl_timing2: .byte ESTABLISHED_TIMING2_BITS 166*e2c79ab7SJonathan Neuschäfer 167*e2c79ab7SJonathan Neuschäfer/* Bit 7 1152x870 @ 75 Hz (Apple Macintosh II) 168*e2c79ab7SJonathan Neuschäfer Bits 6-0 Other manufacturer-specific display mod */ 169*e2c79ab7SJonathan Neuschäferestbl_timing3: .byte ESTABLISHED_TIMING3_BITS 170*e2c79ab7SJonathan Neuschäfer 171*e2c79ab7SJonathan Neuschäfer/* Standard timing */ 172*e2c79ab7SJonathan Neuschäfer/* X resolution, less 31, divided by 8 (256-2288 pixels) */ 173*e2c79ab7SJonathan Neuschäferstd_xres: .byte (XPIX/8)-31 174*e2c79ab7SJonathan Neuschäfer/* Y resolution, X:Y pixel ratio 175*e2c79ab7SJonathan Neuschäfer Bits 7-6 X:Y pixel ratio: 00=16:10; 01=4:3; 10=5:4; 11=16:9. 176*e2c79ab7SJonathan Neuschäfer Bits 5-0 Vertical frequency, less 60 (60-123 Hz) */ 177*e2c79ab7SJonathan Neuschäferstd_vres: .byte (XY_RATIO<<6)+VFREQ-60 178*e2c79ab7SJonathan Neuschäfer .fill 7,2,0x0101 /* Unused */ 179*e2c79ab7SJonathan Neuschäfer 180*e2c79ab7SJonathan Neuschäferdescriptor1: 181*e2c79ab7SJonathan Neuschäfer/* Pixel clock in 10 kHz units. (0.-655.35 MHz, little-endian) */ 182*e2c79ab7SJonathan Neuschäferclock: .hword CLOCK/10 183*e2c79ab7SJonathan Neuschäfer 184*e2c79ab7SJonathan Neuschäfer/* Horizontal active pixels 8 lsbits (0-4095) */ 185*e2c79ab7SJonathan Neuschäferx_act_lsb: .byte XPIX&0xff 186*e2c79ab7SJonathan Neuschäfer/* Horizontal blanking pixels 8 lsbits (0-4095) 187*e2c79ab7SJonathan Neuschäfer End of active to start of next active. */ 188*e2c79ab7SJonathan Neuschäferx_blk_lsb: .byte XBLANK&0xff 189*e2c79ab7SJonathan Neuschäfer/* Bits 7-4 Horizontal active pixels 4 msbits 190*e2c79ab7SJonathan Neuschäfer Bits 3-0 Horizontal blanking pixels 4 msbits */ 191*e2c79ab7SJonathan Neuschäferx_msbs: .byte msbs2(XPIX,XBLANK) 192*e2c79ab7SJonathan Neuschäfer 193*e2c79ab7SJonathan Neuschäfer/* Vertical active lines 8 lsbits (0-4095) */ 194*e2c79ab7SJonathan Neuschäfery_act_lsb: .byte YPIX&0xff 195*e2c79ab7SJonathan Neuschäfer/* Vertical blanking lines 8 lsbits (0-4095) */ 196*e2c79ab7SJonathan Neuschäfery_blk_lsb: .byte YBLANK&0xff 197*e2c79ab7SJonathan Neuschäfer/* Bits 7-4 Vertical active lines 4 msbits 198*e2c79ab7SJonathan Neuschäfer Bits 3-0 Vertical blanking lines 4 msbits */ 199*e2c79ab7SJonathan Neuschäfery_msbs: .byte msbs2(YPIX,YBLANK) 200*e2c79ab7SJonathan Neuschäfer 201*e2c79ab7SJonathan Neuschäfer/* Horizontal sync offset pixels 8 lsbits (0-1023) From blanking start */ 202*e2c79ab7SJonathan Neuschäferx_snc_off_lsb: .byte XOFFSET&0xff 203*e2c79ab7SJonathan Neuschäfer/* Horizontal sync pulse width pixels 8 lsbits (0-1023) */ 204*e2c79ab7SJonathan Neuschäferx_snc_pls_lsb: .byte XPULSE&0xff 205*e2c79ab7SJonathan Neuschäfer/* Bits 7-4 Vertical sync offset lines 4 lsbits (0-63) 206*e2c79ab7SJonathan Neuschäfer Bits 3-0 Vertical sync pulse width lines 4 lsbits (0-63) */ 207*e2c79ab7SJonathan Neuschäfery_snc_lsb: .byte lsbs2(YOFFSET, YPULSE) 208*e2c79ab7SJonathan Neuschäfer/* Bits 7-6 Horizontal sync offset pixels 2 msbits 209*e2c79ab7SJonathan Neuschäfer Bits 5-4 Horizontal sync pulse width pixels 2 msbits 210*e2c79ab7SJonathan Neuschäfer Bits 3-2 Vertical sync offset lines 2 msbits 211*e2c79ab7SJonathan Neuschäfer Bits 1-0 Vertical sync pulse width lines 2 msbits */ 212*e2c79ab7SJonathan Neuschäferxy_snc_msbs: .byte msbs4(XOFFSET,XPULSE,YOFFSET,YPULSE) 213*e2c79ab7SJonathan Neuschäfer 214*e2c79ab7SJonathan Neuschäfer/* Horizontal display size, mm, 8 lsbits (0-4095 mm, 161 in) */ 215*e2c79ab7SJonathan Neuschäferx_dsp_size: .byte xsize&0xff 216*e2c79ab7SJonathan Neuschäfer 217*e2c79ab7SJonathan Neuschäfer/* Vertical display size, mm, 8 lsbits (0-4095 mm, 161 in) */ 218*e2c79ab7SJonathan Neuschäfery_dsp_size: .byte ysize&0xff 219*e2c79ab7SJonathan Neuschäfer 220*e2c79ab7SJonathan Neuschäfer/* Bits 7-4 Horizontal display size, mm, 4 msbits 221*e2c79ab7SJonathan Neuschäfer Bits 3-0 Vertical display size, mm, 4 msbits */ 222*e2c79ab7SJonathan Neuschäferdsp_size_mbsb: .byte msbs2(xsize,ysize) 223*e2c79ab7SJonathan Neuschäfer 224*e2c79ab7SJonathan Neuschäfer/* Horizontal border pixels (each side; total is twice this) */ 225*e2c79ab7SJonathan Neuschäferx_border: .byte 0 226*e2c79ab7SJonathan Neuschäfer/* Vertical border lines (each side; total is twice this) */ 227*e2c79ab7SJonathan Neuschäfery_border: .byte 0 228*e2c79ab7SJonathan Neuschäfer 229*e2c79ab7SJonathan Neuschäfer/* Bit 7 Interlaced 230*e2c79ab7SJonathan Neuschäfer Bits 6-5 Stereo mode: 00=No stereo; other values depend on bit 0: 231*e2c79ab7SJonathan Neuschäfer Bit 0=0: 01=Field sequential, sync=1 during right; 10=similar, 232*e2c79ab7SJonathan Neuschäfer sync=1 during left; 11=4-way interleaved stereo 233*e2c79ab7SJonathan Neuschäfer Bit 0=1 2-way interleaved stereo: 01=Right image on even lines; 234*e2c79ab7SJonathan Neuschäfer 10=Left image on even lines; 11=side-by-side 235*e2c79ab7SJonathan Neuschäfer Bits 4-3 Sync type: 00=Analog composite; 01=Bipolar analog composite; 236*e2c79ab7SJonathan Neuschäfer 10=Digital composite (on HSync); 11=Digital separate 237*e2c79ab7SJonathan Neuschäfer Bit 2 If digital separate: Vertical sync polarity (1=positive) 238*e2c79ab7SJonathan Neuschäfer Other types: VSync serrated (HSync during VSync) 239*e2c79ab7SJonathan Neuschäfer Bit 1 If analog sync: Sync on all 3 RGB lines (else green only) 240*e2c79ab7SJonathan Neuschäfer Digital: HSync polarity (1=positive) 241*e2c79ab7SJonathan Neuschäfer Bit 0 2-way line-interleaved stereo, if bits 4-3 are not 00. */ 242*e2c79ab7SJonathan Neuschäferfeatures: .byte 0x18+(VSYNC_POL<<2)+(HSYNC_POL<<1) 243*e2c79ab7SJonathan Neuschäfer 244*e2c79ab7SJonathan Neuschäferdescriptor2: .byte 0,0 /* Not a detailed timing descriptor */ 245*e2c79ab7SJonathan Neuschäfer .byte 0 /* Must be zero */ 246*e2c79ab7SJonathan Neuschäfer .byte 0xff /* Descriptor is monitor serial number (text) */ 247*e2c79ab7SJonathan Neuschäfer .byte 0 /* Must be zero */ 248*e2c79ab7SJonathan Neuschäferstart1: .ascii "Linux #0" 249*e2c79ab7SJonathan Neuschäferend1: .byte 0x0a /* End marker */ 250*e2c79ab7SJonathan Neuschäfer .fill 12-(end1-start1), 1, 0x20 /* Padded spaces */ 251*e2c79ab7SJonathan Neuschäferdescriptor3: .byte 0,0 /* Not a detailed timing descriptor */ 252*e2c79ab7SJonathan Neuschäfer .byte 0 /* Must be zero */ 253*e2c79ab7SJonathan Neuschäfer .byte 0xfd /* Descriptor is monitor range limits */ 254*e2c79ab7SJonathan Neuschäfer .byte 0 /* Must be zero */ 255*e2c79ab7SJonathan Neuschäferstart2: .byte VFREQ-1 /* Minimum vertical field rate (1-255 Hz) */ 256*e2c79ab7SJonathan Neuschäfer .byte VFREQ+1 /* Maximum vertical field rate (1-255 Hz) */ 257*e2c79ab7SJonathan Neuschäfer .byte (CLOCK/(XPIX+XBLANK))-1 /* Minimum horizontal line rate 258*e2c79ab7SJonathan Neuschäfer (1-255 kHz) */ 259*e2c79ab7SJonathan Neuschäfer .byte (CLOCK/(XPIX+XBLANK))+1 /* Maximum horizontal line rate 260*e2c79ab7SJonathan Neuschäfer (1-255 kHz) */ 261*e2c79ab7SJonathan Neuschäfer .byte (CLOCK/10000)+1 /* Maximum pixel clock rate, rounded up 262*e2c79ab7SJonathan Neuschäfer to 10 MHz multiple (10-2550 MHz) */ 263*e2c79ab7SJonathan Neuschäfer .byte 0 /* No extended timing information type */ 264*e2c79ab7SJonathan Neuschäferend2: .byte 0x0a /* End marker */ 265*e2c79ab7SJonathan Neuschäfer .fill 12-(end2-start2), 1, 0x20 /* Padded spaces */ 266*e2c79ab7SJonathan Neuschäferdescriptor4: .byte 0,0 /* Not a detailed timing descriptor */ 267*e2c79ab7SJonathan Neuschäfer .byte 0 /* Must be zero */ 268*e2c79ab7SJonathan Neuschäfer .byte 0xfc /* Descriptor is text */ 269*e2c79ab7SJonathan Neuschäfer .byte 0 /* Must be zero */ 270*e2c79ab7SJonathan Neuschäferstart3: .ascii TIMING_NAME 271*e2c79ab7SJonathan Neuschäferend3: .byte 0x0a /* End marker */ 272*e2c79ab7SJonathan Neuschäfer .fill 12-(end3-start3), 1, 0x20 /* Padded spaces */ 273*e2c79ab7SJonathan Neuschäferextensions: .byte 0 /* Number of extensions to follow */ 274*e2c79ab7SJonathan Neuschäferchecksum: .byte CRC /* Sum of all bytes must be 0 */ 275