summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--udev_rules.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/udev_rules.c b/udev_rules.c
index 6a485f08af..d86b8e8599 100644
--- a/udev_rules.c
+++ b/udev_rules.c
@@ -295,6 +295,7 @@ static int find_free_number(struct udevice *udev, const char *name)
static int find_sysfs_attribute(struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device,
const char *name, char *value, size_t len)
{
+ struct sysfs_class_device *class_dev_parent;
struct sysfs_attribute *tmpattr;
dbg("look for device attribute '%s'", name);
@@ -303,6 +304,12 @@ static int find_sysfs_attribute(struct sysfs_class_device *class_dev, struct sys
tmpattr = sysfs_get_classdev_attr(class_dev, name);
if (tmpattr)
goto attr_found;
+ class_dev_parent = sysfs_get_classdev_parent(class_dev);
+ if (class_dev_parent) {
+ tmpattr = sysfs_get_classdev_attr(class_dev_parent, name);
+ if (tmpattr)
+ goto attr_found;
+ }
}
if (sysfs_device) {
dbg("look for devices attribute '%s/%s'", sysfs_device->path, name);