| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 1 | /* | 
 | 2 |  * File: include/linux/omapfb.h | 
 | 3 |  * | 
 | 4 |  * Framebuffer driver for TI OMAP boards | 
 | 5 |  * | 
 | 6 |  * Copyright (C) 2004 Nokia Corporation | 
 | 7 |  * Author: Imre Deak <imre.deak@nokia.com> | 
 | 8 |  * | 
 | 9 |  * This program is free software; you can redistribute it and/or modify it | 
 | 10 |  * under the terms of the GNU General Public License as published by the | 
 | 11 |  * Free Software Foundation; either version 2 of the License, or (at your | 
 | 12 |  * option) any later version. | 
 | 13 |  * | 
 | 14 |  * This program is distributed in the hope that it will be useful, but | 
 | 15 |  * WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | 16 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 | 17 |  * General Public License for more details. | 
 | 18 |  * | 
 | 19 |  * You should have received a copy of the GNU General Public License along | 
 | 20 |  * with this program; if not, write to the Free Software Foundation, Inc., | 
 | 21 |  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | 
 | 22 |  */ | 
 | 23 |  | 
 | 24 | #ifndef __LINUX_OMAPFB_H__ | 
 | 25 | #define __LINUX_OMAPFB_H__ | 
 | 26 |  | 
| Tomi Valkeinen | b39a982d | 2009-08-04 16:12:50 +0300 | [diff] [blame] | 27 | #include <linux/fb.h> | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 28 | #include <linux/ioctl.h> | 
 | 29 | #include <linux/types.h> | 
 | 30 |  | 
 | 31 | /* IOCTL commands. */ | 
 | 32 |  | 
 | 33 | #define OMAP_IOW(num, dtype)	_IOW('O', num, dtype) | 
 | 34 | #define OMAP_IOR(num, dtype)	_IOR('O', num, dtype) | 
 | 35 | #define OMAP_IOWR(num, dtype)	_IOWR('O', num, dtype) | 
 | 36 | #define OMAP_IO(num)		_IO('O', num) | 
 | 37 |  | 
 | 38 | #define OMAPFB_MIRROR		OMAP_IOW(31, int) | 
 | 39 | #define OMAPFB_SYNC_GFX		OMAP_IO(37) | 
 | 40 | #define OMAPFB_VSYNC		OMAP_IO(38) | 
 | 41 | #define OMAPFB_SET_UPDATE_MODE	OMAP_IOW(40, int) | 
 | 42 | #define OMAPFB_GET_CAPS		OMAP_IOR(42, struct omapfb_caps) | 
 | 43 | #define OMAPFB_GET_UPDATE_MODE	OMAP_IOW(43, int) | 
 | 44 | #define OMAPFB_LCD_TEST		OMAP_IOW(45, int) | 
 | 45 | #define OMAPFB_CTRL_TEST	OMAP_IOW(46, int) | 
 | 46 | #define OMAPFB_UPDATE_WINDOW_OLD OMAP_IOW(47, struct omapfb_update_window_old) | 
 | 47 | #define OMAPFB_SET_COLOR_KEY	OMAP_IOW(50, struct omapfb_color_key) | 
 | 48 | #define OMAPFB_GET_COLOR_KEY	OMAP_IOW(51, struct omapfb_color_key) | 
 | 49 | #define OMAPFB_SETUP_PLANE	OMAP_IOW(52, struct omapfb_plane_info) | 
 | 50 | #define OMAPFB_QUERY_PLANE	OMAP_IOW(53, struct omapfb_plane_info) | 
 | 51 | #define OMAPFB_UPDATE_WINDOW	OMAP_IOW(54, struct omapfb_update_window) | 
 | 52 | #define OMAPFB_SETUP_MEM	OMAP_IOW(55, struct omapfb_mem_info) | 
 | 53 | #define OMAPFB_QUERY_MEM	OMAP_IOW(56, struct omapfb_mem_info) | 
| Tomi Valkeinen | b39a982d | 2009-08-04 16:12:50 +0300 | [diff] [blame] | 54 | #define OMAPFB_WAITFORVSYNC	OMAP_IO(57) | 
 | 55 | #define OMAPFB_MEMORY_READ	OMAP_IOR(58, struct omapfb_memory_read) | 
 | 56 | #define OMAPFB_GET_OVERLAY_COLORMODE OMAP_IOR(59, struct omapfb_ovl_colormode) | 
 | 57 | #define OMAPFB_WAITFORGO	OMAP_IO(60) | 
 | 58 | #define OMAPFB_GET_VRAM_INFO	OMAP_IOR(61, struct omapfb_vram_info) | 
 | 59 | #define OMAPFB_SET_TEARSYNC	OMAP_IOW(62, struct omapfb_tearsync_info) | 
