diff options
author | Vaibhav Hiremath <hvaibhav@ti.com> | 2008-12-05 08:19:36 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-12-30 06:38:36 -0500 |
commit | 07b1747c8d0bb463311f9dd05d4c013765abe2eb (patch) | |
tree | ee9c2484ae5ac534c41a5bbd0c290611cac580fb /drivers/media/video/tvp514x_regs.h | |
parent | 67bc04dd04bfe6a6337a9c6773e4c36645360332 (diff) |
V4L/DVB (9817): v4l: add new tvp514x I2C video decoder driver
Signed-off-by: Brijesh Jadav <brijesh.j@ti.com>
Signed-off-by: Hardik Shah <hardik.shah@ti.com>
Signed-off-by: Manjunath Hadli <mrh@ti.com>
Signed-off-by: R Sivaraj <sivaraj@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Karicheri Muralidharan <m-karicheri2@ti.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl>
Reviewed-by: David Brownell <david-b@pacbell.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/tvp514x_regs.h')
-rw-r--r-- | drivers/media/video/tvp514x_regs.h | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/drivers/media/video/tvp514x_regs.h b/drivers/media/video/tvp514x_regs.h new file mode 100644 index 000000000000..351620aeecc2 --- /dev/null +++ b/drivers/media/video/tvp514x_regs.h | |||
@@ -0,0 +1,297 @@ | |||
1 | /* | ||
2 | * drivers/media/video/tvp514x_regs.h | ||
3 | * | ||
4 | * Copyright (C) 2008 Texas Instruments Inc | ||
5 | * Author: Vaibhav Hiremath <hvaibhav@ti.com> | ||
6 | * | ||
7 | * Contributors: | ||
8 | * Sivaraj R <sivaraj@ti.com> | ||
9 | * Brijesh R Jadav <brijesh.j@ti.com> | ||
10 | * Hardik Shah <hardik.shah@ti.com> | ||
11 | * Manjunath Hadli <mrh@ti.com> | ||
12 | * Karicheri Muralidharan <m-karicheri2@ti.com> | ||
13 | * | ||
14 | * This package is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License version 2 as | ||
16 | * published by the Free Software Foundation. | ||
17 | * | ||
18 | * This program is distributed in the hope that it will be useful, | ||
19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
21 | * GNU General Public License for more details. | ||
22 | * | ||
23 | * You should have received a copy of the GNU General Public License | ||
24 | * along with this program; if not, write to the Free Software | ||
25 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
26 | * | ||
27 | */ | ||
28 | |||
29 | #ifndef _TVP514X_REGS_H | ||
30 | #define _TVP514X_REGS_H | ||
31 | |||
32 | /* | ||
33 | * TVP5146/47 registers | ||
34 | */ | ||
35 | #define REG_INPUT_SEL (0x00) | ||
36 | #define REG_AFE_GAIN_CTRL (0x01) | ||
37 | #define REG_VIDEO_STD (0x02) | ||
38 | #define REG_OPERATION_MODE (0x03) | ||
39 | #define REG_AUTOSWITCH_MASK (0x04) | ||
40 | |||
41 | #define REG_COLOR_KILLER (0x05) | ||
42 | #define REG_LUMA_CONTROL1 (0x06) | ||
43 | #define REG_LUMA_CONTROL2 (0x07) | ||
44 | #define REG_LUMA_CONTROL3 (0x08) | ||
45 | |||
46 | #define REG_BRIGHTNESS (0x09) | ||
47 | #define REG_CONTRAST (0x0A) | ||
48 | #define REG_SATURATION (0x0B) | ||
49 | #define REG_HUE (0x0C) | ||
50 | |||
51 | #define REG_CHROMA_CONTROL1 (0x0D) | ||
52 | #define REG_CHROMA_CONTROL2 (0x0E) | ||
53 | |||
54 | /* 0x0F Reserved */ | ||
55 | |||
56 | #define REG_COMP_PR_SATURATION (0x10) | ||
57 | #define REG_COMP_Y_CONTRAST (0x11) | ||
58 | #define REG_COMP_PB_SATURATION (0x12) | ||
59 | |||
60 | /* 0x13 Reserved */ | ||
61 | |||
62 | #define REG_COMP_Y_BRIGHTNESS (0x14) | ||
63 | |||
64 | /* 0x15 Reserved */ | ||
65 | |||
66 | #define REG_AVID_START_PIXEL_LSB (0x16) | ||
67 | #define REG_AVID_START_PIXEL_MSB (0x17) | ||
68 | #define REG_AVID_STOP_PIXEL_LSB (0x18) | ||
69 | #define REG_AVID_STOP_PIXEL_MSB (0x19) | ||
70 | |||
71 | #define REG_HSYNC_START_PIXEL_LSB (0x1A) | ||
72 | #define REG_HSYNC_START_PIXEL_MSB (0x1B) | ||
73 | #define REG_HSYNC_STOP_PIXEL_LSB (0x1C) | ||
74 | #define REG_HSYNC_STOP_PIXEL_MSB (0x1D) | ||
75 | |||
76 | #define REG_VSYNC_START_LINE_LSB (0x1E) | ||
77 | #define REG_VSYNC_START_LINE_MSB (0x1F) | ||
78 | #define REG_VSYNC_STOP_LINE_LSB (0x20) | ||
79 | #define REG_VSYNC_STOP_LINE_MSB (0x21) | ||
80 | |||
81 | #define REG_VBLK_START_LINE_LSB (0x22) | ||
82 | #define REG_VBLK_START_LINE_MSB (0x23) | ||
83 | #define REG_VBLK_STOP_LINE_LSB (0x24) | ||
84 | #define REG_VBLK_STOP_LINE_MSB (0x25) | ||
85 | |||
86 | /* 0x26 - 0x27 Reserved */ | ||
87 | |||
88 | #define REG_FAST_SWTICH_CONTROL (0x28) | ||
89 | |||
90 | /* 0x29 Reserved */ | ||
91 | |||
92 | #define REG_FAST_SWTICH_SCART_DELAY (0x2A) | ||
93 | |||
94 | /* 0x2B Reserved */ | ||
95 | |||
96 | #define REG_SCART_DELAY (0x2C) | ||
97 | #define REG_CTI_DELAY (0x2D) | ||
98 | #define REG_CTI_CONTROL (0x2E) | ||
99 | |||
100 | /* 0x2F - 0x31 Reserved */ | ||
101 | |||
102 | #define REG_SYNC_CONTROL (0x32) | ||
103 | #define REG_OUTPUT_FORMATTER1 (0x33) | ||
104 | #define REG_OUTPUT_FORMATTER2 (0x34) | ||
105 | #define REG_OUTPUT_FORMATTER3 (0x35) | ||
106 | #define REG_OUTPUT_FORMATTER4 (0x36) | ||
107 | #define REG_OUTPUT_FORMATTER5 (0x37) | ||
108 | #define REG_OUTPUT_FORMATTER6 (0x38) | ||
109 | #define REG_CLEAR_LOST_LOCK (0x39) | ||
110 | |||
111 | #define REG_STATUS1 (0x3A) | ||
112 | #define REG_STATUS2 (0x3B) | ||
113 | |||
114 | #define REG_AGC_GAIN_STATUS_LSB (0x3C) | ||
115 | #define REG_AGC_GAIN_STATUS_MSB (0x3D) | ||
116 | |||
117 | /* 0x3E Reserved */ | ||
118 | |||
119 | #define REG_VIDEO_STD_STATUS (0x3F) | ||
120 | #define REG_GPIO_INPUT1 (0x40) | ||
121 | #define REG_GPIO_INPUT2 (0x41) | ||
122 | |||
123 | /* 0x42 - 0x45 Reserved */ | ||
124 | |||
125 | #define REG_AFE_COARSE_GAIN_CH1 (0x46) | ||
126 | #define REG_AFE_COARSE_GAIN_CH2 (0x47) | ||
127 | #define REG_AFE_COARSE_GAIN_CH3 (0x48) | ||
128 | #define REG_AFE_COARSE_GAIN_CH4 (0x49) | ||
129 | |||
130 | #define REG_AFE_FINE_GAIN_PB_B_LSB (0x4A) | ||
131 | #define REG_AFE_FINE_GAIN_PB_B_MSB (0x4B) | ||
132 | #define REG_AFE_FINE_GAIN_Y_G_CHROMA_LSB (0x4C) | ||
133 | #define REG_AFE_FINE_GAIN_Y_G_CHROMA_MSB (0x4D) | ||
134 | #define REG_AFE_FINE_GAIN_PR_R_LSB (0x4E) | ||
135 | #define REG_AFE_FINE_GAIN_PR_R_MSB (0x4F) | ||
136 | #define REG_AFE_FINE_GAIN_CVBS_LUMA_LSB (0x50) | ||
137 | #define REG_AFE_FINE_GAIN_CVBS_LUMA_MSB (0x51) | ||
138 | |||
139 | /* 0x52 - 0x68 Reserved */ | ||
140 | |||
141 | #define REG_FBIT_VBIT_CONTROL1 (0x69) | ||
142 | |||
143 | /* 0x6A - 0x6B Reserved */ | ||
144 | |||
145 | #define REG_BACKEND_AGC_CONTROL (0x6C) | ||
146 | |||
147 | /* 0x6D - 0x6E Reserved */ | ||
148 | |||
149 | #define REG_AGC_DECREMENT_SPEED_CONTROL (0x6F) | ||
150 | #define REG_ROM_VERSION (0x70) | ||
151 | |||
152 | /* 0x71 - 0x73 Reserved */ | ||
153 | |||
154 | #define REG_AGC_WHITE_PEAK_PROCESSING (0x74) | ||
155 | #define REG_FBIT_VBIT_CONTROL2 (0x75) | ||
156 | #define REG_VCR_TRICK_MODE_CONTROL (0x76) | ||
157 | #define REG_HORIZONTAL_SHAKE_INCREMENT (0x77) | ||
158 | #define REG_AGC_INCREMENT_SPEED (0x78) | ||
159 | #define REG_AGC_INCREMENT_DELAY (0x79) | ||
160 | |||
161 | /* 0x7A - 0x7F Reserved */ | ||
162 | |||
163 | #define REG_CHIP_ID_MSB (0x80) | ||
164 | #define REG_CHIP_ID_LSB (0x81) | ||
165 | |||
166 | /* 0x82 Reserved */ | ||
167 | |||
168 | #define REG_CPLL_SPEED_CONTROL (0x83) | ||
169 | |||
170 | /* 0x84 - 0x96 Reserved */ | ||
171 | |||
172 | #define REG_STATUS_REQUEST (0x97) | ||
173 | |||
174 | /* 0x98 - 0x99 Reserved */ | ||
175 | |||
176 | #define REG_VERTICAL_LINE_COUNT_LSB (0x9A) | ||
177 | #define REG_VERTICAL_LINE_COUNT_MSB (0x9B) | ||
178 | |||
179 | /* 0x9C - 0x9D Reserved */ | ||
180 | |||
181 | #define REG_AGC_DECREMENT_DELAY (0x9E) | ||
182 | |||
183 | /* 0x9F - 0xB0 Reserved */ | ||
184 | |||
185 | #define REG_VDP_TTX_FILTER_1_MASK1 (0xB1) | ||
186 | #define REG_VDP_TTX_FILTER_1_MASK2 (0xB2) | ||
187 | #define REG_VDP_TTX_FILTER_1_MASK3 (0xB3) | ||
188 | #define REG_VDP_TTX_FILTER_1_MASK4 (0xB4) | ||
189 | #define REG_VDP_TTX_FILTER_1_MASK5 (0xB5) | ||
190 | #define REG_VDP_TTX_FILTER_2_MASK1 (0xB6) | ||
191 | #define REG_VDP_TTX_FILTER_2_MASK2 (0xB7) | ||
192 | #define REG_VDP_TTX_FILTER_2_MASK3 (0xB8) | ||
193 | #define REG_VDP_TTX_FILTER_2_MASK4 (0xB9) | ||
194 | #define REG_VDP_TTX_FILTER_2_MASK5 (0xBA) | ||
195 | #define REG_VDP_TTX_FILTER_CONTROL (0xBB) | ||
196 | #define REG_VDP_FIFO_WORD_COUNT (0xBC) | ||
197 | #define REG_VDP_FIFO_INTERRUPT_THRLD (0xBD) | ||
198 | |||
199 | /* 0xBE Reserved */ | ||
200 | |||
201 | #define REG_VDP_FIFO_RESET (0xBF) | ||
202 | #define REG_VDP_FIFO_OUTPUT_CONTROL (0xC0) | ||
203 | #define REG_VDP_LINE_NUMBER_INTERRUPT (0xC1) | ||
204 | #define REG_VDP_PIXEL_ALIGNMENT_LSB (0xC2) | ||
205 | #define REG_VDP_PIXEL_ALIGNMENT_MSB (0xC3) | ||
206 | |||
207 | /* 0xC4 - 0xD5 Reserved */ | ||
208 | |||
209 | #define REG_VDP_LINE_START (0xD6) | ||
210 | #define REG_VDP_LINE_STOP (0xD7) | ||
211 | #define REG_VDP_GLOBAL_LINE_MODE (0xD8) | ||
212 | #define REG_VDP_FULL_FIELD_ENABLE (0xD9) | ||
213 | #define REG_VDP_FULL_FIELD_MODE (0xDA) | ||
214 | |||
215 | /* 0xDB - 0xDF Reserved */ | ||
216 | |||
217 | #define REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR (0xE0) | ||
218 | #define REG_VBUS_DATA_ACCESS_VBUS_ADDR_INCR (0xE1) | ||
219 | #define REG_FIFO_READ_DATA (0xE2) | ||
220 | |||
221 | /* 0xE3 - 0xE7 Reserved */ | ||
222 | |||
223 | #define REG_VBUS_ADDRESS_ACCESS1 (0xE8) | ||
224 | #define REG_VBUS_ADDRESS_ACCESS2 (0xE9) | ||
225 | #define REG_VBUS_ADDRESS_ACCESS3 (0xEA) | ||
226 | |||
227 | /* 0xEB - 0xEF Reserved */ | ||
228 | |||
229 | #define REG_INTERRUPT_RAW_STATUS0 (0xF0) | ||
230 | #define REG_INTERRUPT_RAW_STATUS1 (0xF1) | ||
231 | #define REG_INTERRUPT_STATUS0 (0xF2) | ||
232 | #define REG_INTERRUPT_STATUS1 (0xF3) | ||
233 | #define REG_INTERRUPT_MASK0 (0xF4) | ||
234 | #define REG_INTERRUPT_MASK1 (0xF5) | ||
235 | #define REG_INTERRUPT_CLEAR0 (0xF6) | ||
236 | #define REG_INTERRUPT_CLEAR1 (0xF7) | ||
237 | |||
238 | /* 0xF8 - 0xFF Reserved */ | ||
239 | |||
240 | /* | ||
241 | * Mask and bit definitions of TVP5146/47 registers | ||
242 | */ | ||
243 | /* The ID values we are looking for */ | ||
244 | #define TVP514X_CHIP_ID_MSB (0x51) | ||
245 | #define TVP5146_CHIP_ID_LSB (0x46) | ||
246 | #define TVP5147_CHIP_ID_LSB (0x47) | ||
247 | |||
248 | #define VIDEO_STD_MASK (0x07) | ||
249 | #define VIDEO_STD_AUTO_SWITCH_BIT (0x00) | ||
250 | #define VIDEO_STD_NTSC_MJ_BIT (0x01) | ||
251 | #define VIDEO_STD_PAL_BDGHIN_BIT (0x02) | ||
252 | #define VIDEO_STD_PAL_M_BIT (0x03) | ||
253 | #define VIDEO_STD_PAL_COMBINATION_N_BIT (0x04) | ||
254 | #define VIDEO_STD_NTSC_4_43_BIT (0x05) | ||
255 | #define VIDEO_STD_SECAM_BIT (0x06) | ||
256 | #define VIDEO_STD_PAL_60_BIT (0x07) | ||
257 | |||
258 | /* | ||
259 | * Status bit | ||
260 | */ | ||
261 | #define STATUS_TV_VCR_BIT (1<<0) | ||
262 | #define STATUS_HORZ_SYNC_LOCK_BIT (1<<1) | ||
263 | #define STATUS_VIRT_SYNC_LOCK_BIT (1<<2) | ||
264 | #define STATUS_CLR_SUBCAR_LOCK_BIT (1<<3) | ||
265 | #define STATUS_LOST_LOCK_DETECT_BIT (1<<4) | ||
266 | #define STATUS_FEILD_RATE_BIT (1<<5) | ||
267 | #define STATUS_LINE_ALTERNATING_BIT (1<<6) | ||
268 | #define STATUS_PEAK_WHITE_DETECT_BIT (1<<7) | ||
269 | |||
270 | /* Tokens for register write */ | ||
271 | #define TOK_WRITE (0) /* token for write operation */ | ||
272 | #define TOK_TERM (1) /* terminating token */ | ||
273 | #define TOK_DELAY (2) /* delay token for reg list */ | ||
274 | #define TOK_SKIP (3) /* token to skip a register */ | ||
275 | /** | ||
276 | * struct tvp514x_reg - Structure for TVP5146/47 register initialization values | ||
277 | * @token - Token: TOK_WRITE, TOK_TERM etc.. | ||
278 | * @reg - Register offset | ||
279 | * @val - Register Value for TOK_WRITE or delay in ms for TOK_DELAY | ||
280 | */ | ||
281 | struct tvp514x_reg { | ||
282 | u8 token; | ||
283 | u8 reg; | ||
284 | u32 val; | ||
285 | }; | ||
286 | |||
287 | /** | ||
288 | * struct tvp514x_init_seq - Structure for TVP5146/47/46M2/47M1 power up | ||
289 | * Sequence. | ||
290 | * @ no_regs - Number of registers to write for power up sequence. | ||
291 | * @ init_reg_seq - Array of registers and respective value to write. | ||
292 | */ | ||
293 | struct tvp514x_init_seq { | ||
294 | unsigned int no_regs; | ||
295 | const struct tvp514x_reg *init_reg_seq; | ||
296 | }; | ||
297 | #endif /* ifndef _TVP514X_REGS_H */ | ||