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