diff options
author | Patrick Delaunay <patrick.delaunay@foss.st.com> | 2022-11-25 12:56:29 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-12-08 09:29:02 -0500 |
commit | 55b0affd26e5b31868893faf3e69c41157ce56a6 (patch) | |
tree | 13e59c7abe5263eb218ca2ea120e76e4d30fca80 | |
parent | 28f924f2650ed2229fd712620c36a41dc0610fcb (diff) | |
download | u-boot-55b0affd26e5b31868893faf3e69c41157ce56a6.tar.gz u-boot-55b0affd26e5b31868893faf3e69c41157ce56a6.tar.bz2 u-boot-55b0affd26e5b31868893faf3e69c41157ce56a6.zip |
firmware: scmi: use protocol node name to bind the scmi regulator driver
In scmi firmware driver, it is better to bind the scmi protocol driver
"scmi_voltage_domain" with the node name of the protocol 17 and not
the sub-node named "regulator", because is a fixed string which doesn't
provide information and because it is not aligned with the other scmi
protocol nodes.
For example on stm32mp135f-dk board with device tree in stm32mp131.dtsi
scmi: scmi {
compatible = "linaro,scmi-optee";
#address-cells = <1>;
#size-cells = <0>;
linaro,optee-channel-id = <0>;
shmem = <&scmi_shm>;
scmi_clk: protocol@14 {
reg = <0x14>;
#clock-cells = <1>;
};
scmi_reset: protocol@16 {
reg = <0x16>;
#reset-cells = <1>;
};
scmi_voltd: protocol@17 {
reg = <0x17>;
scmi_regu: regulators {
#address-cells = <1>;
#size-cells = <0>;
scmi_reg11: voltd-reg11 {
reg = <VOLTD_SCMI_REG11>;
regulator-name = "reg11";
};
scmi_reg18: voltd-reg18 {
reg = <VOLTD_SCMI_REG18>;
regulator-name = "reg18";
};
scmi_usb33: voltd-usb33 {
reg = <VOLTD_SCMI_USB33>;
regulator-name = "usb33";
};
};
};
};
Before the patch:
> dm tree
scmi_agent 0 [ + ] scmi-over-optee |-- scmi
clk 1 [ + ] scmi_clk | |-- protocol@14
...
reset 1 [ ] scmi_reset_domain | |-- protocol@16
nop 2 [ + ] scmi_voltage_domain | `-- regulators
regulator 0 [ + ] scmi_regulator | |-- voltd-reg11
regulator 1 [ + ] scmi_regulator | |-- voltd-reg18
regulator 2 [ + ] scmi_regulator | |-- voltd-usb33
...
after the patch:
> dm tree
scmi_agent 0 [ + ] scmi-over-optee |-- scmi
clk 1 [ + ] scmi_clk | |-- protocol@14
...
reset 1 [ ] scmi_reset_domain | |-- protocol@16
nop 2 [ + ] scmi_voltage_domain | `-- protocol@17
regulator 0 [ + ] scmi_regulator | |-- voltd-reg11
regulator 1 [ + ] scmi_regulator | |-- voltd-reg18
regulator 2 [ + ] scmi_regulator | |-- voltd-usb33
...
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
-rw-r--r-- | drivers/firmware/scmi/scmi_agent-uclass.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/firmware/scmi/scmi_agent-uclass.c b/drivers/firmware/scmi/scmi_agent-uclass.c index 8f48de30c8..9a32678617 100644 --- a/drivers/firmware/scmi/scmi_agent-uclass.c +++ b/drivers/firmware/scmi/scmi_agent-uclass.c @@ -60,6 +60,7 @@ static int scmi_bind_protocols(struct udevice *dev) { int ret = 0; ofnode node; + const char *name; dev_for_each_subnode(node, dev) { struct driver *drv = NULL; @@ -71,6 +72,7 @@ static int scmi_bind_protocols(struct udevice *dev) if (ofnode_read_u32(node, "reg", &protocol_id)) continue; + name = ofnode_get_name(node); switch (protocol_id) { case SCMI_PROTOCOL_ID_CLOCK: if (IS_ENABLED(CONFIG_CLK_SCMI)) @@ -100,8 +102,7 @@ static int scmi_bind_protocols(struct udevice *dev) continue; } - ret = device_bind(dev, drv, ofnode_get_name(node), NULL, node, - NULL); + ret = device_bind(dev, drv, name, NULL, node, NULL); if (ret) break; } |