Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1029 serge 1
/*
2
 * Copyright 2007, 2008  Luc Verhaegen 
3
 * Copyright 2007, 2008  Matthias Hopf 
4
 * Copyright 2007, 2008  Egbert Eich   
5
 * Copyright 2007, 2008  Advanced Micro Devices, Inc.
6
 *
7
 * Permission is hereby granted, free of charge, to any person obtaining a
8
 * copy of this software and associated documentation files (the "Software"),
9
 * to deal in the Software without restriction, including without limitation
10
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11
 * and/or sell copies of the Software, and to permit persons to whom the
12
 * Software is furnished to do so, subject to the following conditions:
13
 *
14
 * The above copyright notice and this permission notice shall be included in
15
 * all copies or substantial portions of the Software.
16
 *
17
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20
 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
21
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
 * OTHER DEALINGS IN THE SOFTWARE.
24
 */
25
#ifndef _RHD_REGS_H
26
# define _RHD_REGS_H
27
 
28
enum {
29
    CLOCK_CNTL_INDEX      =       0x8,  /* (RW) */
30
    CLOCK_CNTL_DATA       =       0xC,  /* (RW) */
31
    BUS_CNTL		  =       0x4C, /* (RW) */
32
    MC_IND_INDEX	  =       0x70, /* (RW) */
33
    MC_IND_DATA           =       0x74, /* (RW) */
34
    CONFIG_CNTL		  =	  0xE0,
35
    /* RS690 ?? */
36
    RS60_MC_NB_MC_INDEX		  =	  0x78,
37
    RS60_MC_NB_MC_DATA		  =	  0x7C,
38
    RS69_MC_INDEX		  =	  0xE8,
39
    RS69_MC_DATA		  =	  0xEC,
40
    R5XX_CONFIG_MEMSIZE            = 0x00F8,
41
 
42
    HDP_FB_LOCATION       =	  0x0134,
43
 
44
    SEPROM_CNTL1	  =       0x1C0,  /* (RW) */
45
 
46
    AGP_BASE              =       0x0170,
47
 
48
    GPIOPAD_MASK          =       0x198,  /* (RW) */
49
    GPIOPAD_A		  =       0x19C,  /* (RW) */
50
    GPIOPAD_EN		  =       0x1A0,  /* (RW) */
51
    VIPH_CONTROL          =       0xC40,  /* (RW) */
52
 
53
    ROM_CNTL                       = 0x1600,
54
    GENERAL_PWRMGT                 = 0x0618,
55
    LOW_VID_LOWER_GPIO_CNTL        = 0x0724,
56
    MEDIUM_VID_LOWER_GPIO_CNTL     = 0x0720,
57
    HIGH_VID_LOWER_GPIO_CNTL       = 0x071C,
58
    CTXSW_VID_LOWER_GPIO_CNTL      = 0x0718,
59
    LOWER_GPIO_ENABLE              = 0x0710,
60
 
61
    /* VGA registers */
62
    VGA_RENDER_CONTROL             = 0x0300,
63
    VGA_MODE_CONTROL               = 0x0308,
64
    VGA_MEMORY_BASE_ADDRESS        = 0x0310,
65
    VGA_HDP_CONTROL                = 0x0328,
66
    D1VGA_CONTROL                  = 0x0330,
67
    D2VGA_CONTROL                  = 0x0338,
68
 
69
    EXT1_PPLL_REF_DIV_SRC          = 0x0400,
70
    EXT1_PPLL_REF_DIV              = 0x0404,
71
    EXT1_PPLL_UPDATE_LOCK          = 0x0408,
72
    EXT1_PPLL_UPDATE_CNTL          = 0x040C,
73
    EXT2_PPLL_REF_DIV_SRC          = 0x0410,
74
    EXT2_PPLL_REF_DIV              = 0x0414,
75
    EXT2_PPLL_UPDATE_LOCK          = 0x0418,
76
    EXT2_PPLL_UPDATE_CNTL          = 0x041C,
77
 
78
    EXT1_PPLL_FB_DIV               = 0x0430,
79
    EXT2_PPLL_FB_DIV               = 0x0434,
80
    EXT1_PPLL_POST_DIV_SRC         = 0x0438,
81
    EXT1_PPLL_POST_DIV             = 0x043C,
82
    EXT2_PPLL_POST_DIV_SRC         = 0x0440,
83
    EXT2_PPLL_POST_DIV             = 0x0444,
84
    EXT1_PPLL_CNTL                 = 0x0448,
85
    EXT2_PPLL_CNTL                 = 0x044C,
86
    P1PLL_CNTL                     = 0x0450,
87
    P2PLL_CNTL                     = 0x0454,
88
    P1PLL_INT_SS_CNTL              = 0x0458,
89
    P2PLL_INT_SS_CNTL              = 0x045C,
90
 
91
    P1PLL_DISP_CLK_CNTL            = 0x0468, /* rv620+ */
92
    P2PLL_DISP_CLK_CNTL            = 0x046C, /* rv620+ */
93
    EXT1_SYM_PPLL_POST_DIV         = 0x0470, /* rv620+ */
94
    EXT2_SYM_PPLL_POST_DIV         = 0x0474, /* rv620+ */
95
 
96
    PCLK_CRTC1_CNTL                = 0x0480,
97
    PCLK_CRTC2_CNTL                = 0x0484,
98
 
99
    /* these regs were reverse enginered,
100
     * so the chance is high that the naming is wrong
101
     * R6xx+ ??? */
102
    AUDIO_PLL1_MUL		   = 0x0514,
103
    AUDIO_PLL1_DIV		   = 0x0518,
104
    AUDIO_PLL2_MUL		   = 0x0524,
105
    AUDIO_PLL2_DIV		   = 0x0528,
106
    AUDIO_CLK_SRCSEL		   = 0x0534,
107
 
108
    DCCG_DISP_CLK_SRCSEL           = 0x0538, /* rv620+ */
109
 
110
    SRBM_STATUS                    = 0x0E50,
111
 
112
    AGP_STATUS                     = 0x0F5C,
113
 
114
    R7XX_MC_VM_FB_LOCATION	   = 0x2024,
115
 
116
    R6XX_MC_VM_FB_LOCATION	   = 0x2180,
117
    R6XX_HDP_NONSURFACE_BASE       = 0x2C04,
118
    R6XX_CONFIG_MEMSIZE            = 0x5428,
119
    R6XX_CONFIG_FB_BASE            = 0x542C, /* AKA CONFIG_F0_BASE */
120
    /* PCI config space */
121
    PCI_CONFIG_SPACE_BASE          = 0x5000,
122
    PCI_CAPABILITIES_PTR           = 0x5034,
123
 
124
    /* CRTC1 registers */
125
    D1CRTC_H_TOTAL                 = 0x6000,
126
    D1CRTC_H_BLANK_START_END       = 0x6004,
127
    D1CRTC_H_SYNC_A                = 0x6008,
128
    D1CRTC_H_SYNC_A_CNTL           = 0x600C,
129
    D1CRTC_H_SYNC_B                = 0x6010,
130
    D1CRTC_H_SYNC_B_CNTL           = 0x6014,
131
 
132
    D1CRTC_V_TOTAL                 = 0x6020,
133
    D1CRTC_V_BLANK_START_END       = 0x6024,
134
    D1CRTC_V_SYNC_A                = 0x6028,
135
    D1CRTC_V_SYNC_A_CNTL           = 0x602C,
136
    D1CRTC_V_SYNC_B                = 0x6030,
137
    D1CRTC_V_SYNC_B_CNTL           = 0x6034,
138
 
139
    D1CRTC_CONTROL                 = 0x6080,
140
    D1CRTC_BLANK_CONTROL           = 0x6084,
141
    D1CRTC_INTERLACE_CONTROL	   = 0x6088,
142
    D1CRTC_BLACK_COLOR             = 0x6098,
143
    D1CRTC_STATUS                  = 0x609C,
144
    D1CRTC_COUNT_CONTROL           = 0x60B4,
145
 
146
    /* D1GRPH registers */
147
    D1GRPH_ENABLE                  = 0x6100,
148
    D1GRPH_CONTROL                 = 0x6104,
149
    D1GRPH_LUT_SEL                 = 0x6108,
150
    D1GRPH_SWAP_CNTL               = 0x610C,
151
    D1GRPH_PRIMARY_SURFACE_ADDRESS = 0x6110,
152
    D1GRPH_SECONDARY_SURFACE_ADDRESS = 0x6118,
153
    D1GRPH_PITCH                   = 0x6120,
154
    D1GRPH_SURFACE_OFFSET_X        = 0x6124,
155
    D1GRPH_SURFACE_OFFSET_Y        = 0x6128,
156
    D1GRPH_X_START                 = 0x612C,
157
    D1GRPH_Y_START                 = 0x6130,
158
    D1GRPH_X_END                   = 0x6134,
159
    D1GRPH_Y_END                   = 0x6138,
160
    D1GRPH_UPDATE                  = 0x6144,
161
 
162
    /* LUT */
163
    DC_LUT_RW_SELECT               = 0x6480,
164
    DC_LUT_RW_MODE                 = 0x6484,
165
    DC_LUT_RW_INDEX                = 0x6488,
166
    DC_LUT_SEQ_COLOR               = 0x648C,
167
    DC_LUT_PWL_DATA                = 0x6490,
168
    DC_LUT_30_COLOR                = 0x6494,
169
    DC_LUT_READ_PIPE_SELECT        = 0x6498,
170
    DC_LUT_WRITE_EN_MASK           = 0x649C,
171
    DC_LUT_AUTOFILL                = 0x64A0,
172
 
173
    /* LUTA */
174
    DC_LUTA_CONTROL                = 0x64C0,
175
    DC_LUTA_BLACK_OFFSET_BLUE      = 0x64C4,
176
    DC_LUTA_BLACK_OFFSET_GREEN     = 0x64C8,
177
    DC_LUTA_BLACK_OFFSET_RED       = 0x64CC,
178
    DC_LUTA_WHITE_OFFSET_BLUE      = 0x64D0,
179
    DC_LUTA_WHITE_OFFSET_GREEN     = 0x64D4,
180
    DC_LUTA_WHITE_OFFSET_RED       = 0x64D8,
181
 
182
    /* D1CUR */
183
    D1CUR_CONTROL                  = 0x6400,
184
    D1CUR_SURFACE_ADDRESS          = 0x6408,
185
    D1CUR_SIZE                     = 0x6410,
186
    D1CUR_POSITION                 = 0x6414,
187
    D1CUR_HOT_SPOT                 = 0x6418,
188
    D1CUR_UPDATE                   = 0x6424,
189
 
190
    /* D1MODE */
191
    D1MODE_DESKTOP_HEIGHT          = 0x652C,
192
    D1MODE_VIEWPORT_START          = 0x6580,
193
    D1MODE_VIEWPORT_SIZE           = 0x6584,
194
    D1MODE_EXT_OVERSCAN_LEFT_RIGHT = 0x6588,
195
    D1MODE_EXT_OVERSCAN_TOP_BOTTOM = 0x658C,
196
    D1MODE_DATA_FORMAT             = 0x6528,
197
 
198
    /* D1SCL */
199
    D1SCL_ENABLE                   = 0x6590,
200
    D1SCL_TAP_CONTROL              = 0x6594,
201
    D1MODE_CENTER                  = 0x659C, /* guess */
202
    D1SCL_HVSCALE                  = 0x65A4, /* guess */
203
    D1SCL_HFILTER                  = 0x65B0, /* guess */
204
    D1SCL_VFILTER                  = 0x65C0, /* guess */
205
    D1SCL_UPDATE                   = 0x65CC,
206
    D1SCL_DITHER                   = 0x65D4, /* guess */
207
    D1SCL_FLIP_CONTROL             = 0x65D8, /* guess */
208
 
209
    /* CRTC2 registers */
210
    D2CRTC_H_TOTAL                 = 0x6800,
211
    D2CRTC_H_BLANK_START_END       = 0x6804,
212
    D2CRTC_H_SYNC_A                = 0x6808,
213
    D2CRTC_H_SYNC_A_CNTL           = 0x680C,
214
    D2CRTC_H_SYNC_B                = 0x6810,
215
    D2CRTC_H_SYNC_B_CNTL           = 0x6814,
216
 
217
    D2CRTC_V_TOTAL                 = 0x6820,
218
    D2CRTC_V_BLANK_START_END       = 0x6824,
219
    D2CRTC_V_SYNC_A                = 0x6828,
220
    D2CRTC_V_SYNC_A_CNTL           = 0x682C,
221
    D2CRTC_V_SYNC_B                = 0x6830,
222
    D2CRTC_V_SYNC_B_CNTL           = 0x6834,
223
 
224
    D2CRTC_CONTROL                 = 0x6880,
225
    D2CRTC_BLANK_CONTROL           = 0x6884,
226
    D2CRTC_BLACK_COLOR             = 0x6898,
227
    D2CRTC_INTERLACE_CONTROL       = 0x6888,
228
    D2CRTC_STATUS                  = 0x689C,
229
    D2CRTC_COUNT_CONTROL           = 0x68B4,
230
 
231
    /* D2GRPH registers */
232
    D2GRPH_ENABLE                  = 0x6900,
233
    D2GRPH_CONTROL                 = 0x6904,
234
    D2GRPH_LUT_SEL                 = 0x6908,
235
    D2GRPH_SWAP_CNTL               = 0x690C,
236
    D2GRPH_PRIMARY_SURFACE_ADDRESS = 0x6910,
237
    D2GRPH_PITCH                   = 0x6920,
238
    D2GRPH_SURFACE_OFFSET_X        = 0x6924,
239
    D2GRPH_SURFACE_OFFSET_Y        = 0x6928,
240
    D2GRPH_X_START                 = 0x692C,
241
    D2GRPH_Y_START                 = 0x6930,
242
    D2GRPH_X_END                   = 0x6934,
243
    D2GRPH_Y_END                   = 0x6938,
244
 
245
    /* LUTB */
246
    DC_LUTB_CONTROL                = 0x6CC0,
247
    DC_LUTB_BLACK_OFFSET_BLUE      = 0x6CC4,
248
    DC_LUTB_BLACK_OFFSET_GREEN     = 0x6CC8,
249
    DC_LUTB_BLACK_OFFSET_RED       = 0x6CCC,
250
    DC_LUTB_WHITE_OFFSET_BLUE      = 0x6CD0,
251
    DC_LUTB_WHITE_OFFSET_GREEN     = 0x6CD4,
252
    DC_LUTB_WHITE_OFFSET_RED       = 0x6CD8,
253
 
254
    /* D2MODE */
255
    D2MODE_DESKTOP_HEIGHT          = 0x6D2C,
256
    D2MODE_VIEWPORT_START          = 0x6D80,
257
    D2MODE_VIEWPORT_SIZE           = 0x6D84,
258
    D2MODE_EXT_OVERSCAN_LEFT_RIGHT = 0x6D88,
259
    D2MODE_EXT_OVERSCAN_TOP_BOTTOM = 0x6D8C,
260
    D2MODE_DATA_FORMAT             = 0x6D28,
261
 
262
    /* D2SCL */
263
    D2SCL_ENABLE                   = 0x6D90,
264
    D2SCL_TAP_CONTROL              = 0x6D94,
265
    D2MODE_CENTER                  = 0x6D9C, /* guess */
266
    D2SCL_HVSCALE                  = 0x6DA4, /* guess */
267
    D2SCL_HFILTER                  = 0x6DB0, /* guess */
268
    D2SCL_VFILTER                  = 0x6DC0, /* guess */
269
    D2SCL_UPDATE                   = 0x6DCC,
270
    D2SCL_DITHER                   = 0x6DD4, /* guess */
271
    D2SCL_FLIP_CONTROL             = 0x6DD8, /* guess */
272
 
273
    /* Audio, reverse enginered */
274
    AUDIO_ENABLE		   = 0x7300, /* RW */
275
    AUDIO_TIMING		   = 0x7344, /* RW */
276
    /* Audio params */
277
    AUDIO_VENDOR_ID                = 0x7380, /* RW */
278
    AUDIO_REVISION_ID              = 0x7384, /* RW */
279
    AUDIO_ROOT_NODE_COUNT          = 0x7388, /* RW */
280
    AUDIO_NID1_NODE_COUNT          = 0x738c, /* RW */
281
    AUDIO_NID1_TYPE                = 0x7390, /* RW */
282
    AUDIO_SUPPORTED_SIZE_RATE      = 0x7394, /* RW */
283
    AUDIO_SUPPORTED_CODEC          = 0x7398, /* RW */
284
    AUDIO_SUPPORTED_POWER_STATES   = 0x739c, /* RW */
285
    AUDIO_NID2_CAPS                = 0x73a0, /* RW */
286
    AUDIO_NID3_CAPS                = 0x73a4, /* RW */
287
    AUDIO_NID3_PIN_CAPS            = 0x73a8, /* RW */
288
    /* Audio conn list */
289
    AUDIO_CONN_LIST_LEN            = 0x73ac, /* RW */
290
    AUDIO_CONN_LIST                = 0x73b0, /* RW */
291
    /* Audio verbs */
292
    AUDIO_RATE_BPS_CHANNEL         = 0x73c0, /* RO */
293
    AUDIO_PLAYING                  = 0x73c4, /* RO */
294
    AUDIO_IMPLEMENTATION_ID        = 0x73c8, /* RW */
295
    AUDIO_CONFIG_DEFAULT           = 0x73cc, /* RW */
296
    AUDIO_PIN_SENSE                = 0x73d0, /* RW */
297
    AUDIO_PIN_WIDGET_CNTL          = 0x73d4, /* RO */
298
    AUDIO_STATUS_BITS              = 0x73d8, /* RO */
299
 
300
    /* HDMI */
301
    HDMI_TMDS			   = 0x7400,
302
    HDMI_LVTMA			   = 0x7700,
303
    HDMI_DIG			   = 0x7800,
304
 
305
    /* R500 DAC A */
306
    DACA_ENABLE                    = 0x7800,
307
    DACA_SOURCE_SELECT             = 0x7804,
308
    DACA_SYNC_TRISTATE_CONTROL     = 0x7820,
309
    DACA_SYNC_SELECT               = 0x7824,
310
    DACA_AUTODETECT_CONTROL        = 0x7828,
311
    DACA_AUTODETECT_INT_CONTROL    = 0x7838,
312
    DACA_FORCE_OUTPUT_CNTL         = 0x783C,
313
    DACA_FORCE_DATA                = 0x7840,
314
    DACA_POWERDOWN                 = 0x7850,
315
    DACA_CONTROL1                  = 0x7854,
316
    DACA_CONTROL2                  = 0x7858,
317
    DACA_COMPARATOR_ENABLE         = 0x785C,
318
    DACA_COMPARATOR_OUTPUT	   = 0x7860,
319
 
320
/* TMDSA */
321
    TMDSA_CNTL                     = 0x7880,
322
    TMDSA_SOURCE_SELECT            = 0x7884,
323
    TMDSA_COLOR_FORMAT             = 0x7888,
324
    TMDSA_FORCE_OUTPUT_CNTL        = 0x788C,
325
    TMDSA_BIT_DEPTH_CONTROL        = 0x7894,
326
    TMDSA_DCBALANCER_CONTROL       = 0x78D0,
327
    TMDSA_DATA_SYNCHRONIZATION_R500 = 0x78D8,
328
    TMDSA_DATA_SYNCHRONIZATION_R600 = 0x78DC,
329
    TMDSA_TRANSMITTER_ENABLE       = 0x7904,
330
    TMDSA_LOAD_DETECT              = 0x7908,
331
    TMDSA_MACRO_CONTROL            = 0x790C, /* r5x0 and r600: 3 for pll and 1 for TX */
332
    TMDSA_PLL_ADJUST               = 0x790C, /* rv6x0: pll only */
333
    TMDSA_TRANSMITTER_CONTROL      = 0x7910,
334
    TMDSA_TRANSMITTER_ADJUST       = 0x7920, /* rv6x0: TX part of macro control */
335
 
336
    /* DAC B */
337
    DACB_ENABLE                    = 0x7A00,
338
    DACB_SOURCE_SELECT             = 0x7A04,
339
    DACB_SYNC_TRISTATE_CONTROL     = 0x7A20,
340
    DACB_SYNC_SELECT               = 0x7A24,
341
    DACB_AUTODETECT_CONTROL        = 0x7A28,
342
    DACB_AUTODETECT_INT_CONTROL    = 0x7A38,
343
    DACB_FORCE_OUTPUT_CNTL         = 0x7A3C,
344
    DACB_FORCE_DATA                = 0x7A40,
345
    DACB_POWERDOWN                 = 0x7A50,
346
    DACB_CONTROL1                  = 0x7A54,
347
    DACB_CONTROL2                  = 0x7A58,
348
    DACB_COMPARATOR_ENABLE         = 0x7A5C,
349
    DACB_COMPARATOR_OUTPUT         = 0x7A60,
350
 
351
    /* LVTMA */
352
    LVTMA_CNTL                     = 0x7A80,
353
    LVTMA_SOURCE_SELECT            = 0x7A84,
354
    LVTMA_COLOR_FORMAT             = 0x7A88,
355
    LVTMA_FORCE_OUTPUT_CNTL        = 0x7A8C,
356
    LVTMA_BIT_DEPTH_CONTROL        = 0x7A94,
357
    LVTMA_DCBALANCER_CONTROL       = 0x7AD0,
358
 
359
    /* no longer shared between both r5xx and r6xx */
360
    LVTMA_R500_DATA_SYNCHRONIZATION = 0x7AD8,
361
    LVTMA_R500_PWRSEQ_REF_DIV       = 0x7AE4,
362
    LVTMA_R500_PWRSEQ_DELAY1        = 0x7AE8,
363
    LVTMA_R500_PWRSEQ_DELAY2        = 0x7AEC,
364
    LVTMA_R500_PWRSEQ_CNTL          = 0x7AF0,
365
    LVTMA_R500_PWRSEQ_STATE         = 0x7AF4,
366
    LVTMA_R500_BL_MOD_CNTL          = 0x7AF8,
367
    LVTMA_R500_LVDS_DATA_CNTL       = 0x7AFC,
368
    LVTMA_R500_MODE                 = 0x7B00,
369
    LVTMA_R500_TRANSMITTER_ENABLE   = 0x7B04,
370
    LVTMA_R500_MACRO_CONTROL        = 0x7B0C,
371
    LVTMA_R500_TRANSMITTER_CONTROL  = 0x7B10,
372
    LVTMA_R500_REG_TEST_OUTPUT      = 0x7B14,
373
 
374
    /* R600 adds an undocumented register at 0x7AD8,
375
     * shifting all subsequent registers by exactly one. */
376
    LVTMA_R600_DATA_SYNCHRONIZATION = 0x7ADC,
377
    LVTMA_R600_PWRSEQ_REF_DIV       = 0x7AE8,
378
    LVTMA_R600_PWRSEQ_DELAY1        = 0x7AEC,
379
    LVTMA_R600_PWRSEQ_DELAY2        = 0x7AF0,
380
    LVTMA_R600_PWRSEQ_CNTL          = 0x7AF4,
381
    LVTMA_R600_PWRSEQ_STATE         = 0x7AF8,
382
    LVTMA_R600_BL_MOD_CNTL          = 0x7AFC,
383
    LVTMA_R600_LVDS_DATA_CNTL       = 0x7B00,
384
    LVTMA_R600_MODE                 = 0x7B04,
385
    LVTMA_R600_TRANSMITTER_ENABLE   = 0x7B08,
386
    LVTMA_R600_MACRO_CONTROL        = 0x7B10,
387
    LVTMA_R600_TRANSMITTER_CONTROL  = 0x7B14,
388
    LVTMA_R600_REG_TEST_OUTPUT      = 0x7B18,
389
 
390
    LVTMA_TRANSMITTER_ADJUST        = 0x7B24, /* RV630 */
391
    LVTMA_PREEMPHASIS_CONTROL       = 0x7B28, /* RV630 */
392
 
393
    /* I2C in separate enum */
394
 
395
    /* HPD */
396
    DC_GPIO_HPD_MASK               = 0x7E90,
397
    DC_GPIO_HPD_A                  = 0x7E94,
398
    DC_GPIO_HPD_EN                 = 0x7E98,
399
    DC_GPIO_HPD_Y                  = 0x7E9C
400
};
401
 
