Message ID | 1365423553-12619-3-git-send-email-prabhakar.csengg@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 4/8/2013 5:49 PM, Prabhakar lad wrote: > From: Lad, Prabhakar <prabhakar.csengg@gmail.com> > > 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> > --- > 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 f15f211..91d0272 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) > } > } > > +static void > +venc_enable_vpss_clock(int venc_type, > + enum vpbe_enc_timings_type type, > + unsigned int pclock) > +{ > + if (venc_type == VPBE_VERSION_1) > + return; > + > + if (venc_type == VPBE_VERSION_2 && (type == VPBE_ENC_STD || > + (type == VPBE_ENC_DV_TIMINGS && pclock <= 27000000))) { checkpatch --strict will throw a "Alignment should match open parenthesis" check here. You may want to fix before you send the pull request. No need to resend the patch just for this. Thanks, Sekhar
On Tue, Apr 9, 2013 at 3:27 PM, Sekhar Nori <nsekhar@ti.com> wrote: > > > On 4/8/2013 5:49 PM, Prabhakar lad wrote: >> From: Lad, Prabhakar <prabhakar.csengg@gmail.com> >> >> 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> >> --- >> 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 f15f211..91d0272 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) >> } >> } >> >> +static void >> +venc_enable_vpss_clock(int venc_type, >> + enum vpbe_enc_timings_type type, >> + unsigned int pclock) >> +{ >> + if (venc_type == VPBE_VERSION_1) >> + return; >> + >> + if (venc_type == VPBE_VERSION_2 && (type == VPBE_ENC_STD || >> + (type == VPBE_ENC_DV_TIMINGS && pclock <= 27000000))) { > > checkpatch --strict will throw a "Alignment should match open > parenthesis" check here. You may want to fix before you send the pull > request. No need to resend the patch just for this. > OK, thanks will fix it while issuing the pull. Regards, --Prabhakar > Thanks, > Sekhar
diff --git a/drivers/media/platform/davinci/vpbe_venc.c b/drivers/media/platform/davinci/vpbe_venc.c index f15f211..91d0272 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) } } +static void +venc_enable_vpss_clock(int venc_type, + enum vpbe_enc_timings_type type, + unsigned int pclock) +{ + if (venc_type == VPBE_VERSION_1) + return; + + if (venc_type == VPBE_VERSION_2 && (type == VPBE_ENC_STD || + (type == VPBE_ENC_DV_TIMINGS && pclock <= 27000000))) { + vpss_enable_clock(VPSS_VENC_CLOCK_SEL, 1); + vpss_enable_clock(VPSS_VPBE_CLOCK, 1); + return; + } + + if (venc_type == VPBE_VERSION_3 && type == VPBE_ENC_STD) + vpss_enable_clock(VPSS_VENC_CLOCK_SEL, 0); +} + #define VDAC_CONFIG_SD_V3 0x0E21A6B6 #define VDAC_CONFIG_SD_V2 0x081141CF /* @@ -220,6 +239,7 @@ static int venc_set_ntsc(struct v4l2_subdev *sd) if (pdata->setup_clock(VPBE_ENC_STD, V4L2_STD_525_60) < 0) return -EINVAL; + venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_STD, V4L2_STD_525_60); venc_enabledigitaloutput(sd, 0); if (venc->venc_type == VPBE_VERSION_3) { @@ -265,6 +285,7 @@ static int venc_set_pal(struct v4l2_subdev *sd) if (venc->pdata->setup_clock(VPBE_ENC_STD, V4L2_STD_625_50) < 0) return -EINVAL; + venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_STD, V4L2_STD_625_50); venc_enabledigitaloutput(sd, 0); if (venc->venc_type == VPBE_VERSION_3) { @@ -319,6 +340,7 @@ static int venc_set_480p59_94(struct v4l2_subdev *sd) if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 27000000) < 0) return -EINVAL; + venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 27000000); venc_enabledigitaloutput(sd, 0); if (venc->venc_type == VPBE_VERSION_2) @@ -366,6 +388,7 @@ static int venc_set_576p50(struct v4l2_subdev *sd) if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 27000000) < 0) return -EINVAL; + venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 27000000); venc_enabledigitaloutput(sd, 0); if (venc->venc_type == VPBE_VERSION_2) @@ -406,6 +429,7 @@ static int venc_set_720p60_internal(struct v4l2_subdev *sd) if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 74250000) < 0) return -EINVAL; + venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 74250000); venc_enabledigitaloutput(sd, 0); venc_write(sd, VENC_OSDCLK0, 0); @@ -434,6 +458,7 @@ static int venc_set_1080i30_internal(struct v4l2_subdev *sd) if (pdata->setup_clock(VPBE_ENC_DV_TIMINGS, 74250000) < 0) return -EINVAL; + venc_enable_vpss_clock(venc->venc_type, VPBE_ENC_DV_TIMINGS, 74250000); venc_enabledigitaloutput(sd, 0); venc_write(sd, VENC_OSDCLK0, 0);