summaryrefslogtreecommitdiff
path: root/udev_rules.c
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@suse.de>2005-08-05 01:52:57 +0200
committerKay Sievers <kay.sievers@suse.de>2005-08-05 01:52:57 +0200
commit738428b4499211247dafa394805ecaa2cb313f03 (patch)
tree093f6a560ba770600a711f825ffd244909b2ae79 /udev_rules.c
parent52dbd80e783adaa0a66d4cf981f5b34d2af66f60 (diff)
read sysfs attribute also from parent class device
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Diffstat (limited to 'udev_rules.c')
-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);