Add a power domain framework/uclass
Many SoCs allow power to be applied to or removed from portions of the SoC (power domains). This may be used to save power. This API provides the means to control such power management hardware. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Simon Glass
parent
1e2b3ef865
commit
61f5ddcb7a
@@ -24,6 +24,7 @@ obj-$(CONFIG_LED) += led.o
|
||||
obj-$(CONFIG_DM_MAILBOX) += mailbox.o
|
||||
obj-$(CONFIG_DM_MMC) += mmc.o
|
||||
obj-$(CONFIG_DM_PCI) += pci.o
|
||||
obj-$(CONFIG_POWER_DOMAIN) += power-domain.o
|
||||
obj-$(CONFIG_RAM) += ram.o
|
||||
obj-y += regmap.o
|
||||
obj-$(CONFIG_REMOTEPROC) += remoteproc.o
|
||||
|
||||
46
test/dm/power-domain.c
Normal file
46
test/dm/power-domain.c
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (c) 2016, NVIDIA CORPORATION.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <dm/test.h>
|
||||
#include <asm/power-domain.h>
|
||||
#include <test/ut.h>
|
||||
|
||||
/* This must match the specifier for power-domains in the DT node */
|
||||
#define TEST_POWER_DOMAIN 2
|
||||
|
||||
static int dm_test_power_domain(struct unit_test_state *uts)
|
||||
{
|
||||
struct udevice *dev_power_domain;
|
||||
struct udevice *dev_test;
|
||||
|
||||
ut_assertok(uclass_get_device_by_name(UCLASS_POWER_DOMAIN,
|
||||
"power-domain",
|
||||
&dev_power_domain));
|
||||
ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
|
||||
ut_asserteq(0, sandbox_power_domain_query(dev_power_domain,
|
||||
TEST_POWER_DOMAIN));
|
||||
|
||||
ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "power-domain-test",
|
||||
&dev_test));
|
||||
ut_assertok(sandbox_power_domain_test_get(dev_test));
|
||||
|
||||
ut_assertok(sandbox_power_domain_test_on(dev_test));
|
||||
ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
|
||||
ut_asserteq(1, sandbox_power_domain_query(dev_power_domain,
|
||||
TEST_POWER_DOMAIN));
|
||||
|
||||
ut_assertok(sandbox_power_domain_test_off(dev_test));
|
||||
ut_asserteq(0, sandbox_power_domain_query(dev_power_domain, 0));
|
||||
ut_asserteq(0, sandbox_power_domain_query(dev_power_domain,
|
||||
TEST_POWER_DOMAIN));
|
||||
|
||||
ut_assertok(sandbox_power_domain_test_free(dev_test));
|
||||
|
||||
return 0;
|
||||
}
|
||||
DM_TEST(dm_test_power_domain, DM_TESTF_SCAN_FDT);
|
||||
Reference in New Issue
Block a user