diff mbox series

[RFC,1/2] firmware: arm_scmi: Generate aliases for SCMI modules

Message ID 20250203100154.140877-1-cristian.marussi@arm.com (mailing list archive)
State New
Headers show
Series [RFC,1/2] firmware: arm_scmi: Generate aliases for SCMI modules | expand

Commit Message

Cristian Marussi Feb. 3, 2025, 10:01 a.m. UTC
Generate aliases for SCMI modules to allow automatic module probing.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
 include/linux/mod_devicetable.h   | 6 ++++++
 include/linux/scmi_protocol.h     | 6 +-----
 scripts/mod/devicetable-offsets.c | 3 +++
 scripts/mod/file2alias.c          | 9 +++++++++
 4 files changed, 19 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 4338b1b4ac44..90c1f7bd4d1e 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -972,4 +972,10 @@  struct coreboot_device_id {
 	kernel_ulong_t driver_data;
 };
 
+/* SCMI Devices */
+struct scmi_device_id {
+	__u8 protocol_id;
+	const char *name;
+};
+
 #endif /* LINUX_MOD_DEVICETABLE_H */
diff --git a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h
index 5437275d3ac7..3d5c4b5a7dd8 100644
--- a/include/linux/scmi_protocol.h
+++ b/include/linux/scmi_protocol.h
@@ -12,6 +12,7 @@ 
 #include <linux/device.h>
 #include <linux/hashtable.h>
 #include <linux/log2.h>
+#include <linux/mod_devicetable.h>
 #include <linux/notifier.h>
 #include <linux/types.h>
 #include <linux/xarray.h>
@@ -1196,11 +1197,6 @@  struct scmi_device {
 
 #define to_scmi_dev(d) container_of_const(d, struct scmi_device, dev)
 
-struct scmi_device_id {
-	u8 protocol_id;
-	const char *name;
-};
-
 struct scmi_driver {
 	const char *name;
 	int (*probe)(struct scmi_device *sdev);
diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c
index 9c7b404defbd..58d614109fae 100644
--- a/scripts/mod/devicetable-offsets.c
+++ b/scripts/mod/devicetable-offsets.c
@@ -281,5 +281,8 @@  int main(void)
 	DEVID(coreboot_device_id);
 	DEVID_FIELD(coreboot_device_id, tag);
 
+	DEVID(scmi_device_id);
+	DEVID_FIELD(scmi_device_id, protocol_id);
+
 	return 0;
 }
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 19ec72a69e90..f86f194a1711 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -510,6 +510,14 @@  static void do_css_entry(struct module *mod, void *symval)
 	module_alias_printf(mod, false, "css:t%01X", type);
 }
 
+/* looks like: "scmi:prN" */
+static void do_scmi_entry(struct module *mod, void *symval)
+{
+	DEF_FIELD(symval, scmi_device_id, protocol_id);
+
+	module_alias_printf(mod, true, "scmi:pr%02X", protocol_id);
+}
+
 /* Looks like: "serio:tyNprNidNexN" */
 static void do_serio_entry(struct module *mod, void *symval)
 {
@@ -1471,6 +1479,7 @@  static const struct devtable devtable[] = {
 	{"usb", SIZE_usb_device_id, do_usb_entry_multi},
 	{"pnp", SIZE_pnp_device_id, do_pnp_device_entry},
 	{"pnp_card", SIZE_pnp_card_device_id, do_pnp_card_entry},
+	{"scmi", SIZE_scmi_device_id, do_scmi_entry},
 };
 
 /* Create MODULE_ALIAS() statements.