[PATCH 3/5] firmware: scmi: Support probe vendor ID 0x80 and 0x82

Peng Fan (OSS) peng.fan at oss.nxp.com
Fri Oct 17 11:32:32 CEST 2025


From: Peng Fan <peng.fan at nxp.com>

Preparing to add i.MX LMM and CPU protocol driver, support probe SCMI
vendor ID 0x80(i.MX SCMI LMM ID) and 0x82(i.MX SCMI CPU ID). And use
Kconfig option to support conditional compilation.

Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 drivers/firmware/scmi/Kconfig             |  6 ++++++
 drivers/firmware/scmi/scmi_agent-uclass.c | 20 ++++++++++++++++++++
 include/scmi_agent-uclass.h               |  6 ++++++
 include/scmi_protocols.h                  |  2 ++
 4 files changed, 34 insertions(+)

diff --git a/drivers/firmware/scmi/Kconfig b/drivers/firmware/scmi/Kconfig
index 8cf85f0d7a12c9e58dc249539727081ec25dd7b3..dca8fed9bd25a0555233a7bead3a326ef2f05344 100644
--- a/drivers/firmware/scmi/Kconfig
+++ b/drivers/firmware/scmi/Kconfig
@@ -41,3 +41,9 @@ config SCMI_AGENT_OPTEE
 	help
 	  Enable the SCMI communication channel based on OP-TEE transport
 	  for compatible "linaro,scmi-optee".
+
+config SCMI_ID_VENDOR_80
+	bool
+
+config SCMI_ID_VENDOR_82
+	bool
diff --git a/drivers/firmware/scmi/scmi_agent-uclass.c b/drivers/firmware/scmi/scmi_agent-uclass.c
index f48c2fdb27b16e0693eca6316d2ef6b27bc1eedf..ad825d66da2d04255330bfd2ece5645191158b12 100644
--- a/drivers/firmware/scmi/scmi_agent-uclass.c
+++ b/drivers/firmware/scmi/scmi_agent-uclass.c
@@ -110,6 +110,16 @@ struct udevice *scmi_get_protocol(struct udevice *dev,
 	case SCMI_PROTOCOL_ID_PINCTRL:
 		proto = priv->pinctrl_dev;
 		break;
+#endif
+#if IS_ENABLED(CONFIG_SCMI_ID_VENDOR_80)
+	case SCMI_PROTOCOL_ID_VENDOR_80:
+		proto = priv->vendor_dev_80;
+		break;
+#endif
+#if IS_ENABLED(CONFIG_SCMI_ID_VENDOR_82)
+	case SCMI_PROTOCOL_ID_VENDOR_82:
+		proto = priv->vendor_dev_82;
+		break;
 #endif
 	default:
 		dev_err(dev, "Protocol not supported\n");
@@ -173,6 +183,16 @@ static int scmi_add_protocol(struct udevice *dev,
 	case SCMI_PROTOCOL_ID_PINCTRL:
 		priv->pinctrl_dev = proto;
 		break;
+#endif
+#if IS_ENABLED(CONFIG_SCMI_ID_VENDOR_80)
+	case SCMI_PROTOCOL_ID_VENDOR_80:
+		priv->vendor_dev_80 = proto;
+		break;
+#endif
+#if IS_ENABLED(CONFIG_SCMI_ID_VENDOR_82)
+	case SCMI_PROTOCOL_ID_VENDOR_82:
+		priv->vendor_dev_82 = proto;
+		break;
 #endif
 	default:
 		dev_err(dev, "Protocol not supported\n");
diff --git a/include/scmi_agent-uclass.h b/include/scmi_agent-uclass.h
index ccedd42f3670c95376412f686c67d462e9740c06..9b36d3ae67bb37d58d70b41c1e7f767429fe51e6 100644
--- a/include/scmi_agent-uclass.h
+++ b/include/scmi_agent-uclass.h
@@ -55,6 +55,12 @@ struct scmi_agent_priv {
 #if IS_ENABLED(CONFIG_PINCTRL_IMX_SCMI)
 	struct udevice *pinctrl_dev;
 #endif
+#if IS_ENABLED(CONFIG_SCMI_ID_VENDOR_80)
+	struct udevice *vendor_dev_80;
+#endif
+#if IS_ENABLED(CONFIG_SCMI_ID_VENDOR_82)
+	struct udevice *vendor_dev_82;
+#endif
 };
 
 static inline u32 scmi_version(struct udevice *dev)
diff --git a/include/scmi_protocols.h b/include/scmi_protocols.h
index 5c9516d5595c2f39ee3223a6cffab2a91e1cd97e..bb74a57f79ae1bc22a2c673dfb5c4c768d350873 100644
--- a/include/scmi_protocols.h
+++ b/include/scmi_protocols.h
@@ -25,6 +25,8 @@ enum scmi_std_protocol {
 	SCMI_PROTOCOL_ID_RESET_DOMAIN = 0x16,
 	SCMI_PROTOCOL_ID_VOLTAGE_DOMAIN = 0x17,
 	SCMI_PROTOCOL_ID_PINCTRL = 0x19,
+	SCMI_PROTOCOL_ID_VENDOR_80 = 0x80,
+	SCMI_PROTOCOL_ID_VENDOR_82 = 0x82,
 };
 
 enum scmi_status_code {

-- 
2.35.3



More information about the U-Boot mailing list