Merge tag 'omap-for-v4.14/fixes-not-urgent-v2-signed' of git://git.kernel.org/pub...
authorArnd Bergmann <arnd@arndb.de>
Fri, 18 Aug 2017 22:07:56 +0000 (00:07 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 18 Aug 2017 22:07:56 +0000 (00:07 +0200)
Pull "non-urgent fixes for omaps for v4.14" from Tony Lindgren:

Non-urgent fixes for omaps for v4.14 merge window. These all
can wait for the merge window as we have not seemed to hit
any of these so far:

- Fix error handling in omap_ocp2scp_probe affecting runtime
  PM error path

- Drop broken RPM status update for omap_device

- Two fixes for of_irq_get() usage that can return 0

* tag 'omap-for-v4.14/fixes-not-urgent-v2-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP4+: PRM: fix of_irq_get() result checks
  ARM: OMAP3+: PRM: fix of_irq_get() result check
  ARM: OMAP2+: omap_device: drop broken RPM status update from suspend_noirq
  bus: omap-ocp2scp: Fix error handling in omap_ocp2scp_probe

arch/arm/mach-omap2/omap_device.c
arch/arm/mach-omap2/prm3xxx.c
arch/arm/mach-omap2/prm44xx.c
drivers/bus/omap-ocp2scp.c

index ef9ffb8ac9126d6cc744475d9a12f2f90994404e..acbede082b5b54f29a36e2cfd08f9bd23d1d7246 100644 (file)
@@ -672,7 +672,6 @@ static int _od_suspend_noirq(struct device *dev)
 
        if (!ret && !pm_runtime_status_suspended(dev)) {
                if (pm_generic_runtime_suspend(dev) == 0) {
-                       pm_runtime_set_suspended(dev);
                        omap_device_idle(pdev);
                        od->flags |= OMAP_DEVICE_SUSPENDED;
                }
@@ -689,15 +688,6 @@ static int _od_resume_noirq(struct device *dev)
        if (od->flags & OMAP_DEVICE_SUSPENDED) {
                od->flags &= ~OMAP_DEVICE_SUSPENDED;
                omap_device_enable(pdev);
-               /*
-                * XXX: we run before core runtime pm has resumed itself. At
-                * this point in time, we just restore the runtime pm state and
-                * considering symmetric operations in resume, we donot expect
-                * to fail. If we failed, something changed in core runtime_pm
-                * framework OR some device driver messed things up, hence, WARN
-                */
-               WARN(pm_runtime_set_active(dev),
-                    "Could not set %s runtime state active\n", dev_name(dev));
                pm_generic_runtime_resume(dev);
        }
 
index 64f6451499a795de85fd451903de1d9aef59ba7a..a2dd13217c891d269d6832ab014130ad66e1b986 100644 (file)
@@ -706,7 +706,7 @@ static int omap3xxx_prm_late_init(void)
        np = of_find_matching_node(NULL, omap3_prm_dt_match_table);
        if (np) {
                irq_num = of_irq_get(np, 0);
-               if (irq_num >= 0)
+               if (irq_num > 0)
                        omap3_prcm_irq_setup.irq = irq_num;
        }
 
index 3ab5df1ce900b26f91b8b582a36188bd281c6c3c..1c0c1663f078ae583c0b43350c01c2379c85e276 100644 (file)
@@ -747,7 +747,7 @@ static int omap44xx_prm_late_init(void)
         * Already have OMAP4 IRQ num. For all other platforms, we need
         * IRQ numbers from DT
         */
-       if (irq_num < 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) {
+       if (irq_num <= 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) {
                if (irq_num == -EPROBE_DEFER)
                        return irq_num;
 
@@ -756,7 +756,7 @@ static int omap44xx_prm_late_init(void)
        }
 
        /* Once OMAP4 DT is filled as well */
-       if (irq_num >= 0) {
+       if (irq_num > 0) {
                omap4_prcm_irq_setup.irq = irq_num;
                omap4_prcm_irq_setup.xlate_irq = NULL;
        }
index bf500e0e7362baf72f7a4321e5fda55dc4355f9b..77791f3dcfc657f3537c6aca29c9a9488ff4949f 100644 (file)
@@ -70,8 +70,10 @@ static int omap_ocp2scp_probe(struct platform_device *pdev)
        if (!of_device_is_compatible(np, "ti,am437x-ocp2scp")) {
                res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
                regs = devm_ioremap_resource(&pdev->dev, res);
-               if (IS_ERR(regs))
-                       goto err0;
+               if (IS_ERR(regs)) {
+                       ret = PTR_ERR(regs);
+                       goto err1;
+               }
 
                pm_runtime_get_sync(&pdev->dev);
                reg = readl_relaxed(regs + OCP2SCP_TIMING);
@@ -83,6 +85,9 @@ static int omap_ocp2scp_probe(struct platform_device *pdev)
 
        return 0;
 
+err1:
+       pm_runtime_disable(&pdev->dev);
+
 err0:
        device_for_each_child(&pdev->dev, NULL, ocp2scp_remove_devices);