diff options
author | Stefan Ringel <stefan.ringel@arcor.de> | 2010-04-29 08:24:47 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-05-19 11:58:20 -0400 |
commit | 120756e10e86a193e64c3e8a6f73ae8ffdbd5bcf (patch) | |
tree | a1e7ae320317c6fc479f63e9b9060fd38e7f0781 /drivers | |
parent | 801dd3b32d2a09a883d0cf182eb6956945e5a429 (diff) |
V4L/DVB: tm6000: bugfix analog init for tm6010
- change values in function tm6000_set_fourcc_format
- disable digital source
- add vbi and audio init
Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/tm6000/tm6000-core.c | 97 |
1 files changed, 94 insertions, 3 deletions
diff --git a/drivers/staging/tm6000/tm6000-core.c b/drivers/staging/tm6000/tm6000-core.c index 0b4dc6491ab3..860553ff86ec 100644 --- a/drivers/staging/tm6000/tm6000-core.c +++ b/drivers/staging/tm6000/tm6000-core.c | |||
@@ -157,9 +157,9 @@ void tm6000_set_fourcc_format(struct tm6000_core *dev) | |||
157 | { | 157 | { |
158 | if (dev->dev_type == TM6010) { | 158 | if (dev->dev_type == TM6010) { |
159 | if (dev->fourcc == V4L2_PIX_FMT_UYVY) | 159 | if (dev->fourcc == V4L2_PIX_FMT_UYVY) |
160 | tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xfc); | 160 | tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xd0); |
161 | else | 161 | else |
162 | tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xfd); | 162 | tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0x90); |
163 | } else { | 163 | } else { |
164 | if (dev->fourcc == V4L2_PIX_FMT_UYVY) | 164 | if (dev->fourcc == V4L2_PIX_FMT_UYVY) |
165 | tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xd0); | 165 | tm6000_set_reg(dev, TM6010_REQ07_RC1_TRESHOLD, 0xd0); |
@@ -177,7 +177,98 @@ int tm6000_init_analog_mode (struct tm6000_core *dev) | |||
177 | val = tm6000_get_reg(dev, TM6010_REQ07_RCC_ACTIVE_VIDEO_IF, 0); | 177 | val = tm6000_get_reg(dev, TM6010_REQ07_RCC_ACTIVE_VIDEO_IF, 0); |
178 | val |= 0x60; | 178 | val |= 0x60; |
179 | tm6000_set_reg(dev, TM6010_REQ07_RCC_ACTIVE_VIDEO_IF, val); | 179 | tm6000_set_reg(dev, TM6010_REQ07_RCC_ACTIVE_VIDEO_IF, val); |
180 | tm6000_set_reg(dev, TM6010_REQ07_RFE_POWER_DOWN, 0xcf); | 180 | val = tm6000_get_reg(dev, |
181 | TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, 0); | ||
182 | val &= ~0x40; | ||
183 | tm6000_set_reg(dev, TM6010_REQ07_RC0_ACTIVE_VIDEO_SOURCE, val); | ||
184 | |||
185 | /* Init teletext */ | ||
186 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x01); | ||
187 | tm6000_set_reg(dev, TM6010_REQ07_R41_TELETEXT_VBI_CODE1, 0x27); | ||
188 | tm6000_set_reg(dev, TM6010_REQ07_R42_VBI_DATA_HIGH_LEVEL, 0x55); | ||
189 | tm6000_set_reg(dev, TM6010_REQ07_R43_VBI_DATA_TYPE_LINE7, 0x66); | ||
190 | tm6000_set_reg(dev, TM6010_REQ07_R44_VBI_DATA_TYPE_LINE8, 0x66); | ||
191 | tm6000_set_reg(dev, TM6010_REQ07_R45_VBI_DATA_TYPE_LINE9, 0x66); | ||
192 | tm6000_set_reg(dev, | ||
193 | TM6010_REQ07_R46_VBI_DATA_TYPE_LINE10, 0x66); | ||
194 | tm6000_set_reg(dev, | ||
195 | TM6010_REQ07_R47_VBI_DATA_TYPE_LINE11, 0x66); | ||
196 | tm6000_set_reg(dev, | ||
197 | TM6010_REQ07_R48_VBI_DATA_TYPE_LINE12, 0x66); | ||
198 | tm6000_set_reg(dev, | ||
199 | TM6010_REQ07_R49_VBI_DATA_TYPE_LINE13, 0x66); | ||
200 | tm6000_set_reg(dev, | ||
201 | TM6010_REQ07_R4A_VBI_DATA_TYPE_LINE14, 0x66); | ||
202 | tm6000_set_reg(dev, | ||
203 | TM6010_REQ07_R4B_VBI_DATA_TYPE_LINE15, 0x66); | ||
204 | tm6000_set_reg(dev, | ||
205 | TM6010_REQ07_R4C_VBI_DATA_TYPE_LINE16, 0x66); | ||
206 | tm6000_set_reg(dev, | ||
207 | TM6010_REQ07_R4D_VBI_DATA_TYPE_LINE17, 0x66); | ||
208 | tm6000_set_reg(dev, | ||
209 | TM6010_REQ07_R4E_VBI_DATA_TYPE_LINE18, 0x66); | ||
210 | tm6000_set_reg(dev, | ||
211 | TM6010_REQ07_R4F_VBI_DATA_TYPE_LINE19, 0x66); | ||
212 | tm6000_set_reg(dev, | ||
213 | TM6010_REQ07_R50_VBI_DATA_TYPE_LINE20, 0x66); | ||
214 | tm6000_set_reg(dev, | ||
215 | TM6010_REQ07_R51_VBI_DATA_TYPE_LINE21, 0x66); | ||
216 | tm6000_set_reg(dev, | ||
217 | TM6010_REQ07_R52_VBI_DATA_TYPE_LINE22, 0x66); | ||
218 | tm6000_set_reg(dev, | ||
219 | TM6010_REQ07_R53_VBI_DATA_TYPE_LINE23, 0x00); | ||
220 | tm6000_set_reg(dev, | ||
221 | TM6010_REQ07_R54_VBI_DATA_TYPE_RLINES, 0x00); | ||
222 | tm6000_set_reg(dev, | ||
223 | TM6010_REQ07_R55_VBI_LOOP_FILTER_GAIN, 0x01); | ||
224 | tm6000_set_reg(dev, | ||
225 | TM6010_REQ07_R56_VBI_LOOP_FILTER_I_GAIN, 0x00); | ||
226 | tm6000_set_reg(dev, | ||
227 | TM6010_REQ07_R57_VBI_LOOP_FILTER_P_GAIN, 0x02); | ||
228 | tm6000_set_reg(dev, TM6010_REQ07_R58_VBI_CAPTION_DTO1, 0x35); | ||
229 | tm6000_set_reg(dev, TM6010_REQ07_R59_VBI_CAPTION_DTO0, 0xa0); | ||
230 | tm6000_set_reg(dev, TM6010_REQ07_R5A_VBI_TELETEXT_DTO1, 0x11); | ||
231 | tm6000_set_reg(dev, TM6010_REQ07_R5B_VBI_TELETEXT_DTO0, 0x4c); | ||
232 | tm6000_set_reg(dev, TM6010_REQ07_R40_TELETEXT_VBI_CODE0, 0x01); | ||
233 | tm6000_set_reg(dev, TM6010_REQ07_R3F_RESET, 0x00); | ||
234 | |||
235 | |||
236 | /* Init audio */ | ||
237 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x00); | ||
238 | tm6000_set_reg(dev, TM6010_REQ08_R02_A_FIX_GAIN_CTRL, 0x04); | ||
239 | tm6000_set_reg(dev, TM6010_REQ08_R03_A_AUTO_GAIN_CTRL, 0x00); | ||
240 | tm6000_set_reg(dev, TM6010_REQ08_R04_A_SIF_AMP_CTRL, 0xa0); | ||
241 | tm6000_set_reg(dev, TM6010_REQ08_R05_A_STANDARD_MOD, 0x05); | ||
242 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x06); | ||
243 | tm6000_set_reg(dev, TM6010_REQ08_R07_A_LEFT_VOL, 0x00); | ||
244 | tm6000_set_reg(dev, TM6010_REQ08_R08_A_RIGHT_VOL, 0x00); | ||
245 | tm6000_set_reg(dev, TM6010_REQ08_R09_A_MAIN_VOL, 0x08); | ||
246 | tm6000_set_reg(dev, TM6010_REQ08_R0A_A_I2S_MOD, 0x91); | ||
247 | tm6000_set_reg(dev, TM6010_REQ08_R0B_A_ASD_THRES1, 0x20); | ||
248 | tm6000_set_reg(dev, TM6010_REQ08_R0C_A_ASD_THRES2, 0x12); | ||
249 | tm6000_set_reg(dev, TM6010_REQ08_R0D_A_AMD_THRES, 0x20); | ||
250 | tm6000_set_reg(dev, TM6010_REQ08_R0E_A_MONO_THRES1, 0xf0); | ||
251 | tm6000_set_reg(dev, TM6010_REQ08_R0F_A_MONO_THRES2, 0x80); | ||
252 | tm6000_set_reg(dev, TM6010_REQ08_R10_A_MUTE_THRES1, 0xc0); | ||
253 | tm6000_set_reg(dev, TM6010_REQ08_R11_A_MUTE_THRES2, 0x80); | ||
254 | tm6000_set_reg(dev, TM6010_REQ08_R12_A_AGC_U, 0x12); | ||
255 | tm6000_set_reg(dev, TM6010_REQ08_R13_A_AGC_ERR_T, 0xfe); | ||
256 | tm6000_set_reg(dev, TM6010_REQ08_R14_A_AGC_GAIN_INIT, 0x20); | ||
257 | tm6000_set_reg(dev, TM6010_REQ08_R15_A_AGC_STEP_THR, 0x14); | ||
258 | tm6000_set_reg(dev, TM6010_REQ08_R16_A_AGC_GAIN_MAX, 0xfe); | ||
259 | tm6000_set_reg(dev, TM6010_REQ08_R17_A_AGC_GAIN_MIN, 0x01); | ||
260 | tm6000_set_reg(dev, TM6010_REQ08_R18_A_TR_CTRL, 0xa0); | ||
261 | tm6000_set_reg(dev, TM6010_REQ08_R19_A_FH_2FH_GAIN, 0x32); | ||
262 | tm6000_set_reg(dev, TM6010_REQ08_R1A_A_NICAM_SER_MAX, 0x64); | ||
263 | tm6000_set_reg(dev, TM6010_REQ08_R1B_A_NICAM_SER_MIN, 0x20); | ||
264 | tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1c, 0x00); | ||
265 | tm6000_set_reg(dev, REQ_08_SET_GET_AVREG_BIT, 0x1d, 0x00); | ||
266 | tm6000_set_reg(dev, TM6010_REQ08_R1E_A_GAIN_DEEMPH_OUT, 0x13); | ||
267 | tm6000_set_reg(dev, TM6010_REQ08_R1F_A_TEST_INTF_SEL, 0x00); | ||
268 | tm6000_set_reg(dev, TM6010_REQ08_R20_A_TEST_PIN_SEL, 0x00); | ||
269 | tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3); | ||
270 | tm6000_set_reg(dev, TM6010_REQ08_R06_A_SOUND_MOD, 0x00); | ||
271 | tm6000_set_reg(dev, TM6010_REQ08_R01_A_INIT, 0x80); | ||
181 | 272 | ||
182 | } else { | 273 | } else { |
183 | /* Enables soft reset */ | 274 | /* Enables soft reset */ |