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