ledtrig-usbdev: use upstream function for iterating USB devices
This will allow us to drop LEDE patch adding usb_find_device_by_name. Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
This commit is contained in:
parent
e633a1b48f
commit
5ea8756766
1 changed files with 27 additions and 5 deletions
|
@ -83,6 +83,26 @@ static ssize_t usbdev_trig_name_show(struct device *dev,
|
|||
return strlen(buf) + 1;
|
||||
}
|
||||
|
||||
struct usbdev_trig_match {
|
||||
char *device_name;
|
||||
struct usb_device *usb_dev;
|
||||
};
|
||||
|
||||
static int usbdev_trig_find_usb_dev(struct usb_device *usb_dev, void *data)
|
||||
{
|
||||
struct usbdev_trig_match *match = data;
|
||||
|
||||
if (WARN_ON(match->usb_dev))
|
||||
return 0;
|
||||
|
||||
if (!strcmp(dev_name(&usb_dev->dev), match->device_name)) {
|
||||
dev_dbg(&usb_dev->dev, "matched this device!\n");
|
||||
match->usb_dev = usb_get_dev(usb_dev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t usbdev_trig_name_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf,
|
||||
|
@ -101,16 +121,18 @@ static ssize_t usbdev_trig_name_store(struct device *dev,
|
|||
td->device_name[size - 1] = 0;
|
||||
|
||||
if (td->device_name[0] != 0) {
|
||||
struct usb_device *usb_dev;
|
||||
struct usbdev_trig_match match = {
|
||||
.device_name = td->device_name,
|
||||
};
|
||||
|
||||
/* check for existing device to update from */
|
||||
usb_dev = usb_find_device_by_name(td->device_name);
|
||||
if (usb_dev) {
|
||||
usb_for_each_dev(&match, usbdev_trig_find_usb_dev);
|
||||
if (match.usb_dev) {
|
||||
if (td->usb_dev)
|
||||
usb_put_dev(td->usb_dev);
|
||||
|
||||
td->usb_dev = usb_dev;
|
||||
td->last_urbnum = atomic_read(&usb_dev->urbnum);
|
||||
td->usb_dev = match.usb_dev;
|
||||
td->last_urbnum = atomic_read(&match.usb_dev->urbnum);
|
||||
}
|
||||
|
||||
/* updates LEDs, may start timers */
|
||||
|
|
Loading…
Reference in a new issue