]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
usb: misc: onboard_usb_dev: Add match function
authorMatthias Kaehlcke <mka@chromium.org>
Wed, 12 Jun 2024 18:04:48 +0000 (18:04 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jun 2024 14:06:51 +0000 (16:06 +0200)
Add a match function for the onboard_usb_dev driver. Primary
matching is still done through the VID:PID pair, as usual for
USB devices. The new match function checks in addition whether
the device has a device tree node, which is a needed for using
the onboard_usb_dev driver.

Remove the check for a device tree node from _probe(), the new
match functions prevents devices without DT node from probing.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Tested-by: Jameson Thies <jthies@google.com>
Reviewed-by: Jameson Thies <jthies@google.com>
Link: https://lore.kernel.org/r/20240612180448.1.I805556c176c626872c15ce001f0e8198e1f95ae1@changeid
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/onboard_usb_dev.c

index f2bcc1a8b95fdaa4a2068a4470467daa7ea897f2..56710e6b165315c0e2a3f45f68ee1aa35d0a82f7 100644 (file)
@@ -454,16 +454,18 @@ static struct onboard_dev *_find_onboard_dev(struct device *dev)
        return onboard_dev;
 }
 
+static bool onboard_dev_usbdev_match(struct usb_device *udev)
+{
+       /* Onboard devices using this driver must have a device tree node */
+       return !!udev->dev.of_node;
+}
+
 static int onboard_dev_usbdev_probe(struct usb_device *udev)
 {
        struct device *dev = &udev->dev;
        struct onboard_dev *onboard_dev;
        int err;
 
-       /* ignore supported devices without device tree node */
-       if (!dev->of_node)
-               return -ENODEV;
-
        onboard_dev = _find_onboard_dev(dev);
        if (IS_ERR(onboard_dev))
                return PTR_ERR(onboard_dev);
@@ -513,6 +515,7 @@ MODULE_DEVICE_TABLE(usb, onboard_dev_id_table);
 
 static struct usb_device_driver onboard_dev_usbdev_driver = {
        .name = "onboard-usb-dev",
+       .match = onboard_dev_usbdev_match,
        .probe = onboard_dev_usbdev_probe,
        .disconnect = onboard_dev_usbdev_disconnect,
        .generic_subclass = 1,