[PATCH] read %s{}-sysfs values at any device in the chain

This commit is contained in:
kay.sievers@vrfy.org
2005-04-26 23:55:00 -07:00
committed by Greg KH
parent aa341f21eb
commit 98bbc835f5
2 changed files with 21 additions and 2 deletions
+9
View File
@@ -1222,6 +1222,15 @@ EOF
exp_name => "sane",
rules => <<EOF
BUS=="scsi", KERNEL=="sda1", PROGRAM=="/bin/echo -e name; (/sbin/badprogram)", RESULT="name_ _/sbin/badprogram_", NAME="sane"
EOF
},
{
desc => "read sysfs value from device down in the chain",
subsys => "block",
devpath => "/class/tty/ttyUSB0",
exp_name => "serial-0000:00:09.0",
rules => <<EOF
KERNEL=="ttyUSB*", NAME="serial-%s{serial}"
EOF
},
);
+12 -2
View File
@@ -287,8 +287,18 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
break;
}
if (find_sysfs_attribute(class_dev, sysfs_device, attr, temp2, sizeof(temp2)) != 0) {
dbg("sysfs attribute '%s' not found", attr);
break;
struct sysfs_device *parent_device;
dbg("sysfs attribute '%s' not found, walk up the physical devices", attr);
parent_device = sysfs_get_device_parent(sysfs_device);
while (parent_device) {
dbg("looking at '%s'", parent_device->path);
if (find_sysfs_attribute(NULL, parent_device, attr, temp2, sizeof(temp2)) == 0)
break;
parent_device = sysfs_get_device_parent(parent_device);
}
if (!parent_device)
break;
}
/* strip trailing whitespace of sysfs value */
i = strlen(temp2);