2020-02-22 10:27:39

by Boris Brezillon

[permalink] [raw]
Subject: [PATCH 2/3] i3c: Generate aliases for i3c modules

This part was missing, thus preventing user space from loading modules
automatically when MODALIAS uevents are received.

Signed-off-by: Boris Brezillon <[email protected]>
---
scripts/mod/devicetable-offsets.c | 7 +++++++
scripts/mod/file2alias.c | 19 +++++++++++++++++++
2 files changed, 26 insertions(+)

diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c
index 054405b90ba4..d3c237b9b7c0 100644
--- a/scripts/mod/devicetable-offsets.c
+++ b/scripts/mod/devicetable-offsets.c
@@ -145,6 +145,13 @@ int main(void)
DEVID(i2c_device_id);
DEVID_FIELD(i2c_device_id, name);

+ DEVID(i3c_device_id);
+ DEVID_FIELD(i3c_device_id, match_flags);
+ DEVID_FIELD(i3c_device_id, dcr);
+ DEVID_FIELD(i3c_device_id, manuf_id);
+ DEVID_FIELD(i3c_device_id, part_id);
+ DEVID_FIELD(i3c_device_id, extra_info);
+
DEVID(spi_device_id);
DEVID_FIELD(spi_device_id, name);

diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index c91eba751804..1754de3f119f 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -919,6 +919,24 @@ static int do_i2c_entry(const char *filename, void *symval,
return 1;
}

+static int do_i3c_entry(const char *filename, void *symval,
+ char *alias)
+{
+ DEF_FIELD(symval, i3c_device_id, match_flags);
+ DEF_FIELD(symval, i3c_device_id, dcr);
+ DEF_FIELD(symval, i3c_device_id, manuf_id);
+ DEF_FIELD(symval, i3c_device_id, part_id);
+ DEF_FIELD(symval, i3c_device_id, extra_info);
+
+ strcpy(alias, "i3c:");
+ ADD(alias, "dcr", match_flags & I3C_MATCH_DCR, dcr);
+ ADD(alias, "manuf", match_flags & I3C_MATCH_MANUF, dcr);
+ ADD(alias, "part", match_flags & I3C_MATCH_PART, dcr);
+ ADD(alias, "ext", match_flags & I3C_MATCH_EXTRA_INFO, dcr);
+
+ return 1;
+}
+
/* Looks like: spi:S */
static int do_spi_entry(const char *filename, void *symval,
char *alias)
@@ -1386,6 +1404,7 @@ static const struct devtable devtable[] = {
{"vmbus", SIZE_hv_vmbus_device_id, do_vmbus_entry},
{"rpmsg", SIZE_rpmsg_device_id, do_rpmsg_entry},
{"i2c", SIZE_i2c_device_id, do_i2c_entry},
+ {"i3c", SIZE_i3c_device_id, do_i3c_entry},
{"spi", SIZE_spi_device_id, do_spi_entry},
{"dmi", SIZE_dmi_system_id, do_dmi_entry},
{"platform", SIZE_platform_device_id, do_platform_entry},
--
2.24.1


2020-02-26 11:52:27

by Boris Brezillon

[permalink] [raw]
Subject: Re: [PATCH 2/3] i3c: Generate aliases for i3c modules

On Sat, 22 Feb 2020 11:27:10 +0100
Boris Brezillon <[email protected]> wrote:

> +static int do_i3c_entry(const char *filename, void *symval,
> + char *alias)
> +{
> + DEF_FIELD(symval, i3c_device_id, match_flags);
> + DEF_FIELD(symval, i3c_device_id, dcr);
> + DEF_FIELD(symval, i3c_device_id, manuf_id);
> + DEF_FIELD(symval, i3c_device_id, part_id);
> + DEF_FIELD(symval, i3c_device_id, extra_info);
> +
> + strcpy(alias, "i3c:");
> + ADD(alias, "dcr", match_flags & I3C_MATCH_DCR, dcr);
> + ADD(alias, "manuf", match_flags & I3C_MATCH_MANUF, dcr);

^manuf_id

> + ADD(alias, "part", match_flags & I3C_MATCH_PART, dcr);

^part_id

> + ADD(alias, "ext", match_flags & I3C_MATCH_EXTRA_INFO, dcr);

^extra_info