402
enum CONFIG_CNTL_BITS {
403
    RS69_CFG_ATI_REV_ID_SHIFT      = 8,
404
    RS69_CFG_ATI_REV_ID_MASK       = 0xF << RS69_CFG_ATI_REV_ID_SHIFT
405
};
406
 
407
enum rv620Regs {
408
    /* DAC common */
409
    RV620_DAC_COMPARATOR_MISC       = 0x7da4,
410
    RV620_DAC_COMPARATOR_OUTPUT     = 0x7da8,
411
 
412
    /* RV620 DAC A */
413
    RV620_DACA_ENABLE              = 0x7000,
414
    RV620_DACA_SOURCE_SELECT       = 0x7004,
415
    RV620_DACA_SYNC_TRISTATE_CONTROL     = 0x7020,
416
    /* RV620_DACA_SYNC_SELECT         = 0x7024, ?? */
417
    RV620_DACA_AUTODETECT_CONTROL  = 0x7028,
418
    RV620_DACA_AUTODETECT_STATUS   = 0x7034,
419
    RV620_DACA_AUTODETECT_INT_CONTROL  = 0x7038,
420
    RV620_DACA_FORCE_OUTPUT_CNTL   = 0x703C,
421
    RV620_DACA_FORCE_DATA          = 0x7040,
422
    RV620_DACA_POWERDOWN           = 0x7050,
423
    /* RV620_DACA_CONTROL1         moved */
424
    RV620_DACA_CONTROL2            = 0x7058,
425
    RV620_DACA_COMPARATOR_ENABLE   = 0x705C,
426
    /* RV620_DACA_COMPARATOR_OUTPUT  changed */
427
    RV620_DACA_BGADJ_SRC           = 0x7ef0,
428
    RV620_DACA_MACRO_CNTL          = 0x7ef4,
429
    RV620_DACA_AUTO_CALIB_CONTROL  = 0x7ef8,
430
 
431
    /* DAC B */
432
    RV620_DACB_ENABLE              = 0x7100,
433
    RV620_DACB_SOURCE_SELECT       = 0x7104,
434
    RV620_DACB_SYNC_TRISTATE_CONTROL     = 0x7120,
435
    /* RV620_DACB_SYNC_SELECT         = 0x7124, ?? */
436
    RV620_DACB_AUTODETECT_CONTROL  = 0x7128,
437
    RV620_DACB_AUTODETECT_STATUS   = 0x7134,
438
    RV620_DACB_AUTODETECT_INT_CONTROL  = 0x7138,
439
    RV620_DACB_FORCE_OUTPUT_CNTL   = 0x713C,
440
    RV620_DACB_FORCE_DATA          = 0x7140,
441
    RV620_DACB_POWERDOWN           = 0x7150,
442
    /* RV620_DACB_CONTROL1         moved */
443
    RV620_DACB_CONTROL2            = 0x7158,
444
    RV620_DACB_COMPARATOR_ENABLE   = 0x715C,
445
    RV620_DACB_BGADJ_SRC           = 0x7ef0,
446
    RV620_DACB_MACRO_CNTL          = 0x7ff4,
447
    RV620_DACB_AUTO_CALIB_CONTROL  = 0x7ef8,
448
    /* DIG1 */
449
    RV620_DIG1_CNTL		   = 0x75A0,
450
    RV620_DIG1_CLOCK_PATTERN	   = 0x75AC,
451
    RV620_LVDS1_DATA_CNTL	   = 0x75BC,
452
    RV620_TMDS1_CNTL		   = 0x75C0,
453
    /* DIG2 */
454
    RV620_DIG2_CNTL		   = 0x79A0,
455
    RV620_DIG2_CLOCK_PATTERN	   = 0x79AC,
456
    RV620_LVDS2_DATA_CNTL	   = 0x79BC,
457
    RV620_TMDS2_CNTL		   = 0x79C0,
458
 
459
    /* RV62x I2C */
460
    RV62_GENERIC_I2C_CONTROL         =       0x7d80,  /* (RW) */
461
    RV62_GENERIC_I2C_INTERRUPT_CONTROL       =       0x7d84,  /* (RW) */
462
    RV62_GENERIC_I2C_STATUS  =       0x7d88,  /* (RW) */
463
    RV62_GENERIC_I2C_SPEED   =       0x7d8c,  /* (RW) */
464
    RV62_GENERIC_I2C_SETUP   =       0x7d90,  /* (RW) */
465
    RV62_GENERIC_I2C_TRANSACTION     =       0x7d94,  /* (RW) */
466
    RV62_GENERIC_I2C_DATA    =       0x7d98,  /* (RW) */
467
    RV62_GENERIC_I2C_PIN_SELECTION   =       0x7d9c,  /* (RW) */
468
    RV62_DC_GPIO_DDC4_MASK   =       0x7e20,  /* (RW) */
469
    RV62_DC_GPIO_DDC1_MASK   =       0x7e40,  /* (RW) */
470
    RV62_DC_GPIO_DDC2_MASK   =       0x7e50,  /* (RW) */
471
    RV62_DC_GPIO_DDC3_MASK   =       0x7e60,  /* (RW) */
472
 
473
    /* ?? */
474
    RV620_DCIO_LINK_STEER_CNTL		   = 0x7FA4,
475
 
476
    RV620_LVTMA_TRANSMITTER_CONTROL= 0x7F00,
477
    RV620_LVTMA_TRANSMITTER_ENABLE = 0x7F04,
478
    RV620_LVTMA_TRANSMITTER_ADJUST = 0x7F18,
479
    RV620_LVTMA_PREEMPHASIS_CONTROL= 0x7F1C,
480
    RV620_LVTMA_MACRO_CONTROL      = 0x7F0C,
481
    RV620_LVTMA_PWRSEQ_CNTL        = 0x7F80,
482
    RV620_LVTMA_PWRSEQ_STATE       = 0x7f84,
483
    RV620_LVTMA_PWRSEQ_REF_DIV     = 0x7f88,
484
    RV620_LVTMA_PWRSEQ_DELAY1      = 0x7f8C,
485
    RV620_LVTMA_PWRSEQ_DELAY2      = 0x7f90,
486
    RV620_LVTMA_BL_MOD_CNTL	   = 0x7F94,
487
    RV620_LVTMA_DATA_SYNCHRONIZATION = 0x7F98,
488
    RV620_FMT1_CONTROL		= 0x6700,
489
    RV620_FMT1_BIT_DEPTH_CONTROL= 0x6710,
490
    RV620_FMT1_CLAMP_CNTL	= 0x672C,
491
    RV620_FMT2_CONTROL		= 0x6F00,
492
    RV620_FMT2_CNTL		= 0x6F10,
493
    RV620_FMT2_CLAMP_CNTL	= 0x6F2C,
494
 
495
    RV620_EXT1_DIFF_POST_DIV_CNTL= 0x0420,
496
    RV620_EXT2_DIFF_POST_DIV_CNTL= 0x0424,
497
    RV620_DCCG_PCLK_DIGA_CNTL   = 0x04b0,
498
    RV620_DCCG_PCLK_DIGB_CNTL   = 0x04b4,
499
    RV620_DCCG_SYMCLK_CNTL	= 0x04b8
500
};
501
 
