162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci * Copyright 2008 Advanced Micro Devices, Inc.
362306a36Sopenharmony_ci * Copyright 2008 Red Hat Inc.
462306a36Sopenharmony_ci * Copyright 2009 Jerome Glisse.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a
762306a36Sopenharmony_ci * copy of this software and associated documentation files (the "Software"),
862306a36Sopenharmony_ci * to deal in the Software without restriction, including without limitation
962306a36Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1062306a36Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the
1162306a36Sopenharmony_ci * Software is furnished to do so, subject to the following conditions:
1262306a36Sopenharmony_ci *
1362306a36Sopenharmony_ci * The above copyright notice and this permission notice shall be included in
1462306a36Sopenharmony_ci * all copies or substantial portions of the Software.
1562306a36Sopenharmony_ci *
1662306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1762306a36Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1862306a36Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1962306a36Sopenharmony_ci * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
2062306a36Sopenharmony_ci * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
2162306a36Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
2262306a36Sopenharmony_ci * OTHER DEALINGS IN THE SOFTWARE.
2362306a36Sopenharmony_ci *
2462306a36Sopenharmony_ci * Authors: Dave Airlie
2562306a36Sopenharmony_ci *          Alex Deucher
2662306a36Sopenharmony_ci *          Jerome Glisse
2762306a36Sopenharmony_ci */
2862306a36Sopenharmony_ci#ifndef __R500_REG_H__
2962306a36Sopenharmony_ci#define __R500_REG_H__
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/* pipe config regs */
3262306a36Sopenharmony_ci#define R300_GA_POLY_MODE				0x4288
3362306a36Sopenharmony_ci#       define R300_FRONT_PTYPE_POINT                   (0 << 4)
3462306a36Sopenharmony_ci#       define R300_FRONT_PTYPE_LINE                    (1 << 4)
3562306a36Sopenharmony_ci#       define R300_FRONT_PTYPE_TRIANGE                 (2 << 4)
3662306a36Sopenharmony_ci#       define R300_BACK_PTYPE_POINT                    (0 << 7)
3762306a36Sopenharmony_ci#       define R300_BACK_PTYPE_LINE                     (1 << 7)
3862306a36Sopenharmony_ci#       define R300_BACK_PTYPE_TRIANGE                  (2 << 7)
3962306a36Sopenharmony_ci#define R300_GA_ROUND_MODE				0x428c
4062306a36Sopenharmony_ci#       define R300_GEOMETRY_ROUND_TRUNC                (0 << 0)
4162306a36Sopenharmony_ci#       define R300_GEOMETRY_ROUND_NEAREST              (1 << 0)
4262306a36Sopenharmony_ci#       define R300_COLOR_ROUND_TRUNC                   (0 << 2)
4362306a36Sopenharmony_ci#       define R300_COLOR_ROUND_NEAREST                 (1 << 2)
4462306a36Sopenharmony_ci#define R300_GB_MSPOS0				        0x4010
4562306a36Sopenharmony_ci#       define R300_MS_X0_SHIFT                         0
4662306a36Sopenharmony_ci#       define R300_MS_Y0_SHIFT                         4
4762306a36Sopenharmony_ci#       define R300_MS_X1_SHIFT                         8
4862306a36Sopenharmony_ci#       define R300_MS_Y1_SHIFT                         12
4962306a36Sopenharmony_ci#       define R300_MS_X2_SHIFT                         16
5062306a36Sopenharmony_ci#       define R300_MS_Y2_SHIFT                         20
5162306a36Sopenharmony_ci#       define R300_MSBD0_Y_SHIFT                       24
5262306a36Sopenharmony_ci#       define R300_MSBD0_X_SHIFT                       28
5362306a36Sopenharmony_ci#define R300_GB_MSPOS1				        0x4014
5462306a36Sopenharmony_ci#       define R300_MS_X3_SHIFT                         0
5562306a36Sopenharmony_ci#       define R300_MS_Y3_SHIFT                         4
5662306a36Sopenharmony_ci#       define R300_MS_X4_SHIFT                         8
5762306a36Sopenharmony_ci#       define R300_MS_Y4_SHIFT                         12
5862306a36Sopenharmony_ci#       define R300_MS_X5_SHIFT                         16
5962306a36Sopenharmony_ci#       define R300_MS_Y5_SHIFT                         20
6062306a36Sopenharmony_ci#       define R300_MSBD1_SHIFT                         24
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci#define R300_GA_ENHANCE				        0x4274
6362306a36Sopenharmony_ci#       define R300_GA_DEADLOCK_CNTL                    (1 << 0)
6462306a36Sopenharmony_ci#       define R300_GA_FASTSYNC_CNTL                    (1 << 1)
6562306a36Sopenharmony_ci#define R300_RB3D_DSTCACHE_CTLSTAT              0x4e4c
6662306a36Sopenharmony_ci#	define R300_RB3D_DC_FLUSH		(2 << 0)
6762306a36Sopenharmony_ci#	define R300_RB3D_DC_FREE		(2 << 2)
6862306a36Sopenharmony_ci#	define R300_RB3D_DC_FINISH		(1 << 4)
6962306a36Sopenharmony_ci#define R300_RB3D_ZCACHE_CTLSTAT			0x4f18
7062306a36Sopenharmony_ci#       define R300_ZC_FLUSH                            (1 << 0)
7162306a36Sopenharmony_ci#       define R300_ZC_FREE                             (1 << 1)
7262306a36Sopenharmony_ci#       define R300_ZC_FLUSH_ALL                        0x3
7362306a36Sopenharmony_ci#define R400_GB_PIPE_SELECT             0x402c
7462306a36Sopenharmony_ci#define R500_DYN_SCLK_PWMEM_PIPE        0x000d /* PLL */
7562306a36Sopenharmony_ci#define R500_SU_REG_DEST                0x42c8
7662306a36Sopenharmony_ci#define R300_GB_TILE_CONFIG             0x4018
7762306a36Sopenharmony_ci#       define R300_ENABLE_TILING       (1 << 0)
7862306a36Sopenharmony_ci#       define R300_PIPE_COUNT_RV350    (0 << 1)
7962306a36Sopenharmony_ci#       define R300_PIPE_COUNT_R300     (3 << 1)
8062306a36Sopenharmony_ci#       define R300_PIPE_COUNT_R420_3P  (6 << 1)
8162306a36Sopenharmony_ci#       define R300_PIPE_COUNT_R420     (7 << 1)
8262306a36Sopenharmony_ci#       define R300_TILE_SIZE_8         (0 << 4)
8362306a36Sopenharmony_ci#       define R300_TILE_SIZE_16        (1 << 4)
8462306a36Sopenharmony_ci#       define R300_TILE_SIZE_32        (2 << 4)
8562306a36Sopenharmony_ci#       define R300_SUBPIXEL_1_12       (0 << 16)
8662306a36Sopenharmony_ci#       define R300_SUBPIXEL_1_16       (1 << 16)
8762306a36Sopenharmony_ci#define R300_DST_PIPE_CONFIG            0x170c
8862306a36Sopenharmony_ci#       define R300_PIPE_AUTO_CONFIG    (1 << 31)
8962306a36Sopenharmony_ci#define R300_RB2D_DSTCACHE_MODE         0x3428
9062306a36Sopenharmony_ci#       define R300_DC_AUTOFLUSH_ENABLE (1 << 8)
9162306a36Sopenharmony_ci#       define R300_DC_DC_DISABLE_IGNORE_PE (1 << 17)
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci#define RADEON_CP_STAT		0x7C0
9462306a36Sopenharmony_ci#define RADEON_RBBM_CMDFIFO_ADDR	0xE70
9562306a36Sopenharmony_ci#define RADEON_RBBM_CMDFIFO_DATA	0xE74
9662306a36Sopenharmony_ci#define RADEON_ISYNC_CNTL		0x1724
9762306a36Sopenharmony_ci#	define RADEON_ISYNC_ANY2D_IDLE3D	(1 << 0)
9862306a36Sopenharmony_ci#	define RADEON_ISYNC_ANY3D_IDLE2D	(1 << 1)
9962306a36Sopenharmony_ci#	define RADEON_ISYNC_TRIG2D_IDLE3D	(1 << 2)
10062306a36Sopenharmony_ci#	define RADEON_ISYNC_TRIG3D_IDLE2D	(1 << 3)
10162306a36Sopenharmony_ci#	define RADEON_ISYNC_WAIT_IDLEGUI	(1 << 4)
10262306a36Sopenharmony_ci#	define RADEON_ISYNC_CPSCRATCH_IDLEGUI	(1 << 5)
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci#define RS480_NB_MC_INDEX               0x168
10562306a36Sopenharmony_ci#	define RS480_NB_MC_IND_WR_EN	(1 << 8)
10662306a36Sopenharmony_ci#define RS480_NB_MC_DATA                0x16c
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci/*
10962306a36Sopenharmony_ci * RS690
11062306a36Sopenharmony_ci */
11162306a36Sopenharmony_ci#define RS690_MCCFG_FB_LOCATION		0x100
11262306a36Sopenharmony_ci#define		RS690_MC_FB_START_MASK		0x0000FFFF
11362306a36Sopenharmony_ci#define		RS690_MC_FB_START_SHIFT		0
11462306a36Sopenharmony_ci#define		RS690_MC_FB_TOP_MASK		0xFFFF0000
11562306a36Sopenharmony_ci#define		RS690_MC_FB_TOP_SHIFT		16
11662306a36Sopenharmony_ci#define RS690_MCCFG_AGP_LOCATION	0x101
11762306a36Sopenharmony_ci#define		RS690_MC_AGP_START_MASK		0x0000FFFF
11862306a36Sopenharmony_ci#define		RS690_MC_AGP_START_SHIFT	0
11962306a36Sopenharmony_ci#define		RS690_MC_AGP_TOP_MASK		0xFFFF0000
12062306a36Sopenharmony_ci#define		RS690_MC_AGP_TOP_SHIFT		16
12162306a36Sopenharmony_ci#define RS690_MCCFG_AGP_BASE		0x102
12262306a36Sopenharmony_ci#define RS690_MCCFG_AGP_BASE_2		0x103
12362306a36Sopenharmony_ci#define RS690_MC_INIT_MISC_LAT_TIMER            0x104
12462306a36Sopenharmony_ci#define RS690_HDP_FB_LOCATION		0x0134
12562306a36Sopenharmony_ci#define RS690_MC_INDEX				0x78
12662306a36Sopenharmony_ci#	define RS690_MC_INDEX_MASK		0x1ff
12762306a36Sopenharmony_ci#	define RS690_MC_INDEX_WR_EN		(1 << 9)
12862306a36Sopenharmony_ci#	define RS690_MC_INDEX_WR_ACK		0x7f
12962306a36Sopenharmony_ci#define RS690_MC_DATA				0x7c
13062306a36Sopenharmony_ci#define RS690_MC_STATUS                         0x90
13162306a36Sopenharmony_ci#define RS690_MC_STATUS_IDLE                    (1 << 0)
13262306a36Sopenharmony_ci#define RS480_AGP_BASE_2		0x0164
13362306a36Sopenharmony_ci#define RS480_MC_MISC_CNTL              0x18
13462306a36Sopenharmony_ci#	define RS480_DISABLE_GTW	(1 << 1)
13562306a36Sopenharmony_ci#	define RS480_GART_INDEX_REG_EN	(1 << 12)
13662306a36Sopenharmony_ci#	define RS690_BLOCK_GFX_D3_EN	(1 << 14)
13762306a36Sopenharmony_ci#define RS480_GART_FEATURE_ID           0x2b
13862306a36Sopenharmony_ci#	define RS480_HANG_EN	        (1 << 11)
13962306a36Sopenharmony_ci#	define RS480_TLB_ENABLE	        (1 << 18)
14062306a36Sopenharmony_ci#	define RS480_P2P_ENABLE	        (1 << 19)
14162306a36Sopenharmony_ci#	define RS480_GTW_LAC_EN	        (1 << 25)
14262306a36Sopenharmony_ci#	define RS480_2LEVEL_GART	(0 << 30)
14362306a36Sopenharmony_ci#	define RS480_1LEVEL_GART	(1 << 30)
14462306a36Sopenharmony_ci#	define RS480_PDC_EN	        (1 << 31)
14562306a36Sopenharmony_ci#define RS480_GART_BASE                 0x2c
14662306a36Sopenharmony_ci#define RS480_GART_CACHE_CNTRL          0x2e
14762306a36Sopenharmony_ci#	define RS480_GART_CACHE_INVALIDATE (1 << 0) /* wait for it to clear */
14862306a36Sopenharmony_ci#define RS480_AGP_ADDRESS_SPACE_SIZE    0x38
14962306a36Sopenharmony_ci#	define RS480_GART_EN	        (1 << 0)
15062306a36Sopenharmony_ci#	define RS480_VA_SIZE_32MB	(0 << 1)
15162306a36Sopenharmony_ci#	define RS480_VA_SIZE_64MB	(1 << 1)
15262306a36Sopenharmony_ci#	define RS480_VA_SIZE_128MB	(2 << 1)
15362306a36Sopenharmony_ci#	define RS480_VA_SIZE_256MB	(3 << 1)
15462306a36Sopenharmony_ci#	define RS480_VA_SIZE_512MB	(4 << 1)
15562306a36Sopenharmony_ci#	define RS480_VA_SIZE_1GB	(5 << 1)
15662306a36Sopenharmony_ci#	define RS480_VA_SIZE_2GB	(6 << 1)
15762306a36Sopenharmony_ci#define RS480_AGP_MODE_CNTL             0x39
15862306a36Sopenharmony_ci#	define RS480_POST_GART_Q_SIZE	(1 << 18)
15962306a36Sopenharmony_ci#	define RS480_NONGART_SNOOP	(1 << 19)
16062306a36Sopenharmony_ci#	define RS480_AGP_RD_BUF_SIZE	(1 << 20)
16162306a36Sopenharmony_ci#	define RS480_REQ_TYPE_SNOOP_SHIFT 22
16262306a36Sopenharmony_ci#	define RS480_REQ_TYPE_SNOOP_MASK  0x3
16362306a36Sopenharmony_ci#	define RS480_REQ_TYPE_SNOOP_DIS	(1 << 24)
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci#define RS690_AIC_CTRL_SCRATCH		0x3A
16662306a36Sopenharmony_ci#	define RS690_DIS_OUT_OF_PCI_GART_ACCESS	(1 << 1)
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci/*
16962306a36Sopenharmony_ci * RS600
17062306a36Sopenharmony_ci */
17162306a36Sopenharmony_ci#define RS600_MC_STATUS                         0x0
17262306a36Sopenharmony_ci#define RS600_MC_STATUS_IDLE                    (1 << 0)
17362306a36Sopenharmony_ci#define RS600_MC_INDEX                          0x70
17462306a36Sopenharmony_ci#       define RS600_MC_ADDR_MASK               0xffff
17562306a36Sopenharmony_ci#       define RS600_MC_IND_SEQ_RBS_0           (1 << 16)
17662306a36Sopenharmony_ci#       define RS600_MC_IND_SEQ_RBS_1           (1 << 17)
17762306a36Sopenharmony_ci#       define RS600_MC_IND_SEQ_RBS_2           (1 << 18)
17862306a36Sopenharmony_ci#       define RS600_MC_IND_SEQ_RBS_3           (1 << 19)
17962306a36Sopenharmony_ci#       define RS600_MC_IND_AIC_RBS             (1 << 20)
18062306a36Sopenharmony_ci#       define RS600_MC_IND_CITF_ARB0           (1 << 21)
18162306a36Sopenharmony_ci#       define RS600_MC_IND_CITF_ARB1           (1 << 22)
18262306a36Sopenharmony_ci#       define RS600_MC_IND_WR_EN               (1 << 23)
18362306a36Sopenharmony_ci#define RS600_MC_DATA                           0x74
18462306a36Sopenharmony_ci#define RS600_MC_STATUS                         0x0
18562306a36Sopenharmony_ci#       define RS600_MC_IDLE                    (1 << 1)
18662306a36Sopenharmony_ci#define RS600_MC_FB_LOCATION                    0x4
18762306a36Sopenharmony_ci#define		RS600_MC_FB_START_MASK		0x0000FFFF
18862306a36Sopenharmony_ci#define		RS600_MC_FB_START_SHIFT		0
18962306a36Sopenharmony_ci#define		RS600_MC_FB_TOP_MASK		0xFFFF0000
19062306a36Sopenharmony_ci#define		RS600_MC_FB_TOP_SHIFT		16
19162306a36Sopenharmony_ci#define RS600_MC_AGP_LOCATION                   0x5
19262306a36Sopenharmony_ci#define		RS600_MC_AGP_START_MASK		0x0000FFFF
19362306a36Sopenharmony_ci#define		RS600_MC_AGP_START_SHIFT	0
19462306a36Sopenharmony_ci#define		RS600_MC_AGP_TOP_MASK		0xFFFF0000
19562306a36Sopenharmony_ci#define		RS600_MC_AGP_TOP_SHIFT		16
19662306a36Sopenharmony_ci#define RS600_MC_AGP_BASE                          0x6
19762306a36Sopenharmony_ci#define RS600_MC_AGP_BASE_2                        0x7
19862306a36Sopenharmony_ci#define RS600_MC_CNTL1                          0x9
19962306a36Sopenharmony_ci#       define RS600_ENABLE_PAGE_TABLES         (1 << 26)
20062306a36Sopenharmony_ci#define RS600_MC_PT0_CNTL                       0x100
20162306a36Sopenharmony_ci#       define RS600_ENABLE_PT                  (1 << 0)
20262306a36Sopenharmony_ci#       define RS600_EFFECTIVE_L2_CACHE_SIZE(x) ((x) << 15)
20362306a36Sopenharmony_ci#       define RS600_EFFECTIVE_L2_QUEUE_SIZE(x) ((x) << 21)
20462306a36Sopenharmony_ci#       define RS600_INVALIDATE_ALL_L1_TLBS     (1 << 28)
20562306a36Sopenharmony_ci#       define RS600_INVALIDATE_L2_CACHE        (1 << 29)
20662306a36Sopenharmony_ci#define RS600_MC_PT0_CONTEXT0_CNTL              0x102
20762306a36Sopenharmony_ci#       define RS600_ENABLE_PAGE_TABLE          (1 << 0)
20862306a36Sopenharmony_ci#       define RS600_PAGE_TABLE_TYPE_FLAT       (0 << 1)
20962306a36Sopenharmony_ci#define RS600_MC_PT0_SYSTEM_APERTURE_LOW_ADDR   0x112
21062306a36Sopenharmony_ci#define RS600_MC_PT0_SYSTEM_APERTURE_HIGH_ADDR  0x114
21162306a36Sopenharmony_ci#define RS600_MC_PT0_CONTEXT0_DEFAULT_READ_ADDR 0x11c
21262306a36Sopenharmony_ci#define RS600_MC_PT0_CONTEXT0_FLAT_BASE_ADDR    0x12c
21362306a36Sopenharmony_ci#define RS600_MC_PT0_CONTEXT0_FLAT_START_ADDR   0x13c
21462306a36Sopenharmony_ci#define RS600_MC_PT0_CONTEXT0_FLAT_END_ADDR     0x14c
21562306a36Sopenharmony_ci#define RS600_MC_PT0_CLIENT0_CNTL               0x16c
21662306a36Sopenharmony_ci#       define RS600_ENABLE_TRANSLATION_MODE_OVERRIDE       (1 << 0)
21762306a36Sopenharmony_ci#       define RS600_TRANSLATION_MODE_OVERRIDE              (1 << 1)
21862306a36Sopenharmony_ci#       define RS600_SYSTEM_ACCESS_MODE_MASK                (3 << 8)
21962306a36Sopenharmony_ci#       define RS600_SYSTEM_ACCESS_MODE_PA_ONLY             (0 << 8)
22062306a36Sopenharmony_ci#       define RS600_SYSTEM_ACCESS_MODE_USE_SYS_MAP         (1 << 8)
22162306a36Sopenharmony_ci#       define RS600_SYSTEM_ACCESS_MODE_IN_SYS              (2 << 8)
22262306a36Sopenharmony_ci#       define RS600_SYSTEM_ACCESS_MODE_NOT_IN_SYS          (3 << 8)
22362306a36Sopenharmony_ci#       define RS600_SYSTEM_APERTURE_UNMAPPED_ACCESS_PASSTHROUGH        (0 << 10)
22462306a36Sopenharmony_ci#       define RS600_SYSTEM_APERTURE_UNMAPPED_ACCESS_DEFAULT_PAGE       (1 << 10)
22562306a36Sopenharmony_ci#       define RS600_EFFECTIVE_L1_CACHE_SIZE(x) ((x) << 11)
22662306a36Sopenharmony_ci#       define RS600_ENABLE_FRAGMENT_PROCESSING (1 << 14)
22762306a36Sopenharmony_ci#       define RS600_EFFECTIVE_L1_QUEUE_SIZE(x) ((x) << 15)
22862306a36Sopenharmony_ci#       define RS600_INVALIDATE_L1_TLB          (1 << 20)
22962306a36Sopenharmony_ci/* rs600/rs690/rs740 */
23062306a36Sopenharmony_ci#	define RS600_BUS_MASTER_DIS		(1 << 14)
23162306a36Sopenharmony_ci#	define RS600_MSI_REARM		        (1 << 20)
23262306a36Sopenharmony_ci/* see RS400_MSI_REARM in AIC_CNTL for rs480 */
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci#define RV515_MC_FB_LOCATION		0x01
23762306a36Sopenharmony_ci#define		RV515_MC_FB_START_MASK		0x0000FFFF
23862306a36Sopenharmony_ci#define		RV515_MC_FB_START_SHIFT		0
23962306a36Sopenharmony_ci#define		RV515_MC_FB_TOP_MASK		0xFFFF0000
24062306a36Sopenharmony_ci#define		RV515_MC_FB_TOP_SHIFT		16
24162306a36Sopenharmony_ci#define RV515_MC_AGP_LOCATION		0x02
24262306a36Sopenharmony_ci#define		RV515_MC_AGP_START_MASK		0x0000FFFF
24362306a36Sopenharmony_ci#define		RV515_MC_AGP_START_SHIFT	0
24462306a36Sopenharmony_ci#define		RV515_MC_AGP_TOP_MASK		0xFFFF0000
24562306a36Sopenharmony_ci#define		RV515_MC_AGP_TOP_SHIFT		16
24662306a36Sopenharmony_ci#define RV515_MC_AGP_BASE		0x03
24762306a36Sopenharmony_ci#define RV515_MC_AGP_BASE_2		0x04
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci#define R520_MC_FB_LOCATION		0x04
25062306a36Sopenharmony_ci#define		R520_MC_FB_START_MASK		0x0000FFFF
25162306a36Sopenharmony_ci#define		R520_MC_FB_START_SHIFT		0
25262306a36Sopenharmony_ci#define		R520_MC_FB_TOP_MASK		0xFFFF0000
25362306a36Sopenharmony_ci#define		R520_MC_FB_TOP_SHIFT		16
25462306a36Sopenharmony_ci#define R520_MC_AGP_LOCATION		0x05
25562306a36Sopenharmony_ci#define		R520_MC_AGP_START_MASK		0x0000FFFF
25662306a36Sopenharmony_ci#define		R520_MC_AGP_START_SHIFT		0
25762306a36Sopenharmony_ci#define		R520_MC_AGP_TOP_MASK		0xFFFF0000
25862306a36Sopenharmony_ci#define		R520_MC_AGP_TOP_SHIFT		16
25962306a36Sopenharmony_ci#define R520_MC_AGP_BASE		0x06
26062306a36Sopenharmony_ci#define R520_MC_AGP_BASE_2		0x07
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci#define AVIVO_MC_INDEX						0x0070
26462306a36Sopenharmony_ci#define R520_MC_STATUS 0x00
26562306a36Sopenharmony_ci#define R520_MC_STATUS_IDLE (1<<1)
26662306a36Sopenharmony_ci#define RV515_MC_STATUS 0x08
26762306a36Sopenharmony_ci#define RV515_MC_STATUS_IDLE (1<<4)
26862306a36Sopenharmony_ci#define RV515_MC_INIT_MISC_LAT_TIMER            0x09
26962306a36Sopenharmony_ci#define AVIVO_MC_DATA						0x0074
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ci#define R520_MC_IND_INDEX 0x70
27262306a36Sopenharmony_ci#define R520_MC_IND_WR_EN (1 << 24)
27362306a36Sopenharmony_ci#define R520_MC_IND_DATA  0x74
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci#define RV515_MC_CNTL          0x5
27662306a36Sopenharmony_ci#	define RV515_MEM_NUM_CHANNELS_MASK  0x3
27762306a36Sopenharmony_ci#define R520_MC_CNTL0          0x8
27862306a36Sopenharmony_ci#	define R520_MEM_NUM_CHANNELS_MASK  (0x3 << 24)
27962306a36Sopenharmony_ci#	define R520_MEM_NUM_CHANNELS_SHIFT  24
28062306a36Sopenharmony_ci#	define R520_MC_CHANNEL_SIZE  (1 << 23)
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci#define AVIVO_CP_DYN_CNTL                              0x000f /* PLL */
28362306a36Sopenharmony_ci#       define AVIVO_CP_FORCEON                        (1 << 0)
28462306a36Sopenharmony_ci#define AVIVO_E2_DYN_CNTL                              0x0011 /* PLL */
28562306a36Sopenharmony_ci#       define AVIVO_E2_FORCEON                        (1 << 0)
28662306a36Sopenharmony_ci#define AVIVO_IDCT_DYN_CNTL                            0x0013 /* PLL */
28762306a36Sopenharmony_ci#       define AVIVO_IDCT_FORCEON                      (1 << 0)
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ci#define AVIVO_HDP_FB_LOCATION 0x134
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci#define AVIVO_VGA_RENDER_CONTROL				0x0300
29262306a36Sopenharmony_ci#       define AVIVO_VGA_VSTATUS_CNTL_MASK                      (3 << 16)
29362306a36Sopenharmony_ci#define AVIVO_D1VGA_CONTROL					0x0330
29462306a36Sopenharmony_ci#       define AVIVO_DVGA_CONTROL_MODE_ENABLE (1<<0)
29562306a36Sopenharmony_ci#       define AVIVO_DVGA_CONTROL_TIMING_SELECT (1<<8)
29662306a36Sopenharmony_ci#       define AVIVO_DVGA_CONTROL_SYNC_POLARITY_SELECT (1<<9)
29762306a36Sopenharmony_ci#       define AVIVO_DVGA_CONTROL_OVERSCAN_TIMING_SELECT (1<<10)
29862306a36Sopenharmony_ci#       define AVIVO_DVGA_CONTROL_OVERSCAN_COLOR_EN (1<<16)
29962306a36Sopenharmony_ci#       define AVIVO_DVGA_CONTROL_ROTATE (1<<24)
30062306a36Sopenharmony_ci#define AVIVO_D2VGA_CONTROL					0x0338
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_REF_DIV_SRC                             0x400
30362306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_REF_DIV                                 0x404
30462306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_UPDATE_LOCK                             0x408
30562306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_UPDATE_CNTL                             0x40c
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_REF_DIV_SRC                             0x410
30862306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_REF_DIV                                 0x414
30962306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_UPDATE_LOCK                             0x418
31062306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_UPDATE_CNTL                             0x41c
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_FB_DIV                                   0x430
31362306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_FB_DIV                                   0x434
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_POST_DIV_SRC                                 0x438
31662306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_POST_DIV                                     0x43c
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_POST_DIV_SRC                                 0x440
31962306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_POST_DIV                                     0x444
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci#define AVIVO_EXT1_PPLL_CNTL                                    0x448
32262306a36Sopenharmony_ci#define AVIVO_EXT2_PPLL_CNTL                                    0x44c
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci#define AVIVO_P1PLL_CNTL                                        0x450
32562306a36Sopenharmony_ci#define AVIVO_P2PLL_CNTL                                        0x454
32662306a36Sopenharmony_ci#define AVIVO_P1PLL_INT_SS_CNTL                                 0x458
32762306a36Sopenharmony_ci#define AVIVO_P2PLL_INT_SS_CNTL                                 0x45c
32862306a36Sopenharmony_ci#define AVIVO_P1PLL_TMDSA_CNTL                                  0x460
32962306a36Sopenharmony_ci#define AVIVO_P2PLL_LVTMA_CNTL                                  0x464
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci#define AVIVO_PCLK_CRTC1_CNTL                                   0x480
33262306a36Sopenharmony_ci#define AVIVO_PCLK_CRTC2_CNTL                                   0x484
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci#define AVIVO_D1CRTC_H_TOTAL					0x6000
33562306a36Sopenharmony_ci#define AVIVO_D1CRTC_H_BLANK_START_END                          0x6004
33662306a36Sopenharmony_ci#define AVIVO_D1CRTC_H_SYNC_A                                   0x6008
33762306a36Sopenharmony_ci#define AVIVO_D1CRTC_H_SYNC_A_CNTL                              0x600c
33862306a36Sopenharmony_ci#define AVIVO_D1CRTC_H_SYNC_B                                   0x6010
33962306a36Sopenharmony_ci#define AVIVO_D1CRTC_H_SYNC_B_CNTL                              0x6014
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci#define AVIVO_D1CRTC_V_TOTAL					0x6020
34262306a36Sopenharmony_ci#define AVIVO_D1CRTC_V_BLANK_START_END                          0x6024
34362306a36Sopenharmony_ci#define AVIVO_D1CRTC_V_SYNC_A                                   0x6028
34462306a36Sopenharmony_ci#define AVIVO_D1CRTC_V_SYNC_A_CNTL                              0x602c
34562306a36Sopenharmony_ci#define AVIVO_D1CRTC_V_SYNC_B                                   0x6030
34662306a36Sopenharmony_ci#define AVIVO_D1CRTC_V_SYNC_B_CNTL                              0x6034
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci#define AVIVO_D1CRTC_CONTROL                                    0x6080
34962306a36Sopenharmony_ci#       define AVIVO_CRTC_EN                                    (1 << 0)
35062306a36Sopenharmony_ci#       define AVIVO_CRTC_DISP_READ_REQUEST_DISABLE             (1 << 24)
35162306a36Sopenharmony_ci#define AVIVO_D1CRTC_BLANK_CONTROL                              0x6084
35262306a36Sopenharmony_ci#define AVIVO_D1CRTC_INTERLACE_CONTROL                          0x6088
35362306a36Sopenharmony_ci#define AVIVO_D1CRTC_INTERLACE_STATUS                           0x608c
35462306a36Sopenharmony_ci#define AVIVO_D1CRTC_STATUS                                     0x609c
35562306a36Sopenharmony_ci#       define AVIVO_D1CRTC_V_BLANK                             (1 << 0)
35662306a36Sopenharmony_ci#define AVIVO_D1CRTC_STATUS_POSITION                            0x60a0
35762306a36Sopenharmony_ci#define AVIVO_D1CRTC_FRAME_COUNT                                0x60a4
35862306a36Sopenharmony_ci#define AVIVO_D1CRTC_STATUS_HV_COUNT                            0x60ac
35962306a36Sopenharmony_ci#define AVIVO_D1CRTC_STEREO_CONTROL                             0x60c4
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci#define AVIVO_D1MODE_MASTER_UPDATE_LOCK                         0x60e0
36262306a36Sopenharmony_ci#define AVIVO_D1MODE_MASTER_UPDATE_MODE                         0x60e4
36362306a36Sopenharmony_ci#define AVIVO_D1CRTC_UPDATE_LOCK                                0x60e8
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_ci/* master controls */
36662306a36Sopenharmony_ci#define AVIVO_DC_CRTC_MASTER_EN                                 0x60f8
36762306a36Sopenharmony_ci#define AVIVO_DC_CRTC_TV_CONTROL                                0x60fc
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_ci#define AVIVO_D1GRPH_ENABLE                                     0x6100
37062306a36Sopenharmony_ci#define AVIVO_D1GRPH_CONTROL                                    0x6104
37162306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_DEPTH_8BPP                  (0 << 0)
37262306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_DEPTH_16BPP                 (1 << 0)
37362306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_DEPTH_32BPP                 (2 << 0)
37462306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_DEPTH_64BPP                 (3 << 0)
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_8BPP_INDEXED                (0 << 8)
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_16BPP_ARGB1555              (0 << 8)
37962306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_16BPP_RGB565                (1 << 8)
38062306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_16BPP_ARGB4444              (2 << 8)
38162306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_16BPP_AI88                  (3 << 8)
38262306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_16BPP_MONO16                (4 << 8)
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_32BPP_ARGB8888              (0 << 8)
38562306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_32BPP_ARGB2101010           (1 << 8)
38662306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_32BPP_DIGITAL               (2 << 8)
38762306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_32BPP_8B_ARGB2101010        (3 << 8)
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci#       define AVIVO_D1GRPH_CONTROL_64BPP_ARGB16161616          (0 << 8)
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ci#       define AVIVO_D1GRPH_SWAP_RB                             (1 << 16)
39362306a36Sopenharmony_ci#       define AVIVO_D1GRPH_TILED                               (1 << 20)
39462306a36Sopenharmony_ci#       define AVIVO_D1GRPH_MACRO_ADDRESS_MODE                  (1 << 21)
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci#       define R600_D1GRPH_ARRAY_MODE_LINEAR_GENERAL            (0 << 20)
39762306a36Sopenharmony_ci#       define R600_D1GRPH_ARRAY_MODE_LINEAR_ALIGNED            (1 << 20)
39862306a36Sopenharmony_ci#       define R600_D1GRPH_ARRAY_MODE_1D_TILED_THIN1            (2 << 20)
39962306a36Sopenharmony_ci#       define R600_D1GRPH_ARRAY_MODE_2D_TILED_THIN1            (4 << 20)
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ci/* The R7xx *_HIGH surface regs are backwards; the D1 regs are in the D2
40262306a36Sopenharmony_ci * block and vice versa.  This applies to GRPH, CUR, etc.
40362306a36Sopenharmony_ci */
40462306a36Sopenharmony_ci#define AVIVO_D1GRPH_LUT_SEL                                    0x6108
40562306a36Sopenharmony_ci#       define AVIVO_LUT_10BIT_BYPASS_EN                        (1 << 8)
40662306a36Sopenharmony_ci#define AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS                    0x6110
40762306a36Sopenharmony_ci#define R700_D1GRPH_PRIMARY_SURFACE_ADDRESS_HIGH                0x6914
40862306a36Sopenharmony_ci#define R700_D2GRPH_PRIMARY_SURFACE_ADDRESS_HIGH                0x6114
40962306a36Sopenharmony_ci#define AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS                  0x6118
41062306a36Sopenharmony_ci#define R700_D1GRPH_SECONDARY_SURFACE_ADDRESS_HIGH              0x691c
41162306a36Sopenharmony_ci#define R700_D2GRPH_SECONDARY_SURFACE_ADDRESS_HIGH              0x611c
41262306a36Sopenharmony_ci#define AVIVO_D1GRPH_PITCH                                      0x6120
41362306a36Sopenharmony_ci#define AVIVO_D1GRPH_SURFACE_OFFSET_X                           0x6124
41462306a36Sopenharmony_ci#define AVIVO_D1GRPH_SURFACE_OFFSET_Y                           0x6128
41562306a36Sopenharmony_ci#define AVIVO_D1GRPH_X_START                                    0x612c
41662306a36Sopenharmony_ci#define AVIVO_D1GRPH_Y_START                                    0x6130
41762306a36Sopenharmony_ci#define AVIVO_D1GRPH_X_END                                      0x6134
41862306a36Sopenharmony_ci#define AVIVO_D1GRPH_Y_END                                      0x6138
41962306a36Sopenharmony_ci#define AVIVO_D1GRPH_UPDATE                                     0x6144
42062306a36Sopenharmony_ci#       define AVIVO_D1GRPH_SURFACE_UPDATE_PENDING              (1 << 2)
42162306a36Sopenharmony_ci#       define AVIVO_D1GRPH_UPDATE_LOCK                         (1 << 16)
42262306a36Sopenharmony_ci#define AVIVO_D1GRPH_FLIP_CONTROL                               0x6148
42362306a36Sopenharmony_ci#       define AVIVO_D1GRPH_SURFACE_UPDATE_H_RETRACE_EN         (1 << 0)
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ci#define AVIVO_D1CUR_CONTROL                     0x6400
42662306a36Sopenharmony_ci#       define AVIVO_D1CURSOR_EN                (1 << 0)
42762306a36Sopenharmony_ci#       define AVIVO_D1CURSOR_MODE_SHIFT        8
42862306a36Sopenharmony_ci#       define AVIVO_D1CURSOR_MODE_MASK         (3 << 8)
42962306a36Sopenharmony_ci#       define AVIVO_D1CURSOR_MODE_24BPP        2
43062306a36Sopenharmony_ci#define AVIVO_D1CUR_SURFACE_ADDRESS             0x6408
43162306a36Sopenharmony_ci#define R700_D1CUR_SURFACE_ADDRESS_HIGH         0x6c0c
43262306a36Sopenharmony_ci#define R700_D2CUR_SURFACE_ADDRESS_HIGH         0x640c
43362306a36Sopenharmony_ci#define AVIVO_D1CUR_SIZE                        0x6410
43462306a36Sopenharmony_ci#define AVIVO_D1CUR_POSITION                    0x6414
43562306a36Sopenharmony_ci#define AVIVO_D1CUR_HOT_SPOT                    0x6418
43662306a36Sopenharmony_ci#define AVIVO_D1CUR_UPDATE                      0x6424
43762306a36Sopenharmony_ci#       define AVIVO_D1CURSOR_UPDATE_LOCK       (1 << 16)
43862306a36Sopenharmony_ci
43962306a36Sopenharmony_ci#define AVIVO_DC_LUT_RW_SELECT                  0x6480
44062306a36Sopenharmony_ci#define AVIVO_DC_LUT_RW_MODE                    0x6484
44162306a36Sopenharmony_ci#define AVIVO_DC_LUT_RW_INDEX                   0x6488
44262306a36Sopenharmony_ci#define AVIVO_DC_LUT_SEQ_COLOR                  0x648c
44362306a36Sopenharmony_ci#define AVIVO_DC_LUT_PWL_DATA                   0x6490
44462306a36Sopenharmony_ci#define AVIVO_DC_LUT_30_COLOR                   0x6494
44562306a36Sopenharmony_ci#define AVIVO_DC_LUT_READ_PIPE_SELECT           0x6498
44662306a36Sopenharmony_ci#define AVIVO_DC_LUT_WRITE_EN_MASK              0x649c
44762306a36Sopenharmony_ci#define AVIVO_DC_LUT_AUTOFILL                   0x64a0
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci#define AVIVO_DC_LUTA_CONTROL                   0x64c0
45062306a36Sopenharmony_ci#define AVIVO_DC_LUTA_BLACK_OFFSET_BLUE         0x64c4
45162306a36Sopenharmony_ci#define AVIVO_DC_LUTA_BLACK_OFFSET_GREEN        0x64c8
45262306a36Sopenharmony_ci#define AVIVO_DC_LUTA_BLACK_OFFSET_RED          0x64cc
45362306a36Sopenharmony_ci#define AVIVO_DC_LUTA_WHITE_OFFSET_BLUE         0x64d0
45462306a36Sopenharmony_ci#define AVIVO_DC_LUTA_WHITE_OFFSET_GREEN        0x64d4
45562306a36Sopenharmony_ci#define AVIVO_DC_LUTA_WHITE_OFFSET_RED          0x64d8
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ci#define AVIVO_DC_LB_MEMORY_SPLIT                0x6520
45862306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_MASK    0x3
45962306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT   0
46062306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF  0
46162306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q    1
46262306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY        2
46362306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q    3
46462306a36Sopenharmony_ci#       define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE (1 << 2)
46562306a36Sopenharmony_ci#       define AVIVO_DC_LB_DISP1_END_ADR_SHIFT  4
46662306a36Sopenharmony_ci#       define AVIVO_DC_LB_DISP1_END_ADR_MASK   0x7ff
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_ci#define AVIVO_D1MODE_DATA_FORMAT                0x6528
46962306a36Sopenharmony_ci#       define AVIVO_D1MODE_INTERLEAVE_EN       (1 << 0)
47062306a36Sopenharmony_ci#define AVIVO_D1MODE_DESKTOP_HEIGHT             0x652C
47162306a36Sopenharmony_ci#define AVIVO_D1MODE_VBLANK_STATUS              0x6534
47262306a36Sopenharmony_ci#       define AVIVO_VBLANK_ACK                 (1 << 4)
47362306a36Sopenharmony_ci#define AVIVO_D1MODE_VLINE_START_END            0x6538
47462306a36Sopenharmony_ci#define AVIVO_D1MODE_VLINE_STATUS               0x653c
47562306a36Sopenharmony_ci#       define AVIVO_D1MODE_VLINE_STAT          (1 << 12)
47662306a36Sopenharmony_ci#define AVIVO_DxMODE_INT_MASK                   0x6540
47762306a36Sopenharmony_ci#       define AVIVO_D1MODE_INT_MASK            (1 << 0)
47862306a36Sopenharmony_ci#       define AVIVO_D2MODE_INT_MASK            (1 << 8)
47962306a36Sopenharmony_ci#define AVIVO_D1MODE_VIEWPORT_START             0x6580
48062306a36Sopenharmony_ci#define AVIVO_D1MODE_VIEWPORT_SIZE              0x6584
48162306a36Sopenharmony_ci#define AVIVO_D1MODE_EXT_OVERSCAN_LEFT_RIGHT    0x6588
48262306a36Sopenharmony_ci#define AVIVO_D1MODE_EXT_OVERSCAN_TOP_BOTTOM    0x658c
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ci#define AVIVO_D1SCL_SCALER_ENABLE               0x6590
48562306a36Sopenharmony_ci#define AVIVO_D1SCL_SCALER_TAP_CONTROL		0x6594
48662306a36Sopenharmony_ci#define AVIVO_D1SCL_UPDATE                      0x65cc
48762306a36Sopenharmony_ci#       define AVIVO_D1SCL_UPDATE_LOCK          (1 << 16)
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ci/* second crtc */
49062306a36Sopenharmony_ci#define AVIVO_D2CRTC_H_TOTAL					0x6800
49162306a36Sopenharmony_ci#define AVIVO_D2CRTC_H_BLANK_START_END                          0x6804
49262306a36Sopenharmony_ci#define AVIVO_D2CRTC_H_SYNC_A                                   0x6808
49362306a36Sopenharmony_ci#define AVIVO_D2CRTC_H_SYNC_A_CNTL                              0x680c
49462306a36Sopenharmony_ci#define AVIVO_D2CRTC_H_SYNC_B                                   0x6810
49562306a36Sopenharmony_ci#define AVIVO_D2CRTC_H_SYNC_B_CNTL                              0x6814
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ci#define AVIVO_D2CRTC_V_TOTAL					0x6820
49862306a36Sopenharmony_ci#define AVIVO_D2CRTC_V_BLANK_START_END                          0x6824
49962306a36Sopenharmony_ci#define AVIVO_D2CRTC_V_SYNC_A                                   0x6828
50062306a36Sopenharmony_ci#define AVIVO_D2CRTC_V_SYNC_A_CNTL                              0x682c
50162306a36Sopenharmony_ci#define AVIVO_D2CRTC_V_SYNC_B                                   0x6830
50262306a36Sopenharmony_ci#define AVIVO_D2CRTC_V_SYNC_B_CNTL                              0x6834
50362306a36Sopenharmony_ci
50462306a36Sopenharmony_ci#define AVIVO_D2CRTC_CONTROL                                    0x6880
50562306a36Sopenharmony_ci#define AVIVO_D2CRTC_BLANK_CONTROL                              0x6884
50662306a36Sopenharmony_ci#define AVIVO_D2CRTC_INTERLACE_CONTROL                          0x6888
50762306a36Sopenharmony_ci#define AVIVO_D2CRTC_INTERLACE_STATUS                           0x688c
50862306a36Sopenharmony_ci#define AVIVO_D2CRTC_STATUS_POSITION                            0x68a0
50962306a36Sopenharmony_ci#define AVIVO_D2CRTC_FRAME_COUNT                                0x68a4
51062306a36Sopenharmony_ci#define AVIVO_D2CRTC_STEREO_CONTROL                             0x68c4
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ci#define AVIVO_D2GRPH_ENABLE                                     0x6900
51362306a36Sopenharmony_ci#define AVIVO_D2GRPH_CONTROL                                    0x6904
51462306a36Sopenharmony_ci#define AVIVO_D2GRPH_LUT_SEL                                    0x6908
51562306a36Sopenharmony_ci#define AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS                    0x6910
51662306a36Sopenharmony_ci#define AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS                  0x6918
51762306a36Sopenharmony_ci#define AVIVO_D2GRPH_PITCH                                      0x6920
51862306a36Sopenharmony_ci#define AVIVO_D2GRPH_SURFACE_OFFSET_X                           0x6924
51962306a36Sopenharmony_ci#define AVIVO_D2GRPH_SURFACE_OFFSET_Y                           0x6928
52062306a36Sopenharmony_ci#define AVIVO_D2GRPH_X_START                                    0x692c
52162306a36Sopenharmony_ci#define AVIVO_D2GRPH_Y_START                                    0x6930
52262306a36Sopenharmony_ci#define AVIVO_D2GRPH_X_END                                      0x6934
52362306a36Sopenharmony_ci#define AVIVO_D2GRPH_Y_END                                      0x6938
52462306a36Sopenharmony_ci#define AVIVO_D2GRPH_UPDATE                                     0x6944
52562306a36Sopenharmony_ci#define AVIVO_D2GRPH_FLIP_CONTROL                               0x6948
52662306a36Sopenharmony_ci
52762306a36Sopenharmony_ci#define AVIVO_D2CUR_CONTROL                     0x6c00
52862306a36Sopenharmony_ci#define AVIVO_D2CUR_SURFACE_ADDRESS             0x6c08
52962306a36Sopenharmony_ci#define AVIVO_D2CUR_SIZE                        0x6c10
53062306a36Sopenharmony_ci#define AVIVO_D2CUR_POSITION                    0x6c14
53162306a36Sopenharmony_ci
53262306a36Sopenharmony_ci#define AVIVO_D2MODE_VBLANK_STATUS              0x6d34
53362306a36Sopenharmony_ci#define AVIVO_D2MODE_VLINE_START_END            0x6d38
53462306a36Sopenharmony_ci#define AVIVO_D2MODE_VLINE_STATUS               0x6d3c
53562306a36Sopenharmony_ci#define AVIVO_D2MODE_VIEWPORT_START             0x6d80
53662306a36Sopenharmony_ci#define AVIVO_D2MODE_VIEWPORT_SIZE              0x6d84
53762306a36Sopenharmony_ci#define AVIVO_D2MODE_EXT_OVERSCAN_LEFT_RIGHT    0x6d88
53862306a36Sopenharmony_ci#define AVIVO_D2MODE_EXT_OVERSCAN_TOP_BOTTOM    0x6d8c
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_ci#define AVIVO_D2SCL_SCALER_ENABLE               0x6d90
54162306a36Sopenharmony_ci#define AVIVO_D2SCL_SCALER_TAP_CONTROL		0x6d94
54262306a36Sopenharmony_ci
54362306a36Sopenharmony_ci#define AVIVO_DDIA_BIT_DEPTH_CONTROL				0x7214
54462306a36Sopenharmony_ci
54562306a36Sopenharmony_ci#define AVIVO_DACA_ENABLE					0x7800
54662306a36Sopenharmony_ci#	define AVIVO_DAC_ENABLE				(1 << 0)
54762306a36Sopenharmony_ci#define AVIVO_DACA_SOURCE_SELECT				0x7804
54862306a36Sopenharmony_ci#       define AVIVO_DAC_SOURCE_CRTC1                   (0 << 0)
54962306a36Sopenharmony_ci#       define AVIVO_DAC_SOURCE_CRTC2                   (1 << 0)
55062306a36Sopenharmony_ci#       define AVIVO_DAC_SOURCE_TV                      (2 << 0)
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ci#define AVIVO_DACA_FORCE_OUTPUT_CNTL				0x783c
55362306a36Sopenharmony_ci# define AVIVO_DACA_FORCE_OUTPUT_CNTL_FORCE_DATA_EN             (1 << 0)
55462306a36Sopenharmony_ci# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT            (8)
55562306a36Sopenharmony_ci# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE             (1 << 0)
55662306a36Sopenharmony_ci# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN            (1 << 1)
55762306a36Sopenharmony_ci# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_RED              (1 << 2)
55862306a36Sopenharmony_ci# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_ON_BLANKB_ONLY       (1 << 24)
55962306a36Sopenharmony_ci#define AVIVO_DACA_POWERDOWN					0x7850
56062306a36Sopenharmony_ci# define AVIVO_DACA_POWERDOWN_POWERDOWN                         (1 << 0)
56162306a36Sopenharmony_ci# define AVIVO_DACA_POWERDOWN_BLUE                              (1 << 8)
56262306a36Sopenharmony_ci# define AVIVO_DACA_POWERDOWN_GREEN                             (1 << 16)
56362306a36Sopenharmony_ci# define AVIVO_DACA_POWERDOWN_RED                               (1 << 24)
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci#define AVIVO_DACB_ENABLE					0x7a00
56662306a36Sopenharmony_ci#define AVIVO_DACB_SOURCE_SELECT				0x7a04
56762306a36Sopenharmony_ci#define AVIVO_DACB_FORCE_OUTPUT_CNTL				0x7a3c
56862306a36Sopenharmony_ci# define AVIVO_DACB_FORCE_OUTPUT_CNTL_FORCE_DATA_EN             (1 << 0)
56962306a36Sopenharmony_ci# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT            (8)
57062306a36Sopenharmony_ci# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE             (1 << 0)
57162306a36Sopenharmony_ci# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN            (1 << 1)
57262306a36Sopenharmony_ci# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_RED              (1 << 2)
57362306a36Sopenharmony_ci# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_ON_BLANKB_ONLY       (1 << 24)
57462306a36Sopenharmony_ci#define AVIVO_DACB_POWERDOWN					0x7a50
57562306a36Sopenharmony_ci# define AVIVO_DACB_POWERDOWN_POWERDOWN                         (1 << 0)
57662306a36Sopenharmony_ci# define AVIVO_DACB_POWERDOWN_BLUE                              (1 << 8)
57762306a36Sopenharmony_ci# define AVIVO_DACB_POWERDOWN_GREEN                             (1 << 16)
57862306a36Sopenharmony_ci# define AVIVO_DACB_POWERDOWN_RED
57962306a36Sopenharmony_ci
58062306a36Sopenharmony_ci#define AVIVO_TMDSA_CNTL                    0x7880
58162306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_ENABLE               (1 << 0)
58262306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_HDMI_EN              (1 << 2)
58362306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_HPD_MASK             (1 << 4)
58462306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_HPD_SELECT           (1 << 8)
58562306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_SYNC_PHASE           (1 << 12)
58662306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_PIXEL_ENCODING       (1 << 16)
58762306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_DUAL_LINK_ENABLE     (1 << 24)
58862306a36Sopenharmony_ci#   define AVIVO_TMDSA_CNTL_SWAP                 (1 << 28)
58962306a36Sopenharmony_ci#define AVIVO_TMDSA_SOURCE_SELECT				0x7884
59062306a36Sopenharmony_ci/* 78a8 appears to be some kind of (reasonably tolerant) clock?
59162306a36Sopenharmony_ci * 78d0 definitely hits the transmitter, definitely clock. */
59262306a36Sopenharmony_ci/* MYSTERY1 This appears to control dithering? */
59362306a36Sopenharmony_ci#define AVIVO_TMDSA_BIT_DEPTH_CONTROL		0x7894
59462306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_TRUNCATE_EN           (1 << 0)
59562306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH        (1 << 4)
59662306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN     (1 << 8)
59762306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH  (1 << 12)
59862306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_EN    (1 << 16)
59962306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH (1 << 20)
60062306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL        (1 << 24)
60162306a36Sopenharmony_ci#   define AVIVO_TMDS_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_RESET (1 << 26)
60262306a36Sopenharmony_ci#define AVIVO_TMDSA_DCBALANCER_CONTROL                  0x78d0
60362306a36Sopenharmony_ci#   define AVIVO_TMDSA_DCBALANCER_CONTROL_EN                  (1 << 0)
60462306a36Sopenharmony_ci#   define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_EN             (1 << 8)
60562306a36Sopenharmony_ci#   define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_IN_SHIFT       (16)
60662306a36Sopenharmony_ci#   define AVIVO_TMDSA_DCBALANCER_CONTROL_FORCE               (1 << 24)
60762306a36Sopenharmony_ci#define AVIVO_TMDSA_DATA_SYNCHRONIZATION                0x78d8
60862306a36Sopenharmony_ci#   define AVIVO_TMDSA_DATA_SYNCHRONIZATION_DSYNSEL           (1 << 0)
60962306a36Sopenharmony_ci#   define AVIVO_TMDSA_DATA_SYNCHRONIZATION_PFREQCHG          (1 << 8)
61062306a36Sopenharmony_ci#define AVIVO_TMDSA_CLOCK_ENABLE            0x7900
61162306a36Sopenharmony_ci#define AVIVO_TMDSA_TRANSMITTER_ENABLE              0x7904
61262306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_TX0_ENABLE          (1 << 0)
61362306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKC0EN             (1 << 1)
61462306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD00EN            (1 << 2)
61562306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD01EN            (1 << 3)
61662306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD02EN            (1 << 4)
61762306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_TX1_ENABLE          (1 << 8)
61862306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD10EN            (1 << 10)
61962306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD11EN            (1 << 11)
62062306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKD12EN            (1 << 12)
62162306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_TX_ENABLE_HPD_MASK  (1 << 16)
62262306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK     (1 << 17)
62362306a36Sopenharmony_ci#   define AVIVO_TMDSA_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK     (1 << 18)
62462306a36Sopenharmony_ci
62562306a36Sopenharmony_ci#define AVIVO_TMDSA_TRANSMITTER_CONTROL				0x7910
62662306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_ENABLE	(1 << 0)
62762306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_RESET	(1 << 1)
62862306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_HPD_MASK_SHIFT	(2)
62962306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_IDSCKSEL	        (1 << 4)
63062306a36Sopenharmony_ci#       define AVIVO_TMDSA_TRANSMITTER_CONTROL_BGSLEEP          (1 << 5)
63162306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN	(1 << 6)
63262306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TMCLK	        (1 << 8)
63362306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS	(1 << 13)
63462306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TDCLK	        (1 << 14)
63562306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS	(1 << 15)
63662306a36Sopenharmony_ci#       define AVIVO_TMDSA_TRANSMITTER_CONTROL_CLK_PATTERN_SHIFT (16)
63762306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_BYPASS_PLL	(1 << 28)
63862306a36Sopenharmony_ci#       define AVIVO_TMDSA_TRANSMITTER_CONTROL_USE_CLK_DATA     (1 << 29)
63962306a36Sopenharmony_ci#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL	(1 << 31)
64062306a36Sopenharmony_ci
64162306a36Sopenharmony_ci#define AVIVO_LVTMA_CNTL					0x7a80
64262306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_ENABLE               (1 << 0)
64362306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_HDMI_EN              (1 << 2)
64462306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_HPD_MASK             (1 << 4)
64562306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_HPD_SELECT           (1 << 8)
64662306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_SYNC_PHASE           (1 << 12)
64762306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_PIXEL_ENCODING       (1 << 16)
64862306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_DUAL_LINK_ENABLE     (1 << 24)
64962306a36Sopenharmony_ci#   define AVIVO_LVTMA_CNTL_SWAP                 (1 << 28)
65062306a36Sopenharmony_ci#define AVIVO_LVTMA_SOURCE_SELECT                               0x7a84
65162306a36Sopenharmony_ci#define AVIVO_LVTMA_COLOR_FORMAT                                0x7a88
65262306a36Sopenharmony_ci#define AVIVO_LVTMA_BIT_DEPTH_CONTROL                           0x7a94
65362306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_EN           (1 << 0)
65462306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_DEPTH        (1 << 4)
65562306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN     (1 << 8)
65662306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_DEPTH  (1 << 12)
65762306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_EN    (1 << 16)
65862306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_DEPTH (1 << 20)
65962306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_LEVEL        (1 << 24)
66062306a36Sopenharmony_ci#   define AVIVO_LVTMA_BIT_DEPTH_CONTROL_TEMPORAL_DITHER_RESET (1 << 26)
66162306a36Sopenharmony_ci
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_ci
66462306a36Sopenharmony_ci#define AVIVO_LVTMA_DCBALANCER_CONTROL                  0x7ad0
66562306a36Sopenharmony_ci#   define AVIVO_LVTMA_DCBALANCER_CONTROL_EN                  (1 << 0)
66662306a36Sopenharmony_ci#   define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_EN             (1 << 8)
66762306a36Sopenharmony_ci#   define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_IN_SHIFT       (16)
66862306a36Sopenharmony_ci#   define AVIVO_LVTMA_DCBALANCER_CONTROL_FORCE               (1 << 24)
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_ci#define AVIVO_LVTMA_DATA_SYNCHRONIZATION                0x78d8
67162306a36Sopenharmony_ci#   define AVIVO_LVTMA_DATA_SYNCHRONIZATION_DSYNSEL           (1 << 0)
67262306a36Sopenharmony_ci#   define AVIVO_LVTMA_DATA_SYNCHRONIZATION_PFREQCHG          (1 << 8)
67362306a36Sopenharmony_ci#define R500_LVTMA_CLOCK_ENABLE			0x7b00
67462306a36Sopenharmony_ci#define R600_LVTMA_CLOCK_ENABLE			0x7b04
67562306a36Sopenharmony_ci
67662306a36Sopenharmony_ci#define R500_LVTMA_TRANSMITTER_ENABLE              0x7b04
67762306a36Sopenharmony_ci#define R600_LVTMA_TRANSMITTER_ENABLE              0x7b08
67862306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKC0EN             (1 << 1)
67962306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD00EN            (1 << 2)
68062306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD01EN            (1 << 3)
68162306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD02EN            (1 << 4)
68262306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD03EN            (1 << 5)
68362306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKC1EN             (1 << 9)
68462306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD10EN            (1 << 10)
68562306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD11EN            (1 << 11)
68662306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD12EN            (1 << 12)
68762306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKCEN_HPD_MASK     (1 << 17)
68862306a36Sopenharmony_ci#   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK     (1 << 18)
68962306a36Sopenharmony_ci
69062306a36Sopenharmony_ci#define R500_LVTMA_TRANSMITTER_CONTROL			        0x7b10
69162306a36Sopenharmony_ci#define R600_LVTMA_TRANSMITTER_CONTROL			        0x7b14
69262306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_ENABLE	  (1 << 0)
69362306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_RESET	  (1 << 1)
69462306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_HPD_MASK_SHIFT (2)
69562306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_IDSCKSEL	          (1 << 4)
69662306a36Sopenharmony_ci#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_BGSLEEP            (1 << 5)
69762306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN	  (1 << 6)
69862306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK	          (1 << 8)
69962306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS	  (1 << 13)
70062306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK	          (1 << 14)
70162306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS	  (1 << 15)
70262306a36Sopenharmony_ci#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_CLK_PATTERN_SHIFT  (16)
70362306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_BYPASS_PLL	  (1 << 28)
70462306a36Sopenharmony_ci#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_USE_CLK_DATA       (1 << 29)
70562306a36Sopenharmony_ci#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL (1 << 31)
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ci#define R500_LVTMA_PWRSEQ_CNTL						0x7af0
70862306a36Sopenharmony_ci#define R600_LVTMA_PWRSEQ_CNTL						0x7af4
70962306a36Sopenharmony_ci#	define AVIVO_LVTMA_PWRSEQ_EN					    (1 << 0)
71062306a36Sopenharmony_ci#	define AVIVO_LVTMA_PWRSEQ_PLL_ENABLE_MASK			    (1 << 2)
71162306a36Sopenharmony_ci#	define AVIVO_LVTMA_PWRSEQ_PLL_RESET_MASK			    (1 << 3)
71262306a36Sopenharmony_ci#	define AVIVO_LVTMA_PWRSEQ_TARGET_STATE				    (1 << 4)
71362306a36Sopenharmony_ci#	define AVIVO_LVTMA_SYNCEN					    (1 << 8)
71462306a36Sopenharmony_ci#	define AVIVO_LVTMA_SYNCEN_OVRD					    (1 << 9)
71562306a36Sopenharmony_ci#	define AVIVO_LVTMA_SYNCEN_POL					    (1 << 10)
71662306a36Sopenharmony_ci#	define AVIVO_LVTMA_DIGON					    (1 << 16)
71762306a36Sopenharmony_ci#	define AVIVO_LVTMA_DIGON_OVRD					    (1 << 17)
71862306a36Sopenharmony_ci#	define AVIVO_LVTMA_DIGON_POL					    (1 << 18)
71962306a36Sopenharmony_ci#	define AVIVO_LVTMA_BLON						    (1 << 24)
72062306a36Sopenharmony_ci#	define AVIVO_LVTMA_BLON_OVRD					    (1 << 25)
72162306a36Sopenharmony_ci#	define AVIVO_LVTMA_BLON_POL					    (1 << 26)
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_ci#define R500_LVTMA_PWRSEQ_STATE                        0x7af4
72462306a36Sopenharmony_ci#define R600_LVTMA_PWRSEQ_STATE                        0x7af8
72562306a36Sopenharmony_ci#       define AVIVO_LVTMA_PWRSEQ_STATE_TARGET_STATE_R          (1 << 0)
72662306a36Sopenharmony_ci#       define AVIVO_LVTMA_PWRSEQ_STATE_DIGON                   (1 << 1)
72762306a36Sopenharmony_ci#       define AVIVO_LVTMA_PWRSEQ_STATE_SYNCEN                  (1 << 2)
72862306a36Sopenharmony_ci#       define AVIVO_LVTMA_PWRSEQ_STATE_BLON                    (1 << 3)
72962306a36Sopenharmony_ci#       define AVIVO_LVTMA_PWRSEQ_STATE_DONE                    (1 << 4)
73062306a36Sopenharmony_ci#       define AVIVO_LVTMA_PWRSEQ_STATE_STATUS_SHIFT            (8)
73162306a36Sopenharmony_ci
73262306a36Sopenharmony_ci#define AVIVO_LVDS_BACKLIGHT_CNTL			0x7af8
73362306a36Sopenharmony_ci#	define AVIVO_LVDS_BACKLIGHT_CNTL_EN			(1 << 0)
73462306a36Sopenharmony_ci#	define AVIVO_LVDS_BACKLIGHT_LEVEL_MASK		0x0000ff00
73562306a36Sopenharmony_ci#	define AVIVO_LVDS_BACKLIGHT_LEVEL_SHIFT		8
73662306a36Sopenharmony_ci
73762306a36Sopenharmony_ci#define AVIVO_DVOA_BIT_DEPTH_CONTROL			0x7988
73862306a36Sopenharmony_ci
73962306a36Sopenharmony_ci#define AVIVO_DC_GPIO_HPD_A                 0x7e94
74062306a36Sopenharmony_ci#define AVIVO_DC_GPIO_HPD_Y                 0x7e9c
74162306a36Sopenharmony_ci
74262306a36Sopenharmony_ci#define AVIVO_DC_I2C_STATUS1				0x7d30
74362306a36Sopenharmony_ci#	define AVIVO_DC_I2C_DONE			(1 << 0)
74462306a36Sopenharmony_ci#	define AVIVO_DC_I2C_NACK			(1 << 1)
74562306a36Sopenharmony_ci#	define AVIVO_DC_I2C_HALT			(1 << 2)
74662306a36Sopenharmony_ci#	define AVIVO_DC_I2C_GO			        (1 << 3)
74762306a36Sopenharmony_ci#define AVIVO_DC_I2C_RESET 				0x7d34
74862306a36Sopenharmony_ci#	define AVIVO_DC_I2C_SOFT_RESET			(1 << 0)
74962306a36Sopenharmony_ci#	define AVIVO_DC_I2C_ABORT			(1 << 8)
75062306a36Sopenharmony_ci#define AVIVO_DC_I2C_CONTROL1 				0x7d38
75162306a36Sopenharmony_ci#	define AVIVO_DC_I2C_START			(1 << 0)
75262306a36Sopenharmony_ci#	define AVIVO_DC_I2C_STOP			(1 << 1)
75362306a36Sopenharmony_ci#	define AVIVO_DC_I2C_RECEIVE			(1 << 2)
75462306a36Sopenharmony_ci#	define AVIVO_DC_I2C_EN			        (1 << 8)
75562306a36Sopenharmony_ci#	define AVIVO_DC_I2C_PIN_SELECT(x)		((x) << 16)
75662306a36Sopenharmony_ci#	define AVIVO_SEL_DDC1			        0
75762306a36Sopenharmony_ci#	define AVIVO_SEL_DDC2			        1
75862306a36Sopenharmony_ci#	define AVIVO_SEL_DDC3			        2
75962306a36Sopenharmony_ci#define AVIVO_DC_I2C_CONTROL2 				0x7d3c
76062306a36Sopenharmony_ci#	define AVIVO_DC_I2C_ADDR_COUNT(x)		((x) << 0)
76162306a36Sopenharmony_ci#	define AVIVO_DC_I2C_DATA_COUNT(x)		((x) << 8)
76262306a36Sopenharmony_ci#define AVIVO_DC_I2C_CONTROL3 				0x7d40
76362306a36Sopenharmony_ci#	define AVIVO_DC_I2C_DATA_DRIVE_EN		(1 << 0)
76462306a36Sopenharmony_ci#	define AVIVO_DC_I2C_DATA_DRIVE_SEL		(1 << 1)
76562306a36Sopenharmony_ci#	define AVIVO_DC_I2C_CLK_DRIVE_EN		(1 << 7)
76662306a36Sopenharmony_ci#	define AVIVO_DC_I2C_RD_INTRA_BYTE_DELAY(x)      ((x) << 8)
76762306a36Sopenharmony_ci#	define AVIVO_DC_I2C_WR_INTRA_BYTE_DELAY(x)	((x) << 16)
76862306a36Sopenharmony_ci#	define AVIVO_DC_I2C_TIME_LIMIT(x)		((x) << 24)
76962306a36Sopenharmony_ci#define AVIVO_DC_I2C_DATA 				0x7d44
77062306a36Sopenharmony_ci#define AVIVO_DC_I2C_INTERRUPT_CONTROL 			0x7d48
77162306a36Sopenharmony_ci#	define AVIVO_DC_I2C_INTERRUPT_STATUS		(1 << 0)
77262306a36Sopenharmony_ci#	define AVIVO_DC_I2C_INTERRUPT_AK		(1 << 8)
77362306a36Sopenharmony_ci#	define AVIVO_DC_I2C_INTERRUPT_ENABLE		(1 << 16)
77462306a36Sopenharmony_ci#define AVIVO_DC_I2C_ARBITRATION 			0x7d50
77562306a36Sopenharmony_ci#	define AVIVO_DC_I2C_SW_WANTS_TO_USE_I2C		(1 << 0)
77662306a36Sopenharmony_ci#	define AVIVO_DC_I2C_SW_CAN_USE_I2C		(1 << 1)
77762306a36Sopenharmony_ci#	define AVIVO_DC_I2C_SW_DONE_USING_I2C		(1 << 8)
77862306a36Sopenharmony_ci#	define AVIVO_DC_I2C_HW_NEEDS_I2C		(1 << 9)
77962306a36Sopenharmony_ci#	define AVIVO_DC_I2C_ABORT_HDCP_I2C		(1 << 16)
78062306a36Sopenharmony_ci#	define AVIVO_DC_I2C_HW_USING_I2C		(1 << 17)
78162306a36Sopenharmony_ci
78262306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC1_MASK 		        0x7e40
78362306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC1_A 		                0x7e44
78462306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC1_EN 		                0x7e48
78562306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC1_Y 		                0x7e4c
78662306a36Sopenharmony_ci
78762306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC2_MASK 		        0x7e50
78862306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC2_A 		                0x7e54
78962306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC2_EN 		                0x7e58
79062306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC2_Y 		                0x7e5c
79162306a36Sopenharmony_ci
79262306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC3_MASK 		        0x7e60
79362306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC3_A 		                0x7e64
79462306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC3_EN 		                0x7e68
79562306a36Sopenharmony_ci#define AVIVO_DC_GPIO_DDC3_Y 		                0x7e6c
79662306a36Sopenharmony_ci
79762306a36Sopenharmony_ci#define AVIVO_DISP_INTERRUPT_STATUS                             0x7edc
79862306a36Sopenharmony_ci#       define AVIVO_D1_VBLANK_INTERRUPT                        (1 << 4)
79962306a36Sopenharmony_ci#       define AVIVO_D2_VBLANK_INTERRUPT                        (1 << 5)
80062306a36Sopenharmony_ci
80162306a36Sopenharmony_ci#endif
802