[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1560534863-15115-20-git-send-email-suzuki.poulose@arm.com>
Date: Fri, 14 Jun 2019 18:54:14 +0100
From: Suzuki K Poulose <suzuki.poulose@....com>
To: linux-kernel@...r.kernel.org
Cc: gregkh@...uxfoundation.org, rafael@...nel.org,
suzuki.poulose@....com, linux-usb@...r.kernel.org,
Oliver Neukum <oneukum@...e.com>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>
Subject: [PATCH v2 19/28] drivers: Introduce bus_find_device_by_devt() helper
Add a wrapper to bus_find_device() to search for a device
by the device type, reusing the generic match function.
Also convert the existing users to make use of the new helper.
Cc: linux-usb@...r.kernel.org
Cc: Oliver Neukum <oneukum@...e.com>
Cc: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
Cc: Alexander Shishkin <alexander.shishkin@...ux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: "Rafael J. Wysocki" <rafael@...nel.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@....com>
---
drivers/hwtracing/intel_th/core.c | 10 +---------
drivers/usb/core/devio.c | 8 +-------
include/linux/device.h | 12 ++++++++++++
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/drivers/hwtracing/intel_th/core.c b/drivers/hwtracing/intel_th/core.c
index 5592289..d5c1821 100644
--- a/drivers/hwtracing/intel_th/core.c
+++ b/drivers/hwtracing/intel_th/core.c
@@ -789,12 +789,6 @@ static int intel_th_populate(struct intel_th *th)
return 0;
}
-static int match_devt(struct device *dev, const void *data)
-{
- dev_t devt = (dev_t)(unsigned long)(void *)data;
- return dev->devt == devt;
-}
-
static int intel_th_output_open(struct inode *inode, struct file *file)
{
const struct file_operations *fops;
@@ -802,9 +796,7 @@ static int intel_th_output_open(struct inode *inode, struct file *file)
struct device *dev;
int err;
- dev = bus_find_device(&intel_th_bus, NULL,
- (void *)(unsigned long)inode->i_rdev,
- match_devt);
+ dev = bus_find_device_by_devt(&intel_th_bus, inode->i_rdev);
if (!dev || !dev->driver)
return -ENODEV;
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 7bd7de7..4e83623 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -947,17 +947,11 @@ static int parse_usbdevfs_streams(struct usb_dev_state *ps,
return ret;
}
-static int match_devt(struct device *dev, const void *data)
-{
- return dev->devt == (dev_t)(unsigned long)(void *)data;
-}
-
static struct usb_device *usbdev_lookup_by_devt(dev_t devt)
{
struct device *dev;
- dev = bus_find_device(&usb_bus_type, NULL,
- (void *) (unsigned long) devt, match_devt);
+ dev = bus_find_device_by_devt(&usb_bus_type, devt);
if (!dev)
return NULL;
return to_usb_device(dev);
diff --git a/include/linux/device.h b/include/linux/device.h
index 576d84f..3c244ac 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -213,6 +213,18 @@ bus_find_device_by_fwnode(struct bus_type *bus, const struct fwnode_handle *fwno
return bus_find_device(bus, NULL, fwnode, device_match_fwnode);
}
+/**
+ * bus_find_device_by_devt : device iterator for locating a particular device
+ * matching the device type.
+ * @bus: bus type
+ * @devt: device type of the device to match.
+ */
+static inline struct device *bus_find_device_by_devt(struct bus_type *bus,
+ dev_t devt)
+{
+ return bus_find_device(bus, NULL, &devt, device_match_devt);
+}
+
struct device *subsys_find_device_by_id(struct bus_type *bus, unsigned int id,
struct device *hint);
int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,
--
2.7.4
Powered by blists - more mailing lists