aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorLad, Prabhakar <prabhakar.csengg@gmail.com>2013-03-22 03:53:13 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-04-14 19:08:29 -0400
commit08154695076c1aecd2f9bcde79825b45f5ac23b2 (patch)
tree799f029d967d8387f582a9cb801cd7dc1b8a6fae /drivers/media
parent9a3e89b10f5e48c0d8cca7896c02bf4d76d0ae46 (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.c25
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
205static void
206venc_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);