/*++ * linux/drivers/media/video/wmt_v4l2/wmt-vid.h * WonderMedia v4l video input device driver * * Copyright c 2010 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 . * * WonderMedia Technologies, Inc. * 4F, 533, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C --*/ #ifndef WMT_VID_H #define WMT_VID_H #include #include "wmt-vidreg.h" #include "../../../video/wmt/sw_i2c.h" #ifdef __KERNEL__ #define PRINT printk #else #define PRINT printf #define KERN_ERR #define KERN_WARNING #define KERN_INFO #define KERN_DEBUG #endif #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 typedef enum{ VID_MODE_CMOS, /* CMOS sensor mode */ VID_MODE_TVDEC /* TV Decoder mode */ } vid_mode; /*------------------------------------------------------------------------------ Definitions of structures ------------------------------------------------------------------------------*/ #define VID_FB_M \ unsigned int y_addr; \ unsigned int c_addr; \ unsigned int id; \ unsigned int done; \ unsigned int is_busy /* End of VD_IOCTL_CMD_M */ /* Following structure is used for all HW decoder as input arguments */ typedef struct { VID_FB_M; } vid_fb_t; typedef struct { struct i2c_adapter *adapter; struct i2c_client *client; char name[12]; unsigned int gpio_pwr_active_level; unsigned int gpio_pwr_bitnum; unsigned int gpio_pwr_reg_gpio_en; unsigned int gpio_pwr_reg_gpio_od; unsigned int gpio_pwr_reg_gpio_oc; short i2c_addr; } cmos_dev_t; typedef struct { unsigned int en; unsigned int dummy; unsigned int dev_tot_num; unsigned int dev_id; unsigned int is_two_same_dev; cmos_dev_t dev[2]; unsigned int v_flip;//v_mirror unsigned int h_flip;//h_mirror unsigned int i2c_gpio_en; unsigned int i2c_gpio_scl_binum; unsigned int i2c_gpio_sda_binum; unsigned int reg_i2c_gpio_scl_gpio_in; unsigned int reg_i2c_gpio_scl_gpio_en; unsigned int reg_i2c_gpio_scl_gpio_od; unsigned int reg_i2c_gpio_scl_gpio_oc; unsigned int reg_i2c_gpio_scl_gpio_pe; unsigned int reg_i2c_gpio_scl_gpio_pe_bitnum; unsigned int reg_i2c_gpio_sda_gpio_in; unsigned int reg_i2c_gpio_sda_gpio_en; unsigned int reg_i2c_gpio_sda_gpio_od; unsigned int reg_i2c_gpio_sda_gpio_oc; unsigned int reg_i2c_gpio_sda_gpio_pe; unsigned int reg_i2c_gpio_sda_gpio_pe_bitnum; char isMIPI; } cmos_uboot_env_t; typedef enum { VID_NTSC, VID_PAL } vid_tvsys_e; int wmt_vid_open(vid_mode mode,cmos_uboot_env_t *cmos_uboot_env); int wmt_vid_close(vid_mode mode); int wmt_vid_set_mode(int width, int height, unsigned int pix_format); int wmt_vid_set_addr(unsigned int y_addr, unsigned int c_addr); int wmt_vid_set_cur_fb(vid_fb_t *fb); vid_fb_t * wmt_vid_get_cur_fb(void); int write_array_2_i2c(int slave_addr, char *array_addr, int array_size); int wmt_vid_i2c_write(int chipId ,unsigned int index,char data); int wmt_vid_i2c_read(int chipId ,unsigned int index) ; int wmt_vid_i2c_read_page(int chipId ,unsigned int index,char *pdata,int len); int wmt_vid_i2c_write_page(int chipId ,unsigned int index,char *pdata,int len); int wmt_vid_i2c_write16addr(int chipId ,unsigned int index,unsigned int data); int wmt_vid_i2c_read16addr(int chipId ,unsigned int index); int wmt_vid_i2c_write16data(int chipId ,unsigned int index,unsigned int data); int wmt_vid_i2c_read16data(int chipId ,unsigned int index); int wmt_vid_i2c_init( int dev_num, short dev_id); int wmt_vid_i2c_release(void); int wmt_vid_i2c_set_same_dev(void); #endif