summaryrefslogtreecommitdiff
path: root/src/typedef.h
blob: 3bd965b6cad5297a42192af383323d9a9771af73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
/* 
 * Copyright (C) 2009 RDC Semiconductor Co.,Ltd
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * For technical support : 
 *     <jason.lin@rdc.com.tw>
 */


#define X_INFO 0
#define X_WARNING 1
#define X_ERROR 2

/* Verberse level define */
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;

typedef enum _bool
{
    FALSE = 0,
    TRUE = 1
}bool;

#ifndef ErrorLevel
    #define ErrorLevel             0    /* Report Error message */
#endif

#ifndef DefaultLevel
    #define DefaultLevel           4    /* Driver entry function */
#endif

#ifndef InfoLevel
    #define InfoLevel              5    /* Report information    */
#endif

#ifndef InternalLevel
    #define InternalLevel          6    /* Driver interanl function entry     */
#endif

/* Related IO offset */
#define ATTR_ADDR                   0X0040
#define ATTR_DATA_WRITE             0X0040
#define ATTR_DATA_READ              0X0041
#define MISC_WRITE                  0X0042
#define INPUT_STATUS_0_READ         0X0042
#define RIO_VGA_ENABLE              0X0043
#define SEQ_INDEX                   0X0044
#define SEQ_DATA                    0X0045
#define PEL_MASK                    0X0046
#define DAC_INDEX_READ              0X0047
#define FEAT_CTRL_READ              0X004A
#define MISC_READ                   0X004C
#define GRAPH_INDEX                 0X004E
#define GRAPH_DATA                  0X004F

#define MONO_CRTC_INDEX             0X0034
#define MONO_CRTC_DATA              0X0035
#define MONO_INPUT_STATUS1_READ     0X003A

#define COLOR_CRTC_INDEX            0X0054
#define COLOR_CRTC_DATA             0X0055
#define COLOR_INPUT_STATUS1_READ    0X005A


#define VBIOSVerNum                 0x00000


/* Scratch registers */

#define SCRATCH_01                               0x81 * 0x100
#define     IDX_SCRATCH_01                       SCRATCH_01 + 0xFF
#define     IDX_IGA1_DEV_ID                      SCRATCH_01 + 0x0F
#define     IDX_IGA2_DEV_ID                      SCRATCH_01 + 0xF0

#define SCRATCH_02                               0x82 * 0x100
#define     IDX_SCRATCH_02                       SCRATCH_02 + 0xFF
#define     IDX_DISPLAY1_CHANGED                 SCRATCH_02 + 0x01
#define     IDX_DISPLAY2_CHANGED                 SCRATCH_02 + 0x02
#define     IDX_PWR_SEQ_ON                       SCRATCH_02 + 0x04

#define SCRATCH_03                               0x83 * 0x100
#define     IDX_SCRATCH_03                       SCRATCH_03 + 0xFF
#define     IDX_IGA2_VESA_MODE                   SCRATCH_03 + 0xFF

#define SCRATCH_04                               0x84 * 0x100
#define     IDX_SCRATCH_04                       SCRATCH_04 + 0xFF
#define     IDX_IGA2_VESA_MODE_OVERFLOW          SCRATCH_04 + 0x01
#define     IDX_IGA2_RRATE_ID                    SCRATCH_04 + 0xFE

#define SCRATCH_05                               0x85 * 0x100
#define     IDX_SCRATCH_05                       SCRATCH_05 + 0xFF
#define     IDX_TV1_TYPE                         SCRATCH_05 + 0x0F
#define     IDX_TV1_CONNECTION_TYPE              SCRATCH_05 + 0x30

#define SCRATCH_06                               0x86 * 0x100
#define     IDX_SCRATCH_06                       SCRATCH_06 + 0xFF
#define     IDX_TV2_TYPE                         SCRATCH_06 + 0x0F
#define     IDX_TV2_CONNECTION_TYPE              SCRATCH_06 + 0x30

#define SCRATCH_07                               0x87 * 0x100
#define     IDX_SCRATCH_07                       SCRATCH_07 + 0xFF
#define     IDX_HDTV1_TYPE                       SCRATCH_07 + 0x07
#define     IDX_HDTV1_CONNECTION_TYPE            SCRATCH_07 + 0x08
#define     IDX_HDTV2_TYPE                       SCRATCH_07 + 0x70
#define     IDX_HDTV2_CONNECTION_TYPE            SCRATCH_07 + 0x80

#define SCRATCH_08                               0x88 * 0x100
#define     IDX_SCRATCH_08                       SCRATCH_08 + 0xFF
#define     IDX_HDMI1_TYPE                       SCRATCH_08 + 0x0F
#define     IDX_HDMI2_TYPE                       SCRATCH_08 + 0xF0

