UPSTREAM: reset: add sandbox test for bulk API
This patch adds the bulk reset API tests for the sandbox test suite. Unlike the main test, it also check the "other" reset signal using the bulk API and checks if the resets are correctly asserted/deasserted. To allow the bulk API to work, and avoid changing the DT, the number of resets of the sandbox reset controller has been bumped to 101 for the "other" reset line to be valid. Change-Id: Iac62a1c6ee5637695f7d0dd77b35f047eca641a9 Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Frank Wang <frank.wang@rock-chips.com> (cherry picked from commit 91f5f8b73ccba5bf591912fe6e8c500a7d51eb93)
This commit is contained in:
parent
d794029665
commit
f7a4178d8b
|
|
@ -14,8 +14,12 @@ struct udevice;
|
||||||
int sandbox_reset_query(struct udevice *dev, unsigned long id);
|
int sandbox_reset_query(struct udevice *dev, unsigned long id);
|
||||||
|
|
||||||
int sandbox_reset_test_get(struct udevice *dev);
|
int sandbox_reset_test_get(struct udevice *dev);
|
||||||
|
int sandbox_reset_test_get_bulk(struct udevice *dev);
|
||||||
int sandbox_reset_test_assert(struct udevice *dev);
|
int sandbox_reset_test_assert(struct udevice *dev);
|
||||||
|
int sandbox_reset_test_assert_bulk(struct udevice *dev);
|
||||||
int sandbox_reset_test_deassert(struct udevice *dev);
|
int sandbox_reset_test_deassert(struct udevice *dev);
|
||||||
|
int sandbox_reset_test_deassert_bulk(struct udevice *dev);
|
||||||
int sandbox_reset_test_free(struct udevice *dev);
|
int sandbox_reset_test_free(struct udevice *dev);
|
||||||
|
int sandbox_reset_test_release_bulk(struct udevice *dev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
struct sandbox_reset_test {
|
struct sandbox_reset_test {
|
||||||
struct reset_ctl ctl;
|
struct reset_ctl ctl;
|
||||||
|
struct reset_ctl_bulk bulk;
|
||||||
};
|
};
|
||||||
|
|
||||||
int sandbox_reset_test_get(struct udevice *dev)
|
int sandbox_reset_test_get(struct udevice *dev)
|
||||||
|
|
@ -21,6 +22,13 @@ int sandbox_reset_test_get(struct udevice *dev)
|
||||||
return reset_get_by_name(dev, "test", &sbrt->ctl);
|
return reset_get_by_name(dev, "test", &sbrt->ctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sandbox_reset_test_get_bulk(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
||||||
|
return reset_get_bulk(dev, &sbrt->bulk);
|
||||||
|
}
|
||||||
|
|
||||||
int sandbox_reset_test_assert(struct udevice *dev)
|
int sandbox_reset_test_assert(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
@ -28,6 +36,13 @@ int sandbox_reset_test_assert(struct udevice *dev)
|
||||||
return reset_assert(&sbrt->ctl);
|
return reset_assert(&sbrt->ctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sandbox_reset_test_assert_bulk(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
||||||
|
return reset_assert_bulk(&sbrt->bulk);
|
||||||
|
}
|
||||||
|
|
||||||
int sandbox_reset_test_deassert(struct udevice *dev)
|
int sandbox_reset_test_deassert(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
@ -35,6 +50,13 @@ int sandbox_reset_test_deassert(struct udevice *dev)
|
||||||
return reset_deassert(&sbrt->ctl);
|
return reset_deassert(&sbrt->ctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sandbox_reset_test_deassert_bulk(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
||||||
|
return reset_deassert_bulk(&sbrt->bulk);
|
||||||
|
}
|
||||||
|
|
||||||
int sandbox_reset_test_free(struct udevice *dev)
|
int sandbox_reset_test_free(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
@ -42,6 +64,13 @@ int sandbox_reset_test_free(struct udevice *dev)
|
||||||
return reset_free(&sbrt->ctl);
|
return reset_free(&sbrt->ctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sandbox_reset_test_release_bulk(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct sandbox_reset_test *sbrt = dev_get_priv(dev);
|
||||||
|
|
||||||
|
return reset_release_bulk(&sbrt->bulk);
|
||||||
|
}
|
||||||
|
|
||||||
static const struct udevice_id sandbox_reset_test_ids[] = {
|
static const struct udevice_id sandbox_reset_test_ids[] = {
|
||||||
{ .compatible = "sandbox,reset-ctl-test" },
|
{ .compatible = "sandbox,reset-ctl-test" },
|
||||||
{ }
|
{ }
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/reset.h>
|
#include <asm/reset.h>
|
||||||
|
|
||||||
#define SANDBOX_RESET_SIGNALS 3
|
#define SANDBOX_RESET_SIGNALS 101
|
||||||
|
|
||||||
struct sandbox_reset_signal {
|
struct sandbox_reset_signal {
|
||||||
bool asserted;
|
bool asserted;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@
|
||||||
/* This must match the specifier for mbox-names="test" in the DT node */
|
/* This must match the specifier for mbox-names="test" in the DT node */
|
||||||
#define TEST_RESET_ID 2
|
#define TEST_RESET_ID 2
|
||||||
|
|
||||||
|
/* This is the other reset phandle specifier handled by bulk */
|
||||||
|
#define OTHER_RESET_ID 2
|
||||||
|
|
||||||
static int dm_test_reset(struct unit_test_state *uts)
|
static int dm_test_reset(struct unit_test_state *uts)
|
||||||
{
|
{
|
||||||
struct udevice *dev_reset;
|
struct udevice *dev_reset;
|
||||||
|
|
@ -37,3 +40,33 @@ static int dm_test_reset(struct unit_test_state *uts)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_reset, DM_TESTF_SCAN_FDT);
|
DM_TEST(dm_test_reset, DM_TESTF_SCAN_FDT);
|
||||||
|
|
||||||
|
static int dm_test_reset_bulk(struct unit_test_state *uts)
|
||||||
|
{
|
||||||
|
struct udevice *dev_reset;
|
||||||
|
struct udevice *dev_test;
|
||||||
|
|
||||||
|
ut_assertok(uclass_get_device_by_name(UCLASS_RESET, "reset-ctl",
|
||||||
|
&dev_reset));
|
||||||
|
ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID));
|
||||||
|
ut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID));
|
||||||
|
|
||||||
|
ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "reset-ctl-test",
|
||||||
|
&dev_test));
|
||||||
|
ut_assertok(sandbox_reset_test_get_bulk(dev_test));
|
||||||
|
|
||||||
|
ut_assertok(sandbox_reset_test_assert_bulk(dev_test));
|
||||||
|
ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID));
|
||||||
|
ut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID));
|
||||||
|
|
||||||
|
ut_assertok(sandbox_reset_test_deassert_bulk(dev_test));
|
||||||
|
ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID));
|
||||||
|
ut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID));
|
||||||
|
|
||||||
|
ut_assertok(sandbox_reset_test_release_bulk(dev_test));
|
||||||
|
ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID));
|
||||||
|
ut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
DM_TEST(dm_test_reset_bulk, DM_TESTF_SCAN_FDT);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue