Re: [PATCH 2/4 v6] Definitions for TVP7002 in DM365

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Santiago,

See review comments below:

On Friday 06 November 2009 16:42:40 santiago.nunez@xxxxxxxxxxxx wrote:
> From: Santiago Nunez-Corrales <santiago.nunez@xxxxxxxxxxxx>
> 
> This patch provides the required definitions for the TVP7002 driver
> in DM365.
> 
> Signed-off-by: Santiago Nunez-Corrales <santiago.nunez@xxxxxxxxxxxx>
> ---
>  drivers/media/video/tvp7002_reg.h |  150 +++++++++++++++++++++++++++++++++++++
>  include/media/tvp7002.h           |   89 ++++++++++++++++++++++
>  2 files changed, 239 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..0e34ca9
> --- /dev/null
> +++ b/drivers/media/video/tvp7002_reg.h
> @@ -0,0 +1,150 @@
> +/* Texas Instruments Triple 8-/10-BIT 165-/110-MSPS Video and Graphics
> + * Digitizer with Horizontal PLL registers
> + *
> + * Copyright (C) 2009 Texas Instruments Inc
> + * Author: Santiago Nunez-Corrales <santiago.nunez@xxxxxxxxxxxx>
> + *
> + * This code is partially based upon the TVP5150 driver
> + * written by Mauro Carvalho Chehab (mchehab@xxxxxxxxxxxxx),
> + * the TVP514x driver written by Vaibhav Hiremath <hvaibhav@xxxxxx>
> + * and the TVP7002 driver in the TI LSP 2.10.00.14
> + *
> + * 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..6295e8c
> --- /dev/null
> +++ b/include/media/tvp7002.h
> @@ -0,0 +1,89 @@
> +/* Texas Instruments Triple 8-/10-BIT 165-/110-MSPS Video and Graphics
> + * Digitizer with Horizontal PLL registers
> + *
> + * Copyright (C) 2009 Texas Instruments Inc
> + * Author: Santiago Nunez-Corrales <santiago.nunez@xxxxxxxxxxxx>
> + *
> + * This code is partially based upon the TVP5150 driver
> + * written by Mauro Carvalho Chehab (mchehab@xxxxxxxxxxxxx),
> + * the TVP514x driver written by Vaibhav Hiremath <hvaibhav@xxxxxx>
> + * and the TVP7002 driver in the TI LSP 2.10.00.14
> + *
> + * 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_
> +
> +/* Read write definition for registers */
> +#define TVP7002_READ			0
> +#define TVP7002_WRITE			1
> +#define TVP7002_RESERVED		2
> +
> +/* Total frame lines information */
> +#define TVP7002_LINES_720       0x2EE
> +#define TVP7002_LINES_1080_60   0x465
> +#define TVP7002_LINES_1080_50   0x465
> +
> +/* Clocks per line assuming 6.5 MHz internal clock +- 6% */
> +#define TVP7002_CPL_1080P_60_LOWER	90
> +#define TVP7002_CPL_1080P_60_UPPER	102
> +#define TVP7002_CPL_1080_60_LOWER	181
> +#define TVP7002_CPL_1080_60_UPPER	205
> +#define TVP7002_CPL_1080_50_LOWER	217
> +#define TVP7002_CPL_1080_50_UPPER	245
> +#define TVP7002_CPL_720P_50_LOWER	163
> +#define TVP7002_CPL_720P_50_UPPER	183
> +#define TVP7002_CPL_720P_60_LOWER	135
> +#define TVP7002_CPL_720P_60_UPPER	153
> +
> +#define INTERLACED_VIDEO		0
> +#define PROGRESSIVE_VIDEO		1
> +
> +/* Indexes for digital video presets */
> +#define INDEX_720P60		0
> +#define INDEX_1080I60		1
> +#define INDEX_1080I50		2
> +#define INDEX_720P50		3
> +#define INDEX_1080P60		4
> +#define INDEX_480P59_94		5
> +#define INDEX_576P50		6
> +
> +/* Number of pixels and number of lines per frame for different standards */
> +#define NTSC_NUM_ACTIVE_PIXELS          (720)
> +#define NTSC_NUM_ACTIVE_LINES           (480)
> +#define PAL_NUM_ACTIVE_PIXELS           (720)
> +#define PAL_NUM_ACTIVE_LINES            (576)
> +#define HD_720_NUM_ACTIVE_PIXELS        (1280)
> +#define HD_720_NUM_ACTIVE_LINES         (720)
> +#define HD_1080_NUM_ACTIVE_PIXELS       (1920)
> +#define HD_1080_NUM_ACTIVE_LINES        (1080)
> +
> +/* Interlaced vs progressive mask and shift */
> +#define TVP7002_IP_SHIFT		5
> +#define TVP7002_INPR_MASK		(0x01 << TVP7002_IP_SHIFT)
> +
> +/* Shift for CPL and LPF registers */
> +#define TVP7002_CL_SHIFT		8
> +#define TVP7002_CL_MASK			0x0f

Are any of the defines above really needed outside the tvp7002 driver itself?
If not, then these defines should be moved to tvp7002.c.

> +
> +/* Platform dependent data */
> +struct tvp7002_config {
> +	u8 clk_polarity;
> +	u8 hs_polarity;
> +	u8 vs_polarity;
> +	u8 fid_polarity;
> +	u8 sog_polarity;
> +};

This should have a comment telling how each value is interpreted.
I assume it's something like 0 = negative polarity, 1 = positive,
but I'm not sure.

> +#endif

Regards,

	Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux