diff options
author | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
commit | 871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch) | |
tree | 8718f573808810c2a1e8cb8fb6ac469093ca2784 /drivers/video/wmt/com-vpp.h | |
parent | 9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff) | |
download | FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2 FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip |
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized.
Changes are basically to make it look like kernel structure.
Diffstat (limited to 'drivers/video/wmt/com-vpp.h')
-rwxr-xr-x | drivers/video/wmt/com-vpp.h | 455 |
1 files changed, 455 insertions, 0 deletions
diff --git a/drivers/video/wmt/com-vpp.h b/drivers/video/wmt/com-vpp.h new file mode 100755 index 00000000..4076c4ae --- /dev/null +++ b/drivers/video/wmt/com-vpp.h @@ -0,0 +1,455 @@ +/*++ + * linux/drivers/video/wmt/com-vpp.h + * WonderMedia video post processor (VPP) driver + * + * Copyright c 2014 WonderMedia Technologies, Inc. + * + * 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, see <http://www.gnu.org/licenses/>. + * + * WonderMedia Technologies, Inc. + * 4F, 533, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C +--*/ + +#ifndef COM_VPP_H +#define COM_VPP_H + +#ifdef __KERNEL__ +#include <linux/types.h> +#include <linux/fb.h> +#include <asm/io.h> +#include <mach/common_def.h> +#include <mach/com-video.h> +#else +#include "com-video.h" +#ifdef CFG_LOADER +#include "com-fb.h" +#endif +#endif + +#define VPP_NEW_FBUF_MANAGER + +#define VPP_AHB_CLK 250000000 + +#ifdef CONFIG_MAX_RESX + #define VPP_HD_MAX_RESX CONFIG_MAX_RESX +#else + #define VPP_HD_MAX_RESX 1920 +#endif + +#ifdef CONFIG_MAX_RESY + #define VPP_HD_MAX_RESY CONFIG_MAX_RESY +#else + #define VPP_HD_MAX_RESY 1200 +#endif + +#ifdef CONFIG_DEFAULT_RESX + #define VPP_HD_DISP_RESX CONFIG_DEFAULT_RESX +#else + #define VPP_HD_DISP_RESX 1024 +#endif + +#ifdef CONFIG_DEFAULT_RESY + #define VPP_HD_DISP_RESY CONFIG_DEFAULT_RESY +#else + #define VPP_HD_DISP_RESY 768 +#endif + +#ifdef CONFIG_DEFAULT_FPS + #define VPP_HD_DISP_FPS CONFIG_DEFAULT_FPS +#else + #define VPP_HD_DISP_FPS 60 +#endif + +#define VPP_HD_DISP_PIXCLK 65000000 + +#define BIT0 0x00000001 +#define BIT1 0x00000002 +#define BIT2 0x00000004 +#define BIT3 0x00000008 +#define BIT4 0x00000010 +#define BIT5 0x00000020 +#define BIT6 0x00000040 +#define BIT7 0x00000080 +#define BIT8 0x00000100 +#define BIT9 0x00000200 +#define BIT10 0x00000400 +#define BIT11 0x00000800 +#define BIT12 0x00001000 +#define BIT13 0x00002000 +#define BIT14 0x00004000 +#define BIT15 0x00008000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 + +#define VPP_YUV_BLACK 0x008080 /* Y, Cr, Cb */ +#define VPP_YUV_WHITE 0xff8080 +#define VPP_YUV_RED 0x51f05a +#define VPP_YUV_GREEN 0x902235 +#define VPP_YUV_BLUE 0x286df0 +#define VPP_RGB32_BLACK 0x00000000 + +#define VPP_COL_RGB32_BLACK 0x000000 +#define VPP_COL_RGB32_WHITE 0xFFFFFF +#define VPP_COL_RGB32_RED 0xFF0000 +#define VPP_COL_RGB32_GREEN 0x00FF00 +#define VPP_COL_RGB32_BLUE 0x0000FF + +#define VPP_COL_BLACK 0x008080 /* Y, Cr, Cb */ +#define VPP_COL_WHITE 0xff8080 +#define VPP_COL_RED 0x41d464 +#define VPP_COL_GREEN 0x902235 +#define VPP_COL_BLUE 0x2372d4 + +#define VPP_MAGNUM(s, e) ((2^((s)-(e)+1))-1) + +#define WMT_FB_COLFMT(a) (a & 0xFF) + +enum vpp_fbuf_s { + VPP_FBUF_GOVR_1, + VPP_FBUF_GOVR_2, + VPP_FBUF_SCLR_1, + VPP_FBUF_SCLR_2, + VPP_FBUF_MAX +}; +#define vpp_fbuf_t enum vpp_fbuf_s + +enum vpp_flag_s { + VPP_FLAG_NULL = 0, + VPP_FLAG_ENABLE = 1, + VPP_FLAG_DISABLE = 0, + VPP_FLAG_TRUE = 1, + VPP_FLAG_FALSE = 0, + VPP_FLAG_ZERO = 0, + VPP_FLAG_ONE = 1, + VPP_FLAG_SUCCESS = 1, + VPP_FLAG_ERROR = 0, + VPP_FLAG_RD = 1, + VPP_FLAG_WR = 0, +}; +#define vpp_flag_t enum vpp_flag_s + +enum vpp_mod_s { + VPP_MOD_GOVRH2, + VPP_MOD_GOVRH, + VPP_MOD_DISP, + VPP_MOD_GOVW, + VPP_MOD_GOVM, + VPP_MOD_SCL, + VPP_MOD_SCLW, + VPP_MOD_VPU, + VPP_MOD_VPUW, + VPP_MOD_PIP, + VPP_MOD_VPPM, + VPP_MOD_LCDC, + VPP_MOD_CURSOR, + VPP_MOD_MAX +}; +#define vpp_mod_t enum vpp_mod_s + +enum vpp_vout_s { + VPP_VOUT_NONE = 0, + VPP_VOUT_SDA = 1, + VPP_VOUT_LCD = 2, + VPP_VOUT_DVI = 3, + VPP_VOUT_HDMI = 4, + VPP_VOUT_DVO2HDMI = 5, + VPP_VOUT_LVDS = 6, + VPP_VOUT_VGA = 7, + VPP_VOUT_FBDEV = 8, + VPP_VOUT_VIRDISP = 9, + VPP_VOUT_MAX +}; +#define vpp_vout_t enum vpp_vout_s + +enum vpp_display_format_s { + VPP_DISP_FMT_FRAME, /* Progressive */ + VPP_DISP_FMT_FIELD, /* Interlace */ + VPP_DISP_FMT_MAX, +}; +#define vpp_display_format_t enum vpp_display_format_s + +enum vpp_media_format_s { + VPP_MEDIA_FMT_MPEG, + VPP_MEDIA_FMT_H264, + VPP_MEDIA_FMT_MAX, +}; +#define vpp_media_format_t enum vpp_media_format_s + +enum vpp_csc_s { /* don't change this order */ + VPP_CSC_YUV2RGB2_MIN, + VPP_CSC_YUV2RGB_SDTV_0_255 = VPP_CSC_YUV2RGB2_MIN, + VPP_CSC_YUV2RGB_SDTV_16_235, + VPP_CSC_YUV2RGB_HDTV_0_255, + VPP_CSC_YUV2RGB_HDTV_16_235, + VPP_CSC_YUV2RGB_JFIF_0_255, + VPP_CSC_YUV2RGB_SMPTE170M, + VPP_CSC_YUV2RGB_SMPTE240M, + VPP_CSC_RGB2YUV_MIN, + VPP_CSC_RGB2YUV_SDTV_0_255 = VPP_CSC_RGB2YUV_MIN, + VPP_CSC_RGB2YUV_SDTV_16_235, + VPP_CSC_RGB2YUV_HDTV_0_255, + VPP_CSC_RGB2YUV_HDTV_16_235, + VPP_CSC_RGB2YUV_JFIF_0_255, + VPP_CSC_RGB2YUV_SMPTE170M, + VPP_CSC_RGB2YUV_SMPTE240M, + VPP_CSC_RGB2YUV_JFIF_VT1625, + VPP_CSC_MAX, + VPP_CSC_BYPASS +}; +#define vpp_csc_t enum vpp_csc_s + +enum vpp_reglevel_s { + VPP_REG_LEVEL_1, + VPP_REG_LEVEL_2, + VPP_REG_LEVEL_MAX, +}; +#define vpp_reglevel_t enum vpp_reglevel_s + +enum vpp_datawidht_s { + VPP_DATAWIDHT_12, + VPP_DATAWIDHT_24, + VPP_DATAWIDHT_MAX, +}; +#define vpp_datawidht_t enum vpp_datawidht_s + +enum vpp_tvsys_s { + VPP_TVSYS_NTSC, + VPP_TVSYS_NTSCJ, + VPP_TVSYS_NTSC443, + VPP_TVSYS_PAL, + VPP_TVSYS_PALM, + VPP_TVSYS_PAL60, + VPP_TVSYS_PALN, + VPP_TVSYS_PALNC, + VPP_TVSYS_720P, + VPP_TVSYS_1080I, + VPP_TVSYS_1080P, + VPP_TVSYS_MAX +}; +#define vpp_tvsys_t enum vpp_tvsys_s + +enum vpp_tvconn_s { + VPP_TVCONN_YCBCR, + VPP_TVCONN_SCART, + VPP_TVCONN_YPBPR, + VPP_TVCONN_VGA, + VPP_TVCONN_SVIDEO, + VPP_TVCONN_CVBS, + VPP_TVCONN_MAX +}; +#define vpp_tvconn_t enum vpp_tvconn_s + +#define VPP_OPT_INTERLACE 0x01 +#define VPP_DVO_SYNC_POLAR_HI 0x08 +#define VPP_DVO_VSYNC_POLAR_HI 0x10 + +struct vpp_clock_s { + int read_cycle; + + unsigned int total_pixel_of_line; + unsigned int begin_pixel_of_active; + unsigned int end_pixel_of_active; + + unsigned int total_line_of_frame; + unsigned int begin_line_of_active; + unsigned int end_line_of_active; + + unsigned int hsync; + unsigned int vsync; + unsigned int line_number_between_VBIS_VBIE; + unsigned int line_number_between_PVBI_VBIS; +}; +#define vpp_clock_t struct vpp_clock_s + +struct vpp_scale_s { + vdo_framebuf_t src_fb; + vdo_framebuf_t dst_fb; +}; +#define vpp_scale_t struct vpp_scale_s + +struct vpp_scale_overlap_s { + int mode; + vdo_framebuf_t src_fb; + vdo_framebuf_t src2_fb; + vdo_framebuf_t dst_fb; +}; +#define vpp_scale_overlap_t struct vpp_scale_overlap_s + +struct vpp_overlap_s { + unsigned int alpha_src_type:2; /* 0-mif1,1-mif2,2-fix */ + unsigned int alpha_src:8; + unsigned int alpha_dst_type:2; /* 0-mif1,1-mif2,2-fix */ + unsigned int alpha_dst:8; + unsigned int alpha_swap:1; /* 0-(alpha,1-alpha),1:(1-alpha,alpha) */ + unsigned int color_key_from:2; /* 0-RMIF1,1-RMIF2 */ + unsigned int color_key_comp:2; /* 0-888,1-777,2-666,3-555 */ + unsigned int color_key_mode:3; /* (Non-Hit,Hit):0/1-(alpha,alpha), + 2-(alpha,pix1), 3-(pix1,alpha),4-(alpha,pix2), + 5-(pix2,alpha),6-(pix1,pix2),7-(pix2,pix1) */ + unsigned int reserved:4; + unsigned int color_key; /* ARGB */ +}; +#define vpp_overlap_t struct vpp_overlap_s + +#define VPP_VOUT_STS_REGISTER 0x01 +#define VPP_VOUT_STS_ACTIVE 0x02 +#define VPP_VOUT_STS_PLUGIN 0x04 +#define VPP_VOUT_STS_EDID 0x08 +#define VPP_VOUT_STS_BLANK 0x10 +#define VPP_VOUT_STS_POWERDN 0x20 +#define VPP_VOUT_STS_CONTENT_PROTECT 0x40 +#define VPP_VOUT_STS_FB 0xF00 +#define VPP_VOUT_ARG_NUM 5 +struct vpp_vout_info_s { + enum vpp_vout_s mode[VPP_VOUT_ARG_NUM]; + unsigned int status[VPP_VOUT_ARG_NUM]; +}; +#define vpp_vout_info_t struct vpp_vout_info_s + +struct vpp_vout_parm_s { + int num; + int arg; +}; +#define vpp_vout_parm_t struct vpp_vout_parm_s + +#define VOUT_OPT_BLANK BIT(8) + +#define VPP_CAP_DUAL_DISPLAY BIT(0) +struct vpp_cap_s { + unsigned int chip_id; + unsigned int version; + unsigned int resx_max; + unsigned int resy_max; + unsigned int pixel_clk; + unsigned int module; + unsigned int option; +}; +#define vpp_cap_t struct vpp_cap_s + +struct vpp_i2c_s { + unsigned int addr; + unsigned int index; + unsigned int val; +}; +#define vpp_i2c_t struct vpp_i2c_s + +struct vpp_mod_fbinfo_s { + vpp_mod_t mod; + int read; + vdo_framebuf_t fb; +}; +#define vpp_mod_fbinfo_t struct vpp_mod_fbinfo_s + +struct vpp_vmode_parm_s { + unsigned int resx; + unsigned int resy; + unsigned int fps; + unsigned int option; +}; +#define vpp_vmode_parm_t struct vpp_vmode_parm_s + +#define VPP_VOUT_VMODE_NUM 20 +struct vpp_vout_vmode_s { + vpp_vout_t mode; + int num; + vpp_vmode_parm_t parm[VPP_VOUT_VMODE_NUM]; +}; +#define vpp_vout_vmode_t struct vpp_vout_vmode_s + +struct vpp_vout_edid_s { + vpp_vout_t mode; + int size; + char *buf; +}; +#define vpp_vout_edid_t struct vpp_vout_edid_s + +struct vpp_vout_cp_info_s { + int num; + unsigned int bksv[2]; +}; +#define vpp_vout_cp_info_t struct vpp_vout_cp_info_s + +#define VPP_VOUT_CP_NUM 336 +struct vpp_vout_cp_key_s { + char key[VPP_VOUT_CP_NUM]; +}; +#define vpp_vout_cp_key_t struct vpp_vout_cp_key_s + +struct vpp_mod_parm_t { + vpp_mod_t mod; + int read; + unsigned int parm; +}; + +#define VPPIO_MAGIC 'f' + +/* VPP common ioctl command */ +#define VPPIO_VPP_BASE 0x0 +#define VPPIO_VPPGET_INFO _IOR(VPPIO_MAGIC, VPPIO_VPP_BASE + 0, vpp_cap_t) +#define VPPIO_VPPSET_INFO _IOW(VPPIO_MAGIC, VPPIO_VPP_BASE + 0, vpp_cap_t) +#define VPPIO_I2CSET_BYTE _IOW(VPPIO_MAGIC, VPPIO_VPP_BASE + 1, vpp_i2c_t) +#define VPPIO_I2CGET_BYTE _IOR(VPPIO_MAGIC, VPPIO_VPP_BASE + 1, vpp_i2c_t) +#define VPPIO_MODSET_CSC \ + _IOW(VPPIO_MAGIC, VPPIO_VPP_BASE + 2, struct vpp_mod_parm_t) +#define VPPIO_MODULE_FBINFO \ + _IOWR(VPPIO_MAGIC, VPPIO_VPP_BASE + 6, vpp_mod_fbinfo_t) +#define VPPIO_STREAM_ENABLE _IO(VPPIO_MAGIC, VPPIO_VPP_BASE + 12) +#define VPPIO_STREAM_GETFB \ + _IOR(VPPIO_MAGIC, VPPIO_VPP_BASE + 13, vdo_framebuf_t) +#define VPPIO_STREAM_PUTFB \ + _IOW(VPPIO_MAGIC, VPPIO_VPP_BASE + 13, vdo_framebuf_t) +#define VPPIO_MULTIVD_ENABLE _IO(VPPIO_MAGIC, VPPIO_VPP_BASE + 15) + +/* VOUT ioctl command */ +#define VPPIO_VOUT_BASE 0x10 +#define VPPIO_VOGET_INFO _IOR(VPPIO_MAGIC, VPPIO_VOUT_BASE + 0, vpp_vout_info_t) +#define VPPIO_VOGET_HDMI_3D \ + _IOR(VPPIO_MAGIC, VPPIO_VOUT_BASE + 1, struct vpp_vout_parm_s) +#define VPPIO_VOUT_VMODE \ + _IOWR(VPPIO_MAGIC, VPPIO_VOUT_BASE + 7, vpp_vout_vmode_t) +#define VPPIO_VOGET_EDID _IOR(VPPIO_MAGIC, VPPIO_VOUT_BASE + 8, vpp_vout_edid_t) +#define VPPIO_VOGET_CP_INFO \ + _IOR(VPPIO_MAGIC, VPPIO_VOUT_BASE + 9, vpp_vout_cp_info_t) +#define VPPIO_VOSET_CP_KEY \ + _IOW(VPPIO_MAGIC, VPPIO_VOUT_BASE + 10, vpp_vout_cp_key_t) +#define VPPIO_VOSET_AUDIO_PASSTHRU _IO(VPPIO_MAGIC, VPPIO_VOUT_BASE + 11) +#define VPPIO_VOSET_VIRTUAL_FBDEV _IO(VPPIO_MAGIC, VPPIO_VOUT_BASE + 13) + +/* SCL ioctl command */ +#define VPPIO_SCL_BASE 0x60 +#define VPPIO_SCL_SCALE _IOWR(VPPIO_MAGIC, VPPIO_SCL_BASE + 0, vpp_scale_t) +#define VPPIO_SCL_SCALE_ASYNC \ + _IOWR(VPPIO_MAGIC, VPPIO_SCL_BASE + 2, vpp_scale_t) +#define VPPIO_SCL_SCALE_FINISH _IO(VPPIO_MAGIC, VPPIO_SCL_BASE + 3) +#define VPPIO_SCLSET_OVERLAP \ + _IOW(VPPIO_MAGIC, VPPIO_SCL_BASE + 4, vpp_overlap_t) +#define VPPIO_SCL_SCALE_OVERLAP \ + _IOWR(VPPIO_MAGIC, VPPIO_SCL_BASE + 5, vpp_scale_overlap_t) + +#define VPPIO_MAX 0x70 +#endif /* COM_VPP_H */ |