From 5ea8756766a5ba148e47075265743f727ef1d6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Mon, 18 Jul 2016 17:59:27 +0200 Subject: [PATCH] ledtrig-usbdev: use upstream function for iterating USB devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow us to drop LEDE patch adding usb_find_device_by_name. Signed-off-by: Rafał Miłecki --- .../files/drivers/leds/ledtrig-usbdev.c | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/target/linux/generic/files/drivers/leds/ledtrig-usbdev.c b/target/linux/generic/files/drivers/leds/ledtrig-usbdev.c index 70b0e392ad..effcae6f9e 100644 --- a/target/linux/generic/files/drivers/leds/ledtrig-usbdev.c +++ b/target/linux/generic/files/drivers/leds/ledtrig-usbdev.c @@ -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 */