#define SCRATCH_09                               0x89 * 0x100
#define     IDX_SCRATCH_09                       SCRATCH_09 + 0xFF
#define     IDX_HDMI1_CONNECTION_TYPE            SCRATCH_09 + 0x03
#define     IDX_HDMI2_CONNECTION_TYPE            SCRATCH_09 + 0x30

#define SCRATCH_10                               0x8A * 0x100
#define     IDX_SCRATCH_10                       SCRATCH_10 + 0xFF
#define     IDX_LCD_H_SIZE_OVERFLOW              SCRATCH_10 + 0xF0
#define     IDX_LCD_V_SIZE_OVERFLOW              SCRATCH_10 + 0x0F

#define SCRATCH_11                               0x8B * 0x100
#define     IDX_SCRATCH_11                       SCRATCH_11 + 0xFF
#define     IDX_LCD_H_SIZE                       SCRATCH_11 + 0xFF

#define SCRATCH_12                               0x8C * 0x100
#define     IDX_SCRATCH_12                       SCRATCH_12 + 0xFF
#define     IDX_LCD_V_SIZE                       SCRATCH_12 + 0xFF

#define SCRATCH_13                               0x8D * 0x100
#define     IDX_SCRATCH_13                       SCRATCH_13 + 0xFF
#define     IDX_IGA1_VESA_MODE_OVERFLOW          SCRATCH_13 + 0x01
#define     IDX_IGA1_RRATE_ID                    SCRATCH_13 + 0xFE

#define SCRATCH_14                               0x8E * 0x100
#define     IDX_SCRATCH_14                       SCRATCH_14 + 0xFF
#define     IDX_IGA1_VGA_MODE                    SCRATCH_14 + 0xFF
#define     IDX_IGA1_VESA_MODE                   SCRATCH_14 + 0xFF

#define SCRATCH_15                               0x8F * 0x100
#define     IDX_SCRATCH_15                       SCRATCH_15 + 0xFF
#define     IDX_NEW_IGA1_DEV_ID                  SCRATCH_15 + 0x0F
#define     IDX_NEW_IGA2_DEV_ID                  SCRATCH_15 + 0xF0

#define SCRATCH_16                               0x90 * 0x100
#define     IDX_SCRATCH_16                       SCRATCH_16 + 0xFF
#define     IDX_KEEP_DISPLAY_OFF                 SCRATCH_16 + 0x80
#define     IDX_DPMS_STATE                       SCRATCH_16 + 0x40
#define     IDX_LINEAR_MODE                      SCRATCH_16 + 0x20

#define SCRATCH_17                               0x91 * 0x100
#define     IDX_SCRATCH_17                       SCRATCH_17 + 0xFF
#define     IDX_LCD2_H_SIZE_OVERFLOW             SCRATCH_10 + 0xF0
#define     IDX_LCD2_V_SIZE_OVERFLOW             SCRATCH_10 + 0x0F

#define SCRATCH_18                               0x92 * 0x100
#define     IDX_SCRATCH_18                       SCRATCH_18 + 0xFF
#define     IDX_LCD2_H_SIZE                      SCRATCH_18 + 0xFF

#define SCRATCH_19                               0x93 * 0x100
#define     IDX_SCRATCH_19                       SCRATCH_19 + 0xFF
#define     IDX_LCD2_V_SIZE                      SCRATCH_19 + 0xFF

#define SCRATCH_20                               0x94 * 0x100
#define     IDX_SCRATCH_20                       SCRATCH_20 + 0xFF
#define     IDX_LVDS1_TX_ID                      SCRATCH_20 + 0xF0
#define     IDX_LVDS2_TX_ID                      SCRATCH_20 + 0x0F

#define SCRATCH_21                               0x95 * 0x100
#define     IDX_SCRATCH_21                       SCRATCH_21 + 0xFF
#define     IDX_TMDS1_TX_ID                      SCRATCH_21 + 0xF0
#define     IDX_TMDS2_TX_ID                      SCRATCH_21 + 0x0F

#define SCRATCH_22                               0x96 * 0x100
#define     IDX_SCRATCH_22                       SCRATCH_22 + 0xFF
#define     IDX_TV1_ENCODER_ID                   SCRATCH_22 + 0xF0
#define     IDX_TV2_ENCODER_ID                   SCRATCH_22 + 0x0F

#define SCRATCH_23                               0x97 * 0x100
#define     IDX_SCRATCH_23                       SCRATCH_23 + 0xFF
#define     IDX_LCD1_TABLE_INDEX                 SCRATCH_23 + 0xF0
#define     IDX_LCD2_TABLE_INDEX                 SCRATCH_23 + 0x0F