502
enum RV620_EXT1_DIFF_POST_DIV_CNTL_BITS {
503
    RV62_EXT1_DIFF_POST_DIV_RESET  = 1 << 0,
504
    RV62_EXT1_DIFF_POST_DIV_SELECT = 1 << 4,
505
    RV62_EXT1_DIFF_DRIVER_ENABLE   = 1 << 8
506
};
507
 
508
enum RV620_EXT2_DIFF_POST_DIV_CNTL_BITS {
509
    RV62_EXT2_DIFF_POST_DIV_RESET = 1 << 0,
510
    RV62_EXT2_DIFF_POST_DIV_SELECT = 1 << 4,
511
    RV62_EXT2_DIFF_DRIVER_ENABLE = 1 << 8
512
};
513
 
514
enum RV620_LVTMA_PWRSEQ_CNTL_BITS {
515
    RV62_LVTMA_PWRSEQ_EN = 1 << 0,
516
    RV62_LVTMA_PWRSEQ_DISABLE_SYNCEN_CONTROL_OF_TX_EN = 1 << 1,
517
    RV62_LVTMA_PLL_ENABLE_PWRSEQ_MASK = 1 << 2,
518
    RV62_LVTMA_PLL_RESET_PWRSEQ_MASK = 1 << 3,
519
    RV62_LVTMA_PWRSEQ_TARGET_STATE = 1 << 4,
520
    RV62_LVTMA_SYNCEN = 1 << 8,
521
    RV62_LVTMA_SYNCEN_OVRD = 1 << 9,
522
    RV62_LVTMA_SYNCEN_POL = 1 << 10,
523
    RV62_LVTMA_DIGON = 1 << 16,
524
    RV62_LVTMA_DIGON_OVRD = 1 << 17,
525
    RV62_LVTMA_DIGON_POL = 1 << 18,
526
    RV62_LVTMA_BLON = 1 << 24,
527
    RV62_LVTMA_BLON_OVRD = 1 << 25,
528
    RV62_LVTMA_BLON_POL = 1 << 26
529
};
530
 
