1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0 24581b717SStephen Warren /* 34581b717SStephen Warren * Copyright (c) 2016, NVIDIA CORPORATION. 44581b717SStephen Warren */ 54581b717SStephen Warren 64581b717SStephen Warren #include <common.h> 74581b717SStephen Warren #include <dm.h> 84581b717SStephen Warren #include <dm/test.h> 94581b717SStephen Warren #include <asm/reset.h> 104581b717SStephen Warren #include <test/ut.h> 114581b717SStephen Warren 124581b717SStephen Warren /* This must match the specifier for mbox-names="test" in the DT node */ 134581b717SStephen Warren #define TEST_RESET_ID 2 144581b717SStephen Warren 1591f5f8b7SNeil Armstrong /* This is the other reset phandle specifier handled by bulk */ 1691f5f8b7SNeil Armstrong #define OTHER_RESET_ID 2 1791f5f8b7SNeil Armstrong 184581b717SStephen Warren static int dm_test_reset(struct unit_test_state *uts) 194581b717SStephen Warren { 204581b717SStephen Warren struct udevice *dev_reset; 214581b717SStephen Warren struct udevice *dev_test; 224581b717SStephen Warren 234581b717SStephen Warren ut_assertok(uclass_get_device_by_name(UCLASS_RESET, "reset-ctl", 244581b717SStephen Warren &dev_reset)); 254581b717SStephen Warren ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 264581b717SStephen Warren 274581b717SStephen Warren ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "reset-ctl-test", 284581b717SStephen Warren &dev_test)); 294581b717SStephen Warren ut_assertok(sandbox_reset_test_get(dev_test)); 304581b717SStephen Warren 314581b717SStephen Warren ut_assertok(sandbox_reset_test_assert(dev_test)); 324581b717SStephen Warren ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 334581b717SStephen Warren 344581b717SStephen Warren ut_assertok(sandbox_reset_test_deassert(dev_test)); 354581b717SStephen Warren ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 364581b717SStephen Warren 374581b717SStephen Warren ut_assertok(sandbox_reset_test_free(dev_test)); 384581b717SStephen Warren 394581b717SStephen Warren return 0; 404581b717SStephen Warren } 414581b717SStephen Warren DM_TEST(dm_test_reset, DM_TESTF_SCAN_FDT); 4291f5f8b7SNeil Armstrong 4391f5f8b7SNeil Armstrong static int dm_test_reset_bulk(struct unit_test_state *uts) 4491f5f8b7SNeil Armstrong { 4591f5f8b7SNeil Armstrong struct udevice *dev_reset; 4691f5f8b7SNeil Armstrong struct udevice *dev_test; 4791f5f8b7SNeil Armstrong 4891f5f8b7SNeil Armstrong ut_assertok(uclass_get_device_by_name(UCLASS_RESET, "reset-ctl", 4991f5f8b7SNeil Armstrong &dev_reset)); 5091f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 5191f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 5291f5f8b7SNeil Armstrong 5391f5f8b7SNeil Armstrong ut_assertok(uclass_get_device_by_name(UCLASS_MISC, "reset-ctl-test", 5491f5f8b7SNeil Armstrong &dev_test)); 5591f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_get_bulk(dev_test)); 5691f5f8b7SNeil Armstrong 5791f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_assert_bulk(dev_test)); 5891f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 5991f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 6091f5f8b7SNeil Armstrong 6191f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_deassert_bulk(dev_test)); 6291f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 6391f5f8b7SNeil Armstrong ut_asserteq(0, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 6491f5f8b7SNeil Armstrong 6591f5f8b7SNeil Armstrong ut_assertok(sandbox_reset_test_release_bulk(dev_test)); 6691f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, TEST_RESET_ID)); 6791f5f8b7SNeil Armstrong ut_asserteq(1, sandbox_reset_query(dev_reset, OTHER_RESET_ID)); 6891f5f8b7SNeil Armstrong 6991f5f8b7SNeil Armstrong return 0; 7091f5f8b7SNeil Armstrong } 7191f5f8b7SNeil Armstrong DM_TEST(dm_test_reset_bulk, DM_TESTF_SCAN_FDT); 72