]> git.itanic.dy.fi Git - linux-stable/commitdiff
firmware: arm_ffa: Emit modalias for FF-A devices
authorSudeep Holla <sudeep.holla@arm.com>
Thu, 5 Oct 2023 17:56:40 +0000 (18:56 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Fri, 6 Oct 2023 14:32:47 +0000 (15:32 +0100)
In order to enable libkmod lookups for FF-A device objects to their
corresponding module, add 'modalias' to the base attribute of FF-A
devices.

Tested-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Link: https://lore.kernel.org/r/20231005175640.379631-1-sudeep.holla@arm.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_ffa/bus.c

index 7865438b36960d28b90d1dfa5316fdd89ad5808e..1c7940ba55393f62050fde61d8f4fd71dce73233 100644 (file)
@@ -15,6 +15,8 @@
 
 #include "common.h"
 
+#define SCMI_UEVENT_MODALIAS_FMT       "arm_ffa:%04x:%pUb"
+
 static DEFINE_IDA(ffa_bus_id);
 
 static int ffa_device_match(struct device *dev, struct device_driver *drv)
@@ -63,10 +65,20 @@ static int ffa_device_uevent(const struct device *dev, struct kobj_uevent_env *e
 {
        const struct ffa_device *ffa_dev = to_ffa_dev(dev);
 
-       return add_uevent_var(env, "MODALIAS=arm_ffa:%04x:%pUb",
+       return add_uevent_var(env, "MODALIAS=" SCMI_UEVENT_MODALIAS_FMT,
                              ffa_dev->vm_id, &ffa_dev->uuid);
 }
 
+static ssize_t modalias_show(struct device *dev,
+                            struct device_attribute *attr, char *buf)
+{
+       struct ffa_device *ffa_dev = to_ffa_dev(dev);
+
+       return sysfs_emit(buf, SCMI_UEVENT_MODALIAS_FMT, ffa_dev->vm_id,
+                         &ffa_dev->uuid);
+}
+static DEVICE_ATTR_RO(modalias);
+
 static ssize_t partition_id_show(struct device *dev,
                                 struct device_attribute *attr, char *buf)
 {
@@ -88,6 +100,7 @@ static DEVICE_ATTR_RO(uuid);
 static struct attribute *ffa_device_attributes_attrs[] = {
        &dev_attr_partition_id.attr,
        &dev_attr_uuid.attr,
+       &dev_attr_modalias.attr,
        NULL,
 };
 ATTRIBUTE_GROUPS(ffa_device_attributes);