aboutsummaryrefslogtreecommitdiff
path: root/arch/sandbox
diff options
context:
space:
mode:
authorEtienne Carriere2021-03-08 22:38:07 +0100
committerTom Rini2021-04-12 17:17:11 -0400
commit0124218b8b4762621f5ff74bd03eb1bcb1d4e733 (patch)
tree7cd885cce66b72046930742e497cb758fd824058 /arch/sandbox
parent1f213ee4dbf249933c29d5f62fd53ec4754ab4aa (diff)
firmware: scmi: sandbox test for voltage regulator
Implement sandbox regulator devices for SCMI voltage domains and test them in DM scmi tests. Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Diffstat (limited to 'arch/sandbox')
-rw-r--r--arch/sandbox/dts/test.dts23
-rw-r--r--arch/sandbox/include/asm/scmi_test.h20
2 files changed, 43 insertions, 0 deletions
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 899e75f260c..8c4c2bfddd9 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -497,6 +497,27 @@
reg = <0x16>;
#reset-cells = <1>;
};
+
+ protocol@17 {
+ reg = <0x17>;
+
+ regulators {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ regul0_scmi0: reg@0 {
+ reg = <0>;
+ regulator-name = "sandbox-voltd0";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ regul1_scmi0: reg@1 {
+ reg = <0x1>;
+ regulator-name = "sandbox-voltd1";
+ regulator-min-microvolt = <1800000>;
+ };
+ };
+ };
};
sandbox-scmi-agent@1 {
@@ -1264,6 +1285,8 @@
compatible = "sandbox,scmi-devices";
clocks = <&clk_scmi0 7>, <&clk_scmi0 3>, <&clk_scmi1 1>;
resets = <&reset_scmi0 3>;
+ regul0-supply = <&regul0_scmi0>;
+ regul1-supply = <&regul1_scmi0>;
};
pinctrl {
diff --git a/arch/sandbox/include/asm/scmi_test.h b/arch/sandbox/include/asm/scmi_test.h
index 3e8b0068fd4..9b703153146 100644
--- a/arch/sandbox/include/asm/scmi_test.h
+++ b/arch/sandbox/include/asm/scmi_test.h
@@ -32,12 +32,26 @@ struct sandbox_scmi_reset {
};
/**
+ * struct sandbox_scmi_voltd - Simulated voltage regulator exposed by SCMI
+ * @id: Identifier of the voltage domain used in the SCMI protocol
+ * @enabled: Regulator state: true if on, false if off
+ * @voltage_uv: Regulator current voltage in microvoltd (uV)
+ */
+struct sandbox_scmi_voltd {
+ uint id;
+ bool enabled;
+ int voltage_uv;
+};
+
+/**
* 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
* @clk: Simulated reset domains
* @clk_count: Simulated reset domains array size
+ * @voltd: Simulated voltage domains (regulators)
+ * @voltd_count: Simulated voltage domains array size
*/
struct sandbox_scmi_agent {
uint idx;
@@ -45,6 +59,8 @@ struct sandbox_scmi_agent {
size_t clk_count;
struct sandbox_scmi_reset *reset;
size_t reset_count;
+ struct sandbox_scmi_voltd *voltd;
+ size_t voltd_count;
};
/**
@@ -63,12 +79,16 @@ struct sandbox_scmi_service {
* @clk_count: Number of clock devices probed
* @reset: Array the reset controller devices
* @reset_count: Number of reset controller devices probed
+ * @regul: Array regulator devices
+ * @regul_count: Number of regulator devices probed
*/
struct sandbox_scmi_devices {
struct clk *clk;
size_t clk_count;
struct reset_ctl *reset;
size_t reset_count;
+ struct udevice **regul;
+ size_t regul_count;
};
#ifdef CONFIG_SCMI_FIRMWARE