| Tomi Valkeinen | 6dd2e42 | 2010-01-14 17:32:13 +0200 | [diff] [blame] | 60 | #define OMAPFB_GET_DISPLAY_INFO	OMAP_IOR(63, struct omapfb_display_info) | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 61 |  | 
 | 62 | #define OMAPFB_CAPS_GENERIC_MASK	0x00000fff | 
 | 63 | #define OMAPFB_CAPS_LCDC_MASK		0x00fff000 | 
 | 64 | #define OMAPFB_CAPS_PANEL_MASK		0xff000000 | 
 | 65 |  | 
 | 66 | #define OMAPFB_CAPS_MANUAL_UPDATE	0x00001000 | 
 | 67 | #define OMAPFB_CAPS_TEARSYNC		0x00002000 | 
 | 68 | #define OMAPFB_CAPS_PLANE_RELOCATE_MEM	0x00004000 | 
 | 69 | #define OMAPFB_CAPS_PLANE_SCALE		0x00008000 | 
 | 70 | #define OMAPFB_CAPS_WINDOW_PIXEL_DOUBLE	0x00010000 | 
 | 71 | #define OMAPFB_CAPS_WINDOW_SCALE	0x00020000 | 
 | 72 | #define OMAPFB_CAPS_WINDOW_OVERLAY	0x00040000 | 
 | 73 | #define OMAPFB_CAPS_WINDOW_ROTATE	0x00080000 | 
 | 74 | #define OMAPFB_CAPS_SET_BACKLIGHT	0x01000000 | 
 | 75 |  | 
 | 76 | /* Values from DSP must map to lower 16-bits */ | 
 | 77 | #define OMAPFB_FORMAT_MASK		0x00ff | 
 | 78 | #define OMAPFB_FORMAT_FLAG_DOUBLE	0x0100 | 
 | 79 | #define OMAPFB_FORMAT_FLAG_TEARSYNC	0x0200 | 
 | 80 | #define OMAPFB_FORMAT_FLAG_FORCE_VSYNC	0x0400 | 
 | 81 | #define OMAPFB_FORMAT_FLAG_ENABLE_OVERLAY	0x0800 | 
 | 82 | #define OMAPFB_FORMAT_FLAG_DISABLE_OVERLAY	0x1000 | 
 | 83 |  | 
 | 84 | #define OMAPFB_MEMTYPE_SDRAM		0 | 
 | 85 | #define OMAPFB_MEMTYPE_SRAM		1 | 
 | 86 | #define OMAPFB_MEMTYPE_MAX		1 | 
 | 87 |  | 