531
enum RV620_LVTMA_PWRSEQ_STATE_BITS {
532
    RV62_LVTMA_PWRSEQ_STATE_SHIFT = 8
533
};
534
 
535
enum RV620_LVTMA_PWRSEQ_STATE_VAL {
536
    RV62_POWERUP_DONE = 4,
537
    RV62_POWERDOWN_DONE = 9
538
};
539
 
540
enum RV620_LVTMA_TRANSMITTER_CONTROL_BITS {
541
    RV62_LVTMA_PLL_ENABLE  = 1 << 0,
542
    RV62_LVTMA_PLL_RESET   = 1 << 1,
543
    RV62_LVTMA_IDSCKSEL    = 1 << 4,
544
    RV62_LVTMA_BGSLEEP     = 1 << 5,
545
    RV62_LVTMA_IDCLK_SEL   = 1 << 6,
546
    RV62_LVTMA_TMCLK       = 1 << 8,
547
    RV62_LVTMA_TMCLK_FROM_PADS = 1 << 13,
548
    RV62_LVTMA_TDCLK           = 1 << 14,
549
    RV62_LVTMA_TDCLK_FROM_PADS = 1 << 15,
550
    RV62_LVTMA_BYPASS_PLL      = 1 << 28,
551
    RV62_LVTMA_USE_CLK_DATA    = 1 << 29,
552
    RV62_LVTMA_MODE            = 1 << 30,
553
    RV62_LVTMA_INPUT_TEST_CLK_SEL = 1 << 31
554
};
555
 
