xref: /openbmc/linux/drivers/video/fbdev/via/share.h (revision 64b70da0)
164b70da0SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2f7018c21STomi Valkeinen /*
3f7018c21STomi Valkeinen  * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
4f7018c21STomi Valkeinen  * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
5f7018c21STomi Valkeinen 
6f7018c21STomi Valkeinen  */
7f7018c21STomi Valkeinen 
8f7018c21STomi Valkeinen #ifndef __SHARE_H__
9f7018c21STomi Valkeinen #define __SHARE_H__
10f7018c21STomi Valkeinen 
11f7018c21STomi Valkeinen #include "via_modesetting.h"
12f7018c21STomi Valkeinen 
13f7018c21STomi Valkeinen /* Define Bit Field */
14f7018c21STomi Valkeinen #define BIT0    0x01
15f7018c21STomi Valkeinen #define BIT1    0x02
16f7018c21STomi Valkeinen #define BIT2    0x04
17f7018c21STomi Valkeinen #define BIT3    0x08
18f7018c21STomi Valkeinen #define BIT4    0x10
19f7018c21STomi Valkeinen #define BIT5    0x20
20f7018c21STomi Valkeinen #define BIT6    0x40
21f7018c21STomi Valkeinen #define BIT7    0x80
22f7018c21STomi Valkeinen 
23f7018c21STomi Valkeinen /* Video Memory Size */
24f7018c21STomi Valkeinen #define VIDEO_MEMORY_SIZE_16M    0x1000000
25f7018c21STomi Valkeinen 
26f7018c21STomi Valkeinen /*
27f7018c21STomi Valkeinen  * Lengths of the VPIT structure arrays.
28f7018c21STomi Valkeinen  */
29f7018c21STomi Valkeinen #define StdCR       0x19
30f7018c21STomi Valkeinen #define StdSR       0x04
31f7018c21STomi Valkeinen #define StdGR       0x09
32f7018c21STomi Valkeinen #define StdAR       0x14
33f7018c21STomi Valkeinen 
34f7018c21STomi Valkeinen #define PatchCR     11
35f7018c21STomi Valkeinen 
36f7018c21STomi Valkeinen /* Display path */
37f7018c21STomi Valkeinen #define IGA1        1
38f7018c21STomi Valkeinen #define IGA2        2
39f7018c21STomi Valkeinen 
40f7018c21STomi Valkeinen /* Define Color Depth  */
41f7018c21STomi Valkeinen #define MODE_8BPP       1
42f7018c21STomi Valkeinen #define MODE_16BPP      2
43f7018c21STomi Valkeinen #define MODE_32BPP      4
44f7018c21STomi Valkeinen 
45f7018c21STomi Valkeinen #define GR20    0x20
46f7018c21STomi Valkeinen #define GR21    0x21
47f7018c21STomi Valkeinen #define GR22    0x22
48f7018c21STomi Valkeinen 
49f7018c21STomi Valkeinen /* Sequencer Registers */
50f7018c21STomi Valkeinen #define SR01    0x01
51f7018c21STomi Valkeinen #define SR10    0x10
52f7018c21STomi Valkeinen #define SR12    0x12
53f7018c21STomi Valkeinen #define SR15    0x15
54f7018c21STomi Valkeinen #define SR16    0x16
55f7018c21STomi Valkeinen #define SR17    0x17
56f7018c21STomi Valkeinen #define SR18    0x18
57f7018c21STomi Valkeinen #define SR1B    0x1B
58f7018c21STomi Valkeinen #define SR1A    0x1A
59f7018c21STomi Valkeinen #define SR1C    0x1C
60f7018c21STomi Valkeinen #define SR1D    0x1D
61f7018c21STomi Valkeinen #define SR1E    0x1E
62f7018c21STomi Valkeinen #define SR1F    0x1F
63f7018c21STomi Valkeinen #define SR20    0x20
64f7018c21STomi Valkeinen #define SR21    0x21
65f7018c21STomi Valkeinen #define SR22    0x22
66f7018c21STomi Valkeinen #define SR2A    0x2A
67f7018c21STomi Valkeinen #define SR2D    0x2D
68f7018c21STomi Valkeinen #define SR2E    0x2E
69f7018c21STomi Valkeinen 
70f7018c21STomi Valkeinen #define SR30    0x30
71f7018c21STomi Valkeinen #define SR39    0x39
72f7018c21STomi Valkeinen #define SR3D    0x3D
73f7018c21STomi Valkeinen #define SR3E    0x3E
74f7018c21STomi Valkeinen #define SR3F    0x3F
75f7018c21STomi Valkeinen #define SR40    0x40
76f7018c21STomi Valkeinen #define SR43    0x43
77f7018c21STomi Valkeinen #define SR44    0x44
78f7018c21STomi Valkeinen #define SR45    0x45
79f7018c21STomi Valkeinen #define SR46    0x46
80f7018c21STomi Valkeinen #define SR47    0x47
81f7018c21STomi Valkeinen #define SR48    0x48
82f7018c21STomi Valkeinen #define SR49    0x49
83f7018c21STomi Valkeinen #define SR4A    0x4A
84f7018c21STomi Valkeinen #define SR4B    0x4B
85f7018c21STomi Valkeinen #define SR4C    0x4C
86f7018c21STomi Valkeinen #define SR52    0x52
87f7018c21STomi Valkeinen #define SR57	0x57
88f7018c21STomi Valkeinen #define SR58	0x58
89f7018c21STomi Valkeinen #define SR59	0x59
90f7018c21STomi Valkeinen #define SR5D    0x5D
91f7018c21STomi Valkeinen #define SR5E    0x5E
92f7018c21STomi Valkeinen #define SR65    0x65
93f7018c21STomi Valkeinen 
94f7018c21STomi Valkeinen /* CRT Controller Registers */
95f7018c21STomi Valkeinen #define CR00    0x00
96f7018c21STomi Valkeinen #define CR01    0x01
97f7018c21STomi Valkeinen #define CR02    0x02
98f7018c21STomi Valkeinen #define CR03    0x03
99f7018c21STomi Valkeinen #define CR04    0x04
100f7018c21STomi Valkeinen #define CR05    0x05
101f7018c21STomi Valkeinen #define CR06    0x06
102f7018c21STomi Valkeinen #define CR07    0x07
103f7018c21STomi Valkeinen #define CR08    0x08
104f7018c21STomi Valkeinen #define CR09    0x09
105f7018c21STomi Valkeinen #define CR0A    0x0A
106f7018c21STomi Valkeinen #define CR0B    0x0B
107f7018c21STomi Valkeinen #define CR0C    0x0C
108f7018c21STomi Valkeinen #define CR0D    0x0D
109f7018c21STomi Valkeinen #define CR0E    0x0E
110f7018c21STomi Valkeinen #define CR0F    0x0F
111f7018c21STomi Valkeinen #define CR10    0x10
112f7018c21STomi Valkeinen #define CR11    0x11
113f7018c21STomi Valkeinen #define CR12    0x12
114f7018c21STomi Valkeinen #define CR13    0x13
115f7018c21STomi Valkeinen #define CR14    0x14
116f7018c21STomi Valkeinen #define CR15    0x15
117f7018c21STomi Valkeinen #define CR16    0x16
118f7018c21STomi Valkeinen #define CR17    0x17
119f7018c21STomi Valkeinen #define CR18    0x18
120f7018c21STomi Valkeinen 
121f7018c21STomi Valkeinen /* Extend CRT Controller Registers */
122f7018c21STomi Valkeinen #define CR30    0x30
123f7018c21STomi Valkeinen #define CR31    0x31
124f7018c21STomi Valkeinen #define CR32    0x32
125f7018c21STomi Valkeinen #define CR33    0x33
126f7018c21STomi Valkeinen #define CR34    0x34
127f7018c21STomi Valkeinen #define CR35    0x35
128f7018c21STomi Valkeinen #define CR36    0x36
129f7018c21STomi Valkeinen #define CR37    0x37
130f7018c21STomi Valkeinen #define CR38    0x38
131f7018c21STomi Valkeinen #define CR39    0x39
132f7018c21STomi Valkeinen #define CR3A    0x3A
133f7018c21STomi Valkeinen #define CR3B    0x3B
134f7018c21STomi Valkeinen #define CR3C    0x3C
135f7018c21STomi Valkeinen #define CR3D    0x3D
136f7018c21STomi Valkeinen #define CR3E    0x3E
137f7018c21STomi Valkeinen #define CR3F    0x3F
138f7018c21STomi Valkeinen #define CR40    0x40
139f7018c21STomi Valkeinen #define CR41    0x41
140f7018c21STomi Valkeinen #define CR42    0x42
141f7018c21STomi Valkeinen #define CR43    0x43
142f7018c21STomi Valkeinen #define CR44    0x44
143f7018c21STomi Valkeinen #define CR45    0x45
144f7018c21STomi Valkeinen #define CR46    0x46
145f7018c21STomi Valkeinen #define CR47    0x47
146f7018c21STomi Valkeinen #define CR48    0x48
147f7018c21STomi Valkeinen #define CR49    0x49
148f7018c21STomi Valkeinen #define CR4A    0x4A
149f7018c21STomi Valkeinen #define CR4B    0x4B
150f7018c21STomi Valkeinen #define CR4C    0x4C
151f7018c21STomi Valkeinen #define CR4D    0x4D
152f7018c21STomi Valkeinen #define CR4E    0x4E
153f7018c21STomi Valkeinen #define CR4F    0x4F
154f7018c21STomi Valkeinen #define CR50    0x50
155f7018c21STomi Valkeinen #define CR51    0x51
156f7018c21STomi Valkeinen #define CR52    0x52
157f7018c21STomi Valkeinen #define CR53    0x53
158f7018c21STomi Valkeinen #define CR54    0x54
159f7018c21STomi Valkeinen #define CR55    0x55
160f7018c21STomi Valkeinen #define CR56    0x56
161f7018c21STomi Valkeinen #define CR57    0x57
162f7018c21STomi Valkeinen #define CR58    0x58
163f7018c21STomi Valkeinen #define CR59    0x59
164f7018c21STomi Valkeinen #define CR5A    0x5A
165f7018c21STomi Valkeinen #define CR5B    0x5B
166f7018c21STomi Valkeinen #define CR5C    0x5C
167f7018c21STomi Valkeinen #define CR5D    0x5D
168f7018c21STomi Valkeinen #define CR5E    0x5E
169f7018c21STomi Valkeinen #define CR5F    0x5F
170f7018c21STomi Valkeinen #define CR60    0x60
171f7018c21STomi Valkeinen #define CR61    0x61
172f7018c21STomi Valkeinen #define CR62    0x62
173f7018c21STomi Valkeinen #define CR63    0x63
174f7018c21STomi Valkeinen #define CR64    0x64
175f7018c21STomi Valkeinen #define CR65    0x65
176f7018c21STomi Valkeinen #define CR66    0x66
177f7018c21STomi Valkeinen #define CR67    0x67
178f7018c21STomi Valkeinen #define CR68    0x68
179f7018c21STomi Valkeinen #define CR69    0x69
180f7018c21STomi Valkeinen #define CR6A    0x6A
181f7018c21STomi Valkeinen #define CR6B    0x6B
182f7018c21STomi Valkeinen #define CR6C    0x6C
183f7018c21STomi Valkeinen #define CR6D    0x6D
184f7018c21STomi Valkeinen #define CR6E    0x6E
185f7018c21STomi Valkeinen #define CR6F    0x6F
186f7018c21STomi Valkeinen #define CR70    0x70
187f7018c21STomi Valkeinen #define CR71    0x71
188f7018c21STomi Valkeinen #define CR72    0x72
189f7018c21STomi Valkeinen #define CR73    0x73
190f7018c21STomi Valkeinen #define CR74    0x74
191f7018c21STomi Valkeinen #define CR75    0x75
192f7018c21STomi Valkeinen #define CR76    0x76
193f7018c21STomi Valkeinen #define CR77    0x77
194f7018c21STomi Valkeinen #define CR78    0x78
195f7018c21STomi Valkeinen #define CR79    0x79
196f7018c21STomi Valkeinen #define CR7A    0x7A
197f7018c21STomi Valkeinen #define CR7B    0x7B
198f7018c21STomi Valkeinen #define CR7C    0x7C
199f7018c21STomi Valkeinen #define CR7D    0x7D
200f7018c21STomi Valkeinen #define CR7E    0x7E
201f7018c21STomi Valkeinen #define CR7F    0x7F
202f7018c21STomi Valkeinen #define CR80    0x80
203f7018c21STomi Valkeinen #define CR81    0x81
204f7018c21STomi Valkeinen #define CR82    0x82
205f7018c21STomi Valkeinen #define CR83    0x83
206f7018c21STomi Valkeinen #define CR84    0x84
207f7018c21STomi Valkeinen #define CR85    0x85
208f7018c21STomi Valkeinen #define CR86    0x86
209f7018c21STomi Valkeinen #define CR87    0x87
210f7018c21STomi Valkeinen #define CR88    0x88
211f7018c21STomi Valkeinen #define CR89    0x89
212f7018c21STomi Valkeinen #define CR8A    0x8A
213f7018c21STomi Valkeinen #define CR8B    0x8B
214f7018c21STomi Valkeinen #define CR8C    0x8C
215f7018c21STomi Valkeinen #define CR8D    0x8D
216f7018c21STomi Valkeinen #define CR8E    0x8E
217f7018c21STomi Valkeinen #define CR8F    0x8F
218f7018c21STomi Valkeinen #define CR90    0x90
219f7018c21STomi Valkeinen #define CR91    0x91
220f7018c21STomi Valkeinen #define CR92    0x92
221f7018c21STomi Valkeinen #define CR93    0x93
222f7018c21STomi Valkeinen #define CR94    0x94
223f7018c21STomi Valkeinen #define CR95    0x95
224f7018c21STomi Valkeinen #define CR96    0x96
225f7018c21STomi Valkeinen #define CR97    0x97
226f7018c21STomi Valkeinen #define CR98    0x98
227f7018c21STomi Valkeinen #define CR99    0x99
228f7018c21STomi Valkeinen #define CR9A    0x9A
229f7018c21STomi Valkeinen #define CR9B    0x9B
230f7018c21STomi Valkeinen #define CR9C    0x9C
231f7018c21STomi Valkeinen #define CR9D    0x9D
232f7018c21STomi Valkeinen #define CR9E    0x9E
233f7018c21STomi Valkeinen #define CR9F    0x9F
234f7018c21STomi Valkeinen #define CRA0    0xA0
235f7018c21STomi Valkeinen #define CRA1    0xA1
236f7018c21STomi Valkeinen #define CRA2    0xA2
237f7018c21STomi Valkeinen #define CRA3    0xA3
238f7018c21STomi Valkeinen #define CRD2    0xD2
239f7018c21STomi Valkeinen #define CRD3    0xD3
240f7018c21STomi Valkeinen #define CRD4    0xD4
241f7018c21STomi Valkeinen 
242f7018c21STomi Valkeinen /* LUT Table*/
243f7018c21STomi Valkeinen #define LUT_DATA             0x3C9	/* DACDATA */
244f7018c21STomi Valkeinen #define LUT_INDEX_READ       0x3C7	/* DACRX */
245f7018c21STomi Valkeinen #define LUT_INDEX_WRITE      0x3C8	/* DACWX */
246f7018c21STomi Valkeinen #define DACMASK              0x3C6
247f7018c21STomi Valkeinen 
248f7018c21STomi Valkeinen /* Definition Device */
249f7018c21STomi Valkeinen #define DEVICE_CRT  0x01
250f7018c21STomi Valkeinen #define DEVICE_DVI  0x03
251f7018c21STomi Valkeinen #define DEVICE_LCD  0x04
252f7018c21STomi Valkeinen 
253f7018c21STomi Valkeinen /* Device output interface */
254f7018c21STomi Valkeinen #define INTERFACE_NONE          0x00
255f7018c21STomi Valkeinen #define INTERFACE_ANALOG_RGB    0x01
256f7018c21STomi Valkeinen #define INTERFACE_DVP0          0x02
257f7018c21STomi Valkeinen #define INTERFACE_DVP1          0x03
258f7018c21STomi Valkeinen #define INTERFACE_DFP_HIGH      0x04
259f7018c21STomi Valkeinen #define INTERFACE_DFP_LOW       0x05
260f7018c21STomi Valkeinen #define INTERFACE_DFP           0x06
261f7018c21STomi Valkeinen #define INTERFACE_LVDS0         0x07
262f7018c21STomi Valkeinen #define INTERFACE_LVDS1         0x08
263f7018c21STomi Valkeinen #define INTERFACE_LVDS0LVDS1    0x09
264f7018c21STomi Valkeinen #define INTERFACE_TMDS          0x0A
265f7018c21STomi Valkeinen 
266f7018c21STomi Valkeinen #define HW_LAYOUT_LCD_ONLY      0x01
267f7018c21STomi Valkeinen #define HW_LAYOUT_DVI_ONLY      0x02
268f7018c21STomi Valkeinen #define HW_LAYOUT_LCD_DVI       0x03
269f7018c21STomi Valkeinen #define HW_LAYOUT_LCD1_LCD2     0x04
270f7018c21STomi Valkeinen #define HW_LAYOUT_LCD_EXTERNAL_LCD2 0x10
271f7018c21STomi Valkeinen 
272f7018c21STomi Valkeinen /* Definition CRTC Timing Index */
273f7018c21STomi Valkeinen #define H_TOTAL_INDEX               0
274f7018c21STomi Valkeinen #define H_ADDR_INDEX                1
275f7018c21STomi Valkeinen #define H_BLANK_START_INDEX         2
276f7018c21STomi Valkeinen #define H_BLANK_END_INDEX           3
277f7018c21STomi Valkeinen #define H_SYNC_START_INDEX          4
278f7018c21STomi Valkeinen #define H_SYNC_END_INDEX            5
279f7018c21STomi Valkeinen #define V_TOTAL_INDEX               6
280f7018c21STomi Valkeinen #define V_ADDR_INDEX                7
281f7018c21STomi Valkeinen #define V_BLANK_START_INDEX         8
282f7018c21STomi Valkeinen #define V_BLANK_END_INDEX           9
283f7018c21STomi Valkeinen #define V_SYNC_START_INDEX          10
284f7018c21STomi Valkeinen #define V_SYNC_END_INDEX            11
285f7018c21STomi Valkeinen #define H_TOTAL_SHADOW_INDEX        12
286f7018c21STomi Valkeinen #define H_BLANK_END_SHADOW_INDEX    13
287f7018c21STomi Valkeinen #define V_TOTAL_SHADOW_INDEX        14
288f7018c21STomi Valkeinen #define V_ADDR_SHADOW_INDEX         15
289f7018c21STomi Valkeinen #define V_BLANK_SATRT_SHADOW_INDEX  16
290f7018c21STomi Valkeinen #define V_BLANK_END_SHADOW_INDEX    17
291f7018c21STomi Valkeinen #define V_SYNC_SATRT_SHADOW_INDEX   18
292f7018c21STomi Valkeinen #define V_SYNC_END_SHADOW_INDEX     19
293f7018c21STomi Valkeinen 
294f7018c21STomi Valkeinen /* LCD display method
295f7018c21STomi Valkeinen */
296f7018c21STomi Valkeinen #define     LCD_EXPANDSION              0x00
297f7018c21STomi Valkeinen #define     LCD_CENTERING               0x01
298f7018c21STomi Valkeinen 
299f7018c21STomi Valkeinen /* LCD mode
300f7018c21STomi Valkeinen */
301f7018c21STomi Valkeinen #define     LCD_OPENLDI               0x00
302f7018c21STomi Valkeinen #define     LCD_SPWG                  0x01
303f7018c21STomi Valkeinen 
304f7018c21STomi Valkeinen struct crt_mode_table {
305f7018c21STomi Valkeinen 	int refresh_rate;
306f7018c21STomi Valkeinen 	int h_sync_polarity;
307f7018c21STomi Valkeinen 	int v_sync_polarity;
308f7018c21STomi Valkeinen 	struct via_display_timing crtc;
309f7018c21STomi Valkeinen };
310f7018c21STomi Valkeinen 
311f7018c21STomi Valkeinen struct io_reg {
312f7018c21STomi Valkeinen 	int port;
313f7018c21STomi Valkeinen 	u8 index;
314f7018c21STomi Valkeinen 	u8 mask;
315f7018c21STomi Valkeinen 	u8 value;
316f7018c21STomi Valkeinen };
317f7018c21STomi Valkeinen 
318f7018c21STomi Valkeinen #endif /* __SHARE_H__ */
319