[media] omap3isp: Replace cpu_is_omap3630() with ISP revision check
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 27 Sep 2012 13:38:18 +0000 (10:38 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 28 Nov 2012 12:54:46 +0000 (10:54 -0200)
Drivers must not rely on cpu_is_omap* macros (they will soon become
private). Use the ISP revision instead to identify the hardware.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/omap3isp/isp.c

index 7da622e..b34bf92 100644 (file)
@@ -1350,10 +1350,7 @@ 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
         */
-       if (cpu_is_omap3630())
-               divisor = 1;
-       else
-               divisor = 2;
+       divisor = isp->revision == ISP_REVISION_15_0 ? 1 : 2;
 
        r = clk_prepare_enable(isp->clock[ISP_CLK_CAM_ICK]);
        if (r) {
@@ -2111,7 +2108,11 @@ 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 */
+       /* Clocks
+        *
+        * The ISP clock tree is revision-dependent. We thus need to enable ICLK
+        * manually to read the revision before calling __omap3isp_get().
+        */
        ret = isp_map_mem_resource(pdev, isp, OMAP3_ISP_IOMEM_MAIN);
        if (ret < 0)
                goto error;
@@ -2120,6 +2121,16 @@ 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;
@@ -2130,10 +2141,6 @@ 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;