14581b717SStephen Warren /* 24581b717SStephen Warren * Copyright (c) 2016, NVIDIA CORPORATION. 34581b717SStephen Warren * 44581b717SStephen Warren * SPDX-License-Identifier: GPL-2.0 54581b717SStephen Warren */ 64581b717SStephen Warren 74581b717SStephen Warren #include <common.h> 84581b717SStephen Warren #include <dm.h> 94581b717SStephen Warren #include <dm/test.h> 104581b717SStephen Warren #include <asm/reset.h> 114581b717SStephen Warren #include <test/ut.h> 124581b717SStephen Warren 134581b717SStephen Warren /* This must match the specifier for mbox-names="test" in the DT node */ 144581b717SStephen Warren #define TEST_RESET_ID 2 154581b717SStephen Warren 16*91f5f8b7SNeil Armstrong /* This is the other reset phandle specifier handled by bulk */ 17*91f5f8b7SNeil Armstrong #define OTHER_RESET_ID 2 18*91f5f8b7SNeil Armstrong 194581b717SStephen Warren static int dm_test_reset(struct unit_test_state *uts) 204581b717SStephen Warren { 214581b717SStephen Warren struct udevice *dev_reset; 224581b717SStephen Warren struct udevice *dev_test; 234581b717SStephen Warren 244581b717SStephen Warren ut_assertok(uclass_get_device_by_name(UCLASS_RESET, "reset-ctl", 254581b717SStephen Warren &dev_reset)); 264581b717SStephen Warren ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 274581b717SStephen Warren 284581b717SStephen Warren ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "reset-ctl-test", 294581b717SStephen Warren &dev_test)); 304581b717SStephen Warren ut_assertok(sandbox_reset_test_get(dev_test)); 314581b717SStephen Warren 324581b717SStephen Warren ut_assertok(sandbox_reset_test_assert(dev_test)); 334581b717SStephen Warren ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 344581b717SStephen Warren 354581b717SStephen Warren ut_assertok(sandbox_reset_test_deassert(dev_test)); 364581b717SStephen Warren ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 374581b717SStephen Warren 384581b717SStephen Warren ut_assertok(sandbox_reset_test_free(dev_test)); 394581b717SStephen Warren 404581b717SStephen Warren return 0; 414581b717SStephen Warren } 424581b717SStephen Warren DM_TEST(dm_test_reset, DM_TESTF_SCAN_FDT); 43*91f5f8b7SNeil Armstrong 44*91f5f8b7SNeil Armstrong static int dm_test_reset_bulk(struct unit_test_state *uts) 45*91f5f8b7SNeil Armstrong { 46*91f5f8b7SNeil Armstrong struct udevice *dev_reset; 47*91f5f8b7SNeil Armstrong struct udevice *dev_test; 48*91f5f8b7SNeil Armstrong 49*91f5f8b7SNeil Armstrong ut_assertok(uclass_get_device_by_name(UCLASS_RESET, "reset-ctl", 50*91f5f8b7SNeil Armstrong &dev_reset)); 51*91f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 52*91f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 53*91f5f8b7SNeil Armstrong 54*91f5f8b7SNeil Armstrong ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "reset-ctl-test", 55*91f5f8b7SNeil Armstrong &dev_test)); 56*91f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_get_bulk(dev_test)); 57*91f5f8b7SNeil Armstrong 58*91f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_assert_bulk(dev_test)); 59*91f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 60*91f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 61*91f5f8b7SNeil Armstrong 62*91f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_deassert_bulk(dev_test)); 63*91f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 64*91f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 65*91f5f8b7SNeil Armstrong 66*91f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_release_bulk(dev_test)); 67*91f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 68*91f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 69*91f5f8b7SNeil Armstrong 70*91f5f8b7SNeil Armstrong return 0; 71*91f5f8b7SNeil Armstrong } 72*91f5f8b7SNeil Armstrong DM_TEST(dm_test_reset_bulk, DM_TESTF_SCAN_FDT); 73