Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  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
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
/*	$NetBSD: mq200reg.h,v 1.11 2010/02/28 15:52:16 snj Exp $	*/

/*-
 * Copyright (c) 2000, 2001 TAKEMURA Shin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 */

#define MQ200_VENDOR_ID		0x4d51
#define MQ200_PRODUCT_ID	0x0200
#define MQ200_MAPSIZE		0x800000

#define MQ200_POWERSTATE_D0	0
#define MQ200_POWERSTATE_D1	1
#define MQ200_POWERSTATE_D2	2
#define MQ200_POWERSTATE_D3	3

#define MQ200_CLOCK_BUS		0
#define MQ200_CLOCK_PLL1	1
#define MQ200_CLOCK_PLL2	2
#define MQ200_CLOCK_PLL3	3

#define MQ200_REGADDR		0x600000	/* register base address */
#define MQ200_PM		0x000000	/* power management	*/
#define MQ200_CC		0x002000	/* CPU interface	*/
#define MQ200_MM		0x004000	/* memory interface unit */
#define MQ200_IN		0x008000	/* interrupt controller	*/
#define MQ200_GC(n)		(0x00a000+0x80*(n))
#define MQ200_GE		0x00c000	/* graphics engine	*/
#define MQ200_FP		0x00e000	/* flat panel controller*/
#define MQ200_CP1		0x010000	/* color palette 1	*/
#define MQ200_DC		0x014000	/* device configuration	*/
#define MQ200_PC		0x016000	/* PCI configuration	*/

/*
 * Power Management
 */

/*
 * CPU Interface
 */

/*
 * Memory Interface Unit
 */
#define MQ200_MMR(n)		(MQ200_MM+(n)*4)
#	define MQ200_MM00_ENABLE		(1<<0)
#	define MQ200_MM00_RESET			(1<<1)
#	define MQ200_MM00_DRAM_RESET		(1<<2)
#	define MQ200_MM01_CLK_PLL1		(0<<0)
#	define MQ200_MM01_CLK_BUS		(1<<0)
#	define MQ200_MM01_CLK_PLL2		(1<<0)
#	define MQ200_MM01_SLOW_REFRESH_EN	(1<<1)
#	define MQ200_MM01_CPU_PB_EN		(1<<2)
#	define MQ200_MM01_GC1_PB_EN		(1<<3)
#	define MQ200_MM01_GC2_PB_EN		(1<<4)
#	define MQ200_MM01_STN_READ_PB_EN	(1<<5)
#	define MQ200_MM01_STN_WRITE_PB_EN	(1<<6)
#	define MQ200_MM01_GE_PB_EN		(1<<7)
	/* bits 11-8 is reserved */
#	define MQ200_MM01_REFRESH_SHIFT		12
#	define MQ200_MM01_REFRESH_MASK		0x03fff000
	/* bits 29 is reserved	*/
#	define MQ200_MM01_DRAM_AUTO_REFRESH_EN	(1<<30)
#	define MQ200_MM01_DRAM_STANDBY_EN	(1<<31)

/*
 * Interrupt Controller
 */

/*
 * Graphics Controller 1/2
 */
#define MQ200_GC1		0	/* graphice controller 1*/
#define MQ200_GC2		1	/* graphice controller 2*/
#define MQ200_GCR(n)		(MQ200_GC(0)+(n)*4)
/* GC Control (GC00R and GC20R)	*/
#define MQ200_GCCR(n)		(MQ200_GC(n)+0x00)
#	define MQ200_GCC_ENABLE		(1<<0)
#	define MQ200_GCC_HCRESET	(1<<1)
#	define MQ200_GCC_VCRESET	(1<<2)
#	define MQ200_GCC_WINEN		(1<<3)
#	define MQ200_GCC_DEPTH_SHIFT	4
#	define MQ200_GCC_DEPTH_MASK	0x000000f0
#	define MQ200_GCC_HCEN		(1<<8)
	/* bits 10-9 is reserved */
#	define MQ200_GCC_ALTEN		(1<<11)
#	define MQ200_GCC_ALTDEPTH_SHIFT 12
#	define MQ200_GCC_ALTDEPTH_MASK	0x0000f000
#	define MQ200_GCC_RCLK_SHIFT	16
#	define MQ200_GCC_RCLK_MASK	0x00030000
#	define MQ200_GCC_RCLK_BUS	0x00000000
#	define MQ200_GCC_RCLK_PLL1	0x00010000
#	define MQ200_GCC_RCLK_PLL2	0x00020000
#	define MQ200_GCC_RCLK_PLL3	0x00030000
#	define MQ200_GCC_TESTMODE0	(1<<18)
#	define MQ200_GCC_TESTMODE1	(1<<19)
	/* FD(first clock divisor) is 1, 1.5, 2.5, 3.5, 4.5, 5.6 or 6.5 */
#	define MQ200_GCC_MCLK_FD_SHIFT	20
#	define MQ200_GCC_MCLK_FD_MASK	0x00700000
#	define MQ200_GCC_MCLK_FD_1	0x00000000
#	define MQ200_GCC_MCLK_FD_1_5	0x00100000
#	define MQ200_GCC_MCLK_FD_2_5	0x00200000
#	define MQ200_GCC_MCLK_FD_3_5	0x00300000
#	define MQ200_GCC_MCLK_FD_4_5	0x00400000
#	define MQ200_GCC_MCLK_FD_5_5	0x00500000
#	define MQ200_GCC_MCLK_FD_6_5	0x00600000
	/* bit 23 is reserved */
	/* SD(second close divisor) is 1-255. 0 means disable */
