diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c index 6034dca63404..d7aa513dcc8d 100644 --- a/drivers/media/platform/omap3isp/isp.c +++ b/drivers/media/platform/omap3isp/isp.c @@ -1345,7 +1345,10 @@ static int isp_enable_clocks(struct isp_device *isp) * has to be twice of what is set on OMAP3430 to get * the required value for cam_mclk */ - divisor = isp->revision == ISP_REVISION_15_0 ? 1 : 2; + if (cpu_is_omap3630()) + divisor = 1; + else + divisor = 2; r = clk_enable(isp->clock[ISP_CLK_CAM_ICK]); if (r) { @@ -2090,11 +2093,7 @@ static int __devinit isp_probe(struct platform_device *pdev) isp->isp_csiphy1.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY1"); isp->isp_csiphy2.vdd = regulator_get(&pdev->dev, "VDD_CSIPHY2"); - /* Clocks - * - * The ISP clock tree is revision-dependent. We thus need to enable ICLK - * manually to read the revision before calling __omap3isp_get(). - */ + /* Clocks */ ret = isp_map_mem_resource(pdev, isp, OMAP3_ISP_IOMEM_MAIN); if (ret < 0) goto error; @@ -2103,16 +2102,6 @@ static int __devinit isp_probe(struct platform_device *pdev) if (ret < 0) goto error; - ret = clk_enable(isp->clock[ISP_CLK_CAM_ICK]); - if (ret < 0) - goto error; - - isp->revision = isp_reg_readl(isp, OMAP3_ISP_IOMEM_MAIN, ISP_REVISION); - dev_info(isp->dev, "Revision %d.%d found\n", - (isp->revision & 0xf0) >> 4, isp->revision & 0x0f); - - clk_disable(isp->clock[ISP_CLK_CAM_ICK]); - if (__omap3isp_get(isp, false) == NULL) { ret = -ENODEV; goto error; @@ -2123,6 +2112,10 @@ static int __devinit isp_probe(struct platform_device *pdev) goto error_isp; /* Memory resources */ + isp->revision = isp_reg_readl(isp, OMAP3_ISP_IOMEM_MAIN, ISP_REVISION); + dev_info(isp->dev, "Revision %d.%d found\n", + (isp->revision & 0xf0) >> 4, isp->revision & 0x0f); + for (m = 0; m < ARRAY_SIZE(isp_res_maps); m++) if (isp->revision == isp_res_maps[m].isp_rev) break;