blob: 130bca3bc4daa856cfd0a832458aaac6688837b5 [file] [log] [blame]
/* include/linux/s3c-fb.h
*
* Copyright 2008 Openmoko Inc.
* Copyright 2008-2010 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
* http://armlinux.simtec.co.uk/
*
* Samsung SoC Framebuffer driver
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software FoundatIon.
*/
#ifndef __S3C_FB_H__
#define __S3C_FB_H__
struct s3c_fb_user_window {
int x;
int y;
};
struct s3c_fb_user_plane_alpha {
int channel;
unsigned char red;
unsigned char green;
unsigned char blue;
};
struct s3c_fb_user_chroma {
int enabled;
unsigned char red;
unsigned char green;
unsigned char blue;
};
struct s3c_fb_user_ion_client {
int fd;
int offset;
};
enum s3c_fb_pixel_format {
S3C_FB_PIXEL_FORMAT_RGBA_8888 = 0,
S3C_FB_PIXEL_FORMAT_RGBX_8888 = 1,
S3C_FB_PIXEL_FORMAT_RGBA_5551 = 2,
S3C_FB_PIXEL_FORMAT_RGB_565 = 3,
S3C_FB_PIXEL_FORMAT_BGRA_8888 = 4,
S3C_FB_PIXEL_FORMAT_MAX = 5,
};
enum s3c_fb_blending {
S3C_FB_BLENDING_NONE = 0,
S3C_FB_BLENDING_PREMULT = 1,
S3C_FB_BLENDING_COVERAGE = 2,
S3C_FB_BLENDING_MAX = 3,
};
struct s3c_fb_win_config {
enum {
S3C_FB_WIN_STATE_DISABLED = 0,
S3C_FB_WIN_STATE_COLOR,
S3C_FB_WIN_STATE_BUFFER,
} state;
union {
__u32 color;
struct {
int fd;
__u32 offset;
__u32 stride;
enum s3c_fb_pixel_format format;
enum s3c_fb_blending blending;
int fence_fd;
};
};
int x;
int y;
__u32 w;
__u32 h;
};
/* S3C_FB_MAX_WIN
* Set to the maximum number of windows that any of the supported hardware
* can use. Since the platform data uses this for an array size, having it
* set to the maximum of any version of the hardware can do is safe.
*/
#define S3C_FB_MAX_WIN (5)
struct s3c_fb_win_config_data {
int fence;
struct s3c_fb_win_config config[S3C_FB_MAX_WIN];
};
/* IOCTL commands */
#define S3CFB_WIN_POSITION _IOW('F', 203, \
struct s3c_fb_user_window)
#define S3CFB_WIN_SET_PLANE_ALPHA _IOW('F', 204, \
struct s3c_fb_user_plane_alpha)
#define S3CFB_WIN_SET_CHROMA _IOW('F', 205, \
struct s3c_fb_user_chroma)
#define S3CFB_SET_VSYNC_INT _IOW('F', 206, __u32)
#define S3CFB_GET_ION_USER_HANDLE _IOWR('F', 208, \
struct s3c_fb_user_ion_client)
#define S3CFB_WIN_CONFIG _IOW('F', 209, \
struct s3c_fb_win_config_data)
#endif /* __S3C_FB_H__ */