|
@@ -129,6 +129,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
|
|
|
struct device_node *node = pdev->dev.of_node;
|
|
|
const char *oh_name;
|
|
|
int oh_cnt, i, ret = 0;
|
|
|
+ bool device_active = false;
|
|
|
|
|
|
oh_cnt = of_property_count_strings(node, "ti,hwmods");
|
|
|
if (oh_cnt <= 0) {
|
|
@@ -152,6 +153,8 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
|
|
|
goto odbfd_exit1;
|
|
|
}
|
|
|
hwmods[i] = oh;
|
|
|
+ if (oh->flags & HWMOD_INIT_NO_IDLE)
|
|
|
+ device_active = true;
|
|
|
}
|
|
|
|
|
|
od = omap_device_alloc(pdev, hwmods, oh_cnt);
|
|
@@ -172,6 +175,11 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
|
|
|
|
|
|
pdev->dev.pm_domain = &omap_device_pm_domain;
|
|
|
|
|
|
+ if (device_active) {
|
|
|
+ omap_device_enable(pdev);
|
|
|
+ pm_runtime_set_active(&pdev->dev);
|
|
|
+ }
|
|
|
+
|
|
|
odbfd_exit1:
|
|
|
kfree(hwmods);
|
|
|
odbfd_exit:
|