556
enum RV620_DCCG_SYMCLK_CNTL {
557
    RV62_SYMCLKA_SRC_SHIFT = 8,
558
    RV62_SYMCLKB_SRC_SHIFT = 12
559
};
560
 
561
enum RV620_DCCG_DIG_CNTL {
562
    RV62_PCLK_DIGA_ON = 0x1
563
};
564
 
565
enum RV620_DCIO_LINK_STEER_CNTL {
566
    RV62_LINK_STEER_SWAP = 1 << 0,
567
    RV62_LINK_STEER_PLLSEL_OVERWRITE_EN = 1 << 16,
568
    RV62_LINK_STEER_PLLSELA = 1 << 17,
569
    RV62_LINK_STEER_PLLSELB = 1 << 18
570
};
571
 
572
enum R620_LVTMA_TRANSMITTER_ENABLE_BITS {
573
    RV62_LVTMA_LNK0EN = 1 << 0,
574
    RV62_LVTMA_LNK1EN = 1 << 1,
575
    RV62_LVTMA_LNK2EN = 1 << 2,
576
    RV62_LVTMA_LNK3EN = 1 << 3,
577
    RV62_LVTMA_LNK4EN = 1 << 4,
578
    RV62_LVTMA_LNK5EN = 1 << 5,
579
    RV62_LVTMA_LNK6EN = 1 << 6,
580
    RV62_LVTMA_LNK7EN = 1 << 7,
581
    RV62_LVTMA_LNK8EN = 1 << 8,
582
    RV62_LVTMA_LNK9EN = 1 << 9,
583
    RV62_LVTMA_LNKL = RV62_LVTMA_LNK0EN | RV62_LVTMA_LNK1EN
584
    | RV62_LVTMA_LNK2EN | RV62_LVTMA_LNK3EN,
585
    RV62_LVTMA_LNKU = RV62_LVTMA_LNK4EN | RV62_LVTMA_LNK5EN
586
    | RV62_LVTMA_LNK6EN | RV62_LVTMA_LNK7EN,
587
    RV62_LVTMA_LNK_ALL =  RV62_LVTMA_LNKL | RV62_LVTMA_LNKU
588
    | RV62_LVTMA_LNK8EN | RV62_LVTMA_LNK9EN,
589
    RV62_LVTMA_LNKEN_HPD_MASK = 1 << 16
590
};
591
 
592
enum RV620_LVTMA_DATA_SYNCHRONIZATION {
593
    RV62_LVTMA_DSYNSEL  = (1 << 0),
594
    RV62_LVTMA_PFREQCHG = (1 << 8)
595
};
596
 
597
enum RV620_LVTMA_PWRSEQ_REF_DIV_BITS {
598
    LVTMA_PWRSEQ_REF_DI_SHIFT  = 0,
599
    LVTMA_BL_MOD_REF_DI_SHIFT  = 16
600
};
601
 
602
enum RV620_LVTMA_BL_MOD_CNTL_BITS {
603
    LVTMA_BL_MOD_EN          = 1 << 0,
604
    LVTMA_BL_MOD_LEVEL_SHIFT = 8,
605
    LVTMA_BL_MOD_RES_SHIFT   = 16
606
};
607
 
608
enum RV620_DIG_CNTL_BITS {
609
    /* 0x75A0 */
610
    RV62_DIG_SWAP		   = (0x1 << 16),
611
    RV62_DIG_DUAL_LINK_ENABLE     = (0x1 << 12),
612
    RV62_DIG_START			   = (0x1 << 6),
613
    RV62_DIG_MODE			= (0x7 << 8),
614
    RV62_DIG_STEREOSYNC_SELECT   = (1 << 2),
615
    RV62_DIG_SOURCE_SELECT       = (1 << 0)
616
};
617
 
618
enum RV620_DIG_LVDS_DATA_CNTL_BITS {
619
    /* 0x75BC */
620
    RV62_LVDS_24BIT_ENABLE	   = (0x1 << 0),
621
    RV62_LVDS_24BIT_FORMAT	   = (0x1 << 4)
622
};
623
 
624
enum RV620_TMDS_CNTL_BITS {
625
    /* 0x75C0 */
626
    RV62_TMDS_PIXEL_ENCODING      = (0x1 << 4),
627
    RV62_TMDS_COLOR_FORMAT        = (0x3 << 8)
628
};
629
 
630
enum RV620_FMT_BIT_DEPTH_CONTROL {
631
    RV62_FMT_TRUNCATE_EN = 1 << 0,
632
    RV62_FMT_TRUNCATE_DEPTH = 1 << 4,
633
    RV62_FMT_SPATIAL_DITHER_EN = 1 << 8,
634
    RV62_FMT_SPATIAL_DITHER_MODE = 1 << 9,
635
    RV62_FMT_SPATIAL_DITHER_DEPTH = 1 << 12,
636
    RV62_FMT_FRAME_RANDOM_ENABLE = 1 << 13,
637
    RV62_FMT_RGB_RANDOM_ENABLE = 1 << 14,
638
    RV62_FMT_HIGHPASS_RANDOM_ENABLE = 1 << 15,
639
    RV62_FMT_TEMPORAL_DITHER_EN = 1 << 16,
640
    RV62_FMT_TEMPORAL_DITHER_DEPTH = 1 << 20,
641
    RV62_FMT_TEMPORAL_DITHER_OFFSET = 3 << 21,
642
    RV62_FMT_TEMPORAL_LEVEL = 1 << 24,
643
    RV62_FMT_TEMPORAL_DITHER_RESET = 1 << 25,
644
    RV62_FMT_25FRC_SEL = 3 << 26,
645
    RV62_FMT_50FRC_SEL = 3 << 28,
646
    RV62_FMT_75FRC_SEL = 3 << 30
647
};
648
 
649
enum RV620_FMT_CONTROL {
650
    RV62_FMT_PIXEL_ENCODING = 1 << 16
651
};
652
 
653
enum _r5xxMCRegs {
654
    R5XX_MC_STATUS                 = 0x0000,
655
    RV515_MC_FB_LOCATION	   = 0x0001,
656
    R5XX_MC_FB_LOCATION		   = 0x0004,
657
    RV515_MC_STATUS                = 0x0008,
658
    RV515_MC_MISC_LAT_TIMER        = 0x0009
659
};
660
 
661
enum _r5xxRegs {
662
    /* I2C */
663
    R5_DC_I2C_STATUS1 	=	0x7D30,  /* (RW) */
664
    R5_DC_I2C_RESET 	=	0x7D34,  /* (RW) */
665
    R5_DC_I2C_CONTROL1 	=	0x7D38,  /* (RW) */
666
    R5_DC_I2C_CONTROL2 	=	0x7D3C,  /* (RW) */
667
    R5_DC_I2C_CONTROL3 	=	0x7D40,  /* (RW) */
668
    R5_DC_I2C_DATA 	=	0x7D44,  /* (RW) */
669
    R5_DC_I2C_INTERRUPT_CONTROL 	=	0x7D48,  /* (RW) */
670
    R5_DC_I2C_ARBITRATION 	=	0x7D50,  /* (RW) */
671
 
672
    R5_DC_GPIO_DDC1_MASK              = 0x7E40,  /* (RW) */
673
    R5_DC_GPIO_DDC1_A                 = 0x7E44,  /* (RW) */
674
    R5_DC_GPIO_DDC1_EN                = 0x7E48,  /* (RW) */
675
    R5_DC_GPIO_DDC2_MASK              = 0x7E50,  /* (RW) */
676
    R5_DC_GPIO_DDC2_A                 = 0x7E54,  /* (RW) */
677
    R5_DC_GPIO_DDC2_EN                = 0x7E58,  /* (RW) */
678
    R5_DC_GPIO_DDC3_MASK              = 0x7E60,  /* (RW) */
679
    R5_DC_GPIO_DDC3_A                 = 0x7E64,  /* (RW) */
680
    R5_DC_GPIO_DDC3_EN                = 0x7E68  /* (RW) */
681
};
682
 
683
enum _r5xxSPLLRegs {
684
    SPLL_FUNC_CNTL      =       0x0  /* (RW) */
685
};
686
 
