summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/ast/ast_reg.h
blob: b808b0a02ba81332ccb2e91be0149172609be35e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
/* SPDX-License-Identifier: MIT */

#ifndef __AST_REG_H__
#define __AST_REG_H__

#include <linux/bits.h>

/*
 * Modesetting
 */

#define AST_IO_MM_OFFSET		(0x380)
#define AST_IO_MM_LENGTH		(128)

#define AST_IO_VGAARI_W			(0x40)

#define AST_IO_VGAMR_W			(0x42)
#define AST_IO_VGAMR_R			(0x4c)
#define AST_IO_VGAMR_IOSEL		BIT(0)

#define AST_IO_VGAER			(0x43)
#define AST_IO_VGAER_VGA_ENABLE		BIT(0)

#define AST_IO_VGASRI			(0x44)
#define AST_IO_VGASR1_SD		BIT(5)
#define AST_IO_VGADRR			(0x47)
#define AST_IO_VGADWR			(0x48)
#define AST_IO_VGAPDR		        (0x49)
#define AST_IO_VGAGRI			(0x4E)

#define AST_IO_VGACRI				(0x54)
#define AST_IO_VGACR17_SYNC_ENABLE		BIT(7) /* called "Hardware reset" in docs */
#define AST_IO_VGACR80_PASSWORD			(0xa8)

#define AST_IO_VGACR8C_NEW_MODE_MASK		GENMASK(3, 0)
#define AST_IO_VGACR8C_NEW_MODE_EGA		(0x00)
#define AST_IO_VGACR8C_NEW_MODE_VGA		(0x01)
#define AST_IO_VGACR8C_NEW_MODE_15_BPP		(0x02)
#define AST_IO_VGACR8C_NEW_MODE_16_BPP		(0x03)
#define AST_IO_VGACR8C_NEW_MODE_32_BPP		(0x04)
#define AST_IO_VGACR8C_NEW_MODE_CGA		(0x0f)
#define AST_IO_VGACR8C_NEW_MODE_TEXT		(0x0e)
#define AST_IO_VGACR8C_CUR_MODE_MASK		GENMASK(7, 4)
#define AST_IO_VGACR8C_CUR_MODE_EGA		(0x00)
#define AST_IO_VGACR8C_CUR_MODE_VGA		(0x10)
#define AST_IO_VGACR8C_CUR_MODE_15_BPP		(0x20)
#define AST_IO_VGACR8C_CUR_MODE_16_BPP		(0x30)
#define AST_IO_VGACR8C_CUR_MODE_32_BPP		(0x40)
#define AST_IO_VGACR8C_CUR_MODE_CGA		(0xf0)
#define AST_IO_VGACR8C_CUR_MODE_TEXT		(0xe0)

#define AST_IO_VGACR91_PASSWORD			(0xa8)
#define AST_IO_VGACR99_VGAMEM_RSRV_MASK		GENMASK(1, 0)

#define AST_IO_VGACRA0_MEMORY_CHAIN4_MODE	BIT(6)
#define AST_IO_VGACRA0_LINEAR_EXT_ACCESS	BIT(5)
#define AST_IO_VGACRA0_SEGMENTED_EXT_ACCESS	BIT(4)

#define AST_IO_VGACRA1_VGAIO_DISABLED		BIT(1)
#define AST_IO_VGACRA1_MMIO_ENABLED		BIT(2)

#define AST_IO_VGACRA3_DVO_ENABLED		BIT(7)
#define AST_IO_VGACRA3_32_BPP			BIT(3)
#define AST_IO_VGACRA3_16_BPP			BIT(2)
#define AST_IO_VGACRA3_15_BPP			BIT(1)
#define AST_IO_VGACRA3_256_COLORS		BIT(0)

#define AST_IO_VGACRA8_GAMMA_CORRECTION_ENABLED	BIT(1)
#define AST_IO_VGACRAA_VGAMEM_SIZE_MASK		GENMASK(1, 0)
#define AST_IO_VGACRB6_HSYNC_OFF		BIT(0)
#define AST_IO_VGACRB6_VSYNC_OFF		BIT(1)
#define AST_IO_VGACRCB_HWC_16BPP		BIT(0) /* set: ARGB4444, cleared: 2bpp palette */
#define AST_IO_VGACRCB_HWC_ENABLED		BIT(1)