/* For Bit mask using */
#define BIT0                        0x00000001
#define BIT1                        0x00000002
#define BIT2                        0x00000004
#define BIT3                        0x00000008
#define BIT4                        0x00000010
#define BIT5                        0x00000020
#define BIT6                        0x00000040
#define BIT7                        0x00000080
#define BIT8                        0x00000100
#define BIT9                        0x00000200
#define BIT10                       0x00000400
#define BIT11                       0x00000800
#define BIT12                       0x00001000
#define BIT13                       0x00002000
#define BIT14                       0x00004000
#define BIT15                       0x00008000
#define BIT16                       0x00010000
#define BIT17                       0x00020000
#define BIT18                       0x00040000
#define BIT19                       0x00080000
#define BIT20                       0x00100000
#define BIT21                       0x00200000
#define BIT22                       0x00400000
#define BIT23                       0x00800000
#define BIT24                       0x01000000
#define BIT25                       0x02000000
#define BIT26                       0x04000000
#define BIT27                       0x08000000
#define BIT28                       0x10000000
#define BIT29                       0x20000000
#define BIT30                       0x40000000
#define BIT31                       0x80000000

/* definition of output ports */
#define CRT_PORT    0
#define DVP1        1
#define DVP2        2
#define DVP12       3

/* definition of RRATE_TABLE.RRate_ID */
#define RR60        0
#define RR50I       1
#define RR59_94I    2
#define RR50        3
#define RR56        4
#define RR59_94     5
#define RR24        6
#define RR70        7
#define RR75        8
#define RR80        9
#define RR85        10
#define RR90        11
#define RR100       12
#define RR120       13
#define RR72        14
#define RR65        15

/* Output Device Index */
#define LCD_ID      1
#define DVI_ID      2
#define CRT_ID      3
#define HDMI_ID     4
#define HDTV_ID     5
#define TV_ID       6
#define LCD2_ID     8
#define DVI2_ID     9
#define CRT2_ID     10
#define HDMI2_ID    11
#define HDTV2_ID    12
#define TV2_ID      13

/* Output Device Combination Bit */
#define B_LCD       BIT0
#define B_DVI       BIT1
#define B_CRT       BIT2
#define B_HDMI      BIT3
#define B_HDTV      BIT4
#define B_TV        BIT5
#define B_LCD2      BIT7
#define B_DVI2      BIT8
#define B_CRT2      BIT9
#define B_HDMI2     BIT10
#define B_HDTV2     BIT11
#define B_TV2       BIT12



/* clock definition */
#define PLLReferenceClock           14318
#define MaxFCKVCO9003A              810000
#define MinFCKVCO9003A              350000
#define MaxFCKVCO9001A              1600000
#define MinFCKVCO9001A              833000

/* DPMS State */
#define DPMS__ON                     0
#define DPMS__STANDBY                1
#define DPMS__SUSPEND                2
#define DPMS__OFF                    3


/* definitions only for PANEL_TABLE.Attribute */
#define SEQ         BIT1                /* sequential output format */
#define TTL         BIT6                /* TTL LCD */

/* _PORT_CONFIG.TX_Enc_ID */
#define NONE        0x00        /* no TX/encoder */
#define TX_VT1636   0x01
#define TX_SIL1162  0x02
#define TX_HW       0x03        /* hardwired TX */
#define ENC_VT1625  0x04
#define DSTN        0x05        /* DSTN */

/* _PORT_CONFIG.Attribute */
#define Dev_SUPPORT BIT0        /* Device Support */
#define TX_DIT      BIT1
#define TX_PS       BIT2
#define DSTN_COLOR  BIT3        /* DSTN color */
#define DSTN_MONO   0           /* DSTN mono */
#define DSTN_6X4    BIT4        /* DSTN 640x480 */
#define DSTN_3X2    0           /* DSTN 320x240 */
#define TX_MSB      BIT5

/* definitions of display path */
#define DISP1       1
#define DISP2       2

/* mode numbers */

#define MODE_640x480x8      0x101
#define MODE_800x600x8      0x103
#define MODE_1024x768x8     0x105
#define MODE_1280x1024x8    0x107
#define MODE_640x480x16     0x111
#define MODE_640x480x32     0x112
#define MODE_800x600x16     0x114
#define MODE_800x600x32     0x115
#define MODE_1024x768x16    0x117
#define MODE_1024x768x32    0x118
#define MODE_1280x1024x16   0x11A
#define MODE_1280x1024x32   0x11B

#define MODE_1600x1200x8    0x120
#define MODE_1600x1200x16   0x121
#define MODE_1600x1200x32   0x122

#define MODE_320x240x8      0x123
#define MODE_320x240x16     0x124
#define MODE_320x240x32     0x125

#define MODE_720x480x8      0x126
#define MODE_720x480x16     0x127
#define MODE_720x480x32     0x128