687
enum _r6xxRegs {
688
    /* MCLK */
689
    R6_MCLK_PWRMGT_CNTL		   = 0x620,
690
    /* I2C */
691
    R6_DC_I2C_CONTROL		   = 0x7D30,  /* (RW) */
692
    R6_DC_I2C_ARBITRATION		   = 0x7D34,  /* (RW) */
693
    R6_DC_I2C_INTERRUPT_CONTROL	   = 0x7D38,  /* (RW) */
694
    R6_DC_I2C_SW_STATUS	           = 0x7d3c,  /* (RW) */
695
    R6_DC_I2C_DDC1_SPEED              = 0x7D4C,  /* (RW) */
696
    R6_DC_I2C_DDC1_SETUP              = 0x7D50,  /* (RW) */
697
    R6_DC_I2C_DDC2_SPEED              = 0x7D54,  /* (RW) */
698
    R6_DC_I2C_DDC2_SETUP              = 0x7D58,  /* (RW) */
699
    R6_DC_I2C_DDC3_SPEED              = 0x7D5C,  /* (RW) */
700
    R6_DC_I2C_DDC3_SETUP              = 0x7D60,  /* (RW) */
701
    R6_DC_I2C_TRANSACTION0            = 0x7D64,  /* (RW) */
702
    R6_DC_I2C_TRANSACTION1            = 0x7D68,  /* (RW) */
703
    R6_DC_I2C_DATA			   = 0x7D74,  /* (RW) */
704
    R6_DC_I2C_DDC4_SPEED              = 0x7DB4,  /* (RW) */
705
    R6_DC_I2C_DDC4_SETUP              = 0x7DBC,  /* (RW) */
706
    R6_DC_GPIO_DDC4_MASK              = 0x7E00,  /* (RW) */
707
    R6_DC_GPIO_DDC4_A                 = 0x7E04,  /* (RW) */
708
    R6_DC_GPIO_DDC4_EN                = 0x7E08,  /* (RW) */
709
    R6_DC_GPIO_DDC1_MASK              = 0x7E40,  /* (RW) */
710
    R6_DC_GPIO_DDC1_A                 = 0x7E44,  /* (RW) */
711
    R6_DC_GPIO_DDC1_EN                = 0x7E48,  /* (RW) */
712
    R6_DC_GPIO_DDC1_Y                 = 0x7E4C,  /* (RW) */
713
    R6_DC_GPIO_DDC2_MASK              = 0x7E50,  /* (RW) */
714
    R6_DC_GPIO_DDC2_A                 = 0x7E54,  /* (RW) */
715
    R6_DC_GPIO_DDC2_EN                = 0x7E58,  /* (RW) */
716
    R6_DC_GPIO_DDC2_Y                 = 0x7E5C,  /* (RW) */
717
    R6_DC_GPIO_DDC3_MASK              = 0x7E60,  /* (RW) */
718
    R6_DC_GPIO_DDC3_A                 = 0x7E64,  /* (RW) */
719
    R6_DC_GPIO_DDC3_EN                = 0x7E68,  /* (RW) */
720
    R6_DC_GPIO_DDC3_Y                 = 0x7E6C  /* (RW) */
721
};
722
 
723
enum R6_MCLK_PWRMGT_CNTL {
724
    R6_MC_BUSY = (1 << 5)
725
};
726
 
727
 
728
/* *_Q: questionbable */
729
enum _rs69xRegs {
730
    /* I2C */
731
    RS69_DC_I2C_CONTROL		   = 0x7D30,  /* (RW) *//* */
732
    RS69_DC_I2C_UNKNOWN_2		   = 0x7D34,  /* (RW) */
733
    RS69_DC_I2C_INTERRUPT_CONTROL	   = 0x7D38,  /* (RW) */
734
    RS69_DC_I2C_SW_STATUS	           = 0x7d3c,  /* (RW) *//**/
735
    RS69_DC_I2C_UNKNOWN_1                = 0x7d40,
736
    RS69_DC_I2C_DDC_SETUP_Q              = 0x7D44,  /* (RW) */
737
    RS69_DC_I2C_DATA			   = 0x7D58,  /* (RW) *//**/
738
    RS69_DC_I2C_TRANSACTION0            = 0x7D48,  /* (RW) *//**/
739
    RS69_DC_I2C_TRANSACTION1            = 0x7D4C,  /* (RW) *//**/
740
    /* DDIA */
741
    RS69_DDIA_CNTL			= 0x7200,
742
    RS69_DDIA_SOURCE_SELECT             = 0x7204,
743
    RS69_DDIA_BIT_DEPTH_CONTROL		= 0x7214,
744
    RS69_DDIA_DCBALANCER_CONTROL	= 0x7250,
745
    RS69_DDIA_PATH_CONTROL		= 0x7264,
746
    RS69_DDIA_PCIE_LINK_CONTROL2	= 0x7278,
747
    RS69_DDIA_PCIE_LINK_CONTROL3	= 0x727c,
748
    RS69_DDIA_PCIE_PHY_CONTROL1		= 0x728c,
749
    RS69_DDIA_PCIE_PHY_CONTROL2		= 0x7290
750
};
751
 
752
enum RS69_DDIA_CNTL_BITS {
753
    RS69_DDIA_ENABLE			= 1 << 0,
754
    RS69_DDIA_HDMI_EN			= 1 << 2,
755
    RS69_DDIA_ENABLE_HPD_MASK		= 1 << 4,
756
    RS69_DDIA_HPD_SELECT		= 1 << 8,
757
    RS69_DDIA_SYNC_PHASE		= 1 << 12,
758
    RS69_DDIA_PIXEL_ENCODING		= 1 << 16,
759
    RS69_DDIA_DUAL_LINK_ENABLE		= 1 << 24,
760
    RS69_DDIA_SWAP			= 1 << 28
761
};
762
 
763
enum RS69_DDIA_SOURCE_SELECT_BITS {
764
    RS69_DDIA_SOURCE_SELECT_BIT        = 1 << 0,
765
    RS69_DDIA_SYNC_SELECT              = 1 << 8,
766
    RS69_DDIA_STEREOSYNC_SELECT        = 1 << 16
767
};
768
 
769
enum RS69_DDIA_LINK_CONTROL2_SHIFT {
770
    RS69_DDIA_PCIE_OUTPUT_MUX_SEL0	= 0,
771
    RS69_DDIA_PCIE_OUTPUT_MUX_SEL1	= 4,
772
    RS69_DDIA_PCIE_OUTPUT_MUX_SEL2	= 8,
773
    RS69_DDIA_PCIE_OUTPUT_MUX_SEL3	= 12
774
};
775
 
776
enum RS69_DDIA_BIT_DEPTH_CONTROL_BITS {
777
    RS69_DDIA_TRUNCATE_EN		= 1 << 0,
778
    RS69_DDIA_TRUNCATE_DEPTH 		= 1 << 4,
779
    RS69_DDIA_SPATIAL_DITHER_EN		= 1 << 8,
780
    RS69_DDIA_SPATIAL_DITHER_DEPTH	= 1 << 12,
781
    RS69_DDIA_TEMPORAL_DITHER_EN	= 1 << 16,
782
    RS69_DDIA_TEMPORAL_DITHER_DEPTH	= 1 << 20,
783
    RS69_DDIA_TEMPORAL_LEVEL		= 1 << 24,
784
    RS69_DDIA_TEMPORAL_DITHER_RESET	= 1 << 25
785
};
786
 
787
enum RS69_DDIA_DCBALANCER_CONTROL_BITS {
788
    RS69_DDIA_DCBALANCER_EN		= 1 << 0,
789
    RS69_DDIA_SYNC_DCBAL_EN_SHIFT       = 4,
790
    RS69_DDIA_SYNC_DCBAL_EN_MASK        = 7 <<  RS69_DDIA_SYNC_DCBAL_EN_SHIFT,
791
    RS69_DDIA_DCBALANCER_TEST_EN	= 1 << 8,
792
    RS69_DDIA_DCBALANCER_TEST_IN_SHIFT  = 16,
793
    RS69_DDIA_DCBALANCER_FORCE		= 1 << 24
794
};
795
 
796
enum RS69_DDIA_PATH_CONTROL_BITS {
797
    RS69_DDIA_PATH_SELECT_SHIFT		= 0,
798
    RS69_DDIA_DDPII_DE_ALIGN_EN		= 1 <<  4,
799
    RS69_DDIA_DDPII_TRAIN_EN		= 1 <<  8,
800
    RS69_DDIA_DDPII_TRAIN_SELECT	= 1 << 12,
801
    RS69_DDIA_DDPII_SCRAMBLE_EN		= 1 << 16,
802
    RS69_DDIA_REPL_MODE_SELECT		= 1 << 20,
803
    RS69_DDIA_RB_30b_SWAP_EN		= 1 << 24,
804
    RS69_DDIA_PIXVLD_RESET		= 1 << 28,
805
    RS69_DDIA_REARRANGER_EN		= 1 << 30
806
};
807
 
808
enum RS69_DDIA_PCIE_LINK_CONTROL3_BITS {
809
    RS69_DDIA_PCIE_MIRROR_EN		= 1 << 0,
810
    RS69_DDIA_PCIE_CFGDUALLINK		= 1 << 4,
811
    RS69_DDIA_PCIE_NCHG3EN		= 1 << 8,
812
    RS69_DDIA_PCIE_RX_PDNB_SHIFT	= 12
813
};
814
 