/* mirrors SCU100[7:0] */
#define AST_IO_VGACRD0_VRAM_INIT_STATUS_MASK	GENMASK(7, 6)
#define AST_IO_VGACRD0_VRAM_INIT_BY_BMC		BIT(7)
#define AST_IO_VGACRD0_VRAM_INIT_READY		BIT(6)
#define AST_IO_VGACRD0_IKVM_WIDESCREEN		BIT(0)

#define AST_IO_VGACRD1_MCU_FW_EXECUTING		BIT(5)
/* Display Transmitter Type */
#define AST_IO_VGACRD1_TX_TYPE_MASK		GENMASK(3, 1)
#define AST_IO_VGACRD1_NO_TX			0x00
#define AST_IO_VGACRD1_TX_ITE66121_VBIOS	0x02
#define AST_IO_VGACRD1_TX_SIL164_VBIOS		0x04
#define AST_IO_VGACRD1_TX_CH7003_VBIOS		0x06
#define AST_IO_VGACRD1_TX_DP501_VBIOS		0x08
#define AST_IO_VGACRD1_TX_ANX9807_VBIOS		0x0a
#define AST_IO_VGACRD1_TX_FW_EMBEDDED_FW	0x0c /* special case of DP501 */
#define AST_IO_VGACRD1_TX_ASTDP			0x0e
#define AST_IO_VGACRD1_SUPPORTS_WUXGA		BIT(0)

/*
 * AST DisplayPort
 */
#define AST_IO_VGACRD7_EDID_VALID_FLAG	BIT(0)
#define AST_IO_VGACRDC_LINK_SUCCESS	BIT(0)
#define AST_IO_VGACRDF_HPD		BIT(0)
#define AST_IO_VGACRDF_DP_VIDEO_ENABLE	BIT(4) /* mirrors AST_IO_VGACRE3_DP_VIDEO_ENABLE */
#define AST_IO_VGACRE0_24BPP		BIT(5) /* 18 bpp, if unset  */
#define AST_IO_VGACRE3_DP_VIDEO_ENABLE	BIT(0)
#define AST_IO_VGACRE3_DP_PHY_SLEEP	BIT(4)
#define AST_IO_VGACRE5_EDID_READ_DONE	BIT(0)

#define AST_IO_VGAIR1_R			(0x5A)
#define AST_IO_VGAIR1_VREFRESH		BIT(3)

/*
 * P-Bus to AHB Bridge (0x00000000 - 0x0001ffff)
 */

#define AST_REG_P2A_BASE			(0x00000000)
#define AST_REG_P2A(__offset)			(AST_REG_P2A_BASE + (__offset))
#define AST_REG_P2A_ADDR(__addr)		AST_REG_P2A(0x10000 + ((__addr) & GENMASK(15, 0)))
#define AST_REG_P2A00				AST_REG_P2A(0xf000)
#define AST_REG_P2A00_PROTECTION_KEY		(0x01)
#define AST_REG_P2A04				AST_REG_P2A(0xf004)
#define AST_REG_P2A04_BASE_MASK			GENMASK(31, 16)

/*
 * AHB Controller (0x1e600000 - 0x1e61ffff)
 */

#define AST_REG_AHBC_BASE			(0x1e600000)
#define AST_REG_AHBC(__offset)			(AST_REG_AHBC_BASE + (__offset))
#define AST_REG_AHBC00				AST_REG_AHBC(0x00)
#define AST_REG_AHBC00_PROTECT_KEY		(0xaeed1a03)
#define AST_REG_AHBC84				AST_REG_AHBC(0x84)
#define AST_REG_AHBC88				AST_REG_AHBC(0x88)

/*
 * SDRAM Memory Controller (0x1e6e0000 - 0x1e6e0fff)
 */

