]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/video/w100fb.h
Pull sn-features into release branch
[mirror_ubuntu-bionic-kernel.git] / drivers / video / w100fb.h
1 /*
2 * linux/drivers/video/w100fb.h
3 *
4 * Frame Buffer Device for ATI w100 (Wallaby)
5 *
6 * Copyright (C) 2002, ATI Corp.
7 * Copyright (C) 2004-2005 Richard Purdie
8 * Copyright (c) 2005 Ian Molton <spyro@f2s.com>
9 *
10 * Modified to work with 2.6 by Richard Purdie <rpurdie@rpsys.net>
11 *
12 * w32xx support by Ian Molton
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 *
18 */
19
20 #if !defined (_W100FB_H)
21 #define _W100FB_H
22
23 /* Block CIF Start: */
24 #define mmCHIP_ID 0x0000
25 #define mmREVISION_ID 0x0004
26 #define mmWRAP_BUF_A 0x0008
27 #define mmWRAP_BUF_B 0x000C
28 #define mmWRAP_TOP_DIR 0x0010
29 #define mmWRAP_START_DIR 0x0014
30 #define mmCIF_CNTL 0x0018
31 #define mmCFGREG_BASE 0x001C
32 #define mmCIF_IO 0x0020
33 #define mmCIF_READ_DBG 0x0024
34 #define mmCIF_WRITE_DBG 0x0028
35 #define cfgIND_ADDR_A_0 0x0000
36 #define cfgIND_ADDR_A_1 0x0001
37 #define cfgIND_ADDR_A_2 0x0002
38 #define cfgIND_DATA_A 0x0003
39 #define cfgREG_BASE 0x0004
40 #define cfgINTF_CNTL 0x0005
41 #define cfgSTATUS 0x0006
42 #define cfgCPU_DEFAULTS 0x0007
43 #define cfgIND_ADDR_B_0 0x0008
44 #define cfgIND_ADDR_B_1 0x0009
45 #define cfgIND_ADDR_B_2 0x000A
46 #define cfgIND_DATA_B 0x000B
47 #define cfgPM4_RPTR 0x000C
48 #define cfgSCRATCH 0x000D
49 #define cfgPM4_WRPTR_0 0x000E
50 #define cfgPM4_WRPTR_1 0x000F
51 /* Block CIF End: */
52
53 /* Block CP Start: */
54 #define mmSCRATCH_UMSK 0x0280
55 #define mmSCRATCH_ADDR 0x0284
56 #define mmGEN_INT_CNTL 0x0200
57 #define mmGEN_INT_STATUS 0x0204
58 /* Block CP End: */
59
60 /* Block DISPLAY Start: */
61 #define mmLCD_FORMAT 0x0410
62 #define mmGRAPHIC_CTRL 0x0414
63 #define mmGRAPHIC_OFFSET 0x0418
64 #define mmGRAPHIC_PITCH 0x041C
65 #define mmCRTC_TOTAL 0x0420
66 #define mmACTIVE_H_DISP 0x0424
67 #define mmACTIVE_V_DISP 0x0428
68 #define mmGRAPHIC_H_DISP 0x042C
69 #define mmGRAPHIC_V_DISP 0x0430
70 #define mmVIDEO_CTRL 0x0434
71 #define mmGRAPHIC_KEY 0x0438
72 #define mmBRIGHTNESS_CNTL 0x045C
73 #define mmDISP_INT_CNTL 0x0488
74 #define mmCRTC_SS 0x048C
75 #define mmCRTC_LS 0x0490
76 #define mmCRTC_REV 0x0494
77 #define mmCRTC_DCLK 0x049C
78 #define mmCRTC_GS 0x04A0
79 #define mmCRTC_VPOS_GS 0x04A4
80 #define mmCRTC_GCLK 0x04A8
81 #define mmCRTC_GOE 0x04AC
82 #define mmCRTC_FRAME 0x04B0
83 #define mmCRTC_FRAME_VPOS 0x04B4
84 #define mmGPIO_DATA 0x04B8
85 #define mmGPIO_CNTL1 0x04BC
86 #define mmGPIO_CNTL2 0x04C0
87 #define mmLCDD_CNTL1 0x04C4
88 #define mmLCDD_CNTL2 0x04C8
89 #define mmGENLCD_CNTL1 0x04CC
90 #define mmGENLCD_CNTL2 0x04D0
91 #define mmDISP_DEBUG 0x04D4
92 #define mmDISP_DB_BUF_CNTL 0x04D8
93 #define mmDISP_CRC_SIG 0x04DC
94 #define mmCRTC_DEFAULT_COUNT 0x04E0
95 #define mmLCD_BACKGROUND_COLOR 0x04E4
96 #define mmCRTC_PS2 0x04E8
97 #define mmCRTC_PS2_VPOS 0x04EC
98 #define mmCRTC_PS1_ACTIVE 0x04F0
99 #define mmCRTC_PS1_NACTIVE 0x04F4
100 #define mmCRTC_GCLK_EXT 0x04F8
101 #define mmCRTC_ALW 0x04FC
102 #define mmCRTC_ALW_VPOS 0x0500
103 #define mmCRTC_PSK 0x0504
104 #define mmCRTC_PSK_HPOS 0x0508
105 #define mmCRTC_CV4_START 0x050C
106 #define mmCRTC_CV4_END 0x0510
107 #define mmCRTC_CV4_HPOS 0x0514
108 #define mmCRTC_ECK 0x051C
109 #define mmREFRESH_CNTL 0x0520
110 #define mmGENLCD_CNTL3 0x0524
111 #define mmGPIO_DATA2 0x0528
112 #define mmGPIO_CNTL3 0x052C
113 #define mmGPIO_CNTL4 0x0530
114 #define mmCHIP_STRAP 0x0534
115 #define mmDISP_DEBUG2 0x0538
116 #define mmDEBUG_BUS_CNTL 0x053C
117 #define mmGAMMA_VALUE1 0x0540
118 #define mmGAMMA_VALUE2 0x0544
119 #define mmGAMMA_SLOPE 0x0548
120 #define mmGEN_STATUS 0x054C
121 #define mmHW_INT 0x0550
122 /* Block DISPLAY End: */
123
124 /* Block GFX Start: */
125 #define mmBRUSH_OFFSET 0x108C
126 #define mmBRUSH_Y_X 0x1074
127 #define mmDEFAULT_PITCH_OFFSET 0x10A0
128 #define mmDEFAULT_SC_BOTTOM_RIGHT 0x10A8
129 #define mmDEFAULT2_SC_BOTTOM_RIGHT 0x10AC
130 #define mmGLOBAL_ALPHA 0x1210
131 #define mmFILTER_COEF 0x1214
132 #define mmMVC_CNTL_START 0x11E0
133 #define mmE2_ARITHMETIC_CNTL 0x1220
134 #define mmENG_CNTL 0x13E8
135 #define mmENG_PERF_CNT 0x13F0
136 /* Block GFX End: */
137
138 /* Block IDCT Start: */
139 #define mmIDCT_RUNS 0x0C00
140 #define mmIDCT_LEVELS 0x0C04
141 #define mmIDCT_CONTROL 0x0C3C
142 #define mmIDCT_AUTH_CONTROL 0x0C08
143 #define mmIDCT_AUTH 0x0C0C
144 /* Block IDCT End: */
145
146 /* Block MC Start: */
147 #define mmMEM_CNTL 0x0180
148 #define mmMEM_ARB 0x0184
149 #define mmMC_FB_LOCATION 0x0188
150 #define mmMEM_EXT_CNTL 0x018C
151 #define mmMC_EXT_MEM_LOCATION 0x0190
152 #define mmMEM_EXT_TIMING_CNTL 0x0194
153 #define mmMEM_SDRAM_MODE_REG 0x0198
154 #define mmMEM_IO_CNTL 0x019C
155 #define mmMC_DEBUG 0x01A0
156 #define mmMC_BIST_CTRL 0x01A4
157 #define mmMC_BIST_COLLAR_READ 0x01A8
158 #define mmTC_MISMATCH 0x01AC
159 #define mmMC_PERF_MON_CNTL 0x01B0
160 #define mmMC_PERF_COUNTERS 0x01B4
161 /* Block MC End: */
162
163 /* Block BM Start: */
164 #define mmBM_EXT_MEM_BANDWIDTH 0x0A00
165 #define mmBM_OFFSET 0x0A04
166 #define mmBM_MEM_EXT_TIMING_CNTL 0x0A08
167 #define mmBM_MEM_EXT_CNTL 0x0A0C
168 #define mmBM_MEM_MODE_REG 0x0A10
169 #define mmBM_MEM_IO_CNTL 0x0A18
170 #define mmBM_CONFIG 0x0A1C
171 #define mmBM_STATUS 0x0A20
172 #define mmBM_DEBUG 0x0A24
173 #define mmBM_PERF_MON_CNTL 0x0A28
174 #define mmBM_PERF_COUNTERS 0x0A2C
175 #define mmBM_PERF2_MON_CNTL 0x0A30
176 #define mmBM_PERF2_COUNTERS 0x0A34
177 /* Block BM End: */
178
179 /* Block RBBM Start: */
180 #define mmWAIT_UNTIL 0x1400
181 #define mmISYNC_CNTL 0x1404
182 #define mmRBBM_CNTL 0x0144
183 #define mmNQWAIT_UNTIL 0x0150
184 /* Block RBBM End: */
185
186 /* Block CG Start: */
187 #define mmCLK_PIN_CNTL 0x0080
188 #define mmPLL_REF_FB_DIV 0x0084
189 #define mmPLL_CNTL 0x0088
190 #define mmSCLK_CNTL 0x008C
191 #define mmPCLK_CNTL 0x0090
192 #define mmCLK_TEST_CNTL 0x0094
193 #define mmPWRMGT_CNTL 0x0098
194 #define mmPWRMGT_STATUS 0x009C
195 /* Block CG End: */
196
197 /* default value definitions */
198 #define defWRAP_TOP_DIR 0x00000000
199 #define defWRAP_START_DIR 0x00000000
200 #define defCFGREG_BASE 0x00000000
201 #define defCIF_IO 0x000C0902
202 #define defINTF_CNTL 0x00000011
203 #define defCPU_DEFAULTS 0x00000006
204 #define defHW_INT 0x00000000
205 #define defMC_EXT_MEM_LOCATION 0x07ff0000
206 #define defTC_MISMATCH 0x00000000
207
208 #define W100_CFG_BASE 0x0
209 #define W100_CFG_LEN 0x10
210 #define W100_REG_BASE 0x10000
211 #define W100_REG_LEN 0x2000
212 #define MEM_INT_BASE_VALUE 0x100000
213 #define MEM_EXT_BASE_VALUE 0x800000
214 #define MEM_INT_SIZE 0x05ffff
215 #define MEM_WINDOW_BASE 0x100000
216 #define MEM_WINDOW_SIZE 0xf00000
217
218 #define WRAP_BUF_BASE_VALUE 0x80000
219 #define WRAP_BUF_TOP_VALUE 0xbffff
220
221 #define CHIP_ID_W100 0x57411002
222 #define CHIP_ID_W3200 0x56441002
223 #define CHIP_ID_W3220 0x57441002
224
225 /* Register structure definitions */
226
227 struct wrap_top_dir_t {
228 unsigned long top_addr : 23;
229 unsigned long : 9;
230 } __attribute__((packed));
231
232 union wrap_top_dir_u {
233 unsigned long val : 32;
234 struct wrap_top_dir_t f;
235 } __attribute__((packed));
236
237 struct wrap_start_dir_t {
238 unsigned long start_addr : 23;
239 unsigned long : 9;
240 } __attribute__((packed));
241
242 union wrap_start_dir_u {
243 unsigned long val : 32;
244 struct wrap_start_dir_t f;
245 } __attribute__((packed));
246
247 struct cif_cntl_t {
248 unsigned long swap_reg : 2;
249 unsigned long swap_fbuf_1 : 2;
250 unsigned long swap_fbuf_2 : 2;
251 unsigned long swap_fbuf_3 : 2;
252 unsigned long pmi_int_disable : 1;
253 unsigned long pmi_schmen_disable : 1;
254 unsigned long intb_oe : 1;
255 unsigned long en_wait_to_compensate_dq_prop_dly : 1;
256 unsigned long compensate_wait_rd_size : 2;
257 unsigned long wait_asserted_timeout_val : 2;
258 unsigned long wait_masked_val : 2;
259 unsigned long en_wait_timeout : 1;
260 unsigned long en_one_clk_setup_before_wait : 1;
261 unsigned long interrupt_active_high : 1;
262 unsigned long en_overwrite_straps : 1;
263 unsigned long strap_wait_active_hi : 1;
264 unsigned long lat_busy_count : 2;
265 unsigned long lat_rd_pm4_sclk_busy : 1;
266 unsigned long dis_system_bits : 1;
267 unsigned long dis_mr : 1;
268 unsigned long cif_spare_1 : 4;
269 } __attribute__((packed));
270
271 union cif_cntl_u {
272 unsigned long val : 32;
273 struct cif_cntl_t f;
274 } __attribute__((packed));
275
276 struct cfgreg_base_t {
277 unsigned long cfgreg_base : 24;
278 unsigned long : 8;
279 } __attribute__((packed));
280
281 union cfgreg_base_u {
282 unsigned long val : 32;
283 struct cfgreg_base_t f;
284 } __attribute__((packed));
285
286 struct cif_io_t {
287 unsigned long dq_srp : 1;
288 unsigned long dq_srn : 1;
289 unsigned long dq_sp : 4;
290 unsigned long dq_sn : 4;
291 unsigned long waitb_srp : 1;
292 unsigned long waitb_srn : 1;
293 unsigned long waitb_sp : 4;
294 unsigned long waitb_sn : 4;
295 unsigned long intb_srp : 1;
296 unsigned long intb_srn : 1;
297 unsigned long intb_sp : 4;
298 unsigned long intb_sn : 4;
299 unsigned long : 2;
300 } __attribute__((packed));
301
302 union cif_io_u {
303 unsigned long val : 32;
304 struct cif_io_t f;
305 } __attribute__((packed));
306
307 struct cif_read_dbg_t {
308 unsigned long unpacker_pre_fetch_trig_gen : 2;
309 unsigned long dly_second_rd_fetch_trig : 1;
310 unsigned long rst_rd_burst_id : 1;
311 unsigned long dis_rd_burst_id : 1;
312 unsigned long en_block_rd_when_packer_is_not_emp : 1;
313 unsigned long dis_pre_fetch_cntl_sm : 1;
314 unsigned long rbbm_chrncy_dis : 1;
315 unsigned long rbbm_rd_after_wr_lat : 2;
316 unsigned long dis_be_during_rd : 1;
317 unsigned long one_clk_invalidate_pulse : 1;
318 unsigned long dis_chnl_priority : 1;
319 unsigned long rst_read_path_a_pls : 1;
320 unsigned long rst_read_path_b_pls : 1;
321 unsigned long dis_reg_rd_fetch_trig : 1;
322 unsigned long dis_rd_fetch_trig_from_ind_addr : 1;
323 unsigned long dis_rd_same_byte_to_trig_fetch : 1;
324 unsigned long dis_dir_wrap : 1;
325 unsigned long dis_ring_buf_to_force_dec : 1;
326 unsigned long dis_addr_comp_in_16bit : 1;
327 unsigned long clr_w : 1;
328 unsigned long err_rd_tag_is_3 : 1;
329 unsigned long err_load_when_ful_a : 1;
330 unsigned long err_load_when_ful_b : 1;
331 unsigned long : 7;
332 } __attribute__((packed));
333
334 union cif_read_dbg_u {
335 unsigned long val : 32;
336 struct cif_read_dbg_t f;
337 } __attribute__((packed));
338
339 struct cif_write_dbg_t {
340 unsigned long packer_timeout_count : 2;
341 unsigned long en_upper_load_cond : 1;
342 unsigned long en_chnl_change_cond : 1;
343 unsigned long dis_addr_comp_cond : 1;
344 unsigned long dis_load_same_byte_addr_cond : 1;
345 unsigned long dis_timeout_cond : 1;
346 unsigned long dis_timeout_during_rbbm : 1;
347 unsigned long dis_packer_ful_during_rbbm_timeout : 1;
348 unsigned long en_dword_split_to_rbbm : 1;
349 unsigned long en_dummy_val : 1;
350 unsigned long dummy_val_sel : 1;
351 unsigned long mask_pm4_wrptr_dec : 1;
352 unsigned long dis_mc_clean_cond : 1;
353 unsigned long err_two_reqi_during_ful : 1;
354 unsigned long err_reqi_during_idle_clk : 1;
355 unsigned long err_global : 1;
356 unsigned long en_wr_buf_dbg_load : 1;
357 unsigned long en_wr_buf_dbg_path : 1;
358 unsigned long sel_wr_buf_byte : 3;
359 unsigned long dis_rd_flush_wr : 1;
360 unsigned long dis_packer_ful_cond : 1;
361 unsigned long dis_invalidate_by_ops_chnl : 1;
362 unsigned long en_halt_when_reqi_err : 1;
363 unsigned long cif_spare_2 : 5;
364 unsigned long : 1;
365 } __attribute__((packed));
366
367 union cif_write_dbg_u {
368 unsigned long val : 32;
369 struct cif_write_dbg_t f;
370 } __attribute__((packed));
371
372
373 struct intf_cntl_t {
374 unsigned char ad_inc_a : 1;
375 unsigned char ring_buf_a : 1;
376 unsigned char rd_fetch_trigger_a : 1;
377 unsigned char rd_data_rdy_a : 1;
378 unsigned char ad_inc_b : 1;
379 unsigned char ring_buf_b : 1;
380 unsigned char rd_fetch_trigger_b : 1;
381 unsigned char rd_data_rdy_b : 1;
382 } __attribute__((packed));
383
384 union intf_cntl_u {
385 unsigned char val : 8;
386 struct intf_cntl_t f;
387 } __attribute__((packed));
388
389 struct cpu_defaults_t {
390 unsigned char unpack_rd_data : 1;
391 unsigned char access_ind_addr_a : 1;
392 unsigned char access_ind_addr_b : 1;
393 unsigned char access_scratch_reg : 1;
394 unsigned char pack_wr_data : 1;
395 unsigned char transition_size : 1;
396 unsigned char en_read_buf_mode : 1;
397 unsigned char rd_fetch_scratch : 1;
398 } __attribute__((packed));
399
400 union cpu_defaults_u {
401 unsigned char val : 8;
402 struct cpu_defaults_t f;
403 } __attribute__((packed));
404
405 struct crtc_total_t {
406 unsigned long crtc_h_total : 10;
407 unsigned long : 6;
408 unsigned long crtc_v_total : 10;
409 unsigned long : 6;
410 } __attribute__((packed));
411
412 union crtc_total_u {
413 unsigned long val : 32;
414 struct crtc_total_t f;
415 } __attribute__((packed));
416
417 struct crtc_ss_t {
418 unsigned long ss_start : 10;
419 unsigned long : 6;
420 unsigned long ss_end : 10;
421 unsigned long : 2;
422 unsigned long ss_align : 1;
423 unsigned long ss_pol : 1;
424 unsigned long ss_run_mode : 1;
425 unsigned long ss_en : 1;
426 } __attribute__((packed));
427
428 union crtc_ss_u {
429 unsigned long val : 32;
430 struct crtc_ss_t f;
431 } __attribute__((packed));
432
433 struct active_h_disp_t {
434 unsigned long active_h_start : 10;
435 unsigned long : 6;
436 unsigned long active_h_end : 10;
437 unsigned long : 6;
438 } __attribute__((packed));
439
440 union active_h_disp_u {
441 unsigned long val : 32;
442 struct active_h_disp_t f;
443 } __attribute__((packed));
444
445 struct active_v_disp_t {
446 unsigned long active_v_start : 10;
447 unsigned long : 6;
448 unsigned long active_v_end : 10;
449 unsigned long : 6;
450 } __attribute__((packed));
451
452 union active_v_disp_u {
453 unsigned long val : 32;
454 struct active_v_disp_t f;
455 } __attribute__((packed));
456
457 struct graphic_h_disp_t {
458 unsigned long graphic_h_start : 10;
459 unsigned long : 6;
460 unsigned long graphic_h_end : 10;
461 unsigned long : 6;
462 } __attribute__((packed));
463
464 union graphic_h_disp_u {
465 unsigned long val : 32;
466 struct graphic_h_disp_t f;
467 } __attribute__((packed));
468
469 struct graphic_v_disp_t {
470 unsigned long graphic_v_start : 10;
471 unsigned long : 6;
472 unsigned long graphic_v_end : 10;
473 unsigned long : 6;
474 } __attribute__((packed));
475
476 union graphic_v_disp_u{
477 unsigned long val : 32;
478 struct graphic_v_disp_t f;
479 } __attribute__((packed));
480
481 struct graphic_ctrl_t_w100 {
482 unsigned long color_depth : 3;
483 unsigned long portrait_mode : 2;
484 unsigned long low_power_on : 1;
485 unsigned long req_freq : 4;
486 unsigned long en_crtc : 1;
487 unsigned long en_graphic_req : 1;
488 unsigned long en_graphic_crtc : 1;
489 unsigned long total_req_graphic : 9;
490 unsigned long lcd_pclk_on : 1;
491 unsigned long lcd_sclk_on : 1;
492 unsigned long pclk_running : 1;
493 unsigned long sclk_running : 1;
494 unsigned long : 6;
495 } __attribute__((packed));
496
497 struct graphic_ctrl_t_w32xx {
498 unsigned long color_depth : 3;
499 unsigned long portrait_mode : 2;
500 unsigned long low_power_on : 1;
501 unsigned long req_freq : 4;
502 unsigned long en_crtc : 1;
503 unsigned long en_graphic_req : 1;
504 unsigned long en_graphic_crtc : 1;
505 unsigned long total_req_graphic : 10;
506 unsigned long lcd_pclk_on : 1;
507 unsigned long lcd_sclk_on : 1;
508 unsigned long pclk_running : 1;
509 unsigned long sclk_running : 1;
510 unsigned long : 5;
511 } __attribute__((packed));
512
513 union graphic_ctrl_u {
514 unsigned long val : 32;
515 struct graphic_ctrl_t_w100 f_w100;
516 struct graphic_ctrl_t_w32xx f_w32xx;
517 } __attribute__((packed));
518
519 struct video_ctrl_t {
520 unsigned long video_mode : 1;
521 unsigned long keyer_en : 1;
522 unsigned long en_video_req : 1;
523 unsigned long en_graphic_req_video : 1;
524 unsigned long en_video_crtc : 1;
525 unsigned long video_hor_exp : 2;
526 unsigned long video_ver_exp : 2;
527 unsigned long uv_combine : 1;
528 unsigned long total_req_video : 9;
529 unsigned long video_ch_sel : 1;
530 unsigned long video_portrait : 2;
531 unsigned long yuv2rgb_en : 1;
532 unsigned long yuv2rgb_option : 1;
533 unsigned long video_inv_hor : 1;
534 unsigned long video_inv_ver : 1;
535 unsigned long gamma_sel : 2;
536 unsigned long dis_limit : 1;
537 unsigned long en_uv_hblend : 1;
538 unsigned long rgb_gamma_sel : 2;
539 } __attribute__((packed));
540
541 union video_ctrl_u {
542 unsigned long val : 32;
543 struct video_ctrl_t f;
544 } __attribute__((packed));
545
546 struct disp_db_buf_cntl_rd_t {
547 unsigned long en_db_buf : 1;
548 unsigned long update_db_buf_done : 1;
549 unsigned long db_buf_cntl : 6;
550 unsigned long : 24;
551 } __attribute__((packed));
552
553 union disp_db_buf_cntl_rd_u {
554 unsigned long val : 32;
555 struct disp_db_buf_cntl_rd_t f;
556 } __attribute__((packed));
557
558 struct disp_db_buf_cntl_wr_t {
559 unsigned long en_db_buf : 1;
560 unsigned long update_db_buf : 1;
561 unsigned long db_buf_cntl : 6;
562 unsigned long : 24;
563 } __attribute__((packed));
564
565 union disp_db_buf_cntl_wr_u {
566 unsigned long val : 32;
567 struct disp_db_buf_cntl_wr_t f;
568 } __attribute__((packed));
569
570 struct gamma_value1_t {
571 unsigned long gamma1 : 8;
572 unsigned long gamma2 : 8;
573 unsigned long gamma3 : 8;
574 unsigned long gamma4 : 8;
575 } __attribute__((packed));
576
577 union gamma_value1_u {
578 unsigned long val : 32;
579 struct gamma_value1_t f;
580 } __attribute__((packed));
581
582 struct gamma_value2_t {
583 unsigned long gamma5 : 8;
584 unsigned long gamma6 : 8;
585 unsigned long gamma7 : 8;
586 unsigned long gamma8 : 8;
587 } __attribute__((packed));
588
589 union gamma_value2_u {
590 unsigned long val : 32;
591 struct gamma_value2_t f;
592 } __attribute__((packed));
593
594 struct gamma_slope_t {
595 unsigned long slope1 : 3;
596 unsigned long slope2 : 3;
597 unsigned long slope3 : 3;
598 unsigned long slope4 : 3;
599 unsigned long slope5 : 3;
600 unsigned long slope6 : 3;
601 unsigned long slope7 : 3;
602 unsigned long slope8 : 3;
603 unsigned long : 8;
604 } __attribute__((packed));
605
606 union gamma_slope_u {
607 unsigned long val : 32;
608 struct gamma_slope_t f;
609 } __attribute__((packed));
610
611 struct mc_ext_mem_location_t {
612 unsigned long mc_ext_mem_start : 16;
613 unsigned long mc_ext_mem_top : 16;
614 } __attribute__((packed));
615
616 union mc_ext_mem_location_u {
617 unsigned long val : 32;
618 struct mc_ext_mem_location_t f;
619 } __attribute__((packed));
620
621 struct mc_fb_location_t {
622 unsigned long mc_fb_start : 16;
623 unsigned long mc_fb_top : 16;
624 } __attribute__((packed));
625
626 union mc_fb_location_u {
627 unsigned long val : 32;
628 struct mc_fb_location_t f;
629 } __attribute__((packed));
630
631 struct clk_pin_cntl_t {
632 unsigned long osc_en : 1;
633 unsigned long osc_gain : 5;
634 unsigned long dont_use_xtalin : 1;
635 unsigned long xtalin_pm_en : 1;
636 unsigned long xtalin_dbl_en : 1;
637 unsigned long : 7;
638 unsigned long cg_debug : 16;
639 } __attribute__((packed));
640
641 union clk_pin_cntl_u {
642 unsigned long val : 32;
643 struct clk_pin_cntl_t f;
644 } __attribute__((packed));
645
646 struct pll_ref_fb_div_t {
647 unsigned long pll_ref_div : 4;
648 unsigned long : 4;
649 unsigned long pll_fb_div_int : 6;
650 unsigned long : 2;
651 unsigned long pll_fb_div_frac : 3;
652 unsigned long : 1;
653 unsigned long pll_reset_time : 4;
654 unsigned long pll_lock_time : 8;
655 } __attribute__((packed));
656
657 union pll_ref_fb_div_u {
658 unsigned long val : 32;
659 struct pll_ref_fb_div_t f;
660 } __attribute__((packed));
661
662 struct pll_cntl_t {
663 unsigned long pll_pwdn : 1;
664 unsigned long pll_reset : 1;
665 unsigned long pll_pm_en : 1;
666 unsigned long pll_mode : 1;
667 unsigned long pll_refclk_sel : 1;
668 unsigned long pll_fbclk_sel : 1;
669 unsigned long pll_tcpoff : 1;
670 unsigned long pll_pcp : 3;
671 unsigned long pll_pvg : 3;
672 unsigned long pll_vcofr : 1;
673 unsigned long pll_ioffset : 2;
674 unsigned long pll_pecc_mode : 2;
675 unsigned long pll_pecc_scon : 2;
676 unsigned long pll_dactal : 4;
677 unsigned long pll_cp_clip : 2;
678 unsigned long pll_conf : 3;
679 unsigned long pll_mbctrl : 2;
680 unsigned long pll_ring_off : 1;
681 } __attribute__((packed));
682
683 union pll_cntl_u {
684 unsigned long val : 32;
685 struct pll_cntl_t f;
686 } __attribute__((packed));
687
688 struct sclk_cntl_t {
689 unsigned long sclk_src_sel : 2;
690 unsigned long : 2;
691 unsigned long sclk_post_div_fast : 4;
692 unsigned long sclk_clkon_hys : 3;
693 unsigned long sclk_post_div_slow : 4;
694 unsigned long disp_cg_ok2switch_en : 1;
695 unsigned long sclk_force_reg : 1;
696 unsigned long sclk_force_disp : 1;
697 unsigned long sclk_force_mc : 1;
698 unsigned long sclk_force_extmc : 1;
699 unsigned long sclk_force_cp : 1;
700 unsigned long sclk_force_e2 : 1;
701 unsigned long sclk_force_e3 : 1;
702 unsigned long sclk_force_idct : 1;
703 unsigned long sclk_force_bist : 1;
704 unsigned long busy_extend_cp : 1;
705 unsigned long busy_extend_e2 : 1;
706 unsigned long busy_extend_e3 : 1;
707 unsigned long busy_extend_idct : 1;
708 unsigned long : 3;
709 } __attribute__((packed));
710
711 union sclk_cntl_u {
712 unsigned long val : 32;
713 struct sclk_cntl_t f;
714 } __attribute__((packed));
715
716 struct pclk_cntl_t {
717 unsigned long pclk_src_sel : 2;
718 unsigned long : 2;
719 unsigned long pclk_post_div : 4;
720 unsigned long : 8;
721 unsigned long pclk_force_disp : 1;
722 unsigned long : 15;
723 } __attribute__((packed));
724
725 union pclk_cntl_u {
726 unsigned long val : 32;
727 struct pclk_cntl_t f;
728 } __attribute__((packed));
729
730
731 #define TESTCLK_SRC_PLL 0x01
732 #define TESTCLK_SRC_SCLK 0x02
733 #define TESTCLK_SRC_PCLK 0x03
734 /* 4 and 5 seem to by XTAL/M */
735 #define TESTCLK_SRC_XTAL 0x06
736
737 struct clk_test_cntl_t {
738 unsigned long testclk_sel : 4;
739 unsigned long : 3;
740 unsigned long start_check_freq : 1;
741 unsigned long tstcount_rst : 1;
742 unsigned long : 15;
743 unsigned long test_count : 8;
744 } __attribute__((packed));
745
746 union clk_test_cntl_u {
747 unsigned long val : 32;
748 struct clk_test_cntl_t f;
749 } __attribute__((packed));
750
751 struct pwrmgt_cntl_t {
752 unsigned long pwm_enable : 1;
753 unsigned long : 1;
754 unsigned long pwm_mode_req : 2;
755 unsigned long pwm_wakeup_cond : 2;
756 unsigned long pwm_fast_noml_hw_en : 1;
757 unsigned long pwm_noml_fast_hw_en : 1;
758 unsigned long pwm_fast_noml_cond : 4;
759 unsigned long pwm_noml_fast_cond : 4;
760 unsigned long pwm_idle_timer : 8;
761 unsigned long pwm_busy_timer : 8;
762 } __attribute__((packed));
763
764 union pwrmgt_cntl_u {
765 unsigned long val : 32;
766 struct pwrmgt_cntl_t f;
767 } __attribute__((packed));
768
769 #endif
770