815
enum RS69_MC_INDEX_BITS {
816
    RS69_MC_IND_ADDR = (0x1 << 0),
817
    RS69_MC_IND_WR_EN = (0x1 << 9)
818
};
819
 
820
enum RS60_MC_NB_MC_INDEX_BITS {
821
    RS60_NB_MC_IND_ADDR = (0x1 << 0),
822
    RS60_NB_MC_IND_WR_EN = (0x1 << 8)
823
};
824
 
825
enum _rs690MCRegs {
826
    RS69_K8_FB_LOCATION		=	0x1E,
827
    RS69_MC_MISC_UMA_CNTL	=	0x5f,
828
    RS69_MC_SYSTEM_STATUS 	=	0x90,  /* (RW) */
829
    RS69_MCCFG_FB_LOCATION		=	0x100,
830
    RS69MCCFG_AGP_LOCATION		=	0x101,
831
    RS69_MC_INIT_MISC_LAT_TIMER         =       0x104
832
};
833
 
834
enum MC_MISC_LAT_TIMER_BITS {
835
    MC_CPR_INIT_LAT_SHIFT    =  0,
836
    MC_VF_INIT_LAT           =  4,
837
    MC_DISP0R_INIT_LAT_SHIFT =  8,
838
    MC_DISP1R_INIT_LAT_SHIFT = 12,
839
    MC_FIXED_INIT_LAT_SHIFT  = 16,
840
    MC_E2R_INIT_LAT_SHIFT    = 20,
841
    SAME_PAGE_PRIO_SHIFT     = 24,
842
    MC_GLOBW_INIT_LAT_SHIFT  = 28
843
};
844
 
845
enum RS69_MC_MISC_UMA_CNTL_BITS {
846
    RS69_K8_40BIT_ADDR_EXTENSION = (0x1 << 0),
847
    RS69_GART_BYPASS             = (0x1 << 8),
848
    RS69_GFX_64BYTE_MODE         = (0x1 << 9),
849
    RS69_GFX_64BYTE_LAT          = (0x1 << 10),
850
    RS69_GTW_COHERENCY           = (0x1 << 15),
851
    RS69_READ_BUFFER_SIZE        = (0x1 << 16),
852
    RS69_HDR_ROUTE_TO_DSP        = (0x1 << 24),
853
    RS69_GTW_ROUTE_TO_DSP        = (0x1 << 25),
854
    RS69_DSP_ROUTE_TO_GFX        = (0x1 << 26),
855
    RS69_USE_HDPW_LAT_INIT       = (0x1 << 27),
856
    RS69_USE_GFXW_LAT_INIT       = (0x1 << 28),
857
    RS69_MCIFR_COHERENT          = (0x1 << 29),
858
    RS69_NON_SNOOP_AZR_AIC_BP    = (0x1 << 30),
859
    RS69_SIDE_PORT_PRESENT_R     = (0x1 << 31)
860
};
861
 
862
enum _rs600MCRegs {
863
    RS60_MC_SYSTEM_STATUS	=       0x0,
864
    RS60_NB_FB_LOCATION		=	0xa
865
};
866
 
867
enum _rs780NBRegs {
868
    RS78_NB_MC_IND_INDEX	= 0x70,
869
    RS78_NB_MC_IND_DATA         = 0x74
870
};
871
 
872
enum RS78_NB_IND_INDEX_BITS {
873
    RS78_NB_MC_IND_INDEX_MASK = (0xffff << 0),
874
    RS78_MC_IND_SEQ_RBS_0     = (0x1 << 16),
875
    RS78_MC_IND_SEQ_RBS_1     = (0x1 << 17),
876
    RS78_MC_IND_SEQ_RBS_2     = (0x1 << 18),
877
    RS78_MC_IND_SEQ_RBS_3     = (0x1 << 19),
878
    RS78_MC_IND_AIC_RBS       = (0x1 << 20),
879
    RS78_MC_IND_CITF_ARB0     = (0x1 << 21),
880
    RS78_MC_IND_CITF_ARB1     = (0x1 << 22),
881
    RS78_MC_IND_WR_EN         = (0x1 << 23),
882
    RS78_MC_IND_RD_INV        = (0x1 << 24)
883
};
884
 
885
enum _rs780MCRegs {
886
    RS78_MC_SYSTEM_STATUS	=	0x0,
887
    RS78_MC_FB_LOCATION		=	0x10,
888
    RS78_K8_FB_LOCATION		=	0x11,
889
    RS78_MC_MISC_UMA_CNTL       =       0x12
890
};
891
 
892
enum RS6X_MC_SYSTEM_STATUS_BITS {
893
        RS6X_MC_SYSTEM_IDLE	 = (0x1 << 0),
894
	RS6X_MC_SEQUENCER_IDLE	 = (0x1 << 1),
895
	RS6X_MC_ARBITER_IDLE	 = (0x1 << 2),
896
	RS6X_MC_SELECT_PM	 = (0x1 << 3),
897
	RS6X_RESERVED4	 = (0xf << 4),
898
	RS6X_RESERVED8	 = (0xf << 8),
899
	RS6X_RESERVED12_SYSTEM_STATUS	 = (0xf << 12),
900
	RS6X_MCA_INIT_EXECUTED	 = (0x1 << 16),
901
	RS6X_MCA_IDLE	 = (0x1 << 17),
902
	RS6X_MCA_SEQ_IDLE	 = (0x1 << 18),
903
	RS6X_MCA_ARB_IDLE	 = (0x1 << 19),
904
	RS6X_RESERVED20_SYSTEM_STATUS	 = (0xfff << 20)
905
};
906
 
907
enum RS78_MC_MISC_UMA_CNTL_BITS {
908
    RS78_K8_40BIT_ADDR_EXTENSION = ( 0x1 << 0),
909
    RS78_BANKGROUP_SEL           = ( 0x1 << 8),
910
    RS78_CNTL_SPARE              = ( 0x1 << 15),
911
    RS78_SIDE_PORT_PRESENT_R     = ( 0x1 << 31)
912
};
913
 
914
enum R5XX_MC_STATUS_BITS {
915
    R5XX_MEM_PWRUP_COMPL = (0x1 << 0),
916
    R5XX_MC_IDLE	    = (0x1 << 1)
917
};
918
 
919
enum RV515_MC_STATUS_BITS {
920
    RV515_MC_IDLE        = (0x1 << 4)
921
};
922
 
923
enum RS78_MC_SYSTEM_STATUS_BITS {
924
    RS78_MC_SYSTEM_IDLE        =  1 << 0,
925
    RS78_MC_SEQUENCER_IDLE     =  1 << 1,
926
    RS78_MC_ARBITER_IDLE       = 1 << 2,
927
    RS78_MC_SELECT_PM          = 1 << 3,
928
    RS78_MC_STATUS_15_4_SHIFT  = 4,
929
    RS78_MCA_INIT_EXECUTED     = 1 << 16,
930
    RS78_MCA_IDLE              = 1 << 17,
931
    RS78_MCA_SEQ_IDLE          = 1 << 18,
932
    RS78_MCA_ARB_IDLE          = 1 << 19,
933
    RS78_MC_STATUS_31_20_SHIFT = 20
934
};
935
 
936
enum BUS_CNTL_BITS {
937
    /* BUS_CNTL */
938
    BUS_DBL_RESYNC       = (0x1 << 0),
939
    BIOS_ROM_WRT_EN      = (0x1 << 1),
940
    BIOS_ROM_DIS         = (0x1 << 2),
941
    PMI_IO_DIS   = (0x1 << 3),
942
    PMI_MEM_DIS  = (0x1 << 4),
943
    PMI_BM_DIS   = (0x1 << 5),
944
    PMI_INT_DIS  = (0x1 << 6)
945
};
946
 
947
enum SEPROM_SNTL1_BITS {
948
    /* SEPROM_CNTL1 */
949
    WRITE_ENABLE         = (0x1 << 0),
950
    WRITE_DISABLE        = (0x1 << 1),
951
    READ_CONFIG  = (0x1 << 2),
952
    WRITE_CONFIG         = (0x1 << 3),
953
    READ_STATUS  = (0x1 << 4),
954
    SECT_TO_SRAM         = (0x1 << 5),
955
    READY_BUSY   = (0x1 << 7),
956
    SEPROM_BUSY  = (0x1 << 8),
957
    BCNT_OVER_WTE_EN     = (0x1 << 9),
958
    RB_MASKB     = (0x1 << 10),
959
    SOFT_RESET   = (0x1 << 11),
960
    STATE_IDLEb  = (0x1 << 12),
961
    SECTOR_ERASE         = (0x1 << 13),
962
    BYTE_CNT     = (0xff << 16),
963
    SCK_PRESCALE         = (0xff << 24)
964
};
965
 
