mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-22 17:01:14 +00:00
![Tomi Valkeinen](/assets/img/avatar_default.png)
Previously the only place to get the size of the display was from the DSS's sysfs interface, making, for example, configuring overlays and doing updates on manual displays more difficult. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
260 lines
6.6 KiB
C
260 lines
6.6 KiB
C
/*
|
|
* File: include/linux/omapfb.h
|
|
*
|
|
* Framebuffer driver for TI OMAP boards
|
|
*
|
|
* Copyright (C) 2004 Nokia Corporation
|
|
* Author: Imre Deak <imre.deak@nokia.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef __LINUX_OMAPFB_H__
|
|
#define __LINUX_OMAPFB_H__
|
|
|
|
#include <linux/fb.h>
|
|
#include <linux/ioctl.h>
|
|
#include <linux/types.h>
|
|
|
|
/* IOCTL commands. */
|
|
|
|
#define OMAP_IOW(num, dtype) _IOW('O', num, dtype)
|
|
#define OMAP_IOR(num, dtype) _IOR('O', num, dtype)
|
|
#define OMAP_IOWR(num, dtype) _IOWR('O', num, dtype)
|
|
#define OMAP_IO(num) _IO('O', num)
|
|
|
|
#define OMAPFB_MIRROR OMAP_IOW(31, int)
|
|
#define OMAPFB_SYNC_GFX OMAP_IO(37)
|
|
#define OMAPFB_VSYNC OMAP_IO(38)
|
|
#define OMAPFB_SET_UPDATE_MODE OMAP_IOW(40, int)
|
|
#define OMAPFB_GET_CAPS OMAP_IOR(42, struct omapfb_caps)
|
|
#define OMAPFB_GET_UPDATE_MODE OMAP_IOW(43, int)
|
|
#define OMAPFB_LCD_TEST OMAP_IOW(45, int)
|
|
#define OMAPFB_CTRL_TEST OMAP_IOW(46, int)
|
|
#define OMAPFB_UPDATE_WINDOW_OLD OMAP_IOW(47, struct omapfb_update_window_old)
|
|
#define OMAPFB_SET_COLOR_KEY OMAP_IOW(50, struct omapfb_color_key)
|
|
#define OMAPFB_GET_COLOR_KEY OMAP_IOW(51, struct omapfb_color_key)
|
|
#define OMAPFB_SETUP_PLANE OMAP_IOW(52, struct omapfb_plane_info)
|
|
#define OMAPFB_QUERY_PLANE OMAP_IOW(53, struct omapfb_plane_info)
|
|
#define OMAPFB_UPDATE_WINDOW OMAP_IOW(54, struct omapfb_update_window)
|
|
#define OMAPFB_SETUP_MEM OMAP_IOW(55, struct omapfb_mem_info)
|
|
#define OMAPFB_QUERY_MEM OMAP_IOW(56, struct omapfb_mem_info)
|
|
#define OMAPFB_WAITFORVSYNC OMAP_IO(57)
|
|
#define OMAPFB_MEMORY_READ OMAP_IOR(58, struct omapfb_memory_read)
|
|
#define OMAPFB_GET_OVERLAY_COLORMODE OMAP_IOR(59, struct omapfb_ovl_colormode)
|
|
#define OMAPFB_WAITFORGO OMAP_IO(60)
|
|
#define OMAPFB_GET_VRAM_INFO OMAP_IOR(61, struct omapfb_vram_info)
|
|
#define OMAPFB_SET_TEARSYNC OMAP_IOW(62, struct omapfb_tearsync_info)
|
|
#define OMAPFB_GET_DISPLAY_INFO OMAP_IOR(63, struct omapfb_display_info)
|
|
|
|
#define OMAPFB_CAPS_GENERIC_MASK 0x00000fff
|
|
#define OMAPFB_CAPS_LCDC_MASK 0x00fff000
|
|
#define OMAPFB_CAPS_PANEL_MASK 0xff000000
|
|
|
|
#define OMAPFB_CAPS_MANUAL_UPDATE 0x00001000
|
|
#define OMAPFB_CAPS_TEARSYNC 0x00002000
|
|
#define OMAPFB_CAPS_PLANE_RELOCATE_MEM 0x00004000
|
|
#define OMAPFB_CAPS_PLANE_SCALE 0x00008000
|
|
#define OMAPFB_CAPS_WINDOW_PIXEL_DOUBLE 0x00010000
|
|
#define OMAPFB_CAPS_WINDOW_SCALE 0x00020000
|
|
#define OMAPFB_CAPS_WINDOW_OVERLAY 0x00040000
|
|
#define OMAPFB_CAPS_WINDOW_ROTATE 0x00080000
|
|
#define OMAPFB_CAPS_SET_BACKLIGHT 0x01000000
|
|
|
|
/* Values from DSP must map to lower 16-bits */
|
|
#define OMAPFB_FORMAT_MASK 0x00ff
|
|
#define OMAPFB_FORMAT_FLAG_DOUBLE 0x0100
|
|
#define OMAPFB_FORMAT_FLAG_TEARSYNC 0x0200
|
|
#define OMAPFB_FORMAT_FLAG_FORCE_VSYNC 0x0400
|
|
#define OMAPFB_FORMAT_FLAG_ENABLE_OVERLAY 0x0800
|
|
#define OMAPFB_FORMAT_FLAG_DISABLE_OVERLAY 0x1000
|
|
|
|
#define OMAPFB_MEMTYPE_SDRAM 0
|
|
#define OMAPFB_MEMTYPE_SRAM 1
|
|
#define OMAPFB_MEMTYPE_MAX 1
|
|
|
|
enum omapfb_color_format {
|
|
OMAPFB_COLOR_RGB565 = 0,
|
|
OMAPFB_COLOR_YUV422,
|
|
OMAPFB_COLOR_YUV420,
|
|
OMAPFB_COLOR_CLUT_8BPP,
|
|
OMAPFB_COLOR_CLUT_4BPP,
|
|
OMAPFB_COLOR_CLUT_2BPP,
|
|
OMAPFB_COLOR_CLUT_1BPP,
|
|
OMAPFB_COLOR_RGB444,
|
|
OMAPFB_COLOR_YUY422,
|
|
|
|
OMAPFB_COLOR_ARGB16,
|
|
OMAPFB_COLOR_RGB24U, /* RGB24, 32-bit container */
|
|
OMAPFB_COLOR_RGB24P, /* RGB24, 24-bit container */
|
|
OMAPFB_COLOR_ARGB32,
|
|
OMAPFB_COLOR_RGBA32,
|
|
OMAPFB_COLOR_RGBX32,
|
|
};
|
|
|
|
struct omapfb_update_window {
|
|
__u32 x, y;
|
|
__u32 width, height;
|
|
__u32 format;
|
|
__u32 out_x, out_y;
|
|
__u32 out_width, out_height;
|
|
__u32 reserved[8];
|
|
};
|
|
|
|
struct omapfb_update_window_old {
|
|
__u32 x, y;
|
|
__u32 width, height;
|
|
__u32 format;
|
|
};
|
|
|
|
enum omapfb_plane {
|
|
OMAPFB_PLANE_GFX = 0,
|
|
OMAPFB_PLANE_VID1,
|
|
OMAPFB_PLANE_VID2,
|
|
};
|
|
|
|
enum omapfb_channel_out {
|
|
OMAPFB_CHANNEL_OUT_LCD = 0,
|
|
OMAPFB_CHANNEL_OUT_DIGIT,
|
|
};
|
|
|
|
struct omapfb_plane_info {
|
|
__u32 pos_x;
|
|
__u32 pos_y;
|
|
__u8 enabled;
|
|
__u8 channel_out;
|
|
__u8 mirror;
|
|
__u8 reserved1;
|
|
__u32 out_width;
|
|
__u32 out_height;
|
|
__u32 reserved2[12];
|
|
};
|
|
|
|
struct omapfb_mem_info {
|
|
__u32 size;
|
|
__u8 type;
|
|
__u8 reserved[3];
|
|
};
|
|
|
|
struct omapfb_caps {
|
|
__u32 ctrl;
|
|
__u32 plane_color;
|
|
__u32 wnd_color;
|
|
};
|
|
|
|
enum omapfb_color_key_type {
|
|
OMAPFB_COLOR_KEY_DISABLED = 0,
|
|
OMAPFB_COLOR_KEY_GFX_DST,
|
|
OMAPFB_COLOR_KEY_VID_SRC,
|
|
};
|
|
|
|
struct omapfb_color_key {
|
|
__u8 channel_out;
|
|
__u32 background;
|
|
__u32 trans_key;
|
|
__u8 key_type;
|
|
};
|
|
|
|
enum omapfb_update_mode {
|
|
OMAPFB_UPDATE_DISABLED = 0,
|
|
OMAPFB_AUTO_UPDATE,
|
|
OMAPFB_MANUAL_UPDATE
|
|
};
|
|
|
|
struct omapfb_memory_read {
|
|
__u16 x;
|
|
__u16 y;
|
|
__u16 w;
|
|
__u16 h;
|
|
size_t buffer_size;
|
|
void __user *buffer;
|
|
};
|
|
|
|
struct omapfb_ovl_colormode {
|
|
__u8 overlay_idx;
|
|
__u8 mode_idx;
|
|
__u32 bits_per_pixel;
|
|
__u32 nonstd;
|
|
struct fb_bitfield red;
|
|
struct fb_bitfield green;
|
|
struct fb_bitfield blue;
|
|
struct fb_bitfield transp;
|
|
};
|
|
|
|
struct omapfb_vram_info {
|
|
__u32 total;
|
|
__u32 free;
|
|
__u32 largest_free_block;
|
|
__u32 reserved[5];
|
|
};
|
|
|
|
struct omapfb_tearsync_info {
|
|
__u8 enabled;
|
|
__u8 reserved1[3];
|
|
__u16 line;
|
|
__u16 reserved2;
|
|
};
|
|
|
|
struct omapfb_display_info {
|
|
__u16 xres;
|
|
__u16 yres;
|
|
__u32 width; /* phys width of the display in micrometers */
|
|
__u32 height; /* phys height of the display in micrometers */
|
|
__u32 reserved[5];
|
|
};
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#include <plat/board.h>
|
|
|
|
#ifdef CONFIG_ARCH_OMAP1
|
|
#define OMAPFB_PLANE_NUM 1
|
|
#else
|
|
#define OMAPFB_PLANE_NUM 3
|
|
#endif
|
|
|
|
struct omapfb_mem_region {
|
|
u32 paddr;
|
|
void __iomem *vaddr;
|
|
unsigned long size;
|
|
u8 type; /* OMAPFB_PLANE_MEM_* */
|
|
enum omapfb_color_format format;/* OMAPFB_COLOR_* */
|
|
unsigned format_used:1; /* Must be set when format is set.
|
|
* Needed b/c of the badly chosen 0
|
|
* base for OMAPFB_COLOR_* values
|
|
*/
|
|
unsigned alloc:1; /* allocated by the driver */
|
|
unsigned map:1; /* kernel mapped by the driver */
|
|
};
|
|
|
|
struct omapfb_mem_desc {
|
|
int region_cnt;
|
|
struct omapfb_mem_region region[OMAPFB_PLANE_NUM];
|
|
};
|
|
|
|
struct omapfb_platform_data {
|
|
struct omap_lcd_config lcd;
|
|
struct omapfb_mem_desc mem_desc;
|
|
void *ctrl_platform_data;
|
|
};
|
|
|
|
/* in arch/arm/plat-omap/fb.c */
|
|
extern void omapfb_set_platform_data(struct omapfb_platform_data *data);
|
|
extern void omapfb_set_ctrl_platform_data(void *pdata);
|
|
extern void omapfb_reserve_sdram(void);
|
|
|
|
#endif
|
|
|
|
#endif /* __OMAPFB_H */
|