xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/omapfb.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /*
3*f80ad8b4SAndroid Build Coastguard Worker  * File: include/linux/omapfb.h
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  * Framebuffer driver for TI OMAP boards
6*f80ad8b4SAndroid Build Coastguard Worker  *
7*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (C) 2004 Nokia Corporation
8*f80ad8b4SAndroid Build Coastguard Worker  * Author: Imre Deak <[email protected]>
9*f80ad8b4SAndroid Build Coastguard Worker  *
10*f80ad8b4SAndroid Build Coastguard Worker  * This program is free software; you can redistribute it and/or modify it
11*f80ad8b4SAndroid Build Coastguard Worker  * under the terms of the GNU General Public License as published by the
12*f80ad8b4SAndroid Build Coastguard Worker  * Free Software Foundation; either version 2 of the License, or (at your
13*f80ad8b4SAndroid Build Coastguard Worker  * option) any later version.
14*f80ad8b4SAndroid Build Coastguard Worker  *
15*f80ad8b4SAndroid Build Coastguard Worker  * This program is distributed in the hope that it will be useful, but
16*f80ad8b4SAndroid Build Coastguard Worker  * WITHOUT ANY WARRANTY; without even the implied warranty of
17*f80ad8b4SAndroid Build Coastguard Worker  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18*f80ad8b4SAndroid Build Coastguard Worker  * General Public License for more details.
19*f80ad8b4SAndroid Build Coastguard Worker  *
20*f80ad8b4SAndroid Build Coastguard Worker  * You should have received a copy of the GNU General Public License along
21*f80ad8b4SAndroid Build Coastguard Worker  * with this program; if not, write to the Free Software Foundation, Inc.,
22*f80ad8b4SAndroid Build Coastguard Worker  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23*f80ad8b4SAndroid Build Coastguard Worker  */
24*f80ad8b4SAndroid Build Coastguard Worker 
25*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI__LINUX_OMAPFB_H__
26*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI__LINUX_OMAPFB_H__
27*f80ad8b4SAndroid Build Coastguard Worker 
28*f80ad8b4SAndroid Build Coastguard Worker #include <linux/fb.h>
29*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h>
30*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
31*f80ad8b4SAndroid Build Coastguard Worker 
32*f80ad8b4SAndroid Build Coastguard Worker /* IOCTL commands. */
33*f80ad8b4SAndroid Build Coastguard Worker 
34*f80ad8b4SAndroid Build Coastguard Worker #define OMAP_IOW(num, dtype)	_IOW('O', num, dtype)
35*f80ad8b4SAndroid Build Coastguard Worker #define OMAP_IOR(num, dtype)	_IOR('O', num, dtype)
36*f80ad8b4SAndroid Build Coastguard Worker #define OMAP_IOWR(num, dtype)	_IOWR('O', num, dtype)
37*f80ad8b4SAndroid Build Coastguard Worker #define OMAP_IO(num)		_IO('O', num)
38*f80ad8b4SAndroid Build Coastguard Worker 
39*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MIRROR		OMAP_IOW(31, int)
40*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_SYNC_GFX		OMAP_IO(37)
41*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_VSYNC		OMAP_IO(38)
42*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_SET_UPDATE_MODE	OMAP_IOW(40, int)
43*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_GET_CAPS		OMAP_IOR(42, struct omapfb_caps)
44*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_GET_UPDATE_MODE	OMAP_IOW(43, int)
45*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_LCD_TEST		OMAP_IOW(45, int)
46*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CTRL_TEST	OMAP_IOW(46, int)
47*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_UPDATE_WINDOW_OLD OMAP_IOW(47, struct omapfb_update_window_old)
48*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_SET_COLOR_KEY	OMAP_IOW(50, struct omapfb_color_key)
49*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_GET_COLOR_KEY	OMAP_IOW(51, struct omapfb_color_key)
50*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_SETUP_PLANE	OMAP_IOW(52, struct omapfb_plane_info)
51*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_QUERY_PLANE	OMAP_IOW(53, struct omapfb_plane_info)
52*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_UPDATE_WINDOW	OMAP_IOW(54, struct omapfb_update_window)
53*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_SETUP_MEM	OMAP_IOW(55, struct omapfb_mem_info)
54*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_QUERY_MEM	OMAP_IOW(56, struct omapfb_mem_info)
55*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_WAITFORVSYNC	OMAP_IO(57)
56*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MEMORY_READ	OMAP_IOR(58, struct omapfb_memory_read)
57*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_GET_OVERLAY_COLORMODE OMAP_IOR(59, struct omapfb_ovl_colormode)
58*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_WAITFORGO	OMAP_IO(60)
59*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_GET_VRAM_INFO	OMAP_IOR(61, struct omapfb_vram_info)
60*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_SET_TEARSYNC	OMAP_IOW(62, struct omapfb_tearsync_info)
61*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_GET_DISPLAY_INFO	OMAP_IOR(63, struct omapfb_display_info)
62*f80ad8b4SAndroid Build Coastguard Worker 
63*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_GENERIC_MASK	0x00000fff
64*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_LCDC_MASK		0x00fff000
65*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_PANEL_MASK		0xff000000
66*f80ad8b4SAndroid Build Coastguard Worker 
67*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_MANUAL_UPDATE	0x00001000
68*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_TEARSYNC		0x00002000
69*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_PLANE_RELOCATE_MEM	0x00004000
70*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_PLANE_SCALE		0x00008000
71*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_WINDOW_PIXEL_DOUBLE	0x00010000
72*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_WINDOW_SCALE	0x00020000
73*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_WINDOW_OVERLAY	0x00040000
74*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_WINDOW_ROTATE	0x00080000
75*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_CAPS_SET_BACKLIGHT	0x01000000
76*f80ad8b4SAndroid Build Coastguard Worker 
77*f80ad8b4SAndroid Build Coastguard Worker /* Values from DSP must map to lower 16-bits */
78*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_FORMAT_MASK		0x00ff
79*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_FORMAT_FLAG_DOUBLE	0x0100
80*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_FORMAT_FLAG_TEARSYNC	0x0200
81*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_FORMAT_FLAG_FORCE_VSYNC	0x0400
82*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_FORMAT_FLAG_ENABLE_OVERLAY	0x0800
83*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_FORMAT_FLAG_DISABLE_OVERLAY	0x1000
84*f80ad8b4SAndroid Build Coastguard Worker 
85*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MEMTYPE_SDRAM		0
86*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MEMTYPE_SRAM		1
87*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MEMTYPE_MAX		1
88*f80ad8b4SAndroid Build Coastguard Worker 
89*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MEM_IDX_ENABLED	0x80
90*f80ad8b4SAndroid Build Coastguard Worker #define OMAPFB_MEM_IDX_MASK	0x7f
91*f80ad8b4SAndroid Build Coastguard Worker 
92*f80ad8b4SAndroid Build Coastguard Worker enum omapfb_color_format {
93*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_RGB565 = 0,
94*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_YUV422,
95*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_YUV420,
96*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_CLUT_8BPP,
97*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_CLUT_4BPP,
98*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_CLUT_2BPP,
99*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_CLUT_1BPP,
100*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_RGB444,
101*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_YUY422,
102*f80ad8b4SAndroid Build Coastguard Worker 
103*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_ARGB16,
104*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_RGB24U,	/* RGB24, 32-bit container */
105*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_RGB24P,	/* RGB24, 24-bit container */
106*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_ARGB32,
107*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_RGBA32,
108*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_RGBX32,
109*f80ad8b4SAndroid Build Coastguard Worker };
110*f80ad8b4SAndroid Build Coastguard Worker 
111*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_update_window {
112*f80ad8b4SAndroid Build Coastguard Worker 	__u32 x, y;
113*f80ad8b4SAndroid Build Coastguard Worker 	__u32 width, height;
114*f80ad8b4SAndroid Build Coastguard Worker 	__u32 format;
115*f80ad8b4SAndroid Build Coastguard Worker 	__u32 out_x, out_y;
116*f80ad8b4SAndroid Build Coastguard Worker 	__u32 out_width, out_height;
117*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[8];
118*f80ad8b4SAndroid Build Coastguard Worker };
119*f80ad8b4SAndroid Build Coastguard Worker 
120*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_update_window_old {
121*f80ad8b4SAndroid Build Coastguard Worker 	__u32 x, y;
122*f80ad8b4SAndroid Build Coastguard Worker 	__u32 width, height;
123*f80ad8b4SAndroid Build Coastguard Worker 	__u32 format;
124*f80ad8b4SAndroid Build Coastguard Worker };
125*f80ad8b4SAndroid Build Coastguard Worker 
126*f80ad8b4SAndroid Build Coastguard Worker enum omapfb_plane {
127*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_PLANE_GFX = 0,
128*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_PLANE_VID1,
129*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_PLANE_VID2,
130*f80ad8b4SAndroid Build Coastguard Worker };
131*f80ad8b4SAndroid Build Coastguard Worker 
132*f80ad8b4SAndroid Build Coastguard Worker enum omapfb_channel_out {
133*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_CHANNEL_OUT_LCD = 0,
134*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_CHANNEL_OUT_DIGIT,
135*f80ad8b4SAndroid Build Coastguard Worker };
136*f80ad8b4SAndroid Build Coastguard Worker 
137*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_plane_info {
138*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pos_x;
139*f80ad8b4SAndroid Build Coastguard Worker 	__u32 pos_y;
140*f80ad8b4SAndroid Build Coastguard Worker 	__u8  enabled;
141*f80ad8b4SAndroid Build Coastguard Worker 	__u8  channel_out;
142*f80ad8b4SAndroid Build Coastguard Worker 	__u8  mirror;
143*f80ad8b4SAndroid Build Coastguard Worker 	__u8  mem_idx;
144*f80ad8b4SAndroid Build Coastguard Worker 	__u32 out_width;
145*f80ad8b4SAndroid Build Coastguard Worker 	__u32 out_height;
146*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved2[12];
147*f80ad8b4SAndroid Build Coastguard Worker };
148*f80ad8b4SAndroid Build Coastguard Worker 
149*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_mem_info {
150*f80ad8b4SAndroid Build Coastguard Worker 	__u32 size;
151*f80ad8b4SAndroid Build Coastguard Worker 	__u8  type;
152*f80ad8b4SAndroid Build Coastguard Worker 	__u8  reserved[3];
153*f80ad8b4SAndroid Build Coastguard Worker };
154*f80ad8b4SAndroid Build Coastguard Worker 
155*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_caps {
156*f80ad8b4SAndroid Build Coastguard Worker 	__u32 ctrl;
157*f80ad8b4SAndroid Build Coastguard Worker 	__u32 plane_color;
158*f80ad8b4SAndroid Build Coastguard Worker 	__u32 wnd_color;
159*f80ad8b4SAndroid Build Coastguard Worker };
160*f80ad8b4SAndroid Build Coastguard Worker 
161*f80ad8b4SAndroid Build Coastguard Worker enum omapfb_color_key_type {
162*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_KEY_DISABLED = 0,
163*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_KEY_GFX_DST,
164*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_COLOR_KEY_VID_SRC,
165*f80ad8b4SAndroid Build Coastguard Worker };
166*f80ad8b4SAndroid Build Coastguard Worker 
167*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_color_key {
168*f80ad8b4SAndroid Build Coastguard Worker 	__u8  channel_out;
169*f80ad8b4SAndroid Build Coastguard Worker 	__u32 background;
170*f80ad8b4SAndroid Build Coastguard Worker 	__u32 trans_key;
171*f80ad8b4SAndroid Build Coastguard Worker 	__u8  key_type;
172*f80ad8b4SAndroid Build Coastguard Worker };
173*f80ad8b4SAndroid Build Coastguard Worker 
174*f80ad8b4SAndroid Build Coastguard Worker enum omapfb_update_mode {
175*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_UPDATE_DISABLED = 0,
176*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_AUTO_UPDATE,
177*f80ad8b4SAndroid Build Coastguard Worker 	OMAPFB_MANUAL_UPDATE
178*f80ad8b4SAndroid Build Coastguard Worker };
179*f80ad8b4SAndroid Build Coastguard Worker 
180*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_memory_read {
181*f80ad8b4SAndroid Build Coastguard Worker 	__u16 x;
182*f80ad8b4SAndroid Build Coastguard Worker 	__u16 y;
183*f80ad8b4SAndroid Build Coastguard Worker 	__u16 w;
184*f80ad8b4SAndroid Build Coastguard Worker 	__u16 h;
185*f80ad8b4SAndroid Build Coastguard Worker 	size_t buffer_size;
186*f80ad8b4SAndroid Build Coastguard Worker 	void __user *buffer;
187*f80ad8b4SAndroid Build Coastguard Worker };
188*f80ad8b4SAndroid Build Coastguard Worker 
189*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_ovl_colormode {
190*f80ad8b4SAndroid Build Coastguard Worker 	__u8 overlay_idx;
191*f80ad8b4SAndroid Build Coastguard Worker 	__u8 mode_idx;
192*f80ad8b4SAndroid Build Coastguard Worker 	__u32 bits_per_pixel;
193*f80ad8b4SAndroid Build Coastguard Worker 	__u32 nonstd;
194*f80ad8b4SAndroid Build Coastguard Worker 	struct fb_bitfield red;
195*f80ad8b4SAndroid Build Coastguard Worker 	struct fb_bitfield green;
196*f80ad8b4SAndroid Build Coastguard Worker 	struct fb_bitfield blue;
197*f80ad8b4SAndroid Build Coastguard Worker 	struct fb_bitfield transp;
198*f80ad8b4SAndroid Build Coastguard Worker };
199*f80ad8b4SAndroid Build Coastguard Worker 
200*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_vram_info {
201*f80ad8b4SAndroid Build Coastguard Worker 	__u32 total;
202*f80ad8b4SAndroid Build Coastguard Worker 	__u32 free;
203*f80ad8b4SAndroid Build Coastguard Worker 	__u32 largest_free_block;
204*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[5];
205*f80ad8b4SAndroid Build Coastguard Worker };
206*f80ad8b4SAndroid Build Coastguard Worker 
207*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_tearsync_info {
208*f80ad8b4SAndroid Build Coastguard Worker 	__u8 enabled;
209*f80ad8b4SAndroid Build Coastguard Worker 	__u8 reserved1[3];
210*f80ad8b4SAndroid Build Coastguard Worker 	__u16 line;
211*f80ad8b4SAndroid Build Coastguard Worker 	__u16 reserved2;
212*f80ad8b4SAndroid Build Coastguard Worker };
213*f80ad8b4SAndroid Build Coastguard Worker 
214*f80ad8b4SAndroid Build Coastguard Worker struct omapfb_display_info {
215*f80ad8b4SAndroid Build Coastguard Worker 	__u16 xres;
216*f80ad8b4SAndroid Build Coastguard Worker 	__u16 yres;
217*f80ad8b4SAndroid Build Coastguard Worker 	__u32 width;	/* phys width of the display in micrometers */
218*f80ad8b4SAndroid Build Coastguard Worker 	__u32 height;	/* phys height of the display in micrometers */
219*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[5];
220*f80ad8b4SAndroid Build Coastguard Worker };
221*f80ad8b4SAndroid Build Coastguard Worker 
222*f80ad8b4SAndroid Build Coastguard Worker 
223*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI__LINUX_OMAPFB_H__ */
224