[RFC PATCH 1/2] firmware: arm_scmi: Generate aliases for SCMI modules
Cristian Marussi
cristian.marussi at arm.com
Mon Feb 3 02:01:53 PST 2025
Generate aliases for SCMI modules to allow automatic module probing.
Signed-off-by: Cristian Marussi <cristian.marussi at 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 --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.
--
2.47.0
More information about the linux-arm-kernel
mailing list