mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-24 04:34:22 +08:00
test: dm: add protocol-specific channel test
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@linaro.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
This commit is contained in:
parent
55de62baa1
commit
a89d9f41e0
@ -739,6 +739,7 @@
|
||||
clk_scmi: protocol@14 {
|
||||
reg = <0x14>;
|
||||
#clock-cells = <1>;
|
||||
linaro,sandbox-channel-id = <0x14>;
|
||||
};
|
||||
|
||||
reset_scmi: protocol@16 {
|
||||
|
@ -16,6 +16,8 @@
|
||||
#include <clk.h>
|
||||
#include <dm.h>
|
||||
#include <reset.h>
|
||||
#include <scmi_agent.h>
|
||||
#include <scmi_protocols.h>
|
||||
#include <asm/scmi_test.h>
|
||||
#include <dm/device-internal.h>
|
||||
#include <dm/test.h>
|
||||
@ -109,7 +111,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 +126,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 +182,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 +196,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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user