| Ville Syrjälä | 078ff54 | 2010-03-17 20:36:51 +0200 | [diff] [blame] | 88 | #define OMAPFB_MEM_IDX_ENABLED	0x80 | 
 | 89 | #define OMAPFB_MEM_IDX_MASK	0x7f | 
 | 90 |  | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 91 | enum omapfb_color_format { | 
 | 92 | 	OMAPFB_COLOR_RGB565 = 0, | 
 | 93 | 	OMAPFB_COLOR_YUV422, | 
 | 94 | 	OMAPFB_COLOR_YUV420, | 
 | 95 | 	OMAPFB_COLOR_CLUT_8BPP, | 
 | 96 | 	OMAPFB_COLOR_CLUT_4BPP, | 
 | 97 | 	OMAPFB_COLOR_CLUT_2BPP, | 
 | 98 | 	OMAPFB_COLOR_CLUT_1BPP, | 
 | 99 | 	OMAPFB_COLOR_RGB444, | 
 | 100 | 	OMAPFB_COLOR_YUY422, | 
| Tomi Valkeinen | b39a982d | 2009-08-04 16:12:50 +0300 | [diff] [blame] | 101 |  | 
 | 102 | 	OMAPFB_COLOR_ARGB16, | 
 | 103 | 	OMAPFB_COLOR_RGB24U,	/* RGB24, 32-bit container */ | 
 | 104 | 	OMAPFB_COLOR_RGB24P,	/* RGB24, 24-bit container */ | 
 | 105 | 	OMAPFB_COLOR_ARGB32, | 
 | 106 | 	OMAPFB_COLOR_RGBA32, | 
 | 107 | 	OMAPFB_COLOR_RGBX32, | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 108 | }; | 
 | 109 |  | 
 | 110 | struct omapfb_update_window { | 
 | 111 | 	__u32 x, y; | 
 | 112 | 	__u32 width, height; | 
 | 113 | 	__u32 format; | 
 | 114 | 	__u32 out_x, out_y; | 
 | 115 | 	__u32 out_width, out_height; | 
 | 116 | 	__u32 reserved[8]; | 
 | 117 | }; | 
 | 118 |  | 
 | 119 | struct omapfb_update_window_old { | 
 | 120 | 	__u32 x, y; | 
 | 121 | 	__u32 width, height; | 
 | 122 | 	__u32 format; | 
 | 123 | }; | 
 | 124 |  | 
 | 125 | enum omapfb_plane { | 
 | 126 | 	OMAPFB_PLANE_GFX = 0, | 
 | 127 | 	OMAPFB_PLANE_VID1, | 
 | 128 | 	OMAPFB_PLANE_VID2, | 
 | 129 | }; | 
 | 130 |  | 
 | 131 | enum omapfb_channel_out { | 
 | 132 | 	OMAPFB_CHANNEL_OUT_LCD = 0, | 
 | 133 | 	OMAPFB_CHANNEL_OUT_DIGIT, | 
 | 134 | }; | 
 | 135 |  | 
 | 136 | struct omapfb_plane_info { | 
 | 137 | 	__u32 pos_x; | 
 | 138 | 	__u32 pos_y; | 
 | 139 | 	__u8  enabled; | 
 | 140 | 	__u8  channel_out; | 
 | 141 | 	__u8  mirror; | 
| Ville Syrjälä | 078ff54 | 2010-03-17 20:36:51 +0200 | [diff] [blame] | 142 | 	__u8  mem_idx; | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 143 | 	__u32 out_width; | 
 | 144 | 	__u32 out_height; | 
 | 145 | 	__u32 reserved2[12]; | 
 | 146 | }; | 
 | 147 |  | 
 | 148 | struct omapfb_mem_info { | 
 | 149 | 	__u32 size; | 
 | 150 | 	__u8  type; | 
 | 151 | 	__u8  reserved[3]; | 
 | 152 | }; | 
 | 153 |  | 
 | 154 | struct omapfb_caps { | 
 | 155 | 	__u32 ctrl; | 
 | 156 | 	__u32 plane_color; | 
 | 157 | 	__u32 wnd_color; | 
 | 158 | }; | 
 | 159 |  | 
 | 160 | enum omapfb_color_key_type { | 
 | 161 | 	OMAPFB_COLOR_KEY_DISABLED = 0, | 
 | 162 | 	OMAPFB_COLOR_KEY_GFX_DST, | 
 | 163 | 	OMAPFB_COLOR_KEY_VID_SRC, | 
 | 164 | }; | 
 | 165 |  | 
 | 166 | struct omapfb_color_key { | 
 | 167 | 	__u8  channel_out; | 
 | 168 | 	__u32 background; | 
 | 169 | 	__u32 trans_key; | 
 | 170 | 	__u8  key_type; | 
 | 171 | }; | 
 | 172 |  | 
 | 173 | enum omapfb_update_mode { | 
 | 174 | 	OMAPFB_UPDATE_DISABLED = 0, | 
 | 175 | 	OMAPFB_AUTO_UPDATE, | 
 | 176 | 	OMAPFB_MANUAL_UPDATE | 
 | 177 | }; | 
 | 178 |  | 
