Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7268032d authored by Rajendra Nayak's avatar Rajendra Nayak Committed by Paul Walmsley
Browse files

ARM: OMAP2+: Sync hwmod state with the pm_runtime and omap_device state



Some hwmods which are marked with HWMOD_INIT_NO_IDLE are left in enabled
state post setup(). When a omap_device gets created for such hwmods
make sure the omap_device and pm_runtime states are also in sync for such
hwmods by doing a omap_device_enable() and pm_runtime_set_active() for the
device.

Signed-off-by: default avatarRajendra Nayak <rnayak@ti.com>
Tested-by: default avatarMark Jackson <mpfj-list@newflow.co.uk>
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent f66e329d
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -129,6 +129,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
	struct device_node *node = pdev->dev.of_node;
	struct device_node *node = pdev->dev.of_node;
	const char *oh_name;
	const char *oh_name;
	int oh_cnt, i, ret = 0;
	int oh_cnt, i, ret = 0;
	bool device_active = false;


	oh_cnt = of_property_count_strings(node, "ti,hwmods");
	oh_cnt = of_property_count_strings(node, "ti,hwmods");
	if (oh_cnt <= 0) {
	if (oh_cnt <= 0) {
@@ -152,6 +153,8 @@ static int omap_device_build_from_dt(struct platform_device *pdev)
			goto odbfd_exit1;
			goto odbfd_exit1;
		}
		}
		hwmods[i] = oh;
		hwmods[i] = oh;
		if (oh->flags & HWMOD_INIT_NO_IDLE)
			device_active = true;
	}
	}


	od = omap_device_alloc(pdev, hwmods, oh_cnt);
	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;
	pdev->dev.pm_domain = &omap_device_pm_domain;


	if (device_active) {
		omap_device_enable(pdev);
		pm_runtime_set_active(&pdev->dev);
	}

odbfd_exit1:
odbfd_exit1:
	kfree(hwmods);
	kfree(hwmods);
odbfd_exit:
odbfd_exit: