We have device iterators to find a particular device matching a criteria
for a given bus/class/driver. i.e, {bus,class,driver}_find_device() APIs.
The matching criteria is a function pointer for the APIs. Often the lookup
is based on a generic property of a device (e.g, name, fwnode, of node pointer
or device type) rather than a driver specific information. However, each driver
writes up its own "match" function, spilling the similar match functions all
over the driver subsystems.
Additionally the prototype for the "match" functions accepted by the above APIs
have a minute difference which prevents us otherwise sharing the match
functions.
i.e,
int (*match)(struct device *dev, void *data) for
{bus/driver}_find_device()
vs
int (*match)(struct device *dev, const void *) for class_find_device()
If we promote the former to accept a "const void*" parameter, we could share one
single match function for all the helpers. This series achieves the following:
1) Unify the prototype for "match" functions accepted by the device lookup
APIs.
2) Introduce generic match functions to match devices by the generic attributes
of a device (e.g, name, fwnode, of_node and devt).
Also, in order to prevent creation of such match functions in the future,
we introduce wrapper functions for the look up APIs, which automatically
uses the appropriate match functions.
i.e,
{bus/class/driver}_find_device_by_name
{bus/class/driver}_find_device_by_of_node
{bus/class/driver}_find_device_by_fwnode
{bus/class/driver}_find_device_by_devt
Additionally, this series also adds wrapper for finding a device by matching
a device driver for platform bus devices - platform_find_device_by_driver() to
avoid a few drivers hard coding the platform bus specific details.
This is part 1 of revised version of the series posted here [0], to allow for
better
management of the merging. Part 2 of the series, where these new helpers are
consumed
by the individual driver subsystems will be posted once this is series is
merged.
The entire tree with both the parts in is available at [1]
[0] https://marc.info/[email protected]
[1] git://linux-arm.org/linux-skp.git driver-cleanup/v1
Cc: Alan Tull <[email protected]>
Cc: Alessandro Zummo <[email protected]>
Cc: Alexander Aring <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Alexandre Belloni <[email protected]>
Cc: Andreas Noever <[email protected]>
Cc: Andrew Lunn <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Bjorn Helgaas <[email protected]>
Cc: Corey Minyard <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: Dan Murphy <[email protected]>
Cc: David Airlie <[email protected]>
Cc: David Kershner <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Doug Ledford <[email protected]>
Cc: [email protected]
Cc: Elie Morisse <[email protected]>
Cc: Eric Anholt <[email protected]>
Cc: Felipe Balbi <[email protected]>
Cc: Florian Fainelli <[email protected]>
Cc: Frank Rowand <[email protected]>
Cc: Grant Likely <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Grygorii Strashko <[email protected]>
Cc: Harald Freudenberger <[email protected]>
Cc: Hartmut Knaack <[email protected]>
Cc: Heikki Krogerus <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: "Heiko Stübner" <[email protected]>
Cc: Heiko Stuebner <[email protected]>
Cc: Heiner Kallweit <[email protected]>
Cc: Inki Dae <[email protected]>
Cc: Jacek Anaszewski <[email protected]>
Cc: "James E.J. Bottomley" <[email protected]>
Cc: Jason Gunthorpe <[email protected]>
Cc: Jiri Slaby <[email protected]>
Cc: Joe Perches <[email protected]>
Cc: Joerg Roedel <[email protected]>
Cc: Jonathan Cameron <[email protected]>
Cc: Jonathan Hunter <[email protected]>
Cc: Lee Jones <[email protected]>
Cc: Len Brown <[email protected]
Cc: Liam Girdwood <[email protected]>
Cc: Maarten Lankhorst <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: "Martin K. Petersen" <[email protected]>
Cc: Mathieu Poirier <[email protected]>
Cc: Maxime Coquelin <[email protected]>
Cc: Maxime Ripard <[email protected]>
Cc: Michael Jamet <[email protected]>
Cc: Mika Westerberg <[email protected]>
Cc: Moritz Fischer <[email protected]>
Cc: Nehal Shah <[email protected]>
Cc: Oliver Neukum <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Peter Oberparleiter <[email protected]>
Cc: Peter Rosin <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Cc: Rafael J. Wysocki" <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Robin Murphy <[email protected]>
Cc: Russell King <[email protected]>
Cc: Sandy Huang <[email protected]>
Cc: Sebastian Andrzej Siewior <[email protected]>
Cc: Sebastian Ott <[email protected]>
Cc: Seung-Woo Kim <[email protected]>
Cc: Shyam Sundar S K <[email protected]>
Cc: Srinivas Kandagatla <[email protected]>
Cc: Stefan Schmidt <[email protected]>
Cc: Takashi Iwai <[email protected]>
Cc: Thierry Reding <[email protected]>
Cc: Thor Thayer <[email protected]>
Cc: Tomas Winkler <[email protected]>
Cc: Ulf Hansson <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Wolfram Sang <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Suzuki K Poulose (13):
acpi: utils: Cleanup acpi_dev_match_cb
bus_find_device: Unify the match callback with class_find_device
driver_find_device: Unify the match function with class_find_device()
drivers: Add generic helper to match by of_node
drivers: Add generic helper to match by fwnode
drivers: Add generic helper to match by devt
drivers: Add generic match helper by ACPI_COMPANION device
drivers: Add generic helper to match by name
drivers: Add generic helper to match any device
drivers: Introduce variants of class_find_device()
drivers: Introduce variants for bus_find_device()
drivers: Introduce variants of driver_find_device()
platform: Add platform_find_device_by_driver() helper
arch/powerpc/platforms/pseries/ibmebus.c | 4 +-
drivers/acpi/acpi_lpss.c | 4 +-
drivers/acpi/sleep.c | 2 +-
drivers/acpi/utils.c | 11 +-
drivers/amba/tegra-ahb.c | 4 +-
drivers/base/bus.c | 28 +--
drivers/base/core.c | 36 ++++
drivers/base/devcon.c | 2 +-
drivers/base/driver.c | 4 +-
drivers/base/platform.c | 14 ++
drivers/char/ipmi/ipmi_msghandler.c | 8 +-
drivers/char/ipmi/ipmi_si_platform.c | 2 +-
drivers/firmware/efi/dev-path-parser.c | 4 +-
drivers/gpu/drm/drm_mipi_dsi.c | 2 +-
drivers/gpu/drm/tegra/dc.c | 4 +-
drivers/hwtracing/coresight/coresight.c | 6 +-
drivers/hwtracing/coresight/of_coresight.c | 2 +-
drivers/hwtracing/intel_th/core.c | 5 +-
drivers/i2c/busses/i2c-amd-mp2-pci.c | 2 +-
drivers/i2c/i2c-core-acpi.c | 4 +-
drivers/i2c/i2c-core-of.c | 4 +-
drivers/iio/inkern.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 2 +-
drivers/iommu/arm-smmu-v3.c | 2 +-
drivers/iommu/arm-smmu.c | 2 +-
drivers/mfd/altera-sysmgr.c | 4 +-
drivers/mfd/syscon.c | 2 +-
drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c | 2 +-
drivers/net/ethernet/ti/cpsw-phy-sel.c | 4 +-
drivers/net/ethernet/ti/davinci_emac.c | 2 +-
drivers/net/ethernet/toshiba/tc35815.c | 4 +-
drivers/nvmem/core.c | 2 +-
drivers/of/of_mdio.c | 2 +-
drivers/of/platform.c | 2 +-
drivers/pci/probe.c | 2 +-
drivers/pci/search.c | 4 +-
drivers/s390/cio/ccwgroup.c | 2 +-
drivers/s390/cio/chsc_sch.c | 2 +-
drivers/s390/cio/css.c | 4 +-
drivers/s390/cio/device.c | 6 +-
drivers/s390/cio/scm.c | 4 +-
drivers/s390/crypto/ap_bus.c | 8 +-
drivers/scsi/scsi_proc.c | 2 +-
drivers/spi/spi.c | 4 +-
drivers/staging/most/core.c | 4 +-
drivers/thunderbolt/switch.c | 4 +-
drivers/usb/core/devio.c | 4 +-
drivers/usb/core/usb.c | 4 +-
drivers/usb/phy/phy-am335x-control.c | 4 +-
drivers/usb/phy/phy-isp1301.c | 4 +-
drivers/visorbus/visorbus_main.c | 4 +-
include/linux/device.h | 188 ++++++++++++++++++++-
include/linux/platform_device.h | 3 +
sound/soc/rockchip/rk3399_gru_sound.c | 2 +-
54 files changed, 320 insertions(+), 123 deletions(-)
--
2.7.4
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel