dm: core: device: enable power domain in probe
authorPeng Fan <peng.fan@nxp.com>
Fri, 27 Jul 2018 02:20:38 +0000 (10:20 +0800)
committerAnatolij Gustschin <agust@denx.de>
Mon, 6 Aug 2018 09:52:00 +0000 (11:52 +0200)
Enable power domain associated with the device when probe.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/core/device.c

index d5f5fc31b0359982db36e71a341779438e398b10..207d566b71d080b4b4667a85e738818d40265944 100644 (file)
@@ -26,6 +26,7 @@
 #include <dm/util.h>
 #include <linux/err.h>
 #include <linux/list.h>
+#include <power-domain.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -304,6 +305,7 @@ static void *alloc_priv(int size, uint flags)
 
 int device_probe(struct udevice *dev)
 {
+       struct power_domain pd;
        const struct driver *drv;
        int size = 0;
        int ret;
@@ -383,6 +385,11 @@ int device_probe(struct udevice *dev)
        if (dev->parent && device_get_uclass_id(dev) != UCLASS_PINCTRL)
                pinctrl_select_state(dev, "default");
 
+       if (dev->parent && device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {
+               if (!power_domain_get(dev, &pd))
+                       power_domain_on(&pd);
+       }
+
        ret = uclass_pre_probe_device(dev);
        if (ret)
                goto fail;