| Tomi Valkeinen | b39a982d | 2009-08-04 16:12:50 +0300 | [diff] [blame] | 179 | struct omapfb_memory_read { | 
 | 180 | 	__u16 x; | 
 | 181 | 	__u16 y; | 
 | 182 | 	__u16 w; | 
 | 183 | 	__u16 h; | 
 | 184 | 	size_t buffer_size; | 
 | 185 | 	void __user *buffer; | 
 | 186 | }; | 
 | 187 |  | 
 | 188 | struct omapfb_ovl_colormode { | 
 | 189 | 	__u8 overlay_idx; | 
 | 190 | 	__u8 mode_idx; | 
 | 191 | 	__u32 bits_per_pixel; | 
 | 192 | 	__u32 nonstd; | 
 | 193 | 	struct fb_bitfield red; | 
 | 194 | 	struct fb_bitfield green; | 
 | 195 | 	struct fb_bitfield blue; | 
 | 196 | 	struct fb_bitfield transp; | 
 | 197 | }; | 
 | 198 |  | 
 | 199 | struct omapfb_vram_info { | 
 | 200 | 	__u32 total; | 
 | 201 | 	__u32 free; | 
 | 202 | 	__u32 largest_free_block; | 
 | 203 | 	__u32 reserved[5]; | 
 | 204 | }; | 
 | 205 |  | 
 | 206 | struct omapfb_tearsync_info { | 
 | 207 | 	__u8 enabled; | 
 | 208 | 	__u8 reserved1[3]; | 
 | 209 | 	__u16 line; | 
 | 210 | 	__u16 reserved2; | 
 | 211 | }; | 
 | 212 |  | 
| Tomi Valkeinen | 6dd2e42 | 2010-01-14 17:32:13 +0200 | [diff] [blame] | 213 | struct omapfb_display_info { | 
 | 214 | 	__u16 xres; | 
 | 215 | 	__u16 yres; | 
 | 216 | 	__u32 width;	/* phys width of the display in micrometers */ | 
 | 217 | 	__u32 height;	/* phys height of the display in micrometers */ | 
 | 218 | 	__u32 reserved[5]; | 
 | 219 | }; | 
 | 220 |  | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 221 | #ifdef __KERNEL__ | 
 | 222 |  | 
 | 223 | #include <plat/board.h> | 
 | 224 |  | 
 | 225 | #ifdef CONFIG_ARCH_OMAP1 | 
 | 226 | #define OMAPFB_PLANE_NUM		1 | 
 | 227 | #else | 
 | 228 | #define OMAPFB_PLANE_NUM		3 | 
 | 229 | #endif | 
 | 230 |  | 
 | 231 | struct omapfb_mem_region { | 
 | 232 | 	u32		paddr; | 
 | 233 | 	void __iomem	*vaddr; | 
 | 234 | 	unsigned long	size; | 
 | 235 | 	u8		type;		/* OMAPFB_PLANE_MEM_* */ | 
| Tomi Valkeinen | b39a982d | 2009-08-04 16:12:50 +0300 | [diff] [blame] | 236 | 	enum omapfb_color_format format;/* OMAPFB_COLOR_* */ | 
 | 237 | 	unsigned	format_used:1;	/* Must be set when format is set. | 
 | 238 | 					 * Needed b/c of the badly chosen 0 | 
 | 239 | 					 * base for OMAPFB_COLOR_* values | 
 | 240 | 					 */ | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 241 | 	unsigned	alloc:1;	/* allocated by the driver */ | 
 | 242 | 	unsigned	map:1;		/* kernel mapped by the driver */ | 
 | 243 | }; | 
 | 244 |  | 
 | 245 | struct omapfb_mem_desc { | 
 | 246 | 	int				region_cnt; | 
 | 247 | 	struct omapfb_mem_region	region[OMAPFB_PLANE_NUM]; | 
 | 248 | }; | 
 | 249 |  | 
 | 250 | struct omapfb_platform_data { | 
 | 251 | 	struct omap_lcd_config		lcd; | 
 | 252 | 	struct omapfb_mem_desc		mem_desc; | 
 | 253 | 	void				*ctrl_platform_data; | 
 | 254 | }; | 
 | 255 |  | 
 | 256 | /* in arch/arm/plat-omap/fb.c */ | 
| Tomi Valkeinen | b39a982d | 2009-08-04 16:12:50 +0300 | [diff] [blame] | 257 | extern void omapfb_set_platform_data(struct omapfb_platform_data *data); | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 258 | extern void omapfb_set_ctrl_platform_data(void *pdata); | 
| Russell King | 98864ff | 2010-05-22 23:59:11 +0100 | [diff] [blame] | 259 | extern void omapfb_reserve_sdram_memblock(void); | 
| Tomi Valkeinen | 91773a0 | 2009-08-03 15:06:36 +0300 | [diff] [blame] | 260 |  | 
 | 261 | #endif | 
 | 262 |  | 
 | 263 | #endif /* __OMAPFB_H */ |