]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/meta-ti-glsdk.git/blob - recipes-bsp/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch
53fe6219cb3dab286f3b09185191d2361584f2ca
[glsdk/meta-ti-glsdk.git] / recipes-bsp / linux / linux-omap-psp-2.6.32 / cam / 0019-omap3isp-core-Do-smarter-MCLK-setting.patch
1 From 97761e2bdf286662e3c96f5a24fe568cac98fc9b Mon Sep 17 00:00:00 2001
2 From: Sergio Aguirre <saaguirre@ti.com>
3 Date: Wed, 25 Nov 2009 12:30:46 -0600
4 Subject: [PATCH 19/75] omap3isp: core: Do smarter MCLK setting
6 Since the ratio between MCLK and DPLL4_M5 could not be 1:1
7 (i.e. on 3430 its 2:1), it's necessary to check ratio
8 between those 2 first.
10 This should make MCLK setting more adequate to different
11 chipsets.
13 Tested on Zoom2 (3430 ES3.1)
15 Signed-off-by: Sergio Aguirre <saaguirre@ti.com>
16 ---
17  drivers/media/video/isp/isp.c |   13 ++++++++++++-
18  1 files changed, 12 insertions(+), 1 deletions(-)
20 diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c
21 index cf68720..29dd005 100644
22 --- a/drivers/media/video/isp/isp.c
23 +++ b/drivers/media/video/isp/isp.c
24 @@ -2353,8 +2353,19 @@ int isp_enable_mclk(struct device *dev)
25  {
26         struct isp_device *isp = dev_get_drvdata(dev);
27         int r;
28 +       unsigned long curr_mclk, curr_dpll4_m5, ratio;
29  
30 -       r = clk_set_rate(isp->dpll4_m5_ck, isp->mclk);
31 +       /* Check ratio between DPLL4_M5 and CAM_MCLK */
32 +       curr_mclk = clk_get_rate(isp->cam_mclk);
33 +       curr_dpll4_m5 = clk_get_rate(isp->dpll4_m5_ck);
34 +
35 +       /* Protection for potential Zero division, or zero-ratio result */
36 +       if (!curr_mclk || !curr_dpll4_m5)
37 +               BUG();
38 +
39 +       ratio = curr_mclk / curr_dpll4_m5;
40 +
41 +       r = clk_set_rate(isp->dpll4_m5_ck, isp->mclk / ratio);
42                 if (r) {
43                         dev_err(dev, "clk_set_rate for dpll4_m5_ck failed\n");
44                         return r;
45 -- 
46 1.6.6.1