summaryrefslogtreecommitdiff
path: root/arch/sandbox/include/asm/scmi_test.h
blob: 63093fdb4d4e42e9b0cf9c9a27ae6cbade919651 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2020, Linaro Limited
 */

#ifndef __SANDBOX_SCMI_TEST_H
#define __SANDBOX_SCMI_TEST_H

struct udevice;
struct sandbox_scmi_agent;
struct sandbox_scmi_service;

/**
 * struct sandbox_scmi_clk - Simulated clock exposed by SCMI
 * @id:		Identifier of the clock used in the SCMI protocol
 * @enabled:	Clock state: true if enabled, false if disabled
 * @rate:	Clock rate in Hertz
 */
struct sandbox_scmi_clk {
	uint id;
	bool enabled;
	ulong rate;
};

/**
 * struct sandbox_scmi_agent - Simulated SCMI service seen by SCMI agent
 * @idx:	Identifier for the SCMI agent, its index
 * @clk:	Simulated clocks
 * @clk_count:	Simulated clocks array size
 */
struct sandbox_scmi_agent {
	uint idx;
	struct sandbox_scmi_clk *clk;
	size_t clk_count;
};

/**
 * struct sandbox_scmi_service - Reference to simutaed SCMI agents/services
 * @agent:		Pointer to SCMI sandbox agent pointers array
 * @agent_count:	Number of emulated agents exposed in array @agent.
 */
struct sandbox_scmi_service {
	struct sandbox_scmi_agent **agent;
	size_t agent_count;
};

/**
 * struct sandbox_scmi_devices - Reference to devices probed through SCMI
 * @clk:		Array the clock devices
 * @clk_count:		Number of clock devices probed
 */
struct sandbox_scmi_devices {
	struct clk *clk;
	size_t clk_count;
};

#ifdef CONFIG_SCMI_FIRMWARE
/**
 * sandbox_scmi_service_context - Get the simulated SCMI services context
 * @return:	Reference to backend simulated resources state
 */
struct sandbox_scmi_service *sandbox_scmi_service_ctx(void);

/**
 * sandbox_scmi_devices_get_ref - Get references to devices accessed through SCMI
 * @dev:	Reference to the test device used get test resources
 * @return:	Reference to the devices probed by the SCMI test
 */
struct sandbox_scmi_devices *sandbox_scmi_devices_ctx(struct udevice *dev);
#else
static inline struct sandbox_scmi_service *sandbox_scmi_service_ctx(void)
{
	return NULL;
}

static inline
struct sandbox_scmi_devices *sandbox_scmi_devices_ctx(struct udevice *dev)
{
	return NULL;
}
#endif /* CONFIG_SCMI_FIRMWARE */
#endif /* __SANDBOX_SCMI_TEST_H */