#	define MQ200_GCC_MCLK_SD_SHIFT	24
#	define MQ200_GCC_MCLK_SD_MASK	0xff000000
	/* GCCR_DEPTH and GCCR_ALTDEPTH values */
#	define MQ200_GCC_1BPP		0x0
#	define MQ200_GCC_2BPP		0x1
#	define MQ200_GCC_4BPP		0x2
#	define MQ200_GCC_8BPP		0x3
#	define MQ200_GCC_16BPP		0x4
#	define MQ200_GCC_24BPP		0x5
#	define MQ200_GCC_ARGB888	0x6
#	define MQ200_GCC_PALBGR		0x6
#	define MQ200_GCC_ABGR888	0x7
#	define MQ200_GCC_PALRGB		0x7
#	define MQ200_GCC_16BPP_DIRECT	0xc
#	define MQ200_GCC_24BPP_DIRECT	0xd
#	define MQ200_GCC_ARGB888_DIRECT 0xe
#	define MQ200_GCC_PALBGR_DIRECT	0xe
#	define MQ200_GCC_ABGR888_DIRECT 0xf
#	define MQ200_GCC_PALRGB_DIRECT	0xf

/* GC CRT Control (GC1only)	*/
#define MQ200_GC1CRTCR		MQ200_GCR(0x01)
#	define MQ200_GC1CRTC_DACEN		(1<<0)
#	define MQ200_GC1CRTC_HSYNC_PMCLK	(1<<2)
#	define MQ200_GC1CRTC_VSYNC_PMCLK	(1<<3)
#	define MQ200_GC1CRTC_HSYNC_PMMASK	0x00000030
#	define MQ200_GC1CRTC_HSYNC_PMNORMAL	0x00000000
#	define MQ200_GC1CRTC_HSYNC_PMLOW	0x00000010
#	define MQ200_GC1CRTC_HSYNC_PMHIGH	0x00000020
#	define MQ200_GC1CRTC_VSYNC_PMMASK	0x000000c0
#	define MQ200_GC1CRTC_VSYNC_PMNORMAL	0x00000000
#	define MQ200_GC1CRTC_VSYNC_PMLOW	0x00000040
#	define MQ200_GC1CRTC_VSYNC_PMHIGH	0x00000080
#	define MQ200_GC1CRTC_HSYNC_ACTVHIGH	(0<<8)
#	define MQ200_GC1CRTC_HSYNC_ACTVLOW	(1<<8)
#	define MQ200_GC1CRTC_VSYNC_ACTVHIGH	(0<<9)
#	define MQ200_GC1CRTC_VSYNC_ACTVLOW	(1<<9)
#	define MQ200_GC1CRTC_SYNC_PEDESTAL_EN	(1<<10)
#	define MQ200_GC1CRTC_BLANK_PEDESTAL_EN	(1<<11)
#	define MQ200_GC1CRTC_COMPOSITE_SYNC_EN	(1<<12)
#	define MQ200_GC1CRTC_VREF_INTR		(0<<13)
#	define MQ200_GC1CRTC_VREF_EXTR		(1<<13)
#	define MQ200_GC1CRTC_MONITOR_SENCE_EN	(1<<14)
#	define MQ200_GC1CRTC_CONSTANT_OUTPUT_EN	(1<<15)
#	define MQ200_GC1CRTC_OUTPUT_LEVEL_MASK	0x00ff0000
#	define MQ200_GC1CRTC_OUTPUT_LEVEL_SHIFT	16
#	define MQ200_GC1CRTC_BLUE_NOTLOADED	(1<<24)
#	define MQ200_GC1CRTC_RED_NOTLOADED	(1<<25)
#	define MQ200_GC1CRTC_GREEN_NOTLOADED	(1<<26)
	/* bit 27 is reserved */
#	define MQ200_GC1CRTC_COLOR		(0<<28)
#	define MQ200_GC1CRTC_MONO		(1<<28)
	/* bits 31-29 are reserved */

/* GC CRC Control (GC2 only)	*/
#define MQ200_GC2CRCCR		MQ200_GCR(0x21)
#	define MQ200_GC2CRCC_ENABLE		(1<<0)
#	define MQ200_GC2CRCC_WAIT1VSYNC		(0<<1)
#	define MQ200_GC2CRCC_WAIT2VSYNC		(1<<1)
#	define MQ200_GC2CRCC_BLUE		(0x0<<2)
#	define MQ200_GC2CRCC_GREEN		(0x1<<2)
#	define MQ200_GC2CRCC_RED		(0x2<<2)
#	define MQ200_GC2CRCC_RESULT_SHIFT	8
#	define MQ200_GC2CRCC_RESULT_MASK	0x3fffff00

/* GC Hotizontal Display Control (GC02R and GC22R)	*/
#define MQ200_GCHDCR(n)		(MQ200_GC(n)+0x08)
#	define MQ200_GC1HDC_TOTAL_MASK		0x00000fff
#	define MQ200_GC1HDC_TOTAL_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCHDC_END_MASK		0x0fff0000
#	define MQ200_GCHDC_END_SHIFT		16
	/* bits 31-28 are reserved */

