Home | History | Annotate | Download | only in linux
      1 /* include/linux/s3c-fb.h
      2  *
      3  * Copyright 2008 Openmoko Inc.
      4  * Copyright 2008-2010 Simtec Electronics
      5  *      Ben Dooks <ben (at) simtec.co.uk>
      6  *      http://armlinux.simtec.co.uk/
      7  *
      8  * Samsung SoC Framebuffer driver
      9  *
     10  * This program is free software; you can redistribute it and/or modify
     11  * it under the terms of the GNU General Public License version 2 as
     12  * published by the Free Software FoundatIon.
     13 */
     14 
     15 #ifndef __S3C_FB_H__
     16 #define __S3C_FB_H__
     17 
     18 struct s3c_fb_user_window {
     19 	int x;
     20 	int y;
     21 };
     22 
     23 struct s3c_fb_user_plane_alpha {
     24 	int		channel;
     25 	unsigned char	red;
     26 	unsigned char	green;
     27 	unsigned char	blue;
     28 };
     29 
     30 struct s3c_fb_user_chroma {
     31 	int		enabled;
     32 	unsigned char	red;
     33 	unsigned char	green;
     34 	unsigned char	blue;
     35 };
     36 
     37 struct s3c_fb_user_ion_client {
     38 	int	fd;
     39 	int	offset;
     40 };
     41 
     42 enum s3c_fb_pixel_format {
     43 	S3C_FB_PIXEL_FORMAT_RGBA_8888 = 0,
     44 	S3C_FB_PIXEL_FORMAT_RGBX_8888 = 1,
     45 	S3C_FB_PIXEL_FORMAT_RGBA_5551 = 2,
     46 	S3C_FB_PIXEL_FORMAT_RGB_565 = 3,
     47 	S3C_FB_PIXEL_FORMAT_BGRA_8888 = 4,
     48 	S3C_FB_PIXEL_FORMAT_MAX = 5,
     49 };
     50 
     51 enum s3c_fb_blending {
     52 	S3C_FB_BLENDING_NONE = 0,
     53 	S3C_FB_BLENDING_PREMULT = 1,
     54 	S3C_FB_BLENDING_COVERAGE = 2,
     55 	S3C_FB_BLENDING_MAX = 3,
     56 };
     57 
     58 struct s3c_fb_win_config {
     59 	enum {
     60 		S3C_FB_WIN_STATE_DISABLED = 0,
     61 		S3C_FB_WIN_STATE_COLOR,
     62 		S3C_FB_WIN_STATE_BUFFER,
     63 	} state;
     64 
     65 	union {
     66 		__u32 color;
     67 		struct {
     68 			int				fd;
     69 			__u32				offset;
     70 			__u32				stride;
     71 			enum s3c_fb_pixel_format	format;
     72 			enum s3c_fb_blending		blending;
     73 			int				fence_fd;
     74 		};
     75 	};
     76 
     77 	int	x;
     78 	int	y;
     79 	__u32	w;
     80 	__u32	h;
     81 };
     82 
     83 /* S3C_FB_MAX_WIN
     84  * Set to the maximum number of windows that any of the supported hardware
     85  * can use. Since the platform data uses this for an array size, having it
     86  * set to the maximum of any version of the hardware can do is safe.
     87  */
     88 #define S3C_FB_MAX_WIN	(5)
     89 
     90 struct s3c_fb_win_config_data {
     91 	int	fence;
     92 	struct s3c_fb_win_config config[S3C_FB_MAX_WIN];
     93 };
     94 
     95 /* IOCTL commands */
     96 #define S3CFB_WIN_POSITION		_IOW('F', 203, \
     97 						struct s3c_fb_user_window)
     98 #define S3CFB_WIN_SET_PLANE_ALPHA	_IOW('F', 204, \
     99 						struct s3c_fb_user_plane_alpha)
    100 #define S3CFB_WIN_SET_CHROMA		_IOW('F', 205, \
    101 						struct s3c_fb_user_chroma)
    102 #define S3CFB_SET_VSYNC_INT		_IOW('F', 206, __u32)
    103 
    104 #define S3CFB_GET_ION_USER_HANDLE	_IOWR('F', 208, \
    105 						struct s3c_fb_user_ion_client)
    106 #define S3CFB_WIN_CONFIG		_IOW('F', 209, \
    107 						struct s3c_fb_win_config_data)
    108 
    109 #endif /* __S3C_FB_H__ */
    110