#define MODE_1360x768x8     0x129
#define MODE_1360x768x16    0x12A
#define MODE_1360x768x32    0x12B

#define MODE_848x480x8      0x12C
#define MODE_848x480x16     0x12D
#define MODE_848x480x32     0x12E

#define MODE_1440x900x8     0x12F
#define MODE_1440x900x16    0x130
#define MODE_1440x900x32    0x131

#define MODE_1152x864x8     0x132
#define MODE_1152x864x16    0x133
#define MODE_1152x864x32    0x134

#define MODE_1280x960x8     0x135
#define MODE_1280x960x16    0x136
#define MODE_1280x960x32    0x137

#define MODE_1400x1050x8    0x138
#define MODE_1400x1050x16   0x139
#define MODE_1400x1050x32   0x13A

#define MODE_800x480x8      0x13B
#define MODE_800x480x16     0x13C
#define MODE_800x480x32     0x13D

#define MODE_1024x600x8     0x13E
#define MODE_1024x600x16    0x13F
#define MODE_1024x600x32    0x140

#define MODE_USR_DEF1x8     0x1F1
#define MODE_USR_DEF1x16    0x1F2
#define MODE_USR_DEF1x32    0x1F3

#define MODE_USR_DEF2x8     0x1F4
#define MODE_USR_DEF2x16    0x1F5
#define MODE_USR_DEF2x32    0x1F6


typedef struct _RRATE_TABLE RRATE_TABLE;
typedef struct _MODE_INFO MODE_INFO;
typedef struct _PANEL_TABLE PANEL_TABLE;
typedef struct _PORT_CONFIG PORT_CONFIG;
typedef struct _VESA_TABLE VESA_TABLE;

struct _RRATE_TABLE {
    ULONG   Clock;          /* in khz */
    UCHAR   RRate_ID;
    USHORT  Attribute;
    USHORT  H_Blank_Time;
    USHORT  H_Sync_Start;
    USHORT  H_Sync_Time;
    USHORT  V_Blank_Time;
    USHORT  V_Sync_Start;
    USHORT  V_Sync_Time;
}__attribute__((packed));;

struct _MODE_INFO{
    USHORT  H_Size;
    USHORT  V_Size;
    USHORT  Mode_ID_8bpp;
    USHORT  Mode_ID_16bpp;
    USHORT  Mode_ID_32bpp;
    UCHAR   RRTableCount;
}__attribute__((packed));;

struct _PANEL_TABLE {
    USHORT    TD0;
    USHORT    TD1;
    USHORT    TD2;
    USHORT    TD3;
    USHORT    TD5;
    USHORT    TD6;
    USHORT    TD7;
    UCHAR   PWM_Clock;
    USHORT  Reserved1;
    USHORT  Reserved2;
    RRATE_TABLE Timing;
}__attribute__((packed));;

struct _VESA_TABLE {
    MODE_INFO   ModeInfo;
    RRATE_TABLE RRateTable;
}__attribute__((packed));;

#if 0
typedef struct _LCD_TABLE {
    MODE_INFO   ModeInfo;
    PANEL_TABLE *pPanelTable;
} LCD_TABLE;
#endif

typedef struct _REG_OP {
    UCHAR    RegGroup;
    UCHAR    RegMask;
    UCHAR    RegIndex;
    UCHAR    RegShiftBit;
} REG_OP;

#if 0
typedef struct _REG_PACKAGE {
    UCHAR    RegGroup;
    UCHAR    RegIndex;
    UCHAR    RegValue;
    UCHAR    RegMask;
} REG_PACKAGE;
#else
/* definitions for SerialLoadTable() */
#define    CR       0x00
#define    SR       0x01
#define    GR       0x02
#define    I2C      0x03
#define    NR       0xFF
#define    BITS     BIT7
#endif


typedef struct _PLL_Info {
    UCHAR NS;
    UCHAR MS;
    UCHAR RS;
}PLL_Info;

struct _PORT_CONFIG
{
    UCHAR        DevID;
    UCHAR        PortID;
    UCHAR        TX_Enc_ID;
    UCHAR        TX_I2C_Port;
    UCHAR        TX_I2C_Addr;
    UCHAR        Attribute;
}__attribute__((packed));;

/* PCI Data Structure */
#define OFF_VID             0
#define OFF_DID             2
#define OFF_PTR_VPD         4
#define OFF_PCI_DS_LEN      6
#define OFF_PCI_DS_REV      8
#define OFF_CLASS_CODE1     9
#define OFF_CLASS_CODE2     10
#define OFF_CLASS_CODE3     11
#define OFF_SIZE_VBIOS      12
#define OFF_ROM_CODE_REV    14
#define OFF_PC_AT_COMP      16
#define OFF_LII             17
#define OFF_RESERVED        18

/* Definition of PCI Data Structure.RESERVED */