@@ -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 */
@@ -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);
@@ -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;
}
@@ -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.
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(-)