#define AST_REG_MCR_BASE			(0x1e6e0000)
#define AST_REG_MCR(__offset)			(AST_REG_MCR_BASE + (__offset))
#define AST_REG_MCR00				AST_REG_MCR(0x00)
#define AST_REG_MCR00_PROTECTION_KEY		(0xfc600309)
#define AST_REG_MCR04				AST_REG_MCR(0x04)
#define AST_REG_MCR08				AST_REG_MCR(0x08)
#define AST_REG_MCR0C				AST_REG_MCR(0x0c)
#define AST_REG_MCR10				AST_REG_MCR(0x10)
#define AST_REG_MCR14				AST_REG_MCR(0x14)
#define AST_REG_MCR18				AST_REG_MCR(0x18)
#define AST_REG_MCR1C				AST_REG_MCR(0x1c)
#define AST_REG_MCR20				AST_REG_MCR(0x20)
#define AST_REG_MCR24				AST_REG_MCR(0x24)
#define AST_REG_MCR28				AST_REG_MCR(0x28)
#define AST_REG_MCR2C				AST_REG_MCR(0x2C)
#define AST_REG_MCR30				AST_REG_MCR(0x30)
#define AST_REG_MCR34				AST_REG_MCR(0x34)
#define AST_REG_MCR38				AST_REG_MCR(0x38)
#define AST_REG_MCR3C				AST_REG_MCR(0x3c)
#define AST_REG_MCR40				AST_REG_MCR(0x40)
#define AST_REG_MCR44				AST_REG_MCR(0x44)
#define AST_REG_MCR48				AST_REG_MCR(0x48)
#define AST_REG_MCR4C				AST_REG_MCR(0x4C)
#define AST_REG_MCR50				AST_REG_MCR(0x50)
#define AST_REG_MCR54				AST_REG_MCR(0x54)
#define AST_REG_MCR58				AST_REG_MCR(0x58)
#define AST_REG_MCR5C				AST_REG_MCR(0x5c)
#define AST_REG_MCR60				AST_REG_MCR(0x60)
#define AST_REG_MCR64				AST_REG_MCR(0x64)
#define AST_REG_MCR68				AST_REG_MCR(0x68)
#define AST_REG_MCR6C				AST_REG_MCR(0x6c)
#define AST_REG_MCR70				AST_REG_MCR(0x70)
#define AST_REG_MCR74				AST_REG_MCR(0x74)
#define AST_REG_MCR78				AST_REG_MCR(0x78)
#define AST_REG_MCR7C				AST_REG_MCR(0x7c)
#define AST_REG_MCR80				AST_REG_MCR(0x80)
#define AST_REG_MCR84				AST_REG_MCR(0x84)
#define AST_REG_MCR88				AST_REG_MCR(0x88)
#define AST_REG_MCR8C				AST_REG_MCR(0x8c)
#define AST_REG_MCR100				AST_REG_MCR(0x100)
#define AST_REG_MCR108				AST_REG_MCR(0x108)
#define AST_REG_MCR120				AST_REG_MCR(0x120)
#define AST_REG_MCR140				AST_REG_MCR(0x140)
#define AST_REG_MCR200				AST_REG_MCR(0x200)
#define AST_REG_MCR204				AST_REG_MCR(0x204)
#define AST_REG_MCR208				AST_REG_MCR(0x208)
#define AST_REG_MCR20C				AST_REG_MCR(0x20C)
#define AST_REG_MCR210				AST_REG_MCR(0x210)
#define AST_REG_MCR214				AST_REG_MCR(0x214)
#define AST_REG_MCR218				AST_REG_MCR(0x218)
#define AST_REG_MCR220				AST_REG_MCR(0x220)
#define AST_REG_MCR228				AST_REG_MCR(0x228)
#define AST_REG_MCR230				AST_REG_MCR(0x230)
#define AST_REG_MCR2A8				AST_REG_MCR(0x2a8)
#define AST_REG_MCR2B0				AST_REG_MCR(0x2b0)
#define AST_REG_MCR240				AST_REG_MCR(0x240)
#define AST_REG_MCR244				AST_REG_MCR(0x244)
#define AST_REG_MCR248				AST_REG_MCR(0x248)
#define AST_REG_MCR24C				AST_REG_MCR(0x24c)
#define AST_REG_MCR290				AST_REG_MCR(0x290)
#define AST_REG_MCR2C0				AST_REG_MCR(0x2c0)
#define AST_REG_MCR2C4				AST_REG_MCR(0x2c4)
#define AST_REG_MCR2C8				AST_REG_MCR(0x2c8)
#define AST_REG_MCR2CC				AST_REG_MCR(0x2cc)
#define AST_REG_MCR2E0				AST_REG_MCR(0x2e0)
#define AST_REG_MCR2E4				AST_REG_MCR(0x2e4)
#define AST_REG_MCR2E8				AST_REG_MCR(0x2e8)
#define AST_REG_MCR2EC				AST_REG_MCR(0x2ec)
#define AST_REG_MCR2F0				AST_REG_MCR(0x2f0)
#define AST_REG_MCR2F4				AST_REG_MCR(0x2f4)
#define AST_REG_MCR2F8				AST_REG_MCR(0x2f8)
#define AST_REG_MCR300				AST_REG_MCR(0x300)
#define AST_REG_MCR3D0				AST_REG_MCR(0x3d0)