/* GC Vertical Display Control (GC03R and GC23R)	*/
#define MQ200_GCVDCR(n)		(MQ200_GC(n)+0x0c)
#	define MQ200_GC1VDC_TOTAL_MASK		0x00000fff
#	define MQ200_GC1VDC_TOTAL_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCVDC_END_MASK		0x0fff0000
#	define MQ200_GCVDC_END_SHIFT		16
	/* bits 31-28 are reserved */

/* GC Hotizontal Sync Control (GC04R and GC24R)	*/
#define MQ200_GCHSCR(n)		(MQ200_GC(n)+0x10)
#	define MQ200_GCHSC_START_MASK		0x00000fff
#	define MQ200_GCHSC_START_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCHSC_END_MASK		0x0fff0000
#	define MQ200_GCHSC_END_SHIFT		16
	/* bits 31-28 are reserved */

/* GC Vertical Sync Control (GC05R and GC25R)	*/
#define MQ200_GCVSCR(n)		(MQ200_GC(n)+0x14)
#	define MQ200_GCVSC_START_MASK		0x00000fff
#	define MQ200_GCVSC_START_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCVSC_END_MASK		0x0fff0000
#	define MQ200_GCVSC_END_SHIFT		16
	/* bits 31-28 are reserved */

/* GC Vertical Display Count (GC07R)	*/
#define MQ200_GC1VDCNTR		MQ200_GCR(0x07)
#	define MQ200_GC1VDCNT_MASK		0x00000fff
	/* bits 31-12 are reserved */

/* GC Window Horizontal Control (GC08R and GC28R)	*/
#define MQ200_GCWHCR(n)		(MQ200_GC(n)+0x20)
#	define MQ200_GCWHC_START_MASK		0x00000fff
#	define MQ200_GCWHC_START_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCWHC_WIDTH_MASK		0x0fff0000
#	define MQ200_GCWHC_WIDTH_SHIFT		16
	/* ALD: Additional Line Delta (GC1 only) */
#	define MQ200_GC1WHC_ALD_MASK		0xf0000000
#	define MQ200_GC1WHC_ALD_SHIFT		28

/* GC Window Vertical Control (GC09R and GC29R)	*/
#define MQ200_GCWVCR(n)		(MQ200_GC(n)+0x24)
#	define MQ200_GCWVC_START_MASK		0x00000fff
#	define MQ200_GCWVC_START_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCWVC_HEIGHT_MASK		0x0fff0000
#	define MQ200_GCWVC_HEIGHT_SHIFT		16
	/* bits 31-28 are reserved */

/* GC Altarnate Window Horizontal Control (GC0AR and GC2AR)	*/
#define MQ200_GCAWHCR(n)	(MQ200_GC(n)+0x28)
#	define MQ200_GCAWHC_START_MASK		0x00000fff
#	define MQ200_GCAWHC_START_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCAWHC_WIDTH_MASK		0x0fff0000
#	define MQ200_GCAWHC_WIDTH_SHIFT		16
	/* ALD: Additional Line Delta (GC1 only) */
#	define MQ200_GC1AWHC_ALD_MASK		0xf0000000
#	define MQ200_GC1AWHC_ALD_SHIFT		28

/* GC Alternate Window Vertical Control (GC0BR and GC2BR)	*/
#define MQ200_GCAWVCR(n)	(MQ200_GC(n)+0x2C)
#	define MQ200_GCAWVC_START_MASK		0x00000fff
#	define MQ200_GCAWVC_START_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCAWVC_HEIGHT_MASK		0x0fff0000
#	define MQ200_GCAWVC_HEIGHT_SHIFT	16
	/* bits 31-28 are reserved */

/* GC Window Start Address (GC0CR and GC2CR)	*/
#define MQ200_GCWSAR(n)		(MQ200_GC(n)+0x30)
#	define MQ200_GCWSA_MASK		0x000fffff
	/* bits 31-21 are reserved */

/* GC Alternate Window Start Address (GC0DR and GC2DR)	*/
#define MQ200_GCAWSAR(n)	(MQ200_GC(n)+0x34)
#	define MQ200_GCAWSA_MASK	0x000fffff
	/* bits 24-21 are reserved */
#	define MQ200_GCAWPI_MASK	0xfe000000
#	define MQ200_GCAWPI_SHIFT	24	/* XXX, 24 could be useful
						   than 23 */

/* GC Window Stride (GC0ER and GC2ER)	*/
#define MQ200_GCWSTR(n)		(MQ200_GC(n)+0x38)
#	define MQ200_GCWST_MASK		0x0000ffff
#	define MQ200_GCWST_SHIFT	0
#	define MQ200_GCAWST_MASK	0xffff0000
#	define MQ200_GCAWST_SHIFT	16

/* GC2 Line Size (GC2 only, GC2FR)	*/
#define MQ200_GC2LSR		MQ200_GCR(0x2f)
#	define MQ200_GC2WLS_MASK	0x00003fff
#	define MQ200_GC2WLS_SHIFT	0
#	define MQ200_GC2AWLS_MASK	0x3fff0000
#	define MQ200_GC2AWLS_SHIFT	16


