> -----Original Message-----
> From: davinci-linux-open-source-
> [email protected] [mailto:davinci-linux-
> [email protected]] On Behalf
> Of [email protected]
> Sent: Friday, August 28, 2009 5:47 AM
> To: Karicheri, Muralidharan
> Cc: [email protected];
> [email protected]; Santiago Nunez-Corrales;
> [email protected]
> Subject: [PATCH 4/6] Definitions for TVP7002 in DM365
>
> From: Santiago Nunez-Corrales <[email protected]>
>
> This patch provides the required definitions for the TVP7002 driver
> in DM365.
>
> Signed-off-by: Santiago Nunez-Corrales <[email protected]>
> ---
> drivers/media/video/tvp7002_reg.h | 148
> +++++++++++++++++++++++++++++++++++++
> include/media/tvp7002.h | 104 ++++++++++++++++++++++++++
> 2 files changed, 252 insertions(+), 0 deletions(-)
> create mode 100644 drivers/media/video/tvp7002_reg.h
> create mode 100644 include/media/tvp7002.h
>
> diff --git a/drivers/media/video/tvp7002_reg.h
> b/drivers/media/video/tvp7002_reg.h
> new file mode 100644
> index 0000000..4c9aa31
> --- /dev/null
> +++ b/drivers/media/video/tvp7002_reg.h
> @@ -0,0 +1,148 @@
> +/*
> + * tvp7002_reg.h - Register definitions for TVP7002
> + *
> + * Copyright (C) 2009 Texas Instruments Inc
> + * Author: Santiago Nunez-Corrales <[email protected]>
> + *
> + * This code is partially based upon the TVP5150 driver
> + * written by Mauro Carvalho Chehab ([email protected])
> + *
> + * 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, write to the Free Software
> + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> + */
> +
> +/* Naming conventions
> + * ------------------
> + *
> + * FDBK: Feedback
> + * DIV: Divider
> + * CTL: Control
> + * SEL: Select
> + * IN: Input
> + * OUT: Output
> + * R: Red
> + * G: Green
> + * B: Blue
> + * OFF: Offset
> + * THRS: Threshold
> + * DGTL: Digital
> + * LVL: Level
> + * PWR: Power
> + * MVIS: Macrovision
> + * W: Width
> + * H: Height
> + * ALGN: Alignment
> + * CLK: Clocks
> + * TOL: Tolerance
> + * BWTH: Bandwidth
> + * COEF: Coefficient
> + * STAT: Status
> + * AUTO: Automatic
> + * FLD: Field
> + * L: Line
> + */
> +
> +#define TVP7002_CHIP_REV 0x00
> +#define TVP7002_HPLL_FDBK_DIV_MSBS 0x01
> +#define TVP7002_HPLL_FDBK_DIV_LSBS 0x02
> +#define TVP7002_HPLL_CRTL 0x03
> +#define TVP7002_HPLL_PHASE_SEL 0x04
> +#define TVP7002_CLAMP_START 0x05
> +#define TVP7002_CLAMP_W 0x06
> +#define TVP7002_HSYNC_OUT_W 0x07
> +#define TVP7002_B_FINE_GAIN 0x08
> +#define TVP7002_G_FINE_GAIN 0x09
> +#define TVP7002_R_FINE_GAIN 0x0a
> +#define TVP7002_B_FINE_OFF_MSBS 0x0b
> +#define TVP7002_G_FINE_OFF_MSBS 0x0c
> +#define TVP7002_R_FINE_OFF_MSBS 0x0d
> +#define TVP7002_SYNC_CTL_1 0x0e
> +#define TVP7002_HPLL_AND_CLAMP_CTL 0x0f
> +#define TVP7002_SYNC_ON_G_THRS 0x10
> +#define TVP7002_SYNC_SEPARATOR_THRS 0x11
> +#define TVP7002_HPLL_PRE_COAST 0x12
> +#define TVP7002_HPLL_POST_COAST 0x13
> +#define TVP7002_SYNC_DETECT_STAT 0x14
> +#define TVP7002_OUT_FORMATTER 0x15
> +#define TVP7002_MISC_CTL_1 0x16
> +#define TVP7002_MISC_CTL_2 0x17
> +#define TVP7002_MISC_CTL_3 0x18
> +#define TVP7002_IN_MUX_SEL_1 0x19
> +#define TVP7002_IN_MUX_SEL_2 0x1a
> +#define TVP7002_B_AND_G_COARSE_GAIN 0x1b
> +#define TVP7002_R_COARSE_GAIN 0x1c
> +#define TVP7002_FINE_OFF_LSBS 0x1d
> +#define TVP7002_B_COARSE_OFF 0x1e
> +#define TVP7002_G_COARSE_OFF 0x1f
> +#define TVP7002_R_COARSE_OFF 0x20
> +#define TVP7002_HSOUT_OUT_START 0x21
> +#define TVP7002_MISC_CTL_4 0x22
> +#define TVP7002_B_DGTL_ALC_OUT_LSBS 0x23
> +#define TVP7002_G_DGTL_ALC_OUT_LSBS 0x24
> +#define TVP7002_R_DGTL_ALC_OUT_LSBS 0x25
> +#define TVP7002_AUTO_LVL_CTL_ENABLE 0x26
> +#define TVP7002_DGTL_ALC_OUT_MSBS 0x27
> +#define TVP7002_AUTO_LVL_CTL_FILTER 0x28
> +/* Reserved 0x29*/
> +#define TVP7002_FINE_CLAMP_CTL 0x2a
> +#define TVP7002_PWR_CTL 0x2b
> +#define TVP7002_ADC_SETUP 0x2c
> +#define TVP7002_COARSE_CLAMP_CTL 0x2d
> +#define TVP7002_SOG_CLAMP 0x2e
> +#define TVP7002_RGB_COARSE_CLAMP_CTL 0x2f
> +#define TVP7002_SOG_COARSE_CLAMP_CTL 0x30
> +#define TVP7002_ALC_PLACEMENT 0x31
> +/* Reserved 0x32 */
> +/* Reserved 0x33 */
> +#define TVP7002_MVIS_STRIPPER_W 0x34
> +#define TVP7002_VSYNC_ALGN 0x35
> +#define TVP7002_SYNC_BYPASS 0x36
> +#define TVP7002_L_FRAME_STAT_LSBS 0x37
> +#define TVP7002_L_FRAME_STAT_MSBS 0x38
> +#define TVP7002_CLK_L_STAT_LSBS 0x39
> +#define TVP7002_CLK_L_STAT_MSBS 0x3a
> +#define TVP7002_HSYNC_W 0x3b
> +#define TVP7002_VSYNC_W 0x3c
> +#define TVP7002_L_LENGTH_TOL 0x3d
> +/* Reserved 0x3e */
> +#define TVP7002_VIDEO_BWTH_CTL 0x3f
> +#define TVP7002_AVID_START_PIXEL_LSBS 0x40
> +#define TVP7002_AVID_START_PIXEL_MSBS 0x41
> +#define TVP7002_AVID_STOP_PIXEL_LSBS 0x42
> +#define TVP7002_AVID_STOP_PIXEL_MSBS 0x43
> +#define TVP7002_VBLK_F_0_START_L_OFF 0x44
> +#define TVP7002_VBLK_F_1_START_L_OFF 0x45
> +#define TVP7002_VBLK_F_0_DURATION 0x46
> +#define TVP7002_VBLK_F_1_DURATION 0x47
> +#define TVP7002_FBIT_F_0_START_L_OFF 0x48
> +#define TVP7002_FBIT_F_1_START_L_OFF 0x49
> +#define TVP7002_YUV_Y_G_COEF_LSBS 0x4a
> +#define TVP7002_YUV_Y_G_COEF_MSBS 0x4b
> +#define TVP7002_YUV_Y_B_COEF_LSBS 0x4c
> +#define TVP7002_YUV_Y_B_COEF_MSBS 0x4d
> +#define TVP7002_YUV_Y_R_COEF_LSBS 0x4e
> +#define TVP7002_YUV_Y_R_COEF_MSBS 0x4f
> +#define TVP7002_YUV_U_G_COEF_LSBS 0x50
> +#define TVP7002_YUV_U_G_COEF_MSBS 0x51
> +#define TVP7002_YUV_U_B_COEF_LSBS 0x52
> +#define TVP7002_YUV_U_B_COEF_MSBS 0x53
> +#define TVP7002_YUV_U_R_COEF_LSBS 0x54
> +#define TVP7002_YUV_U_R_COEF_MSBS 0x55
> +#define TVP7002_YUV_V_G_COEF_LSBS 0x56
> +#define TVP7002_YUV_V_G_COEF_MSBS 0x57
> +#define TVP7002_YUV_V_B_COEF_LSBS 0x58
> +#define TVP7002_YUV_V_B_COEF_MSBS 0x59
> +#define TVP7002_YUV_V_R_COEF_LSBS 0x5a
> +#define TVP7002_YUV_V_R_COEF_MSBS 0x5b
> +
> diff --git a/include/media/tvp7002.h b/include/media/tvp7002.h
> new file mode 100644
> index 0000000..b2f0e58
> --- /dev/null
> +++ b/include/media/tvp7002.h
> @@ -0,0 +1,104 @@
> +/*
> + * tvp7002.h - Definitions for TVP7002
> + *
> + * Copyright (C) 2009 Texas Instruments Inc
> + * Author: Santiago Nunez-Corrales <[email protected]>
> + *
> + * This code is partially based upon the TVP5150 driver
> + * written by Mauro Carvalho Chehab ([email protected])
> + *
> + * 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, write to the Free Software
> + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> + */
> +
> +#ifndef _TVP7002_H_
> +#define _TVP7002_H_
> +
> +#include <linux/videodev2.h>
> +
> +/* VCO Range */
> +#define TVP7002_VCO_RANGE_ULOW 0x00
> +#define TVP7002_VCO_RANGE_LOW 0x40
> +#define TVP7002_VCO_RANGE_MED 0x80
> +#define TVP7002_VCO_RANGE_HIGH 0xC0
> +
> +/* Indexes for supported standards */
> +enum tvp7002_std {
> + TVP7002_STD_480I,
> + TVP7002_STD_576I,
> + TVP7002_STD_480P,
> + TVP7002_STD_576P,
> + TVP7002_STD_720P_60,
> + TVP7002_STD_720P_50,
> + TVP7002_STD_1080I_60,
> + TVP7002_STD_1080I_50,
> + TVP7002_STD_1080P_60,
> + TVP7002_STD_1080P_50
> +};
> +
> +/* Input selection */
> +enum tvp7002_input {
> + TVP7002_SOGIN_1 = 0x00,
> + TVP7002_SOGIN_2 = 0x01,
> + TVP7002_SOGIN_3 = 0x02,
> + TVP7002_RIN_1 = 0x04,
> + TVP7002_RIN_2 = 0x05,
> + TVP7002_RIN_3 = 0x06,
> + TVP7002_GIN_1 = 0x08,
> + TVP7002_GIN_2 = 0x09,
> + TVP7002_GIN_3 = 0x0a,
> + TVP7002_GIN_4 = 0x0b,
> + TVP7002_BIN_1 = 0x0c,
> + TVP7002_BIN_2 = 0x0d,
> + TVP7002_BIN_3 = 0x0e,
> + TVP7002_INVALID
> +};
> +
> +/* Struct for handling resolutions and associate register values */
> +struct tvp7002_resol {
> + v4l2_std_id id;
> + int hres;
> + int vres;
> + int frate;
> + int lrate;
> + int prate;
> + unsigned char reg01;
> + unsigned char reg02;
> + unsigned char reg03;
> + unsigned char reg04;
> +};
> +
> +/* Struct for handling register values */
> +struct i2c_reg_value {
> + unsigned char reg;
> + unsigned char value;
> +};
[Hiremath, Vaibhav] Missed one more comment, you should not export the private
variable here, i2c_reg_value will not be used anywhere other than your .c file.
It should be moved to .c file. Please check for tvp7002_resol also.
Thanks,
Vaibhav
> +
> +/* Platform dependent data */
> +struct tvp7002_platform_data {
> + bool clk_polarity;
> + bool hs_polarity;
> + bool vs_polarity;
> + bool fid_polarity;
> +};
> +
> +/* tvp7002 platform data, used during reset and probe operations */
> +static struct tvp7002_platform_data tvp7002_pdata = {
> + .clk_polarity = 1,
> + .hs_polarity = 1,
> + .vs_polarity = 1,
> + .fid_polarity = 1,
> +};
> +
> +#endif
> --
> 1.6.0.4
>
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-
> source
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source