| 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 */ |