/* GC Hardware Cursor Position (GC10R and GC30R)	*/
#define MQ200_GCHCPR(n)		(MQ200_GC(n)+0x40)
#	define MQ200_GCHCP_HSTART_MASK		0x00000fff
#	define MQ200_GCHCP_HSTART_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCHCP_VSTART_MASK		0x0fff0000
#	define MQ200_GCHCP_VSTART_SHIFT		16
	/* bits 31-28 are reserved */

/* GC Hardware Start Address and Offset (GC11R and GC31R)	*/
#define MQ200_GCHCAOR(n)		(MQ200_GC(n)+0x44)
#	define MQ200_GCHCAO_ADDR_MASK		0x00000fff
#	define MQ200_GCHCAO_ADDR_SHIFT		0
	/* bits 15-12 are reserved */
#	define MQ200_GCHCAO_HOFFSET_MASK	0x003f0000
#	define MQ200_GCHCAO_HOFFSET_SHIFT	16
	/* bits 23-22 are reserved */
#	define MQ200_GCHCAO_VOFFSET_MASK	0x3f000000
#	define MQ200_GCHCAO_VOFFSET_SHIFT	24
	/* bits 31-30 are reserved */

/* GC Hardware Cursor Foreground Color (GC13R and GC33R)	*/
#define MQ200_GCHCFCR(n)	(MQ200_GC(n)+0x48)
#	define MQ200_GCHCFC_MASK		0x00ffffff
	/* you can use MQ200_GC_RGB macro	*/
	/* bits 31-24 are reserved */

/* GC Hardware Cursor Background Color (GC14R and GC34R)	*/
#define MQ200_GCHCBCR(n)	(MQ200_GC(n)+0x4c)
#	define MQ200_GCHCBC_MASK		0x00ffffff
	/* you can use MQ200_GC_RGB macro	*/
	/* bits 31-24 are reserved */

#define MQ200_GC1CR		MQ200_GCCR(0)
#define MQ200_GC1HDCR		MQ200_GCHDCR(0)
#define MQ200_GC1VDCR		MQ200_GCVDCR(0)
#define MQ200_GC1HSCR		MQ200_GCHSCR(0)
#define MQ200_GC1VSCR		MQ200_GCVSCR(0)
#define MQ200_GC1HWCR		MQ200_GCHWCR(0)
#define MQ200_GC1VWCR		MQ200_GCVWCR(0)
#define MQ200_GC1HAWCR		MQ200_GCHAWCR(0)
#define MQ200_GC1AVWCR		MQ200_GCAVWCR(0)
#define MQ200_GC1WSAR		MQ200_GCWSAR(0)
#define MQ200_GC1AWSAR		MQ200_GCAWSAR(0)
#define MQ200_GC1WSTR		MQ200_GCWSTR(0)
#define MQ200_GC1HCPR		MQ200_GCHCPR(0)
#define MQ200_GC1HCAOR		MQ200_GCHCAOR(0)
#define MQ200_GC1HCFCR		MQ200_GCHCFCR(0)
#define MQ200_GC1HCBCR		MQ200_GCHCBCR(0)

#define MQ200_GC2CR		MQ200_GCCR(1)
#define MQ200_GC2HDCR		MQ200_GCHDCR(1)
#define MQ200_GC2VDCR		MQ200_GCVDCR(1)
#define MQ200_GC2HSCR		MQ200_GCHSCR(1)
#define MQ200_GC2VSCR		MQ200_GCVSCR(1)
#define MQ200_GC2HWCR		MQ200_GCHWCR(1)
#define MQ200_GC2VWCR		MQ200_GCVWCR(1)
#define MQ200_GC2HAWCR		MQ200_GCHAWCR(1)
#define MQ200_GC2AVWCR		MQ200_GCAVWCR(1)
#define MQ200_GC2WSAR		MQ200_GCWSAR(1)
#define MQ200_GC2AWSAR		MQ200_GCAWSAR(1)
#define MQ200_GC2WSTR		MQ200_GCWSTR(1)
#define MQ200_GC2HCPR		MQ200_GCHCPR(1)
#define MQ200_GC2HCAOR		MQ200_GCHCAOR(1)
#define MQ200_GC2HCFCR		MQ200_GCHCFCR(1)
#define MQ200_GC2HCBCR		MQ200_GCHCBCR(1)

/*
 * Graphics Engine
 */

/*
 * Flat Pannel Controller
 */
#define MQ200_FPR(n)		(MQ200_FP + (n)*4)
/* FP Control	(FP00R)	*/
#define MQ200_FPCR		MQ200_FPR(0)
#	define MQ200_FPC_ENABLE		(1<<0)
#	define MQ200_FPC_GC1		(0<<1)
#	define MQ200_FPC_GC2		(1<<1)
#	define MQ200_FPC_TYPE_MASK	0x000000fc
#	define MQ200_FPC_TYPE_SHIFT	2

#	define MQ200_FPC_TFT		(0<<2)
#	define MQ200_FPC_SSTN		(1<<2)
#	define MQ200_FPC_DSTN		(2<<2)

#	define MQ200_FPC_COLOR		(0<<4)
#	define MQ200_FPC_MONO		(1<<4)

#	define MQ200_FPC_TFTCOLOR	(MQ200_FPC_TFT|MQ200_FPC_COLOR)
#	define MQ200_FPC_SSTNCOLOR	(MQ200_FPC_SSTN|MQ200_FPC_COLOR)
#	define MQ200_FPC_DSTNCOLOR	(MQ200_FPC_DSTN|MQ200_FPC_COLOR)

