1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2020, Linaro Limited 4 */ 5 6 #ifndef __SANDBOX_SCMI_TEST_H 7 #define __SANDBOX_SCMI_TEST_H 8 9 struct udevice; 10 struct sandbox_scmi_agent; 11 struct sandbox_scmi_service; 12 13 /** 14 * struct sandbox_scmi_clk - Simulated clock exposed by SCMI 15 * @id: Identifier of the clock used in the SCMI protocol 16 * @enabled: Clock state: true if enabled, false if disabled 17 * @rate: Clock rate in Hertz 18 */ 19 struct sandbox_scmi_clk { 20 bool enabled; 21 ulong rate; 22 }; 23 24 /** 25 * struct sandbox_scmi_reset - Simulated reset controller exposed by SCMI 26 * @id: Identifier of the reset controller used in the SCMI protocol 27 * @asserted: Reset control state: true if asserted, false if desasserted 28 */ 29 struct sandbox_scmi_reset { 30 uint id; 31 bool asserted; 32 }; 33 34 /** 35 * struct sandbox_scmi_voltd - Simulated voltage regulator exposed by SCMI 36 * @id: Identifier of the voltage domain used in the SCMI protocol 37 * @enabled: Regulator state: true if on, false if off 38 * @voltage_uv: Regulator current voltage in microvoltd (uV) 39 */ 40 struct sandbox_scmi_voltd { 41 uint id; 42 bool enabled; 43 int voltage_uv; 44 }; 45 46 /** 47 * struct sandbox_scmi_agent - Simulated SCMI service seen by SCMI agent 48 * @clk: Simulated clocks 49 * @clk_count: Simulated clocks array size 50 * @reset: Simulated reset domains 51 * @reset_count: Simulated reset domains array size 52 * @voltd: Simulated voltage domains (regulators) 53 * @voltd_count: Simulated voltage domains array size 54 */ 55 struct sandbox_scmi_agent { 56 struct sandbox_scmi_clk *clk; 57 size_t clk_count; 58 struct sandbox_scmi_reset *reset; 59 size_t reset_count; 60 struct sandbox_scmi_voltd *voltd; 61 size_t voltd_count; 62 }; 63 64 /** 65 * struct sandbox_scmi_service - Reference to simutaed SCMI agents/services 66 * @agent: Pointer to SCMI sandbox agent or NULL if not probed 67 */ 68 struct sandbox_scmi_service { 69 struct sandbox_scmi_agent *agent; 70 }; 71 72 /** 73 * struct sandbox_scmi_devices - Reference to devices probed through SCMI 74 * @clk: Array the clock devices 75 * @clk_count: Number of clock devices probed 76 * @reset: Array the reset controller devices 77 * @reset_count: Number of reset controller devices probed 78 * @regul: Array regulator devices 79 * @regul_count: Number of regulator devices probed 80 */ 81 struct sandbox_scmi_devices { 82 struct clk *clk; 83 size_t clk_count; 84 struct reset_ctl *reset; 85 size_t reset_count; 86 struct udevice **regul; 87 size_t regul_count; 88 }; 89 90 #ifdef CONFIG_SCMI_FIRMWARE 91 /** 92 * sandbox_scmi_service_ctx - Get the simulated SCMI services context 93 * @return: Reference to backend simulated resources state 94 */ 95 struct sandbox_scmi_service *sandbox_scmi_service_ctx(void); 96 97 /** 98 * sandbox_scmi_devices_ctx - Get references to devices accessed through SCMI 99 * @dev: Reference to the test device used get test resources 100 * @return: Reference to the devices probed by the SCMI test 101 */ 102 struct sandbox_scmi_devices *sandbox_scmi_devices_ctx(struct udevice *dev); 103 #else sandbox_scmi_service_ctx(void)104static inline struct sandbox_scmi_service *sandbox_scmi_service_ctx(void) 105 { 106 return NULL; 107 } 108 109 static inline sandbox_scmi_devices_ctx(struct udevice * dev)110struct sandbox_scmi_devices *sandbox_scmi_devices_ctx(struct udevice *dev) 111 { 112 return NULL; 113 } 114 #endif /* CONFIG_SCMI_FIRMWARE */ 115 #endif /* __SANDBOX_SCMI_TEST_H */ 116