966
enum VIPH_CONTROL_BITS {
967
    /* VIPH_CONTROL */
968
    VIPH_CLK_SEL         = (0xff << 0),
969
    VIPH_REG_RDY         = (0x1 << 13),
970
    VIPH_MAX_WAIT        = (0xf << 16),
971
    VIPH_DMA_MODE        = (0x1 << 20),
972
    VIPH_EN      = (0x1 << 21),
973
    VIPH_DV0_WID         = (0x1 << 24),
974
    VIPH_DV1_WID         = (0x1 << 25),
975
    VIPH_DV2_WID         = (0x1 << 26),
976
    VIPH_DV3_WID         = (0x1 << 27),
977
    VIPH_PWR_DOWN        = (0x1 << 28),
978
    VIPH_PWR_DOWN_AK     = (0x1 << 28),
979
    VIPH_VIPCLK_DIS      = (0x1 << 29)
980
};
981
 
982
enum ROM_CNTL_BITS {
983
    SCK_OVERWRITE            = 1 << 1,
984
    CLOCK_GATING_EN          = 1 << 2,
985
    CSB_ACTIVE_TO_SCK_SETUP_TIME_SHIFT = 8,
986
    CSB_ACTIVE_TO_SCK_HOLD_TIME_SHIFT = 16,
987
    SCK_PRESCALE_REFCLK_SHIFT      = 24,
988
    SCK_PRESCALE_CRYSTAL_CLK_SHIFT = 28
989
};
990
 
991
enum GENERAL_PWRMGT_BITS {
992
    GLOBAL_PWRMGT_EN           = 1 << 0,
993
    STATIC_PM_EN               = 1 << 1,
994
    MOBILE_SU                  = 1 << 2,
995
    THERMAL_PROTECTION_DIS     = 1 << 3,
996
    THERMAL_PROTECTION_TYPE    = 1 << 4,
997
    ENABLE_GEN2PCIE            = 1 << 5,
998
    SW_GPIO_INDEX_SHIFT        = 1 << 6,
999
    LOW_VOLT_D2_ACPI           = 1 << 8,
1000
    LOW_VOLT_D3_ACPI           = 1 << 9,
1001
    VOLT_PWRMGT_EN             = 1 << 10,
1002
    OPEN_DRAIN_PADS            = 1 << 11,
1003
    AVP_SCLK_EN                = 1 << 12,
1004
    IDCT_SCLK_EN               = 1 << 13,
1005
    GPU_COUNTER_ACPI           = 1 << 14,
1006
    GPU_COUNTER_CLK            = 1 << 15,
1007
    BACKBIAS_PAD_EN            = 1 << 16,
1008
    BACKBIAS_VALUE             = 1 << 17,
1009
    BACKBIAS_DPM_CNTL          = 1 << 18,
1010
    SPREAD_SPECTRUM_INDEX_SHIFT = 19,
1011
    DYN_SPREAD_SPECTRUM_EN     = 1 << 2
1012
};
1013
 
1014
enum VGA_RENDER_CONTROL_BITS {
1015
    /* VGA_RENDER_CONTROL */
1016
    VGA_BLINK_RATE		= (0x1f << 0),
1017
    VGA_BLINK_MODE		= (0x3 << 5),
1018
    VGA_CURSOR_BLINK_INVERT      = (0x1 << 7),
1019
    VGA_EXTD_ADDR_COUNT_ENABLE   = (0x1 << 8),
1020
    VGA_VSTATUS_CNTL		= (0x3 << 16),
1021
    VGA_LOCK_8DOT		= (0x1 << 24),
1022
    VGAREG_LINECMP_COMPATIBILITY_SEL     = (0x1 << 25)
1023
};
1024
 
1025
enum D1VGA_CONTROL_BITS {
1026
    /* D1VGA_CONTROL */
1027
    D1VGA_MODE_ENABLE		= (0x1 << 0),
1028
    D1VGA_TIMING_SELECT		= (0x1 << 8),
1029
    D1VGA_SYNC_POLARITY_SELECT   = (0x1 << 9),
1030
    D1VGA_OVERSCAN_TIMING_SELECT         = (0x1 << 10),
1031
    D1VGA_OVERSCAN_COLOR_EN      = (0x1 << 16),
1032
    D1VGA_ROTATE		= (0x3 << 24)
1033
};
1034
 
1035
enum D2VGA_CONTROL_BITS {
1036
    /* D2VGA_CONTROL */
1037
    D2VGA_MODE_ENABLE    = (0x1 << 0),
1038
    D2VGA_TIMING_SELECT  = (0x1 << 8),
1039
    D2VGA_SYNC_POLARITY_SELECT   = (0x1 << 9),
1040
    D2VGA_OVERSCAN_TIMING_SELECT         = (0x1 << 10),
1041
    D2VGA_OVERSCAN_COLOR_EN      = (0x1 << 16),
1042
    D2VGA_ROTATE         = (0x3 << 24)
1043
};
1044
 
1045
enum {
1046
    /* CLOCK_CNTL_INDEX */
1047
    PLL_ADDR     = (0x3f << 0),
1048
    PLL_WR_EN    = (0x1 << 7),
1049
    PPLL_DIV_SEL         = (0x3 << 8),
1050
 
1051
    /* CLOCK_CNTL_DATA */
1052
#define PLL_DATA         0xffffffff
1053
 
1054
    /* SPLL_FUNC_CNTL */
1055
    SPLL_CHG_STATUS      = (0x1 << 29),
1056
    SPLL_BYPASS_EN       = (0x1 << 25),
1057
 
1058
    /* MC_IND_INDEX */
1059
    MC_IND_ADDR		 = (0xffff << 0),
1060
    MC_IND_SEQ_RBS_0     = (0x1 << 16),
1061
    MC_IND_SEQ_RBS_1     = (0x1 << 17),
1062
    MC_IND_SEQ_RBS_2     = (0x1 << 18),
1063
    MC_IND_SEQ_RBS_3     = (0x1 << 19),
1064
    MC_IND_AIC_RBS       = (0x1 << 20),
1065
    MC_IND_CITF_ARB0     = (0x1 << 21),
1066
    MC_IND_CITF_ARB1     = (0x1 << 22),
1067
    MC_IND_WR_EN         = (0x1 << 23),
1068
    MC_IND_RD_INV        = (0x1 << 24)
1069
#define MC_IND_ALL (MC_IND_SEQ_RBS_0 |  MC_IND_SEQ_RBS_1 \
1070
                    |  MC_IND_SEQ_RBS_2 |  MC_IND_SEQ_RBS_3 \
1071
                    |  MC_IND_AIC_RBS | MC_IND_CITF_ARB0 | MC_IND_CITF_ARB1)
1072
 
1073
    /* MC_IND_DATA */
1074
#define MC_IND_DATA_BIT  0xffffffff
1075
};
1076
 
1077
enum AGP_STATUS_BITS {
1078
    AGP_1X_MODE          = 0x01,
1079
    AGP_2X_MODE          = 0x02,
1080
    AGP_4X_MODE          = 0x04,
1081
    AGP_FW_MODE          = 0x10,
1082
    AGP_MODE_MASK        = 0x17,
1083
    AGPv3_MODE           = 0x08,
1084
    AGPv3_4X_MODE        = 0x01,
1085
    AGPv3_8X_MODE        = 0x02
1086
};
1087
 
1088
enum {
1089
    /* HDMI registers */
1090
    HDMI_ENABLE           = 0x00,
1091
    HDMI_CNTL             = 0x08,
1092
    HDMI_UNKNOWN_0        = 0x0C,
1093
    HDMI_AUDIOCNTL        = 0x10,
1094
    HDMI_VIDEOCNTL        = 0x14,
1095
    HDMI_VERSION          = 0x18,
1096
    HDMI_UNKNOWN_1        = 0x28,
1097
    HDMI_VIDEOINFOFRAME_0 = 0x54,
1098
    HDMI_VIDEOINFOFRAME_1 = 0x58,
1099
    HDMI_VIDEOINFOFRAME_2 = 0x5c,
1100
    HDMI_VIDEOINFOFRAME_3 = 0x60,
1101
    HDMI_32kHz_CTS        = 0xac,
1102
    HDMI_32kHz_N          = 0xb0,
1103
    HDMI_44_1kHz_CTS      = 0xb4,
1104
    HDMI_44_1kHz_N        = 0xb8,
1105
    HDMI_48kHz_CTS        = 0xbc,
1106
    HDMI_48kHz_N          = 0xc0,
1107
    HDMI_AUDIOINFOFRAME_0 = 0xcc,
1108
    HDMI_AUDIOINFOFRAME_1 = 0xd0,
1109
    HDMI_IEC60958_1       = 0xd4,
1110
    HDMI_IEC60958_2       = 0xd8,
1111
    HDMI_UNKNOWN_2        = 0xdc,
1112
    HDMI_AUDIO_DEBUG      = 0xe0
1113
};
1114
 
1115
#endif /* _RHD_REGS_H */