#	define MQ200_FPC_TFTMONO	(MQ200_FPC_TFT|MQ200_FPC_MONO)
#	define MQ200_FPC_SSTNMONO	(MQ200_FPC_SSTN|MQ200_FPC_MONO)
#	define MQ200_FPC_DSTNMONO	(MQ200_FPC_DSTN|MQ200_FPC_MONO)

#	define MQ200_FPC_TFT4MONO	((0<<5)|MQ200_FPC_TFTMONO)
#	define MQ200_FPC_TFT12		((0<<5)|MQ200_FPC_TFTCOLOR)
#	define MQ200_FPC_SSTN4		((0<<5)|MQ200_FPC_SSTNCOLOR)
#	define MQ200_FPC_DSTN8		((0<<5)|MQ200_FPC_DSTNCOLOR)
#	define MQ200_FPC_TFT6MONO	((1<<5)|MQ200_FPC_TFTMONO)
#	define MQ200_FPC_TFT18		((1<<5)|MQ200_FPC_TFTCOLOR)
#	define MQ200_FPC_SSTN8		((1<<5)|MQ200_FPC_SSTNCOLOR)
#	define MQ200_FPC_DSTN16		((1<<5)|MQ200_FPC_DSTNCOLOR)
#	define MQ200_FPC_TFT8MONO	((2<<5)|MQ200_FPC_TFTMONO)
#	define MQ200_FPC_TFT24		((2<<5)|MQ200_FPC_TFTCOLOR)
#	define MQ200_FPC_SSTN12		((2<<5)|MQ200_FPC_SSTNCOLOR)
#	define MQ200_FPC_DSTN24		((2<<5)|MQ200_FPC_DSTNCOLOR)
#	define MQ200_FPC_SSTN16		((3<<5)|MQ200_FPC_SSTNCOLOR)
#	define MQ200_FPC_SSTN24		((4<<5)|MQ200_FPC_SSTNCOLOR)
#	define MQ200_FPC_DITH_DISABLE	(0<<8)
#	define MQ200_FPC_DITH_PTRN1	(1<<8)
#	define MQ200_FPC_DITH_PTRN2	(2<<8)
#	define MQ200_FPC_DITH_PTRN3	(3<<8)
	/* bits 11-10 are reserved */
#	define MQ200_FPC_DITH_BC_MASK	0x00007000
#	define MQ200_FPC_DITH_BC_SHIFT	12
#	define MQ200_FPC_FRC_DISABLE_ALTWIN	(1<<15)
#	define MQ200_FPC_FRC_2LEVEL	(0<<16)
#	define MQ200_FPC_FRC_4LEVEL	(1<<16)
#	define MQ200_FPC_FRC_8LEVEL	(2<<16)
#	define MQ200_FPC_FRC_16LEVEL	(3<<16)
#	define MQ200_FPC_DITH_ADJ_MASK	0x0ffc0000
#	define MQ200_FPC_DITH_ADJ_SHIFT 18
#	define MQ200_FPC_DITH_ADJ_VAL	0x018
#	define MQ200_FPC_DITH_ADJ1_MASK	0x00fc0000
#	define MQ200_FPC_DITH_ADJ1_SHIFT 18
#	define MQ200_FPC_DITH_ADJ1_VAL	0x18
#	define MQ200_FPC_DITH_ADJ2_MASK	0x07000000
#	define MQ200_FPC_DITH_ADJ2_SHIFT 24
#	define MQ200_FPC_DITH_ADJ2_VAL	0x0
#	define MQ200_FPC_DITH_ADJ3_MASK	0x08000000
#	define MQ200_FPC_DITH_ADJ3_SHIFT 27
#	define MQ200_FPC_DITH_ADJ3_VAL	0x0
#	define MQ200_FPC_TESTMODE0	(1<<28)
#	define MQ200_FPC_TESTMODE1	(1<<29)
#	define MQ200_FPC_TESTMODE2	(1<<30)
#	define MQ200_FPC_TESTMODE3	(1<<31)

/* FP Output Pin Control	(FP01R)	*/
#define MQ200_FPPCR		MQ200_FPR(1)
#	define MQ200_FPPC_PIN_LOW	(1<<0)
#	define MQ200_FPPC_INVERSION_EN	(1<<1)
#	define MQ200_FPPC_FDE_COMPOSITE	(0<<2)
#	define MQ200_FPPC_FDE_HORIZONTAL (1<<2)
#	define MQ200_FPPC_FDE_FMOD_EN	(1<<3)
#	define MQ200_FPPC_FD2_DATAK	(0<<4)
#	define MQ200_FPPC_FD2_SHIFTCLK	(1<<4)
#	define MQ200_FPPC_FSCLK_EN	(1<<5)
#	define MQ200_FPPC_SHIFTCLK_DIV2	(1<<6)
#	define MQ200_FPPC_SHIFTCLK_MASK	(1<<7)
#	define MQ200_FPPC_STNLP_BLANK	(1<<8)
#	define MQ200_FPPC_SHIFTCLK_BLANK (1<<9)
#	define MQ200_FPPC_STNEXLP_EN	(1<<10)
	/* bit 11 is reserved */
