diff options
author | Lad, Prabhakar <prabhakar.csengg@gmail.com> | 2013-03-22 03:53:13 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-04-14 19:08:29 -0400 |
commit | 08154695076c1aecd2f9bcde79825b45f5ac23b2 (patch) | |
tree | 799f029d967d8387f582a9cb801cd7dc1b8a6fae /drivers/media | |
parent | 9a3e89b10f5e48c0d8cca7896c02bf4d76d0ae46 (diff) |
[media] media: davinci: vpbe: venc: move the enabling of vpss clocks to driver
The vpss clocks were enabled by calling a exported function from a driver
in a machine code. calling driver code from platform code is incorrect way.
This patch fixes this issue and calls the function from driver code itself.
Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/platform/davinci/vpbe_venc.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/media/platform/davinci/vpbe_venc.c b/drivers/media/platform/davinci/vpbe_venc.c index f15f211a5508..87eef9be08ed 100644 --- a/drivers/media/platform/davinci/vpbe_venc.c +++ b/drivers/media/platform/davinci/vpbe_venc.c | |||
@@ -202,6 +202,25 @@ static void venc_enabledigitaloutput(struct v4l2_subdev *sd, int benable) | |||
202 | } | 202 | } |
203 | } | 203 | } |
204 | 204 | ||
205 | static void | ||
206 | venc_enable_vpss_clock(int venc_type, | ||
207 | enum vpbe_enc_timings_type type, | ||
208 | unsigned int pclock) | ||
209 | { | ||
210 | if (venc_type == VPBE_VERSION_1) | ||
211 | return; | ||
212 | |||
213 | if (venc_type == VPBE_VERSION_2 && (type == VPBE_ENC_STD || (type == | ||
214 | VPBE_ENC_DV_TIMINGS && pclock <= 27000000))) { | ||
215 | vpss_enable_clock(VPSS_VENC_CLOCK_SEL, 1); | ||
216 | vpss_enable_clock(VPSS_VPBE_CLOCK, 1); | ||
217 | return; | ||
218 | } | ||
219 | |||
220 | if (venc_type == VPBE_VERSION_3 && type == VPBE_ENC_STD) | ||
221 | vpss_enable_clock(VPSS_VENC_CLOCK_SEL, 0); | ||
222 | } | ||
223 | |||
205 | #define VDAC_CONFIG_SD_V3 0x0E21A6B6 | 224 | #define VDAC_CONFIG_SD_V3 0x0E21A6B6 |
206 | #define VDAC_CONFIG_SD_V2 0x081141CF | 225 | #define VDAC_CONFIG_SD_V2 0x081141CF |
207 | /* | 226 | /* |
@@ -220,6 +239,7 @@ static int venc_set_ntsc(struct v4l2_subdev *sd) | |||
220 | if (pdata->setup_clock(VPBE_ENC_STD, V4L2_STD_525_60) < 0) | 239 | if (pdata->setup_clock(VPBE_ENC_STD, V4L2_STD_525_60) < 0) |
221 | return -EINVAL; | 240 | return -EINVAL; |
222 | 241 | ||
242 | venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_STD, V4L2_STD_525_60); | ||
223 | venc_enabledigitaloutput(sd, 0); | 243 | venc_enabledigitaloutput(sd, 0); |
224 | 244 | ||
225 | if (venc->venc_type == VPBE_VERSION_3) { | 245 | if (venc->venc_type == VPBE_VERSION_3) { |
@@ -265,6 +285,7 @@ static int venc_set_pal(struct v4l2_subdev *sd) | |||
265 | if (venc->pdata->setup_clock(VPBE_ENC_STD, V4L2_STD_625_50) < 0) | 285 | if (venc->pdata->setup_clock(VPBE_ENC_STD, V4L2_STD_625_50) < 0) |
266 | return -EINVAL; | 286 | return -EINVAL; |
267 | 287 | ||
288 | venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_STD, V4L2_STD_625_50); | ||
268 | venc_enabledigitaloutput(sd, 0); | 289 | venc_enabledigitaloutput(sd, 0); |
269 | 290 | ||
270 | if (venc->venc_type == VPBE_VERSION_3) { | 291 | if (venc->venc_type == VPBE_VERSION_3) { |
@@ -319,6 +340,7 @@ static int venc_set_480p59_94(struct v4l2_subdev *sd) | |||
319 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 27000000) < 0) | 340 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 27000000) < 0) |
320 | return -EINVAL; | 341 | return -EINVAL; |
321 | 342 | ||
343 | venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 27000000); | ||
322 | venc_enabledigitaloutput(sd, 0); | 344 | venc_enabledigitaloutput(sd, 0); |
323 | 345 | ||
324 | if (venc->venc_type == VPBE_VERSION_2) | 346 | if (venc->venc_type == VPBE_VERSION_2) |
@@ -366,6 +388,7 @@ static int venc_set_576p50(struct v4l2_subdev *sd) | |||
366 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 27000000) < 0) | 388 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 27000000) < 0) |
367 | return -EINVAL; | 389 | return -EINVAL; |
368 | 390 | ||
391 | venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 27000000); | ||
369 | venc_enabledigitaloutput(sd, 0); | 392 | venc_enabledigitaloutput(sd, 0); |
370 | 393 | ||
371 | if (venc->venc_type == VPBE_VERSION_2) | 394 | if (venc->venc_type == VPBE_VERSION_2) |
@@ -406,6 +429,7 @@ static int venc_set_720p60_internal(struct v4l2_subdev *sd) | |||
406 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 74250000) < 0) | 429 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 74250000) < 0) |
407 | return -EINVAL; | 430 | return -EINVAL; |
408 | 431 | ||
432 | venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 74250000); | ||
409 | venc_enabledigitaloutput(sd, 0); | 433 | venc_enabledigitaloutput(sd, 0); |
410 | 434 | ||
411 | venc_write(sd, VENC_OSDCLK0, 0); | 435 | venc_write(sd, VENC_OSDCLK0, 0); |
@@ -434,6 +458,7 @@ static int venc_set_1080i30_internal(struct v4l2_subdev *sd) | |||
434 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 74250000) < 0) | 458 | if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 74250000) < 0) |
435 | return -EINVAL; | 459 | return -EINVAL; |
436 | 460 | ||
461 | venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 74250000); | ||
437 | venc_enabledigitaloutput(sd, 0); | 462 | venc_enabledigitaloutput(sd, 0); |
438 | 463 | ||
439 | venc_write(sd, VENC_OSDCLK0, 0); | 464 | venc_write(sd, VENC_OSDCLK0, 0); |