[PATCH v5 04/16] test: dm: add protocol-specific channel test
AKASHI Takahiro
takahiro.akashi at linaro.org
Tue Sep 26 08:57:38 CEST 2023
Any SCMI protocol may have its own channel.
Test this feature on sandbox as the necessary framework was added
in a prior commit.
Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
---
v5
* new commit
---
arch/sandbox/dts/test.dts | 1 +
test/dm/scmi.c | 20 ++++++++++++++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index f351d5cb84b0..5e2bf8623dff 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -700,6 +700,7 @@
clk_scmi: protocol at 14 {
reg = <0x14>;
#clock-cells = <1>;
+ linaro,sandbox-channel-id = <0x14>;
};
reset_scmi: protocol at 16 {
diff --git a/test/dm/scmi.c b/test/dm/scmi.c
index d87e2731ce42..e4fb1bc635cb 100644
--- a/test/dm/scmi.c
+++ b/test/dm/scmi.c
@@ -109,7 +109,7 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts)
struct sandbox_scmi_devices *scmi_devices;
struct sandbox_scmi_service *scmi_ctx;
struct sandbox_scmi_agent *agent;
- struct udevice *dev;
+ struct udevice *agent_dev, *clock_dev, *dev;
int ret_dev;
int ret;
@@ -124,6 +124,14 @@ static int dm_test_scmi_clocks(struct unit_test_state *uts)
agent = scmi_ctx->agent;
ut_assertnonnull(agent);
+ /* Sandbox SCMI clock protocol has its own channel */
+ ut_assertok(uclass_get_device_by_name(UCLASS_SCMI_AGENT, "scmi",
+ &agent_dev));
+ ut_assertnonnull(agent_dev);
+ clock_dev = scmi_get_protocol(agent_dev, SCMI_PROTOCOL_ID_CLOCK);
+ ut_assertnonnull(clock_dev);
+ ut_asserteq(0x14, sandbox_scmi_channel_id(clock_dev));
+
/* Test SCMI clocks rate manipulation */
ut_asserteq(333, agent->clk[0].rate);
ut_asserteq(200, agent->clk[1].rate);
@@ -172,7 +180,7 @@ static int dm_test_scmi_resets(struct unit_test_state *uts)
struct sandbox_scmi_devices *scmi_devices;
struct sandbox_scmi_service *scmi_ctx;
struct sandbox_scmi_agent *agent;
- struct udevice *dev = NULL;
+ struct udevice *agent_dev, *reset_dev, *dev = NULL;
int ret;
ret = load_sandbox_scmi_test_devices(uts, &dev);
@@ -186,6 +194,14 @@ static int dm_test_scmi_resets(struct unit_test_state *uts)
agent = scmi_ctx->agent;
ut_assertnonnull(agent);
+ /* Sandbox SCMI reset protocol doesn't have its own channel */
+ ut_assertok(uclass_get_device_by_name(UCLASS_SCMI_AGENT, "scmi",
+ &agent_dev));
+ ut_assertnonnull(agent_dev);
+ reset_dev = scmi_get_protocol(agent_dev, SCMI_PROTOCOL_ID_RESET_DOMAIN);
+ ut_assertnonnull(reset_dev);
+ ut_asserteq(0x0, sandbox_scmi_channel_id(reset_dev));
+
/* Test SCMI resect controller manipulation */
ut_assert(!agent->reset[0].asserted);
--
2.34.1
More information about the U-Boot
mailing list