#	define MQ200_FPPC_FD2_MAX	(0<<12)
#	define MQ200_FPPC_FD2_MID	(1<<12)
#	define MQ200_FPPC_FD2_MID2	(2<<12)
#	define MQ200_FPPC_FD2_MIN	(3<<12)
#	define MQ200_FPPC_DRV_MAX	(0<<12)
#	define MQ200_FPPC_DRV_MID	(1<<12)
#	define MQ200_FPPC_DRV_MID2	(2<<12)
#	define MQ200_FPPC_DRV_MIN	(3<<12)
#	define MQ200_FPPC_FD2_ACTVHIGH	(0<<16)
#	define MQ200_FPPC_FD2_ACTVLOW	(1<<16)
#	define MQ200_FPPC_ACTVHIGH	(0<<17)
#	define MQ200_FPPC_ACTVLOW	(1<<17)
#	define MQ200_FPPC_FDE_ACTVHIGH	(0<<18)
#	define MQ200_FPPC_FDE_ACTVLOW	(1<<18)
#	define MQ200_FPPC_FHSYNC_ACTVHIGH (0<<19)
#	define MQ200_FPPC_FHSYNC_ACTVLOW (1<<19)
#	define MQ200_FPPC_FVSYNC_ACTVHIGH (0<<20)
#	define MQ200_FPPC_FVSYNC_ACTVLOW (1<<20)
#	define MQ200_FPPC_FSCLK_ACTVHIGH (0<<21)
#	define MQ200_FPPC_FSCLK_ACTVLOW	(1<<21)
#	define MQ200_FPPC_FSCLK_MAX	(0<<22)
#	define MQ200_FPPC_FSCLK_MID	(1<<22)
#	define MQ200_FPPC_FSCLK_MID2	(2<<22)
#	define MQ200_FPPC_FSCLK_MIN	(3<<22)
#	define MQ200_FPPC_FSCLK_DELAY_MASK 0x07000000
#	define MQ200_FPPC_FSCLK_DELAY_SHIFT 24
	/* bits 31-27 are reserved */

/* FP General Purpose Output Port Control	(FP02R)	*/
#define MQ200_FPGPOCR		MQ200_FPR(2)
#	define MQ200_FPGPOC_ENCTL_EN	(0<<0)
#	define MQ200_FPGPOC_GPO0_EN	(1<<0)
#	define MQ200_FPGPOC_OSCCLK_EN	(2<<0)
#	define MQ200_FPGPOC_PLL3_EN	(3<<0)
#	define MQ200_FPGPOC_ENVEE_EN	(0<<2)
#	define MQ200_FPGPOC_GPO1_EN	(1<<2)
#	define MQ200_FPGPOC_PWM0_EN	(0<<4)
#	define MQ200_FPGPOC_GPO2_EN	(1<<4)
#	define MQ200_FPGPOC_PWM1_EN	(0<<6)
#	define MQ200_FPGPOC_GPO3_EN	(1<<6)
#	define MQ200_FPGPOC_ENVDD_EN	(0<<8)
#	define MQ200_FPGPOC_GPO4_EN	(1<<9)
#	define MQ200_FPGPOC_PWM_MAX	(0<<10)
#	define MQ200_FPGPOC_PWM_MID	(1<<10)
#	define MQ200_FPGPOC_PWM_MID2	(2<<10)
#	define MQ200_FPGPOC_PWM_MIN	(3<<10)
#	define MQ200_FPGPOC_GPO_MAX	(0<<12)
#	define MQ200_FPGPOC_GPO_MID	(1<<12)
#	define MQ200_FPGPOC_GPO_MID2	(2<<12)
#	define MQ200_FPGPOC_GPO_MIN	(3<<12)
#	define MQ200_FPGPOC_DRV_MAX	(0<<14)
#	define MQ200_FPGPOC_DRV_MID	(1<<14)
#	define MQ200_FPGPOC_DRV_MID2	(2<<14)
#	define MQ200_FPGPOC_DRV_MIN	(3<<14)
#	define MQ200_FPGPOC_GPO0	(1<<16)
#	define MQ200_FPGPOC_GPO1	(1<<17)
#	define MQ200_FPGPOC_GPO2	(1<<18)
#	define MQ200_FPGPOC_GPO3	(1<<19)
#	define MQ200_FPGPOC_GPO4	(1<<20)
	/* bits 31-21 are reserved */

/* FP General Purpose I/O Port Control	(FP03R)	*/
#define MQ200_FPGPOICR		MQ200_FPR(3)
#	define MQ200_FPGPIOC_INPUT0_EN	(0<<0)
#	define MQ200_FPGPIOC_OUTPUT0_EN	(1<<0
#	define MQ200_FPGPIOC_PLL1_EN	(2<<0)
#	define MQ200_FPGPIOC_CRCBLUE_EN	(3<<0)
#	define MQ200_FPGPIOC_INPUT1_EN	(0<<2)
#	define MQ200_FPGPIOC_OUTPUT1_EN	(1<<2
#	define MQ200_FPGPIOC_PLL2_EN	(2<<2)
#	define MQ200_FPGPIOC_CRCGREEN_EN (3<<2)
#	define MQ200_FPGPIOC_INPUT2_EN	(0<<4)
#	define MQ200_FPGPIOC_OUTPUT2_EN	(1<<4
#	define MQ200_FPGPIOC_PMCLK_EN	(2<<4)
#	define MQ200_FPGPIOC_CRCRED_EN	(3<<4)
	/* bits 15-6 are reserved */