/*
 * System Control Unit (0x1e6e2000 - 0x1e6e2fff)
 */

#define AST_REG_SCU_BASE			(0x1e6e2000)
#define AST_REG_SCU(__offset)			(AST_REG_SCU_BASE + (__offset))
#define AST_REG_SCU000				AST_REG_SCU(0x000)
#define AST_REG_SCU000_PROTECTION_KEY		(0x1688a8a8)
#define AST_REG_SCU008				AST_REG_SCU(0x008)
#define AST_REG_SCU00C				AST_REG_SCU(0x00c)
#define AST_REG_SCU020				AST_REG_SCU(0x020)
#define AST_REG_SCU02C				AST_REG_SCU(0x02c)
#define AST_REG_SCU040				AST_REG_SCU(0x040)
#define AST_REG_SCU070				AST_REG_SCU(0x070)
#define AST_REG_SCU07C				AST_REG_SCU(0x07c)
#define AST_REG_SCU07C_CHIP_BONDING_MASK	GENMASK(15, 8)
#define AST_REG_SCU084				AST_REG_SCU(0x084)
#define AST_REG_SCU088				AST_REG_SCU(0x088)
#define AST_REG_SCU08C				AST_REG_SCU(0x08c)
#define AST_REG_SCU090				AST_REG_SCU(0x090)
#define AST_REG_SCU094				AST_REG_SCU(0x094)
#define AST_REG_SCU0A4				AST_REG_SCU(0x0a4)
#define AST_REG_SCU0A8				AST_REG_SCU(0x0a8)
#define AST_REG_SCU100				AST_REG_SCU(0x100)
#define AST_REG_SCU104				AST_REG_SCU(0x104)
#define AST_REG_SCU160				AST_REG_SCU(0x160)

/*
 * AHB-to-P Bus Bridge (0x1e720000 - 0x1e73ffff)
 */

#define AST_REG_A2P_BASE			(0x1e720000)
#define AST_REG_A2P(__offset)			(AST_REG_A2P_BASE + (__offset))
#define AST_REG_A2P58				AST_REG_A2P(0x58)

/*
 * Watchdog timer (0x1e785000 - 0x1e785fff)
 */

#define AST_REG_WDT_BASE(__n)			(0x1e785000 + (__n) * 0x40)
#define AST_REG_WDT(__n, __offset)		(AST_REG_WDT_BASE((__n)) + (__offset))
#define AST_REG_WDT04(__n)			AST_REG_WDT((__n), 0x04)
#define AST_REG_WDT08(__n)			AST_REG_WDT((__n), 0x08)
#define AST_REG_WDT0C(__n)			AST_REG_WDT((__n), 0x0c)
#define AST_REG_WDT14(__n)			AST_REG_WDT((__n), 0x14)
#define AST_REG_WDT1C(__n)			AST_REG_WDT((__n), 0x1c)
#define AST_REG_WDT2C(__n)			AST_REG_WDT((__n), 0x2c)

/*
 * SDRAM (0x80000000 - 0xffffffff)
 */

#define AST_SDRAM_BASE				(0x80000000)
#define AST_SDRAM(__offset)			(AST_SDRAM_BASE + (__offset))

#endif