diff options
| author | Alice Guo <[email protected]> | 2025-04-28 18:37:27 +0800 |
|---|---|---|
| committer | Fabio Estevam <[email protected]> | 2025-05-03 16:55:32 -0300 |
| commit | bf2ea4fde7c3bcf8509fd0fe49670faa639d5d80 (patch) | |
| tree | 366722214312580fb09dff9d3aaac8cff487b801 /drivers | |
| parent | 8706d383ad0ebcaf92b1dd1799b310f96cfb36f3 (diff) | |
firmware: scmi_agent: add SCMI pin control protocol support
This patch adds SCMI pin control protocol support to make the pin
controller driver based on SCMI, such as
drivers/pinctrl/nxp/pinctrl-imx-scmi.c, can be bound to the SCMI agent
device whose protocol id is 0x19.
Signed-off-by: Alice Guo <[email protected]>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/firmware/scmi/scmi_agent-uclass.c | 6 | ||||
| -rw-r--r-- | drivers/pinctrl/nxp/pinctrl-imx-scmi.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/firmware/scmi/scmi_agent-uclass.c b/drivers/firmware/scmi/scmi_agent-uclass.c index cc3f31d881e..e7ec2c108e6 100644 --- a/drivers/firmware/scmi/scmi_agent-uclass.c +++ b/drivers/firmware/scmi/scmi_agent-uclass.c @@ -97,6 +97,9 @@ struct udevice *scmi_get_protocol(struct udevice *dev, case SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN: proto = priv->voltagedom_dev; break; + case SCMI_PROTOCOL_ID_PINCTRL: + proto = priv->pinctrl_dev; + break; default: dev_err(dev, "Protocol not supported\n"); proto = NULL; @@ -147,6 +150,9 @@ static int scmi_add_protocol(struct udevice *dev, case SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN: priv->voltagedom_dev = proto; break; + case SCMI_PROTOCOL_ID_PINCTRL: + priv->pinctrl_dev = proto; + break; default: dev_err(dev, "Protocol not supported\n"); return -EPROTO; diff --git a/drivers/pinctrl/nxp/pinctrl-imx-scmi.c b/drivers/pinctrl/nxp/pinctrl-imx-scmi.c index 5b7122b08a5..aed47be337d 100644 --- a/drivers/pinctrl/nxp/pinctrl-imx-scmi.c +++ b/drivers/pinctrl/nxp/pinctrl-imx-scmi.c @@ -10,6 +10,7 @@ #include <dm/devres.h> #include <dm/pinctrl.h> #include <scmi_agent.h> +#include <scmi_agent-uclass.h> #include <scmi_protocols.h> #include "pinctrl-imx.h" @@ -155,3 +156,10 @@ U_BOOT_DRIVER(scmi_pinctrl_imx) = { .ops = &imx_scmi_pinctrl_ops, .flags = DM_FLAG_PRE_RELOC, }; + +static struct scmi_proto_match match[] = { + { .proto_id = SCMI_PROTOCOL_ID_PINCTRL }, + { /* Sentinel */ } +}; + +U_BOOT_SCMI_PROTO_DRIVER(scmi_pinctrl_imx, match); |
