summaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch
new file mode 100644
index 00000000..53fe6219
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0019-omap3isp-core-Do-smarter-MCLK-setting.patch
@@ -0,0 +1,47 @@
1From 97761e2bdf286662e3c96f5a24fe568cac98fc9b Mon Sep 17 00:00:00 2001
2From: Sergio Aguirre <saaguirre@ti.com>
3Date: Wed, 25 Nov 2009 12:30:46 -0600
4Subject: [PATCH 19/75] omap3isp: core: Do smarter MCLK setting
5
6Since 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
8between those 2 first.
9
10This should make MCLK setting more adequate to different
11chipsets.
12
13Tested on Zoom2 (3430 ES3.1)
14
15Signed-off-by: Sergio Aguirre <saaguirre@ti.com>
16---
17 drivers/media/video/isp/isp.c | 13 ++++++++++++-
18 1 files changed, 12 insertions(+), 1 deletions(-)
19
20diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c
21index 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--
461.6.6.1
47