#	define MQ200_FPGPIOC_OUTPUT0	(1<<16)
#	define MQ200_FPGPIOC_OUTPUT1	(1<<17)
#	define MQ200_FPGPIOC_OUTPUT2	(1<<18)
	/* bits 23-19 are reserved */
#	define MQ200_FPGPIOC_INPUT0	(1<<24)
#	define MQ200_FPGPIOC_INPUT1	(1<<25)
#	define MQ200_FPGPIOC_INPUT2	(1<<26)
	/* bits 31-27 are reserved */

/* FP STN Panel Control	(FP04R)	*/
#define MQ200_FPSTNCR		MQ200_FPR(4)
#	define MQ200_FPSTNC_FRCPRM0_MASK	0x000000ff
#	define MQ200_FPSTNC_FRCPRM0_SHIFT	0
#	define MQ200_FPSTNC_FRCPRM1_MASK	0x0000ff00
#	define MQ200_FPSTNC_FRCPRM1_SHIFT	8
#	define MQ200_FPSTNC_FRCPRM2_MASK	0x00ff0000
#	define MQ200_FPSTNC_FRCPRM2_SHIFT	16
#	define MQ200_FPSTNC_FMOD_MASK		0x7f000000
#	define MQ200_FPSTNC_FMOD_SHIFT		24
#	define MQ200_FPSTNC_FMOD_FRAMECLK	(0<<31)
#	define MQ200_FPSTNC_FMOD_LINECLK	(0<<31)

/* FP D-STN Half-Frame Buffer Control	(FP05R)	*/
#define MQ200_FPHFBCR		MQ200_FPR(5)
#	define MQ200_FPHFBC_START_MASK	0x00003fff
#	define MQ200_FPHFBC_START_SHIFT	-7	/* XXX, does this work? */
	/* bits 15-14 are reserved */
#	define MQ200_FPHFBC_END_MASK	0xffff0000
#	define MQ200_FPHFBC_END_SHIFT	(16-4)	/* XXX, does this work? */

/* FP Pulse Width Modulation Control	(FP0FR)	*/
#define MQ200_FPPWMCR		MQ200_FPR(0xf)
#	define MQ200_FPPWMC_PWM0_OSCCLK		(0<<0)
#	define MQ200_FPPWMC_PWM0_BUSCLK		(1<<0)
#	define MQ200_FPPWMC_PWM0_PMCLK		(2<<0)
#	define MQ200_FPPWMC_PWM0_PWSEQ_EN	(0<<2)
#	define MQ200_FPPWMC_PWM0_PWSEQ_DISABLE	(1<<2)
	/* bit 3 is reserved */
#	define MQ200_FPPWMC_PWM0_DIV_MASK	0x000000f0
#	define MQ200_FPPWMC_PWM0_DIV_SHIFT	4
#	define MQ200_FPPWMC_PWM0_DCYCLE_MASK	0x0000ff00
#	define MQ200_FPPWMC_PWM0_DCYCLE_SHIFT	8
#	define MQ200_FPPWMC_PWM1_OSCCLK		(0<<16)
#	define MQ200_FPPWMC_PWM1_BUSCLK		(1<<16)
#	define MQ200_FPPWMC_PWM1_PMCLK		(2<<16)
#	define MQ200_FPPWMC_PWM1_PWSEQ_EN	(0<<18)
#	define MQ200_FPPWMC_PWM1_PWSEQ_DISABLE	(1<<18)
	/* bit 19 is reserved */
#	define MQ200_FPPWMC_PWM1_DIV_MASK	0x00f00000
#	define MQ200_FPPWMC_PWM1_DIV_SHIFT	20
#	define MQ200_FPPWMC_PWM1_DCYCLE_MASK	0xff000000
#	define MQ200_FPPWMC_PWM1_DCYCLE_SHIFT	24

/* FP Frame Rate Control Pattern	(FP10R to FP2FR)	*/
#define MQ200_FPFRCPR(n)	MQ200_FPR(0x10+n)

/* FP Frame Rate Control Weight		(FP30R to FP37R)	*/
#define MQ200_FPFRCWR(n)	MQ200_FPR(0x30+n)

/*
 * Color Palette 1
 */
#define MQ200_CP(cp, idx)	(MQ200_CP1 + (idx) * 4)	*/
#	define MQ200_GC_BLUE_MASK		0x00ff0000
#	define MQ200_GC_BLUE_SHIFT		16
#	define MQ200_GC_GREEN_MASK		0x0000ff00
#	define MQ200_GC_GREEN_SHIFT		8
#	define MQ200_GC_RED_MASK		0x000000ff
#	define MQ200_GC_RED_SHIFT		0
#	define MQ200_GC_RGB(r, g, b) \
		(((((unsigned long)(r))&0xff)<<0) | \
		    ((((unsigned long)(g))&0xff)<<8) | \
		    ((((unsigned long)(b))&0xff)<<16))

/*
 * Device Configuration
 */

/*
 * PCI configuration space
 */
#define MQ200_PC00R		(MQ200_PC+0x00)	/* device/vendor ID	*/
#define MQ200_PC04R		(MQ200_PC+0x04)	/* command/status	*/
#define MQ200_PC08R		(MQ200_PC+0x04)	/* calss code/revision	*/

