xref: /linux/drivers/video/fbdev/via/ioctl.h (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
1*64b70da0SThomas 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 __IOCTL_H__
9f7018c21STomi Valkeinen #define __IOCTL_H__
10f7018c21STomi Valkeinen 
11f7018c21STomi Valkeinen #ifndef __user
12f7018c21STomi Valkeinen #define __user
13f7018c21STomi Valkeinen #endif
14f7018c21STomi Valkeinen 
15f7018c21STomi Valkeinen /* VIAFB IOCTL definition */
16f7018c21STomi Valkeinen #define VIAFB_GET_INFO_SIZE		0x56494101	/* 'VIA\01' */
17f7018c21STomi Valkeinen #define VIAFB_GET_INFO			0x56494102	/* 'VIA\02' */
18f7018c21STomi Valkeinen #define VIAFB_HOTPLUG			0x56494103	/* 'VIA\03' */
19f7018c21STomi Valkeinen #define VIAFB_SET_HOTPLUG_FLAG		0x56494104	/* 'VIA\04' */
20f7018c21STomi Valkeinen #define VIAFB_GET_RESOLUTION		0x56494105	/* 'VIA\05' */
21f7018c21STomi Valkeinen #define VIAFB_GET_SAMM_INFO		0x56494107	/* 'VIA\07' */
22f7018c21STomi Valkeinen #define VIAFB_TURN_ON_OUTPUT_DEVICE     0x56494108	/* 'VIA\08' */
23f7018c21STomi Valkeinen #define VIAFB_TURN_OFF_OUTPUT_DEVICE    0x56494109	/* 'VIA\09' */
24f7018c21STomi Valkeinen #define VIAFB_GET_DEVICE		0x5649410B
25f7018c21STomi Valkeinen #define VIAFB_GET_DRIVER_VERSION	0x56494112	/* 'VIA\12' */
26f7018c21STomi Valkeinen #define VIAFB_GET_CHIP_INFO		0x56494113	/* 'VIA\13' */
27f7018c21STomi Valkeinen #define VIAFB_GET_DEVICE_INFO           0x56494115
28f7018c21STomi Valkeinen 
29f7018c21STomi Valkeinen #define VIAFB_GET_DEVICE_SUPPORT	0x56494118
30f7018c21STomi Valkeinen #define VIAFB_GET_DEVICE_CONNECT	0x56494119
31f7018c21STomi Valkeinen #define VIAFB_GET_PANEL_SUPPORT_EXPAND	0x5649411A
32f7018c21STomi Valkeinen #define VIAFB_GET_DRIVER_NAME		0x56494122
33f7018c21STomi Valkeinen #define VIAFB_GET_DEVICE_SUPPORT_STATE	0x56494123
34f7018c21STomi Valkeinen #define VIAFB_GET_GAMMA_LUT		0x56494124
35f7018c21STomi Valkeinen #define VIAFB_SET_GAMMA_LUT		0x56494125
36f7018c21STomi Valkeinen #define VIAFB_GET_GAMMA_SUPPORT_STATE	0x56494126
37f7018c21STomi Valkeinen #define VIAFB_SYNC_SURFACE		0x56494130
38f7018c21STomi Valkeinen #define VIAFB_GET_DRIVER_CAPS		0x56494131
39f7018c21STomi Valkeinen #define VIAFB_GET_IGA_SCALING_INFO	0x56494132
40f7018c21STomi Valkeinen #define VIAFB_GET_PANEL_MAX_SIZE	0x56494133
41f7018c21STomi Valkeinen #define VIAFB_GET_PANEL_MAX_POSITION	0x56494134
42f7018c21STomi Valkeinen #define VIAFB_SET_PANEL_SIZE		0x56494135
43f7018c21STomi Valkeinen #define VIAFB_SET_PANEL_POSITION        0x56494136
44f7018c21STomi Valkeinen #define VIAFB_GET_PANEL_POSITION        0x56494137
45f7018c21STomi Valkeinen #define VIAFB_GET_PANEL_SIZE		0x56494138
46f7018c21STomi Valkeinen 
47f7018c21STomi Valkeinen #define None_Device 0x00
48f7018c21STomi Valkeinen #define CRT_Device  0x01
49f7018c21STomi Valkeinen #define LCD_Device  0x02
50f7018c21STomi Valkeinen #define DVI_Device  0x08
51f7018c21STomi Valkeinen #define CRT2_Device 0x10
52f7018c21STomi Valkeinen #define LCD2_Device 0x40
53f7018c21STomi Valkeinen 
54f7018c21STomi Valkeinen #define OP_LCD_CENTERING   0x01
55f7018c21STomi Valkeinen #define OP_LCD_PANEL_ID    0x02
56f7018c21STomi Valkeinen #define OP_LCD_MODE        0x03
57f7018c21STomi Valkeinen 
58f7018c21STomi Valkeinen /*SAMM operation flag*/
59f7018c21STomi Valkeinen #define OP_SAMM            0x80
60f7018c21STomi Valkeinen 
61f7018c21STomi Valkeinen #define LCD_PANEL_ID_MAXIMUM	23
62f7018c21STomi Valkeinen 
63f7018c21STomi Valkeinen #define STATE_ON            0x1
64f7018c21STomi Valkeinen #define STATE_OFF           0x0
65f7018c21STomi Valkeinen #define STATE_DEFAULT       0xFFFF
66f7018c21STomi Valkeinen 
67f7018c21STomi Valkeinen #define MAX_ACTIVE_DEV_NUM  2
68f7018c21STomi Valkeinen 
69f7018c21STomi Valkeinen struct device_t {
70f7018c21STomi Valkeinen 	unsigned short crt:1;
71f7018c21STomi Valkeinen 	unsigned short dvi:1;
72f7018c21STomi Valkeinen 	unsigned short lcd:1;
73f7018c21STomi Valkeinen 	unsigned short samm:1;
74f7018c21STomi Valkeinen 	unsigned short lcd_dsp_cent:1;
75f7018c21STomi Valkeinen 	unsigned char lcd_mode:1;
76f7018c21STomi Valkeinen 	unsigned short epia_dvi:1;
77f7018c21STomi Valkeinen 	unsigned short lcd_dual_edge:1;
78f7018c21STomi Valkeinen 	unsigned short lcd2:1;
79f7018c21STomi Valkeinen 
80f7018c21STomi Valkeinen 	unsigned short primary_dev;
81f7018c21STomi Valkeinen 	unsigned char lcd_panel_id;
82f7018c21STomi Valkeinen 	unsigned short xres, yres;
83f7018c21STomi Valkeinen 	unsigned short xres1, yres1;
84f7018c21STomi Valkeinen 	unsigned short refresh;
85f7018c21STomi Valkeinen 	unsigned short bpp;
86f7018c21STomi Valkeinen 	unsigned short refresh1;
87f7018c21STomi Valkeinen 	unsigned short bpp1;
88f7018c21STomi Valkeinen 	unsigned short sequence;
89f7018c21STomi Valkeinen 	unsigned short bus_width;
90f7018c21STomi Valkeinen };
91f7018c21STomi Valkeinen 
92f7018c21STomi Valkeinen struct viafb_ioctl_info {
93f7018c21STomi Valkeinen 	u32 viafb_id;		/* for identifying viafb */
94f7018c21STomi Valkeinen #define VIAID       0x56494146	/* Identify myself with 'VIAF' */
95f7018c21STomi Valkeinen 	u16 vendor_id;
96f7018c21STomi Valkeinen 	u16 device_id;
97f7018c21STomi Valkeinen 	u8 version;
98f7018c21STomi Valkeinen 	u8 revision;
99f7018c21STomi Valkeinen 	u8 reserved[246];	/* for future use */
100f7018c21STomi Valkeinen };
101f7018c21STomi Valkeinen 
102f7018c21STomi Valkeinen struct viafb_ioctl_mode {
103f7018c21STomi Valkeinen 	u32 xres;
104f7018c21STomi Valkeinen 	u32 yres;
105f7018c21STomi Valkeinen 	u32 refresh;
106f7018c21STomi Valkeinen 	u32 bpp;
107f7018c21STomi Valkeinen 	u32 xres_sec;
108f7018c21STomi Valkeinen 	u32 yres_sec;
109f7018c21STomi Valkeinen 	u32 virtual_xres_sec;
110f7018c21STomi Valkeinen 	u32 virtual_yres_sec;
111f7018c21STomi Valkeinen 	u32 refresh_sec;
112f7018c21STomi Valkeinen 	u32 bpp_sec;
113f7018c21STomi Valkeinen };
114f7018c21STomi Valkeinen struct viafb_ioctl_samm {
115f7018c21STomi Valkeinen 	u32 samm_status;
116f7018c21STomi Valkeinen 	u32 size_prim;
117f7018c21STomi Valkeinen 	u32 size_sec;
118f7018c21STomi Valkeinen 	u32 mem_base;
119f7018c21STomi Valkeinen 	u32 offset_sec;
120f7018c21STomi Valkeinen };
121f7018c21STomi Valkeinen 
122f7018c21STomi Valkeinen struct viafb_driver_version {
123f7018c21STomi Valkeinen 	int iMajorNum;
124f7018c21STomi Valkeinen 	int iKernelNum;
125f7018c21STomi Valkeinen 	int iOSNum;
126f7018c21STomi Valkeinen 	int iMinorNum;
127f7018c21STomi Valkeinen };
128f7018c21STomi Valkeinen 
129f7018c21STomi Valkeinen struct viafb_ioctl_lcd_attribute {
130f7018c21STomi Valkeinen 	unsigned int panel_id;
131f7018c21STomi Valkeinen 	unsigned int display_center;
132f7018c21STomi Valkeinen 	unsigned int lcd_mode;
133f7018c21STomi Valkeinen };
134f7018c21STomi Valkeinen 
135f7018c21STomi Valkeinen struct viafb_ioctl_setting {
136f7018c21STomi Valkeinen 	/* Enable or disable active devices */
137f7018c21STomi Valkeinen 	unsigned short device_flag;
138f7018c21STomi Valkeinen 	/* Indicate which device should be turn on or turn off. */
139f7018c21STomi Valkeinen 	unsigned short device_status;
140f7018c21STomi Valkeinen 	unsigned int reserved;
141f7018c21STomi Valkeinen 	/* Indicate which LCD's attribute can be changed. */
142f7018c21STomi Valkeinen 	unsigned short lcd_operation_flag;
143f7018c21STomi Valkeinen 	/* 1: SAMM ON  0: SAMM OFF */
144f7018c21STomi Valkeinen 	unsigned short samm_status;
145f7018c21STomi Valkeinen 	/* horizontal resolution of first device */
146f7018c21STomi Valkeinen 	unsigned short first_dev_hor_res;
147f7018c21STomi Valkeinen 	/* vertical resolution of first device */
148f7018c21STomi Valkeinen 	unsigned short first_dev_ver_res;
149f7018c21STomi Valkeinen 	/* horizontal resolution of second device */
150f7018c21STomi Valkeinen 	unsigned short second_dev_hor_res;
151f7018c21STomi Valkeinen 	/* vertical resolution of second device */
152f7018c21STomi Valkeinen 	unsigned short second_dev_ver_res;
153f7018c21STomi Valkeinen 	/* refresh rate of first device */
154f7018c21STomi Valkeinen 	unsigned short first_dev_refresh;
155f7018c21STomi Valkeinen 	/* bpp of first device */
156f7018c21STomi Valkeinen 	unsigned short first_dev_bpp;
157f7018c21STomi Valkeinen 	/* refresh rate of second device */
158f7018c21STomi Valkeinen 	unsigned short second_dev_refresh;
159f7018c21STomi Valkeinen 	/* bpp of second device */
160f7018c21STomi Valkeinen 	unsigned short second_dev_bpp;
161f7018c21STomi Valkeinen 	/* Indicate which device are primary display device. */
162f7018c21STomi Valkeinen 	unsigned int primary_device;
163f7018c21STomi Valkeinen 	unsigned int struct_reserved[35];
164f7018c21STomi Valkeinen 	struct viafb_ioctl_lcd_attribute lcd_attributes;
165f7018c21STomi Valkeinen };
166f7018c21STomi Valkeinen 
167f7018c21STomi Valkeinen struct _UTFunctionCaps {
168f7018c21STomi Valkeinen 	unsigned int dw3DScalingState;
169f7018c21STomi Valkeinen 	unsigned int reserved[31];
170f7018c21STomi Valkeinen };
171f7018c21STomi Valkeinen 
172f7018c21STomi Valkeinen struct _POSITIONVALUE {
173f7018c21STomi Valkeinen 	unsigned int dwX;
174f7018c21STomi Valkeinen 	unsigned int dwY;
175f7018c21STomi Valkeinen };
176f7018c21STomi Valkeinen 
177f7018c21STomi Valkeinen struct _panel_size_pos_info {
178f7018c21STomi Valkeinen 	unsigned int device_type;
179f7018c21STomi Valkeinen 	int x;
180f7018c21STomi Valkeinen 	int y;
181f7018c21STomi Valkeinen };
182f7018c21STomi Valkeinen 
183f7018c21STomi Valkeinen extern int viafb_LCD_ON;
184f7018c21STomi Valkeinen extern int viafb_DVI_ON;
185f7018c21STomi Valkeinen 
186f7018c21STomi Valkeinen int viafb_ioctl_get_viafb_info(u_long arg);
187f7018c21STomi Valkeinen int viafb_ioctl_hotplug(int hres, int vres, int bpp);
188f7018c21STomi Valkeinen 
189f7018c21STomi Valkeinen #endif /* __IOCTL_H__ */
190