[source] ledtrig-usbdev: use upstream function for iterating USB devices
LEDE Commits
lede-commits at lists.infradead.org
Wed Jul 20 01:18:05 PDT 2016
nbd pushed a commit to source.git, branch master:
https://git.lede-project.org/?p=source.git;a=commitdiff;h=5ea8756766a5ba148e47075265743f727ef1d6dc
commit 5ea8756766a5ba148e47075265743f727ef1d6dc
Author: Rafał Miłecki <zajec5 at gmail.com>
AuthorDate: Mon Jul 18 17:59:27 2016 +0200
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 at gmail.com>
---
.../generic/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 70b0e39..effcae6 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 */
More information about the lede-commits
mailing list