#define MQ200_PMR		(MQ200_PC+0x40)	/* power management	*/
#define MQ200_PMCSR		(MQ200_PC+0x44)	/* control/status	*/

/*
 * Power Management
 */
#define MQ200_PMCR	(MQ200_PM + 0x00)
#	define MQ200_PMC_PLL1_N		(1<<0)
#	define MQ200_PMC_PLL1_N_SHIFT	5
#	define MQ200_PMC_PLL2_ENABLE	(1<<2)
#	define MQ200_PMC_PLL3_ENABLE	(1<<3)
#	define MQ200_PMC_IMMEDIATELY	(1<<5)
#	define MQ200_PMC_GE_ENABLE	(1<<8)
#	define MQ200_PMC_GE_FORCE_BUSY	(1<<9)
#	define MQ200_PMC_GE_FORCE_BUSY_LOCAL	(1<<10)
#	define MQ200_PMC_GE_CLK_MASK	0x00001800
#	define MQ200_PMC_GE_CLK_SHIFT	11
#	define MQ200_PMC_GE_CLK_BUS	(0<<11)
#	define MQ200_PMC_GE_CLK_PLL1	(1<<11)
#	define MQ200_PMC_GE_CLK_PLL2	(2<<11)
#	define MQ200_PMC_GE_CLK_PLL3	(3<<11)
#	define MQ200_PMC_GE_COMMAND_RESET	(1<<13)
#	define MQ200_PMC_GE_SOURCE_RESET	(1<<14)
#	define MQ200_PMC_MIU_SEQ_ENABLE	(1<<15)
#	define MQ200_PMC_D3_REFRESH	(1<<16)
#	define MQ200_PMC_D4_REFRESH	(1<<17)
#	define MQ200_PMC_SEQINTVL_MASK	(3<<18)
#	define MQ200_PMC_SEQINTVL_SHIFT	18
#	define MQ200_PMC_SEQINTVL_4		(0<<18)
#	define MQ200_PMC_SEQINTVL_8		(0<<18)
#	define MQ200_PMC_SEQINTVL_16	(0<<18)
#	define MQ200_PMC_SEQINTVL_2048	(0<<18)
#	define MQ200_PMC_FP_SEQINTVL_MASK	(3<<20)
#	define MQ200_PMC_FP_SEQINTVL_SHIFT	20
#	define MQ200_PMC_FP_SEQINTVL_512	(0<<20)
#	define MQ200_PMC_FP_SEQINTVL_1024	(1<<20)
#	define MQ200_PMC_FP_SEQINTVL_2048	(2<<20)
#	define MQ200_PMC_FP_SEQINTVL_128K	(3<<20)
#	define MQ200_PMC_SEQINTVL_ALL	(1<<22)
#	define MQ200_PMC_TESTMODE	(1<<23)
#	define MQ200_PMC_STATE_MASK	(3<<24)
#	define MQ200_PMC_STATE_SHIFT	24
#	define MQ200_PMC_SEQPROGRESS	(1<<26)
#define MQ200_PMD1CR	(MQ200_PM + 0x04)
#define MQ200_PMD2CR	(MQ200_PM + 0x08)

#define MQ200_DCMISCR	(MQ200_DC + 0x00)
#	define MQ200_DCMISC_OSC_BYPASS		(1<<0)
#	define MQ200_DCMISC_OSC_ENABLE		(1<<1)
#	define MQ200_DCMISC_PLL1_BYPASS		(1<<2)
#	define MQ200_DCMISC_PLL1_ENABLE		(1<<3)
#	define MQ200_DCMISC_SA_SLOWBUS		(1<<13)
#	define MQ200_DCMISC_CHIP_RESET		(1<<14)
#	define MQ200_DCMISC_MEMSTANDBY_DISABLE	(1<<15)
#	define MQ200_DCMISC_OSCSHAPER_DISABLE	(1<<24)
#	define MQ200_DCMISC_FASTPOWSEQ_DISABLE	(1<<25)
#	define MQ200_DCMISC_OSCFREQ_MASK	(3<<26)
#	define MQ200_DCMISC_OSCFREQ_12_25	(3<<26)

/*
 * Fout = Fref*(M+1)/(N+1)/(2^P)
 * Fout: PLL output frequency
 * Fref: reference frequency(internal oscillator or external clock)
 */
#define MQ200_PLL1R	(MQ200_DC + 0x00)
#define MQ200_PLL2R	(MQ200_PM + 0x18)
#define MQ200_PLL3R	(MQ200_PM + 0x1c)
#define MQ200_PLL_EXTCLK	(1<<0)
#define MQ200_PLL_BYPASS	(1<<1)
#define MQ200_PLL_P_MASK	0x00000070
#define MQ200_PLL_P_SHIFT	4
#define MQ200_PLL_N_MASK	0x00001f00
#define MQ200_PLL_N_SHIFT	8
#define MQ200_PLL_M_MASK	0x00ff0000
#define MQ200_PLL_M_SHIFT	16
#define MQ200_PLL_PARAM_MASK	(MQ200_PLL_P_MASK|MQ200_PLL_N_MASK|MQ200_PLL_M_MASK)
#define MQ200_PLL_TRIM_MASK	0xf0000000
#define MQ200_PLL_TRIM_SHIFT	28