162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
462306a36Sopenharmony_ci * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef __SHARE_H__
962306a36Sopenharmony_ci#define __SHARE_H__
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include "via_modesetting.h"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/* Define Bit Field */
1462306a36Sopenharmony_ci#define BIT0    0x01
1562306a36Sopenharmony_ci#define BIT1    0x02
1662306a36Sopenharmony_ci#define BIT2    0x04
1762306a36Sopenharmony_ci#define BIT3    0x08
1862306a36Sopenharmony_ci#define BIT4    0x10
1962306a36Sopenharmony_ci#define BIT5    0x20
2062306a36Sopenharmony_ci#define BIT6    0x40
2162306a36Sopenharmony_ci#define BIT7    0x80
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci/* Video Memory Size */
2462306a36Sopenharmony_ci#define VIDEO_MEMORY_SIZE_16M    0x1000000
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci/*
2762306a36Sopenharmony_ci * Lengths of the VPIT structure arrays.
2862306a36Sopenharmony_ci */
2962306a36Sopenharmony_ci#define StdCR       0x19
3062306a36Sopenharmony_ci#define StdSR       0x04
3162306a36Sopenharmony_ci#define StdGR       0x09
3262306a36Sopenharmony_ci#define StdAR       0x14
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#define PatchCR     11
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci/* Display path */
3762306a36Sopenharmony_ci#define IGA1        1
3862306a36Sopenharmony_ci#define IGA2        2
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci/* Define Color Depth  */
4162306a36Sopenharmony_ci#define MODE_8BPP       1
4262306a36Sopenharmony_ci#define MODE_16BPP      2
4362306a36Sopenharmony_ci#define MODE_32BPP      4
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#define GR20    0x20
4662306a36Sopenharmony_ci#define GR21    0x21
4762306a36Sopenharmony_ci#define GR22    0x22
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci/* Sequencer Registers */
5062306a36Sopenharmony_ci#define SR01    0x01
5162306a36Sopenharmony_ci#define SR10    0x10
5262306a36Sopenharmony_ci#define SR12    0x12
5362306a36Sopenharmony_ci#define SR15    0x15
5462306a36Sopenharmony_ci#define SR16    0x16
5562306a36Sopenharmony_ci#define SR17    0x17
5662306a36Sopenharmony_ci#define SR18    0x18
5762306a36Sopenharmony_ci#define SR1B    0x1B
5862306a36Sopenharmony_ci#define SR1A    0x1A
5962306a36Sopenharmony_ci#define SR1C    0x1C
6062306a36Sopenharmony_ci#define SR1D    0x1D
6162306a36Sopenharmony_ci#define SR1E    0x1E
6262306a36Sopenharmony_ci#define SR1F    0x1F
6362306a36Sopenharmony_ci#define SR20    0x20
6462306a36Sopenharmony_ci#define SR21    0x21
6562306a36Sopenharmony_ci#define SR22    0x22
6662306a36Sopenharmony_ci#define SR2A    0x2A
6762306a36Sopenharmony_ci#define SR2D    0x2D
6862306a36Sopenharmony_ci#define SR2E    0x2E
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#define SR30    0x30
7162306a36Sopenharmony_ci#define SR39    0x39
7262306a36Sopenharmony_ci#define SR3D    0x3D
7362306a36Sopenharmony_ci#define SR3E    0x3E
7462306a36Sopenharmony_ci#define SR3F    0x3F
7562306a36Sopenharmony_ci#define SR40    0x40
7662306a36Sopenharmony_ci#define SR43    0x43
7762306a36Sopenharmony_ci#define SR44    0x44
7862306a36Sopenharmony_ci#define SR45    0x45
7962306a36Sopenharmony_ci#define SR46    0x46
8062306a36Sopenharmony_ci#define SR47    0x47
8162306a36Sopenharmony_ci#define SR48    0x48
8262306a36Sopenharmony_ci#define SR49    0x49
8362306a36Sopenharmony_ci#define SR4A    0x4A
8462306a36Sopenharmony_ci#define SR4B    0x4B
8562306a36Sopenharmony_ci#define SR4C    0x4C
8662306a36Sopenharmony_ci#define SR52    0x52
8762306a36Sopenharmony_ci#define SR57	0x57
8862306a36Sopenharmony_ci#define SR58	0x58
8962306a36Sopenharmony_ci#define SR59	0x59
9062306a36Sopenharmony_ci#define SR5D    0x5D
9162306a36Sopenharmony_ci#define SR5E    0x5E
9262306a36Sopenharmony_ci#define SR65    0x65
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci/* CRT Controller Registers */
9562306a36Sopenharmony_ci#define CR00    0x00
9662306a36Sopenharmony_ci#define CR01    0x01
9762306a36Sopenharmony_ci#define CR02    0x02
9862306a36Sopenharmony_ci#define CR03    0x03
9962306a36Sopenharmony_ci#define CR04    0x04
10062306a36Sopenharmony_ci#define CR05    0x05
10162306a36Sopenharmony_ci#define CR06    0x06
10262306a36Sopenharmony_ci#define CR07    0x07
10362306a36Sopenharmony_ci#define CR08    0x08
10462306a36Sopenharmony_ci#define CR09    0x09
10562306a36Sopenharmony_ci#define CR0A    0x0A
10662306a36Sopenharmony_ci#define CR0B    0x0B
10762306a36Sopenharmony_ci#define CR0C    0x0C
10862306a36Sopenharmony_ci#define CR0D    0x0D
10962306a36Sopenharmony_ci#define CR0E    0x0E
11062306a36Sopenharmony_ci#define CR0F    0x0F
11162306a36Sopenharmony_ci#define CR10    0x10
11262306a36Sopenharmony_ci#define CR11    0x11
11362306a36Sopenharmony_ci#define CR12    0x12
11462306a36Sopenharmony_ci#define CR13    0x13
11562306a36Sopenharmony_ci#define CR14    0x14
11662306a36Sopenharmony_ci#define CR15    0x15
11762306a36Sopenharmony_ci#define CR16    0x16
11862306a36Sopenharmony_ci#define CR17    0x17
11962306a36Sopenharmony_ci#define CR18    0x18
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci/* Extend CRT Controller Registers */
12262306a36Sopenharmony_ci#define CR30    0x30
12362306a36Sopenharmony_ci#define CR31    0x31
12462306a36Sopenharmony_ci#define CR32    0x32
12562306a36Sopenharmony_ci#define CR33    0x33
12662306a36Sopenharmony_ci#define CR34    0x34
12762306a36Sopenharmony_ci#define CR35    0x35
12862306a36Sopenharmony_ci#define CR36    0x36
12962306a36Sopenharmony_ci#define CR37    0x37
13062306a36Sopenharmony_ci#define CR38    0x38
13162306a36Sopenharmony_ci#define CR39    0x39
13262306a36Sopenharmony_ci#define CR3A    0x3A
13362306a36Sopenharmony_ci#define CR3B    0x3B
13462306a36Sopenharmony_ci#define CR3C    0x3C
13562306a36Sopenharmony_ci#define CR3D    0x3D
13662306a36Sopenharmony_ci#define CR3E    0x3E
13762306a36Sopenharmony_ci#define CR3F    0x3F
13862306a36Sopenharmony_ci#define CR40    0x40
13962306a36Sopenharmony_ci#define CR41    0x41
14062306a36Sopenharmony_ci#define CR42    0x42
14162306a36Sopenharmony_ci#define CR43    0x43
14262306a36Sopenharmony_ci#define CR44    0x44
14362306a36Sopenharmony_ci#define CR45    0x45
14462306a36Sopenharmony_ci#define CR46    0x46
14562306a36Sopenharmony_ci#define CR47    0x47
14662306a36Sopenharmony_ci#define CR48    0x48
14762306a36Sopenharmony_ci#define CR49    0x49
14862306a36Sopenharmony_ci#define CR4A    0x4A
14962306a36Sopenharmony_ci#define CR4B    0x4B
15062306a36Sopenharmony_ci#define CR4C    0x4C
15162306a36Sopenharmony_ci#define CR4D    0x4D
15262306a36Sopenharmony_ci#define CR4E    0x4E
15362306a36Sopenharmony_ci#define CR4F    0x4F
15462306a36Sopenharmony_ci#define CR50    0x50
15562306a36Sopenharmony_ci#define CR51    0x51
15662306a36Sopenharmony_ci#define CR52    0x52
15762306a36Sopenharmony_ci#define CR53    0x53
15862306a36Sopenharmony_ci#define CR54    0x54
15962306a36Sopenharmony_ci#define CR55    0x55
16062306a36Sopenharmony_ci#define CR56    0x56
16162306a36Sopenharmony_ci#define CR57    0x57
16262306a36Sopenharmony_ci#define CR58    0x58
16362306a36Sopenharmony_ci#define CR59    0x59
16462306a36Sopenharmony_ci#define CR5A    0x5A
16562306a36Sopenharmony_ci#define CR5B    0x5B
16662306a36Sopenharmony_ci#define CR5C    0x5C
16762306a36Sopenharmony_ci#define CR5D    0x5D
16862306a36Sopenharmony_ci#define CR5E    0x5E
16962306a36Sopenharmony_ci#define CR5F    0x5F
17062306a36Sopenharmony_ci#define CR60    0x60
17162306a36Sopenharmony_ci#define CR61    0x61
17262306a36Sopenharmony_ci#define CR62    0x62
17362306a36Sopenharmony_ci#define CR63    0x63
17462306a36Sopenharmony_ci#define CR64    0x64
17562306a36Sopenharmony_ci#define CR65    0x65
17662306a36Sopenharmony_ci#define CR66    0x66
17762306a36Sopenharmony_ci#define CR67    0x67
17862306a36Sopenharmony_ci#define CR68    0x68
17962306a36Sopenharmony_ci#define CR69    0x69
18062306a36Sopenharmony_ci#define CR6A    0x6A
18162306a36Sopenharmony_ci#define CR6B    0x6B
18262306a36Sopenharmony_ci#define CR6C    0x6C
18362306a36Sopenharmony_ci#define CR6D    0x6D
18462306a36Sopenharmony_ci#define CR6E    0x6E
18562306a36Sopenharmony_ci#define CR6F    0x6F
18662306a36Sopenharmony_ci#define CR70    0x70
18762306a36Sopenharmony_ci#define CR71    0x71
18862306a36Sopenharmony_ci#define CR72    0x72
18962306a36Sopenharmony_ci#define CR73    0x73
19062306a36Sopenharmony_ci#define CR74    0x74
19162306a36Sopenharmony_ci#define CR75    0x75
19262306a36Sopenharmony_ci#define CR76    0x76
19362306a36Sopenharmony_ci#define CR77    0x77
19462306a36Sopenharmony_ci#define CR78    0x78
19562306a36Sopenharmony_ci#define CR79    0x79
19662306a36Sopenharmony_ci#define CR7A    0x7A
19762306a36Sopenharmony_ci#define CR7B    0x7B
19862306a36Sopenharmony_ci#define CR7C    0x7C
19962306a36Sopenharmony_ci#define CR7D    0x7D
20062306a36Sopenharmony_ci#define CR7E    0x7E
20162306a36Sopenharmony_ci#define CR7F    0x7F
20262306a36Sopenharmony_ci#define CR80    0x80
20362306a36Sopenharmony_ci#define CR81    0x81
20462306a36Sopenharmony_ci#define CR82    0x82
20562306a36Sopenharmony_ci#define CR83    0x83
20662306a36Sopenharmony_ci#define CR84    0x84
20762306a36Sopenharmony_ci#define CR85    0x85
20862306a36Sopenharmony_ci#define CR86    0x86
20962306a36Sopenharmony_ci#define CR87    0x87
21062306a36Sopenharmony_ci#define CR88    0x88
21162306a36Sopenharmony_ci#define CR89    0x89
21262306a36Sopenharmony_ci#define CR8A    0x8A
21362306a36Sopenharmony_ci#define CR8B    0x8B
21462306a36Sopenharmony_ci#define CR8C    0x8C
21562306a36Sopenharmony_ci#define CR8D    0x8D
21662306a36Sopenharmony_ci#define CR8E    0x8E
21762306a36Sopenharmony_ci#define CR8F    0x8F
21862306a36Sopenharmony_ci#define CR90    0x90
21962306a36Sopenharmony_ci#define CR91    0x91
22062306a36Sopenharmony_ci#define CR92    0x92
22162306a36Sopenharmony_ci#define CR93    0x93
22262306a36Sopenharmony_ci#define CR94    0x94
22362306a36Sopenharmony_ci#define CR95    0x95
22462306a36Sopenharmony_ci#define CR96    0x96
22562306a36Sopenharmony_ci#define CR97    0x97
22662306a36Sopenharmony_ci#define CR98    0x98
22762306a36Sopenharmony_ci#define CR99    0x99
22862306a36Sopenharmony_ci#define CR9A    0x9A
22962306a36Sopenharmony_ci#define CR9B    0x9B
23062306a36Sopenharmony_ci#define CR9C    0x9C
23162306a36Sopenharmony_ci#define CR9D    0x9D
23262306a36Sopenharmony_ci#define CR9E    0x9E
23362306a36Sopenharmony_ci#define CR9F    0x9F
23462306a36Sopenharmony_ci#define CRA0    0xA0
23562306a36Sopenharmony_ci#define CRA1    0xA1
23662306a36Sopenharmony_ci#define CRA2    0xA2
23762306a36Sopenharmony_ci#define CRA3    0xA3
23862306a36Sopenharmony_ci#define CRD2    0xD2
23962306a36Sopenharmony_ci#define CRD3    0xD3
24062306a36Sopenharmony_ci#define CRD4    0xD4
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci/* LUT Table*/
24362306a36Sopenharmony_ci#define LUT_DATA             0x3C9	/* DACDATA */
24462306a36Sopenharmony_ci#define LUT_INDEX_READ       0x3C7	/* DACRX */
24562306a36Sopenharmony_ci#define LUT_INDEX_WRITE      0x3C8	/* DACWX */
24662306a36Sopenharmony_ci#define DACMASK              0x3C6
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci/* Definition Device */
24962306a36Sopenharmony_ci#define DEVICE_CRT  0x01
25062306a36Sopenharmony_ci#define DEVICE_DVI  0x03
25162306a36Sopenharmony_ci#define DEVICE_LCD  0x04
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci/* Device output interface */
25462306a36Sopenharmony_ci#define INTERFACE_NONE          0x00
25562306a36Sopenharmony_ci#define INTERFACE_ANALOG_RGB    0x01
25662306a36Sopenharmony_ci#define INTERFACE_DVP0          0x02
25762306a36Sopenharmony_ci#define INTERFACE_DVP1          0x03
25862306a36Sopenharmony_ci#define INTERFACE_DFP_HIGH      0x04
25962306a36Sopenharmony_ci#define INTERFACE_DFP_LOW       0x05
26062306a36Sopenharmony_ci#define INTERFACE_DFP           0x06
26162306a36Sopenharmony_ci#define INTERFACE_LVDS0         0x07
26262306a36Sopenharmony_ci#define INTERFACE_LVDS1         0x08
26362306a36Sopenharmony_ci#define INTERFACE_LVDS0LVDS1    0x09
26462306a36Sopenharmony_ci#define INTERFACE_TMDS          0x0A
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci#define HW_LAYOUT_LCD_ONLY      0x01
26762306a36Sopenharmony_ci#define HW_LAYOUT_DVI_ONLY      0x02
26862306a36Sopenharmony_ci#define HW_LAYOUT_LCD_DVI       0x03
26962306a36Sopenharmony_ci#define HW_LAYOUT_LCD1_LCD2     0x04
27062306a36Sopenharmony_ci#define HW_LAYOUT_LCD_EXTERNAL_LCD2 0x10
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci/* Definition CRTC Timing Index */
27362306a36Sopenharmony_ci#define H_TOTAL_INDEX               0
27462306a36Sopenharmony_ci#define H_ADDR_INDEX                1
27562306a36Sopenharmony_ci#define H_BLANK_START_INDEX         2
27662306a36Sopenharmony_ci#define H_BLANK_END_INDEX           3
27762306a36Sopenharmony_ci#define H_SYNC_START_INDEX          4
27862306a36Sopenharmony_ci#define H_SYNC_END_INDEX            5
27962306a36Sopenharmony_ci#define V_TOTAL_INDEX               6
28062306a36Sopenharmony_ci#define V_ADDR_INDEX                7
28162306a36Sopenharmony_ci#define V_BLANK_START_INDEX         8
28262306a36Sopenharmony_ci#define V_BLANK_END_INDEX           9
28362306a36Sopenharmony_ci#define V_SYNC_START_INDEX          10
28462306a36Sopenharmony_ci#define V_SYNC_END_INDEX            11
28562306a36Sopenharmony_ci#define H_TOTAL_SHADOW_INDEX        12
28662306a36Sopenharmony_ci#define H_BLANK_END_SHADOW_INDEX    13
28762306a36Sopenharmony_ci#define V_TOTAL_SHADOW_INDEX        14
28862306a36Sopenharmony_ci#define V_ADDR_SHADOW_INDEX         15
28962306a36Sopenharmony_ci#define V_BLANK_SATRT_SHADOW_INDEX  16
29062306a36Sopenharmony_ci#define V_BLANK_END_SHADOW_INDEX    17
29162306a36Sopenharmony_ci#define V_SYNC_SATRT_SHADOW_INDEX   18
29262306a36Sopenharmony_ci#define V_SYNC_END_SHADOW_INDEX     19
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ci/* LCD display method
29562306a36Sopenharmony_ci*/
29662306a36Sopenharmony_ci#define     LCD_EXPANDSION              0x00
29762306a36Sopenharmony_ci#define     LCD_CENTERING               0x01
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci/* LCD mode
30062306a36Sopenharmony_ci*/
30162306a36Sopenharmony_ci#define     LCD_OPENLDI               0x00
30262306a36Sopenharmony_ci#define     LCD_SPWG                  0x01
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_cistruct crt_mode_table {
30562306a36Sopenharmony_ci	int refresh_rate;
30662306a36Sopenharmony_ci	int h_sync_polarity;
30762306a36Sopenharmony_ci	int v_sync_polarity;
30862306a36Sopenharmony_ci	struct via_display_timing crtc;
30962306a36Sopenharmony_ci};
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_cistruct io_reg {
31262306a36Sopenharmony_ci	int port;
31362306a36Sopenharmony_ci	u8 index;
31462306a36Sopenharmony_ci	u8 mask;
31562306a36Sopenharmony_ci	u8 value;
31662306a36Sopenharmony_ci};
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ci#endif /* __SHARE_H__ */
319