[PATCH v3 0/7] drivers: Add generic device lookup helpers
Suzuki K Poulose
suzuki.poulose at arm.com
Tue Jul 23 22:18:31 UTC 2019
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.
This series adds device match helpers by generic device properties of a device.
Using these generic match functions, introduce wrappers to the existing
*_find_device() helpers and converts the existing users to use the new wrappers.
i.e,
{bus/class/driver}_find_device_by_name()
{bus/class/driver}_find_device_by_fwnode()
{bus/class/driver}_find_device_by_devt()
{bus/class/driver}_find_device_by_acpi_dev()
Also adds a wrapper for finding a platform device by driver, to avoid
spilling the platform_bus internals in the individual drivers. Applies
on 5.3-rc1.
[0] git://linux-arm.org/linux-skp.git driver-cleanup/v3
RFC[1] https://marc.info/?i=1559577023-558-1-git-send-email-suzuki.poulose@arm.com
V1 [2] https://marc.info/?i=1559747630-28065-1-git-send-email-suzuki.poulose@arm.com
V2 [3] https://marc.info/?i=1560534863-15115-1-git-send-email-suzuki.poulose@arm.com
Changes since v2:
- Merge the device match helper introduction patch with the variants
of the helpers, for better review.
- Use platform_find_device_by_driver for mcde drm driver.
Cc: Alan Tull <atull at kernel.org>
Cc: Alessandro Zummo <a.zummo at towertech.it>
Cc: Alexander Aring <alex.aring at gmail.com>
Cc: Alexander Shishkin <alexander.shishkin at linux.intel.com>
Cc: Alexandre Belloni <alexandre.belloni at bootlin.com>
Cc: Andrew Lunn <andrew at lunn.ch>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: Bjorn Helgaas <bhelgaas at google.com>
Cc: Daniel Vetter <daniel at ffwll.ch>
Cc: Dan Murphy <dmurphy at ti.com>
Cc: David Airlie <airlied at linux.ie>
Cc: "David S. Miller" <davem at davemloft.net>
Cc: devicetree at vger.kernel.org
Cc: Doug Ledford <dledford at redhat.com>
Cc: dri-devel at lists.freedesktop.org
Cc: Elie Morisse <syniurge at gmail.com>
Cc: Eric Anholt <eric at anholt.net>
Cc: Florian Fainelli <f.fainelli at gmail.com>
Cc: Frank Rowand <frowand.list at gmail.com>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
Cc: Harald Freudenberger <freude at linux.ibm.com>
Cc: Heikki Krogerus <heikki.krogerus at linux.intel.com>
Cc: Heiko Carstens <heiko.carstens at de.ibm.com>
Cc: "Heiko Stübner" <heiko at sntech.de>
Cc: Heiko Stuebner <heiko at sntech.de>
Cc: Heiner Kallweit <hkallweit1 at gmail.com>
Cc: Inki Dae <inki.dae at samsung.com>
Cc: Jacek Anaszewski <jacek.anaszewski at gmail.com>
Cc: "James E.J. Bottomley" <jejb at linux.ibm.com>
Cc: Jason Gunthorpe <jgg at ziepe.ca>
Cc: Jiri Slaby <jslaby at suse.com>
Cc: Joe Perches <joe at perches.com>
Cc: Joerg Roedel <joro at 8bytes.org>
Cc: Lee Jones <lee.jones at linaro.org>
Cc: Len Brown <lenb at kernel.org>
Cc: Liam Girdwood <lgirdwood at gmail.com>
Cc: linux-acpi at vger.kernel.org
Cc: linux-fpga at vger.kernel.org
Cc: linux-i2c at vger.kernel.org
Cc: linux-leds at vger.kernel.org
Cc: linux-rockchip at lists.infradead.org
Cc: linux-rtc at vger.kernel.org
Cc: linux-spi at vger.kernel.org
Cc: linux-usb at vger.kernel.org
Cc: linux-wpan at vger.kernel.org
Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Mark Brown <broonie at kernel.org>
Cc: "Martin K. Petersen" <martin.petersen at oracle.com>
Cc: Mathieu Poirier <mathieu.poirier at linaro.org>
Cc: Maxime Coquelin <mcoquelin.stm32 at gmail.com>
Cc: Maxime Ripard <maxime.ripard at bootlin.com>
Cc: Mika Westerberg <mika.westerberg at linux.intel.com>
Cc: Moritz Fischer <mdf at kernel.org>
Cc: Nehal Shah <nehal-bakulchandra.shah at amd.com>
Cc: Oliver Neukum <oneukum at suse.com>
Cc: Pavel Machek <pavel at ucw.cz>
Cc: Peter Oberparleiter <oberpar at linux.ibm.com>
Cc: Peter Rosin <peda at axentia.se>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki at intel.com>
Cc: "Rafael J. Wysocki" <rafael at kernel.org>
Cc: Rob Herring <robh+dt at kernel.org>
Cc: Robin Murphy <robin.murphy at arm.com>
Cc: Sandy Huang <hjc at rock-chips.com>
Cc: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
Cc: Seung-Woo Kim <sw0312.kim at samsung.com>
Cc: Shyam Sundar S K <shyam-sundar.s-k at amd.com>
Cc: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
Cc: Stefan Schmidt <stefan at datenfreihafen.org>
Cc: Takashi Iwai <tiwai at suse.com>
Cc: Thor Thayer <thor.thayer at linux.intel.com>
Cc: Tomas Winkler <tomas.winkler at intel.com>
Cc: Ulf Hansson <ulf.hansson at linaro.org>
Cc: Will Deacon <will.deacon at arm.com>
Cc: Wolfram Sang <wsa at the-dreams.de>
Suzuki K Poulose (7):
drivers: Introduce device lookup variants by name
drivers: Introduce device lookup variants by of_node
drivers: Introduce device lookup variants by fwnode
drivers: Introduce device lookup variants by device type
drivers: Introduce device lookup variants by ACPI_COMPANION device
drivers: Add generic helper to match any device
platform: Add platform_find_device_by_driver() helper
drivers/amba/tegra-ahb.c | 11 +-
drivers/base/bus.c | 24 --
drivers/base/core.c | 39 ++-
drivers/base/devcon.c | 8 +-
drivers/base/platform.c | 14 ++
drivers/fpga/fpga-bridge.c | 8 +-
drivers/fpga/fpga-mgr.c | 8 +-
drivers/gpu/drm/drm_mipi_dsi.c | 7 +-
drivers/gpu/drm/exynos/exynos_drm_drv.c | 9 +-
drivers/gpu/drm/mcde/mcde_drv.c | 3 +-
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 3 +-
drivers/gpu/drm/vc4/vc4_drv.c | 3 +-
.../hwtracing/coresight/coresight-platform.c | 11 +-
drivers/hwtracing/coresight/coresight-priv.h | 2 -
drivers/hwtracing/coresight/coresight.c | 4 +-
drivers/hwtracing/intel_th/core.c | 10 +-
drivers/hwtracing/stm/core.c | 9 +-
drivers/i2c/busses/i2c-amd-mp2-pci.c | 8 +-
drivers/i2c/i2c-core-acpi.c | 11 +-
drivers/i2c/i2c-core-of.c | 7 +-
drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 8 +-
drivers/iommu/arm-smmu-v3.c | 9 +-
drivers/iommu/arm-smmu.c | 9 +-
drivers/leds/led-class.c | 9 +-
drivers/mfd/altera-sysmgr.c | 14 +-
drivers/misc/mei/main.c | 9 +-
drivers/mux/core.c | 7 +-
.../ethernet/hisilicon/hns/hns_dsaf_misc.c | 8 +-
drivers/net/phy/mdio_bus.c | 9 +-
drivers/nvmem/core.c | 7 +-
drivers/of/of_mdio.c | 8 +-
drivers/of/platform.c | 7 +-
drivers/pci/probe.c | 7 +-
drivers/regulator/of_regulator.c | 7 +-
drivers/rtc/interface.c | 11 +-
drivers/s390/cio/ccwgroup.c | 18 +-
drivers/s390/cio/device.c | 15 +-
drivers/s390/crypto/zcrypt_api.c | 22 +-
drivers/scsi/scsi_proc.c | 9 +-
drivers/spi/spi.c | 28 +--
drivers/tty/tty_io.c | 8 +-
drivers/usb/core/devio.c | 8 +-
drivers/usb/roles/class.c | 16 +-
drivers/usb/typec/class.c | 16 +-
include/linux/device.h | 237 +++++++++++++++++-
include/linux/platform_device.h | 3 +
net/ieee802154/core.c | 7 +-
sound/soc/rockchip/rk3399_gru_sound.c | 9 +-
48 files changed, 341 insertions(+), 383 deletions(-)
--
2.21.0
More information about the dri-devel
mailing list