summaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch
new file mode 100644
index 00000000..78f7296a
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/cam/0017-omap3isp-set-CAM_MCLK-to-172.8-MHz-allows-exact-9.6-.patch
@@ -0,0 +1,91 @@
1From fc6044176be3518fee98430ebe36cc144d6feed2 Mon Sep 17 00:00:00 2001
2From: Tuukka Toivonen <tuukka.o.toivonen@nokia.com>
3Date: Thu, 2 Jul 2009 16:17:55 +0200
4Subject: [PATCH 17/75] omap3isp: set CAM_MCLK to 172.8 MHz, allows exact 9.6 MHz for camera xclka/b
5
6Camera cam_xclka and cam_xclkb clocks are generated by dividing
7CAM_MCLK with an integer. We want to use 9.6 MHz for cameras,
8so CAM_MCLK should be multiple of it. Otherwise the generated
9frequency is slightly off due to rounding.
10
11Signed-off-by: Tuukka Toivonen <tuukka.o.toivonen@nokia.com>
12---
13 drivers/media/video/isp/isp.c | 14 ++++++++++++++
14 drivers/media/video/isp/isp.h | 1 +
15 drivers/media/video/isp/ispreg.h | 2 +-
16 3 files changed, 16 insertions(+), 1 deletions(-)
17
18diff --git a/drivers/media/video/isp/isp.c b/drivers/media/video/isp/isp.c
19index ceed870..9d46c01 100644
20--- a/drivers/media/video/isp/isp.c
21+++ b/drivers/media/video/isp/isp.c
22@@ -2333,6 +2333,11 @@ static int isp_enable_clocks(struct device *dev)
23 dev_err(dev, "clk_enable cam_ick failed\n");
24 goto out_clk_enable_ick;
25 }
26+ r = clk_set_rate(isp->dpll4_m5_ck, CM_CAM_MCLK_HZ/2);
27+ if (r) {
28+ dev_err(dev, "clk_set_rate for dpll4_m5_ck failed\n");
29+ goto out_clk_enable_mclk;
30+ }
31 r = clk_enable(isp->cam_mclk);
32 if (r) {
33 dev_err(dev, "clk_enable cam_mclk failed\n");
34@@ -2499,6 +2504,7 @@ static int isp_remove(struct platform_device *pdev)
35
36 clk_put(isp->cam_ick);
37 clk_put(isp->cam_mclk);
38+ clk_put(isp->dpll4_m5_ck);
39 clk_put(isp->csi2_fck);
40 clk_put(isp->l3_ick);
41
42@@ -2674,6 +2680,12 @@ static int isp_probe(struct platform_device *pdev)
43 ret_err = PTR_ERR(isp->cam_mclk);
44 goto out_clk_get_mclk;
45 }
46+ isp->dpll4_m5_ck = clk_get(&camera_dev, "dpll4_m5_ck");
47+ if (IS_ERR(isp->dpll4_m5_ck)) {
48+ dev_err(isp->dev, "clk_get dpll4_m5_ck failed\n");
49+ ret_err = PTR_ERR(isp->dpll4_m5_ck);
50+ goto out_clk_get_dpll4_m5_ck;
51+ }
52 isp->csi2_fck = clk_get(&camera_dev, "csi2_96m_fck");
53 if (IS_ERR(isp->csi2_fck)) {
54 dev_err(isp->dev, "clk_get csi2_96m_fck failed\n");
55@@ -2734,6 +2746,8 @@ out_request_irq:
56 out_clk_get_l3_ick:
57 clk_put(isp->csi2_fck);
58 out_clk_get_csi2_fclk:
59+ clk_put(isp->dpll4_m5_ck);
60+out_clk_get_dpll4_m5_ck:
61 clk_put(isp->cam_mclk);
62 out_clk_get_mclk:
63 clk_put(isp->cam_ick);
64diff --git a/drivers/media/video/isp/isp.h b/drivers/media/video/isp/isp.h
65index dc85d61..6b100b6 100644
66--- a/drivers/media/video/isp/isp.h
67+++ b/drivers/media/video/isp/isp.h
68@@ -414,6 +414,7 @@ struct isp_device {
69 int ref_count;
70 struct clk *cam_ick;
71 struct clk *cam_mclk;
72+ struct clk *dpll4_m5_ck;
73 struct clk *csi2_fck;
74 struct clk *l3_ick;
75 struct isp_interface_config *config;
76diff --git a/drivers/media/video/isp/ispreg.h b/drivers/media/video/isp/ispreg.h
77index 676a33d..1240e0e 100644
78--- a/drivers/media/video/isp/ispreg.h
79+++ b/drivers/media/video/isp/ispreg.h
80@@ -116,7 +116,7 @@
81 #define ISP_32B_BOUNDARY_BUF 0xFFFFFFE0
82 #define ISP_32B_BOUNDARY_OFFSET 0x0000FFE0
83
84-#define CM_CAM_MCLK_HZ 216000000
85+#define CM_CAM_MCLK_HZ 172800000 /* Hz */
86
87 /* ISP Submodules offset */
88
89--
901.6.6.1
91