]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
amba: Add support for attach/detach of PM domains
authorUlf Hansson <ulf.hansson@linaro.org>
Fri, 19 Sep 2014 18:27:42 +0000 (20:27 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 22 Sep 2014 13:57:40 +0000 (15:57 +0200)
AMBA devices may on some SoCs resides in PM domains. To be able to
manage these devices from there, let's try to attach devices to their
corresponding PM domain during the probe phase.

To reverse these actions at the remove phase, we try to detach the
device from its PM domain.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/amba/bus.c

index 3cf61a127ee54623f5dc4e99e5e5a0ad46868797..8f5239377f91bca70e1fccf876369bdfc8db1a03 100644 (file)
@@ -182,9 +182,15 @@ static int amba_probe(struct device *dev)
        int ret;
 
        do {
+               ret = dev_pm_domain_attach(dev, true);
+               if (ret == -EPROBE_DEFER)
+                       break;
+
                ret = amba_get_enable_pclk(pcdev);
-               if (ret)
+               if (ret) {
+                       dev_pm_domain_detach(dev, true);
                        break;
+               }
 
                pm_runtime_get_noresume(dev);
                pm_runtime_set_active(dev);
@@ -199,6 +205,7 @@ static int amba_probe(struct device *dev)
                pm_runtime_put_noidle(dev);
 
                amba_put_disable_pclk(pcdev);
+               dev_pm_domain_detach(dev, true);
        } while (0);
 
        return ret;
@@ -220,6 +227,7 @@ static int amba_remove(struct device *dev)
        pm_runtime_put_noidle(dev);
 
        amba_put_disable_pclk(pcdev);
+       dev_pm_domain_detach(dev, true);
 
        return ret;
 }