aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/omap3isp/isp.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index d7aa513dcc8d..6034dca63404 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -1345,10 +1345,7 @@ static int isp_enable_clocks(struct isp_device *isp)
1345 * has to be twice of what is set on OMAP3430 to get 1345 * has to be twice of what is set on OMAP3430 to get
1346 * the required value for cam_mclk 1346 * the required value for cam_mclk
1347 */ 1347 */
1348 if (cpu_is_omap3630()) 1348 divisor = isp->revision == ISP_REVISION_15_0 ? 1 : 2;
1349 divisor = 1;
1350 else
1351 divisor = 2;
1352 1349
1353 r = clk_enable(isp->clock[ISP_CLK_CAM_ICK]); 1350 r = clk_enable(isp->clock[ISP_CLK_CAM_ICK]);
1354 if (r) { 1351 if (r) {
@@ -2093,7 +2090,11 @@ static int __devinit isp_probe(struct platform_device *pdev)
2093 isp->isp_csiphy1.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY1"); 2090 isp->isp_csiphy1.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY1");
2094 isp->isp_csiphy2.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY2"); 2091 isp->isp_csiphy2.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY2");
2095 2092
2096 /* Clocks */ 2093 /* Clocks
2094 *
2095 * The ISP clock tree is revision-dependent. We thus need to enable ICLK
2096 * manually to read the revision before calling __omap3isp_get().
2097 */
2097 ret = isp_map_mem_resource(pdev, isp, OMAP3_ISP_IOMEM_MAIN); 2098 ret = isp_map_mem_resource(pdev, isp, OMAP3_ISP_IOMEM_MAIN);
2098 if (ret < 0) 2099 if (ret < 0)
2099 goto error; 2100 goto error;
@@ -2102,6 +2103,16 @@ static int __devinit isp_probe(struct platform_device *pdev)
2102 if (ret < 0) 2103 if (ret < 0)
2103 goto error; 2104 goto error;
2104 2105
2106 ret = clk_enable(isp->clock[ISP_CLK_CAM_ICK]);
2107 if (ret < 0)
2108 goto error;
2109
2110 isp->revision = isp_reg_readl(isp, OMAP3_ISP_IOMEM_MAIN, ISP_REVISION);
2111 dev_info(isp->dev, "Revision %d.%d found\n",
2112 (isp->revision & 0xf0) >> 4, isp->revision & 0x0f);
2113
2114 clk_disable(isp->clock[ISP_CLK_CAM_ICK]);
2115
2105 if (__omap3isp_get(isp, false) == NULL) { 2116 if (__omap3isp_get(isp, false) == NULL) {
2106 ret = -ENODEV; 2117 ret = -ENODEV;
2107 goto error; 2118 goto error;
@@ -2112,10 +2123,6 @@ static int __devinit isp_probe(struct platform_device *pdev)
2112 goto error_isp; 2123 goto error_isp;
2113 2124
2114 /* Memory resources */ 2125 /* Memory resources */
2115 isp->revision = isp_reg_readl(isp, OMAP3_ISP_IOMEM_MAIN, ISP_REVISION);
2116 dev_info(isp->dev, "Revision %d.%d found\n",
2117 (isp->revision & 0xf0) >> 4, isp->revision & 0x0f);
2118
2119 for (m = 0; m < ARRAY_SIZE(isp_res_maps); m++) 2126 for (m = 0; m < ARRAY_SIZE(isp_res_maps); m++)
2120 if (isp->revision == isp_res_maps[m].isp_rev) 2127 if (isp->revision == isp_res_maps[m].isp_rev)
2121 break; 2128 break;