From patchwork Wed Jun 5 15:13:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165890 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485104ili; Wed, 5 Jun 2019 08:14:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqzuQVPRFevejO9eCUjTqioqPi3mX20ZOCobTeMh6m1ZNaMaMdV28Ie3MQqTtp1I+mwpCr/k X-Received: by 2002:a17:90a:9a95:: with SMTP id e21mr16659144pjp.98.1559747668171; Wed, 05 Jun 2019 08:14:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747668; cv=none; d=google.com; s=arc-20160816; b=Lb5UMXeGjPEGvD/q14Vgm/bGl56reUwAt7+7b4ayBwIYS/PIyTvwsBB5CfFUt/1aBJ 5245Fh4FehTRopG6Id3dLFhOyg69aiAWNbH+sVI4QL0cM4YHGcaaHtcwHpzOJKrlUIiY cHrOvhTavpCY7huoqByOM7Rr8ZqWFJBgVZMNldzUzAqk6k+l4TZf1Xihm89onnHehpNG Wri/zuc1W9XWYe+Evr720oiQVAIfxRaskolJu2fX3PUEgWnOTbCD62aLTYhbgyoafdCs VklNBUJh+6C3s6ZdvkZJ9Hh2oxAP+PgJFoRkRb2z/4OfytbyHz9I93yREk07gRhAo45H V/Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=iFIsHly0OIGCinVw4IlW6KXha+eQTOtTjceHTn6Je+M=; b=BwT/k+zzCIXxLl4gO2pqkRscX4XLGMMUb1YLNa/W5NmC7NyZA57TjiQTfLDCYPXC+X TCc5e2Ad0UgnA7DahEsOomROpEwHSOvcWqhFTAUMHQgFjWTjJe1ceFLX45Cvv+rKVh7l w+z96zh6W3JD/o0Ks+Glb5n2gk+Wm8RZgKvFs1sTxaQpUuv+1HOgJbjHCoog1BqmmjZ6 T5GDod53wQi2rzLEY9CE8sQqcqrSxzbXgesNa2NR5ey52VfoyEJZGGDH58KycY7UmS4a FefljFVFsBcN3teuloOAa+4Fn0ZD/PIgnpDKbrN1BRvacAVdfKT40CISoFHjpdoCyG+K 0SWg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 5si11948261pgt.261.2019.06.05.08.14.27; Wed, 05 Jun 2019 08:14:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728432AbfFEPO1 (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:27 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33316 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728089AbfFEPO0 (ORCPT ); Wed, 5 Jun 2019 11:14:26 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B1F2015BF; Wed, 5 Jun 2019 08:14:25 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 483643F246; Wed, 5 Jun 2019 08:14:20 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Alexander Shishkin , Andrew Lunn , Andreas Noever , Arnd Bergmann , Bjorn Helgaas , Corey Minyard , Christian Borntraeger , David Kershner , "David S. Miller" , David Airlie , Felipe Balbi , Frank Rowand , Grygorii Strashko , Harald Freudenberger , Hartmut Knaack , Heiko Stuebner , Jason Gunthorpe , Jonathan Cameron , "James E.J. Bottomley" , Len Brown , Mark Brown , Michael Ellerman , Michael Jamet , "Martin K. Petersen" , Peter Oberparleiter , Rob Herring , Sebastian Ott , Srinivas Kandagatla , Yehezkel Bernat , Wolfram Sang Subject: [PATCH 02/13] bus_find_device: Unify the match callback with class_find_device Date: Wed, 5 Jun 2019 16:13:39 +0100 Message-Id: <1559747630-28065-3-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is an arbitrary difference between the prototypes of bus_find_device() and class_find_device() preventing their callers from passing the same pair of data and match() arguments to both of them, which is the const qualifier used in the prototype of class_find_device(). If that qualifier is also used in the bus_find_device() prototype, it will be possible to pass the same match() callback function to both bus_find_device() and class_find_device(), which will allow some optimizations to be made in order to avoid code duplication going forward. Also with that, constify the "data" parameter as it is passed as a const to the match function. For this reason, change the prototype of bus_find_device() to match the prototype of class_find_device() and adjust its callers to use the const qualifier in accordance with the new prototype of it. Cc: Alexander Shishkin Cc: Andrew Lunn Cc: Andreas Noever Cc: Arnd Bergmann Cc: Bjorn Helgaas Cc: Corey Minyard Cc: Christian Borntraeger Cc: David Kershner Cc: "David S. Miller" Cc: David Airlie Cc: Felipe Balbi Cc: Frank Rowand Cc: Grygorii Strashko Cc: Harald Freudenberger Cc: Hartmut Knaack Cc: Heiko Stuebner Cc: Jason Gunthorpe Cc: Jonathan Cameron Cc: Jonathan Cameron Cc: "James E.J. Bottomley" Cc: Len Brown Cc: Mark Brown Cc: Michael Ellerman Cc: Michael Jamet Cc: "Martin K. Petersen" Cc: Peter Oberparleiter Cc: Rob Herring Cc: Sebastian Ott Cc: Srinivas Kandagatla Cc: Yehezkel Bernat Cc: Wolfram Sang Cc: rafael@kernel.org Cc: Greg Kroah-Hartman Signed-off-by: Suzuki K Poulose --- arch/powerpc/platforms/pseries/ibmebus.c | 4 ++-- drivers/acpi/acpi_lpss.c | 4 ++-- drivers/acpi/sleep.c | 2 +- drivers/acpi/utils.c | 4 ++-- drivers/base/bus.c | 6 +++--- drivers/base/devcon.c | 2 +- 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/hwtracing/coresight/coresight.c | 6 +++--- drivers/hwtracing/coresight/of_coresight.c | 2 +- drivers/hwtracing/intel_th/core.c | 5 ++--- 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/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/css.c | 4 ++-- drivers/s390/cio/device.c | 4 ++-- 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 | 4 ++-- sound/soc/rockchip/rk3399_gru_sound.c | 2 +- 40 files changed, 69 insertions(+), 70 deletions(-) -- 2.7.4 Acked-by: Corey Minyard Acked-by: David Kershner Acked-by: Mark Brown Acked-by: Rafael J. Wysocki Acked-by: Srinivas Kandagatla diff --git a/arch/powerpc/platforms/pseries/ibmebus.c b/arch/powerpc/platforms/pseries/ibmebus.c index 84e8ec4..b91eb09 100644 --- a/arch/powerpc/platforms/pseries/ibmebus.c +++ b/arch/powerpc/platforms/pseries/ibmebus.c @@ -147,13 +147,13 @@ static const struct dma_map_ops ibmebus_dma_ops = { .unmap_page = ibmebus_unmap_page, }; -static int ibmebus_match_path(struct device *dev, void *data) +static int ibmebus_match_path(struct device *dev, const void *data) { struct device_node *dn = to_platform_device(dev)->dev.of_node; return (of_find_node_by_path(data) == dn); } -static int ibmebus_match_node(struct device *dev, void *data) +static int ibmebus_match_node(struct device *dev, const void *data) { return to_platform_device(dev)->dev.of_node == data; } diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c index cf76860..dc2ca78 100644 --- a/drivers/acpi/acpi_lpss.c +++ b/drivers/acpi/acpi_lpss.c @@ -511,10 +511,10 @@ struct hid_uid { const char *uid; }; -static int match_hid_uid(struct device *dev, void *data) +static int match_hid_uid(struct device *dev, const void *data) { struct acpi_device *adev = ACPI_COMPANION(dev); - struct hid_uid *id = data; + const struct hid_uid *id = data; if (!adev) return 0; diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index a34decc..fcf4386 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c @@ -454,7 +454,7 @@ static int acpi_pm_prepare(void) return error; } -static int find_powerf_dev(struct device *dev, void *data) +static int find_powerf_dev(struct device *dev, const void *data) { struct acpi_device *device = to_acpi_device(dev); const char *hid = acpi_device_hid(device); diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index 1391b63..e3974a8 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c @@ -730,10 +730,10 @@ struct acpi_dev_match_info { s64 hrv; }; -static int acpi_dev_match_cb(struct device *dev, void *data) +static int acpi_dev_match_cb(struct device *dev, const void *data) { struct acpi_device *adev = to_acpi_device(dev); - struct acpi_dev_match_info *match = data; + const struct acpi_dev_match_info *match = data; unsigned long long hrv; acpi_status status; diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 0a58e96..df3cac7 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -323,8 +323,8 @@ EXPORT_SYMBOL_GPL(bus_for_each_dev); * return to the caller and not iterate over any more devices. */ struct device *bus_find_device(struct bus_type *bus, - struct device *start, void *data, - int (*match)(struct device *dev, void *data)) + struct device *start, const void *data, + int (*match)(struct device *dev, const void *data)) { struct klist_iter i; struct device *dev; @@ -342,7 +342,7 @@ struct device *bus_find_device(struct bus_type *bus, } EXPORT_SYMBOL_GPL(bus_find_device); -static int match_name(struct device *dev, void *data) +static int match_name(struct device *dev, const void *data) { const char *name = data; diff --git a/drivers/base/devcon.c b/drivers/base/devcon.c index 04db9ae..ac026d5 100644 --- a/drivers/base/devcon.c +++ b/drivers/base/devcon.c @@ -107,7 +107,7 @@ static struct bus_type *generic_match_buses[] = { NULL, }; -static int device_fwnode_match(struct device *dev, void *fwnode) +static int device_fwnode_match(struct device *dev, const void *fwnode) { return dev_fwnode(dev) == fwnode; } diff --git a/drivers/char/ipmi/ipmi_si_platform.c b/drivers/char/ipmi/ipmi_si_platform.c index f2a91c4..fd94c42 100644 --- a/drivers/char/ipmi/ipmi_si_platform.c +++ b/drivers/char/ipmi/ipmi_si_platform.c @@ -426,7 +426,7 @@ static int ipmi_remove(struct platform_device *pdev) return ipmi_si_remove_by_dev(&pdev->dev); } -static int pdev_match_name(struct device *dev, void *data) +static int pdev_match_name(struct device *dev, const void *data) { struct platform_device *pdev = to_platform_device(dev); const char *name = data; diff --git a/drivers/firmware/efi/dev-path-parser.c b/drivers/firmware/efi/dev-path-parser.c index 85ec99f..2012338 100644 --- a/drivers/firmware/efi/dev-path-parser.c +++ b/drivers/firmware/efi/dev-path-parser.c @@ -17,9 +17,9 @@ struct acpi_hid_uid { char uid[11]; /* UINT_MAX + null byte */ }; -static int __init match_acpi_dev(struct device *dev, void *data) +static int __init match_acpi_dev(struct device *dev, const void *data) { - struct acpi_hid_uid hid_uid = *(struct acpi_hid_uid *)data; + struct acpi_hid_uid hid_uid = *(const struct acpi_hid_uid *)data; struct acpi_device *adev = to_acpi_device(dev); if (acpi_match_device_ids(adev, hid_uid.hid)) diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c index 80b7550..ad19df0 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -93,7 +93,7 @@ static struct bus_type mipi_dsi_bus_type = { .pm = &mipi_dsi_device_pm_ops, }; -static int of_device_match(struct device *dev, void *data) +static int of_device_match(struct device *dev, const void *data) { return dev->of_node == data; } diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c index 4b13028..b67ab6a 100644 --- a/drivers/hwtracing/coresight/coresight.c +++ b/drivers/hwtracing/coresight/coresight.c @@ -498,9 +498,9 @@ struct coresight_device *coresight_get_sink(struct list_head *path) return csdev; } -static int coresight_enabled_sink(struct device *dev, void *data) +static int coresight_enabled_sink(struct device *dev, const void *data) { - bool *reset = data; + const bool *reset = data; struct coresight_device *csdev = to_coresight_device(dev); if ((csdev->type == CORESIGHT_DEV_TYPE_SINK || @@ -544,7 +544,7 @@ struct coresight_device *coresight_get_enabled_sink(bool deactivate) return dev ? to_coresight_device(dev) : NULL; } -static int coresight_sink_by_id(struct device *dev, void *data) +static int coresight_sink_by_id(struct device *dev, const void *data) { struct coresight_device *csdev = to_coresight_device(dev); unsigned long hash; diff --git a/drivers/hwtracing/coresight/of_coresight.c b/drivers/hwtracing/coresight/of_coresight.c index 7045930..3fc200e 100644 --- a/drivers/hwtracing/coresight/of_coresight.c +++ b/drivers/hwtracing/coresight/of_coresight.c @@ -18,7 +18,7 @@ #include -static int of_dev_node_match(struct device *dev, void *data) +static int of_dev_node_match(struct device *dev, const void *data) { return dev->of_node == data; } diff --git a/drivers/hwtracing/intel_th/core.c b/drivers/hwtracing/intel_th/core.c index 033dce5..5592289 100644 --- a/drivers/hwtracing/intel_th/core.c +++ b/drivers/hwtracing/intel_th/core.c @@ -789,10 +789,9 @@ static int intel_th_populate(struct intel_th *th) return 0; } -static int match_devt(struct device *dev, void *data) +static int match_devt(struct device *dev, const void *data) { - dev_t devt = (dev_t)(unsigned long)data; - + dev_t devt = (dev_t)(unsigned long)(void *)data; return dev->devt == devt; } diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c index d840955..8af35f11 100644 --- a/drivers/i2c/i2c-core-acpi.c +++ b/drivers/i2c/i2c-core-acpi.c @@ -318,7 +318,7 @@ u32 i2c_acpi_find_bus_speed(struct device *dev) } EXPORT_SYMBOL_GPL(i2c_acpi_find_bus_speed); -static int i2c_acpi_find_match_adapter(struct device *dev, void *data) +static int i2c_acpi_find_match_adapter(struct device *dev, const void *data) { struct i2c_adapter *adapter = i2c_verify_adapter(dev); @@ -328,7 +328,7 @@ static int i2c_acpi_find_match_adapter(struct device *dev, void *data) return ACPI_HANDLE(dev) == (acpi_handle)data; } -static int i2c_acpi_find_match_device(struct device *dev, void *data) +static int i2c_acpi_find_match_device(struct device *dev, const void *data) { return ACPI_COMPANION(dev) == data; } diff --git a/drivers/i2c/i2c-core-of.c b/drivers/i2c/i2c-core-of.c index 406e5f6..2eb59a2 100644 --- a/drivers/i2c/i2c-core-of.c +++ b/drivers/i2c/i2c-core-of.c @@ -112,12 +112,12 @@ void of_i2c_register_devices(struct i2c_adapter *adap) of_node_put(bus); } -static int of_dev_node_match(struct device *dev, void *data) +static int of_dev_node_match(struct device *dev, const void *data) { return dev->of_node == data; } -static int of_dev_or_parent_node_match(struct device *dev, void *data) +static int of_dev_or_parent_node_match(struct device *dev, const void *data) { if (dev->of_node == data) return 1; diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 4a5eff3..c46fb59 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c @@ -93,7 +93,7 @@ static const struct iio_chan_spec #ifdef CONFIG_OF -static int iio_dev_node_match(struct device *dev, void *data) +static int iio_dev_node_match(struct device *dev, const void *data) { return dev->of_node == data && dev->type == &iio_device_type; } diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c index 4c5d0f1..fd90b05 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c @@ -4497,7 +4497,7 @@ static const struct acpi_device_id hns_roce_acpi_match[] = { }; MODULE_DEVICE_TABLE(acpi, hns_roce_acpi_match); -static int hns_roce_node_match(struct device *dev, void *fwnode) +static int hns_roce_node_match(struct device *dev, const void *fwnode) { return dev->fwnode == fwnode; } diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c index 09c16d8..bb6586d 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c @@ -754,7 +754,7 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev) return (void *)misc_op; } -static int hns_dsaf_dev_match(struct device *dev, void *fwnode) +static int hns_dsaf_dev_match(struct device *dev, const void *fwnode) { return dev->fwnode == fwnode; } diff --git a/drivers/net/ethernet/ti/cpsw-phy-sel.c b/drivers/net/ethernet/ti/cpsw-phy-sel.c index 48e0924..4e184ee 100644 --- a/drivers/net/ethernet/ti/cpsw-phy-sel.c +++ b/drivers/net/ethernet/ti/cpsw-phy-sel.c @@ -151,9 +151,9 @@ static void cpsw_gmii_sel_dra7xx(struct cpsw_phy_sel_priv *priv, } static struct platform_driver cpsw_phy_sel_driver; -static int match(struct device *dev, void *data) +static int match(struct device *dev, const void *data) { - struct device_node *node = (struct device_node *)data; + const struct device_node *node = (const struct device_node *)data; return dev->of_node == node && dev->driver == &cpsw_phy_sel_driver.driver; } diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c index 4bf65ca..57d131a 100644 --- a/drivers/net/ethernet/ti/davinci_emac.c +++ b/drivers/net/ethernet/ti/davinci_emac.c @@ -1371,7 +1371,7 @@ static int emac_devioctl(struct net_device *ndev, struct ifreq *ifrq, int cmd) return -EOPNOTSUPP; } -static int match_first_device(struct device *dev, void *data) +static int match_first_device(struct device *dev, const void *data) { if (dev->parent && dev->parent->of_node) return of_device_is_compatible(dev->parent->of_node, diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c index c50a977..8479a44 100644 --- a/drivers/net/ethernet/toshiba/tc35815.c +++ b/drivers/net/ethernet/toshiba/tc35815.c @@ -694,10 +694,10 @@ static int tc_mii_init(struct net_device *dev) * should provide a "tc35815-mac" device with a MAC address in its * platform_data. */ -static int tc35815_mac_match(struct device *dev, void *data) +static int tc35815_mac_match(struct device *dev, const void *data) { struct platform_device *plat_dev = to_platform_device(dev); - struct pci_dev *pci_dev = data; + const struct pci_dev *pci_dev = data; unsigned int id = pci_dev->irq; return !strcmp(plat_dev->name, "tc35815-mac") && plat_dev->id == id; } diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index c7892c3..ac5d945 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -76,7 +76,7 @@ static struct bus_type nvmem_bus_type = { .name = "nvmem", }; -static int of_nvmem_match(struct device *dev, void *nvmem_np) +static int of_nvmem_match(struct device *dev, const void *nvmem_np) { return dev->of_node == nvmem_np; } diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c index de61573..dfe1294 100644 --- a/drivers/of/of_mdio.c +++ b/drivers/of/of_mdio.c @@ -282,7 +282,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) EXPORT_SYMBOL(of_mdiobus_register); /* Helper function for of_phy_find_device */ -static int of_phy_match(struct device *dev, void *phy_np) +static int of_phy_match(struct device *dev, const void *phy_np) { return dev->of_node == phy_np; } diff --git a/drivers/of/platform.c b/drivers/of/platform.c index 04ad312..008d79e 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -37,7 +37,7 @@ static const struct of_device_id of_skipped_node_table[] = { {} /* Empty terminated list */ }; -static int of_dev_node_match(struct device *dev, void *data) +static int of_dev_node_match(struct device *dev, const void *data) { return dev->of_node == data; } diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 0e8e2c1..f9ef7ad 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -64,7 +64,7 @@ static struct resource *get_pci_domain_busn_res(int domain_nr) return &r->res; } -static int find_anything(struct device *dev, void *data) +static int find_anything(struct device *dev, const void *data) { return 1; } diff --git a/drivers/pci/search.c b/drivers/pci/search.c index 5c79226..7f4e658 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c @@ -236,10 +236,10 @@ struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus, } EXPORT_SYMBOL(pci_get_domain_bus_and_slot); -static int match_pci_dev_by_id(struct device *dev, void *data) +static int match_pci_dev_by_id(struct device *dev, const void *data) { struct pci_dev *pdev = to_pci_dev(dev); - struct pci_device_id *id = data; + const struct pci_device_id *id = data; if (pci_match_one_device(id, pdev)) return 1; diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index aea5029..7b8488d 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c @@ -434,10 +434,10 @@ static int css_probe_device(struct subchannel_id schid, struct schib *schib) } static int -check_subchannel(struct device * dev, void * data) +check_subchannel(struct device *dev, const void *data) { struct subchannel *sch; - struct subchannel_id *schid = data; + const struct subchannel_id *schid = data; sch = to_subchannel(dev); return schid_equal(&sch->schid, schid); diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 1540229..6ca9a3a 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c @@ -642,10 +642,10 @@ static int ccw_device_add(struct ccw_device *cdev) return device_add(dev); } -static int match_dev_id(struct device *dev, void *data) +static int match_dev_id(struct device *dev, const void *data) { struct ccw_device *cdev = to_ccwdev(dev); - struct ccw_dev_id *dev_id = data; + const struct ccw_dev_id *dev_id = data; return ccw_dev_id_is_equal(&cdev->private->dev_id, dev_id); } diff --git a/drivers/s390/cio/scm.c b/drivers/s390/cio/scm.c index 6bca1d5..9f26d43 100644 --- a/drivers/s390/cio/scm.c +++ b/drivers/s390/cio/scm.c @@ -174,10 +174,10 @@ static void scmdev_update(struct scm_device *scmdev, struct sale *sale) kobject_uevent(&scmdev->dev.kobj, KOBJ_CHANGE); } -static int check_address(struct device *dev, void *data) +static int check_address(struct device *dev, const void *data) { struct scm_device *scmdev = to_scm_dev(dev); - struct sale *sale = data; + const struct sale *sale = data; return scmdev->address == sale->sa; } diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index b9fc502..b7902b6 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -1356,16 +1356,16 @@ static int ap_get_compatible_type(ap_qid_t qid, int rawtype, unsigned int func) * Helper function to be used with bus_find_dev * matches for the card device with the given id */ -static int __match_card_device_with_id(struct device *dev, void *data) +static int __match_card_device_with_id(struct device *dev, const void *data) { - return is_card_dev(dev) && to_ap_card(dev)->id == (int)(long) data; + return is_card_dev(dev) && to_ap_card(dev)->id == (int)(long)(void *) data; } /* * Helper function to be used with bus_find_dev * matches for the queue device with a given qid */ -static int __match_queue_device_with_qid(struct device *dev, void *data) +static int __match_queue_device_with_qid(struct device *dev, const void *data) { return is_queue_dev(dev) && to_ap_queue(dev)->qid == (int)(long) data; } @@ -1374,7 +1374,7 @@ static int __match_queue_device_with_qid(struct device *dev, void *data) * Helper function to be used with bus_find_dev * matches any queue device with given queue id */ -static int __match_queue_device_with_queue_id(struct device *dev, void *data) +static int __match_queue_device_with_queue_id(struct device *dev, const void *data) { return is_queue_dev(dev) && AP_QID_QUEUE(to_ap_queue(dev)->qid) == (int)(long) data; diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c index 7f0ceb6..c074631 100644 --- a/drivers/scsi/scsi_proc.c +++ b/drivers/scsi/scsi_proc.c @@ -372,7 +372,7 @@ static ssize_t proc_scsi_write(struct file *file, const char __user *buf, return err; } -static int always_match(struct device *dev, void *data) +static int always_match(struct device *dev, const void *data) { return 1; } diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 5e75944..3da1121 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -3538,7 +3538,7 @@ EXPORT_SYMBOL_GPL(spi_write_then_read); /*-------------------------------------------------------------------------*/ #if IS_ENABLED(CONFIG_OF) -static int __spi_of_device_match(struct device *dev, void *data) +static int __spi_of_device_match(struct device *dev, const void *data) { return dev->of_node == data; } @@ -3639,7 +3639,7 @@ static int spi_acpi_controller_match(struct device *dev, const void *data) return ACPI_COMPANION(dev->parent) == data; } -static int spi_acpi_device_match(struct device *dev, void *data) +static int spi_acpi_device_match(struct device *dev, const void *data) { return ACPI_COMPANION(dev) == data; } diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c index 86a8545..3f8f340 100644 --- a/drivers/staging/most/core.c +++ b/drivers/staging/most/core.c @@ -561,9 +561,9 @@ static int split_string(char *buf, char **a, char **b, char **c, char **d) return 0; } -static int match_bus_dev(struct device *dev, void *data) +static int match_bus_dev(struct device *dev, const void *data) { - char *mdev_name = data; + const char *mdev_name = data; return !strcmp(dev_name(dev), mdev_name); } diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index c1b0165..c9a7e4a 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -1946,10 +1946,10 @@ struct tb_sw_lookup { u64 route; }; -static int tb_switch_match(struct device *dev, void *data) +static int tb_switch_match(struct device *dev, const void *data) { struct tb_switch *sw = tb_to_switch(dev); - struct tb_sw_lookup *lookup = data; + const struct tb_sw_lookup *lookup = data; if (!sw) return 0; diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index fa783531..7bd7de7 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -947,9 +947,9 @@ static int parse_usbdevfs_streams(struct usb_dev_state *ps, return ret; } -static int match_devt(struct device *dev, void *data) +static int match_devt(struct device *dev, const void *data) { - return dev->devt == (dev_t) (unsigned long) data; + return dev->devt == (dev_t)(unsigned long)(void *)data; } static struct usb_device *usbdev_lookup_by_devt(dev_t devt) diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 7fcb9f7..1678e30 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -325,9 +325,9 @@ struct find_interface_arg { struct device_driver *drv; }; -static int __find_interface(struct device *dev, void *data) +static int __find_interface(struct device *dev, const void *data) { - struct find_interface_arg *arg = data; + const struct find_interface_arg *arg = data; struct usb_interface *intf; if (!is_usb_interface(dev)) diff --git a/drivers/usb/phy/phy-am335x-control.c b/drivers/usb/phy/phy-am335x-control.c index a3cb25c..d16dfc3 100644 --- a/drivers/usb/phy/phy-am335x-control.c +++ b/drivers/usb/phy/phy-am335x-control.c @@ -118,9 +118,9 @@ static const struct of_device_id omap_control_usb_id_table[] = { MODULE_DEVICE_TABLE(of, omap_control_usb_id_table); static struct platform_driver am335x_control_driver; -static int match(struct device *dev, void *data) +static int match(struct device *dev, const void *data) { - struct device_node *node = (struct device_node *)data; + const struct device_node *node = (const struct device_node *)data; return dev->of_node == node && dev->driver == &am335x_control_driver.driver; } diff --git a/drivers/usb/phy/phy-isp1301.c b/drivers/usb/phy/phy-isp1301.c index 93b7d6a..6cf6fbd 100644 --- a/drivers/usb/phy/phy-isp1301.c +++ b/drivers/usb/phy/phy-isp1301.c @@ -142,9 +142,9 @@ static struct i2c_driver isp1301_driver = { module_i2c_driver(isp1301_driver); -static int match(struct device *dev, void *data) +static int match(struct device *dev, const void *data) { - struct device_node *node = (struct device_node *)data; + const struct device_node *node = (const struct device_node *)data; return (dev->of_node == node) && (dev->driver == &isp1301_driver.driver); } diff --git a/drivers/visorbus/visorbus_main.c b/drivers/visorbus/visorbus_main.c index 0b2434c..152fd29 100644 --- a/drivers/visorbus/visorbus_main.c +++ b/drivers/visorbus/visorbus_main.c @@ -171,10 +171,10 @@ struct visor_busdev { u32 dev_no; }; -static int match_visorbus_dev_by_id(struct device *dev, void *data) +static int match_visorbus_dev_by_id(struct device *dev, const void *data) { struct visor_device *vdev = to_visor_device(dev); - struct visor_busdev *id = data; + const struct visor_busdev *id = data; if (vdev->chipset_bus_no == id->bus_no && vdev->chipset_dev_no == id->dev_no) diff --git a/include/linux/device.h b/include/linux/device.h index e85264f..cbbdcadc 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -166,8 +166,8 @@ void subsys_dev_iter_exit(struct subsys_dev_iter *iter); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); struct device *bus_find_device(struct bus_type *bus, struct device *start, - void *data, - int (*match)(struct device *dev, void *data)); + const void *data, + int (*match)(struct device *dev, const void *data)); struct device *bus_find_device_by_name(struct bus_type *bus, struct device *start, const char *name); diff --git a/sound/soc/rockchip/rk3399_gru_sound.c b/sound/soc/rockchip/rk3399_gru_sound.c index 3d0cc6e..c04c9ed 100644 --- a/sound/soc/rockchip/rk3399_gru_sound.c +++ b/sound/soc/rockchip/rk3399_gru_sound.c @@ -405,7 +405,7 @@ static const struct dailink_match_data dailink_match[] = { }, }; -static int of_dev_node_match(struct device *dev, void *data) +static int of_dev_node_match(struct device *dev, const void *data) { return dev->of_node == data; } From patchwork Wed Jun 5 15:13:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165891 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485178ili; Wed, 5 Jun 2019 08:14:31 -0700 (PDT) X-Google-Smtp-Source: APXvYqw3yG7gyZ/xPbX9GReeTBi/6yCLEXZS7dviqV9h9TaXn2ATwALyofCw3kCawFtuNstJsw4U X-Received: by 2002:a17:90a:6505:: with SMTP id i5mr41917228pjj.13.1559747671498; Wed, 05 Jun 2019 08:14:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747671; cv=none; d=google.com; s=arc-20160816; b=bMxmcNRRU0OD/SDz+ZQplKGfzIzq+GvrgOS6iehoHBcolaPdLO4dvbbOsfJ0vphDDo HnkK1BHkNa1v6RAPuDPQUSUzJ7m7b2qPJy5J1M6YoDxYi0w4SefxRBqXODDX4MExtr4Y MSs9ez2XOuOkhKGXJ0qIY36QjmOQ6YK4bdYGXi8Xz7DC1s3uW1yan4k2+FLDvFz0vFTG 7Y5/gw/BW0Aimnjzb/XwfQvg9uR7wmw0p5JlRh25JZXIJSv7CcuYZ+NpJCUFSGSf9jB0 bGvseDYZGBH6O6c/LgYfs5tvdIKYBidVax3XI5KWeYZmZJSArxSd/zTc6SbZtX9hv3Zt LUiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=c28XptoeY3kAaK8FVWq2zIAc27hNvsZMKbj95NDyvp4=; b=0ubgn1w6URdJsQeO0r3cesJjck0HgcQV3+EwfKYZjQkFnXnewCCEHzxyplmc8h0h8g 641Co5HfF6jyHCcVfhU/M/UI3OdOj+wKkhKVhw4kvKkdIaNpp3G3PE7zxfW9sg09rirf Ji+rLbo/qtACDXxz1bSyOx02TxFShfvyNBLeRy2PC9pfPrQoKqwfKgNyFHvCt/lAv9rk Zv8DY53Hy+pPQWXXj/XAO6W9FCRJN/csbI9FaamAHOJ0Ne6QAxA6j+rUc+toXRv3z+Pm 4EAsJcFsjdUY0iv71E55R/af+d9mGcSt1GBE9dKtD7JVpN+KlYSYuQ3OrQz7mLU0jeQB QsZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v15si29085327pfm.91.2019.06.05.08.14.31; Wed, 05 Jun 2019 08:14:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728453AbfFEPOa (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:30 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33364 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728062AbfFEPO3 (ORCPT ); Wed, 5 Jun 2019 11:14:29 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C0A20374; Wed, 5 Jun 2019 08:14:28 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id EF4063F246; Wed, 5 Jun 2019 08:14:25 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Corey Minyard , Russell King , Thierry Reding , Will Deacon , Joerg Roedel , Peter Oberparleiter , Sebastian Ott , David Airlie , Daniel Vetter , Nehal Shah , Shyam Sundar S K , Lee Jones , Christian Borntraeger Subject: [PATCH 03/13] driver_find_device: Unify the match function with class_find_device() Date: Wed, 5 Jun 2019 16:13:40 +0100 Message-Id: <1559747630-28065-4-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The driver_find_device() accepts a match function pointer to filter the devices for lookup, similar to bus/class_find_device(). However, there is a minor difference in the prototype for the match parameter for driver_find_device() with the now unified version accepted by {bus/class}_find_device(), where it doesn't accept a "const" qualifier for the data argument. This prevents us from reusing the generic match functions for driver_find_device(). For this reason, change the prototype of the driver_find_device() to make the "match" parameter in line with {bus/class}_find_device() and adjust its callers to use the const qualifier. Also, we could now promote the "data" parameter to const as we pass it down as a const parameter to the match functions. Cc: Corey Minyard Cc: Russell King Cc: Thierry Reding Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Cc: Will Deacon Cc: Joerg Roedel Cc: Peter Oberparleiter Cc: Sebastian Ott Cc: David Airlie Cc: Daniel Vetter Cc: Nehal Shah Cc: Shyam Sundar S K Cc: Lee Jones Cc: Christian Borntraeger Signed-off-by: Suzuki K Poulose --- drivers/amba/tegra-ahb.c | 4 ++-- drivers/base/driver.c | 4 ++-- drivers/char/ipmi/ipmi_msghandler.c | 8 ++++---- drivers/gpu/drm/tegra/dc.c | 4 ++-- drivers/i2c/busses/i2c-amd-mp2-pci.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/s390/cio/ccwgroup.c | 2 +- drivers/s390/cio/chsc_sch.c | 2 +- drivers/s390/cio/device.c | 2 +- include/linux/device.h | 4 ++-- 13 files changed, 21 insertions(+), 21 deletions(-) -- 2.7.4 diff --git a/drivers/amba/tegra-ahb.c b/drivers/amba/tegra-ahb.c index 3751d81..42175a6 100644 --- a/drivers/amba/tegra-ahb.c +++ b/drivers/amba/tegra-ahb.c @@ -143,10 +143,10 @@ static inline void gizmo_writel(struct tegra_ahb *ahb, u32 value, u32 offset) } #ifdef CONFIG_TEGRA_IOMMU_SMMU -static int tegra_ahb_match_by_smmu(struct device *dev, void *data) +static int tegra_ahb_match_by_smmu(struct device *dev, const void *data) { struct tegra_ahb *ahb = dev_get_drvdata(dev); - struct device_node *dn = data; + const struct device_node *dn = data; return (ahb->dev->of_node == dn) ? 1 : 0; } diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 857c8f1..4e5ca63 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -73,8 +73,8 @@ EXPORT_SYMBOL_GPL(driver_for_each_device); * return to the caller and not iterate over any more devices. */ struct device *driver_find_device(struct device_driver *drv, - struct device *start, void *data, - int (*match)(struct device *dev, void *data)) + struct device *start, const void *data, + int (*match)(struct device *dev, const void *data)) { struct klist_iter i; struct device *dev; diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index 1dc1074..6707659 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -2819,9 +2819,9 @@ static const struct device_type bmc_device_type = { .groups = bmc_dev_attr_groups, }; -static int __find_bmc_guid(struct device *dev, void *data) +static int __find_bmc_guid(struct device *dev, const void *data) { - guid_t *guid = data; + const guid_t *guid = data; struct bmc_device *bmc; int rv; @@ -2857,9 +2857,9 @@ struct prod_dev_id { unsigned char device_id; }; -static int __find_bmc_prod_dev_id(struct device *dev, void *data) +static int __find_bmc_prod_dev_id(struct device *dev, const void *data) { - struct prod_dev_id *cid = data; + const struct prod_dev_id *cid = data; struct bmc_device *bmc; int rv; diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 607a6ea1..52109a6 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -2375,10 +2375,10 @@ static int tegra_dc_parse_dt(struct tegra_dc *dc) return 0; } -static int tegra_dc_match_by_pipe(struct device *dev, void *data) +static int tegra_dc_match_by_pipe(struct device *dev, const void *data) { struct tegra_dc *dc = dev_get_drvdata(dev); - unsigned int pipe = (unsigned long)data; + unsigned int pipe = (unsigned long)(void *)data; return dc->pipe == pipe; } diff --git a/drivers/i2c/busses/i2c-amd-mp2-pci.c b/drivers/i2c/busses/i2c-amd-mp2-pci.c index 455e1f3..c7fe3b4 100644 --- a/drivers/i2c/busses/i2c-amd-mp2-pci.c +++ b/drivers/i2c/busses/i2c-amd-mp2-pci.c @@ -457,7 +457,7 @@ static struct pci_driver amd_mp2_pci_driver = { }; module_pci_driver(amd_mp2_pci_driver); -static int amd_mp2_device_match(struct device *dev, void *data) +static int amd_mp2_device_match(struct device *dev, const void *data) { return 1; } diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index 4d5a694..d787856 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -2023,7 +2023,7 @@ arm_smmu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) static struct platform_driver arm_smmu_driver; -static int arm_smmu_match_node(struct device *dev, void *data) +static int arm_smmu_match_node(struct device *dev, const void *data) { return dev->fwnode == data; } diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c index 5e54cc0..4ce429b 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c @@ -1431,7 +1431,7 @@ static bool arm_smmu_capable(enum iommu_cap cap) } } -static int arm_smmu_match_node(struct device *dev, void *data) +static int arm_smmu_match_node(struct device *dev, const void *data) { return dev->fwnode == data; } diff --git a/drivers/mfd/altera-sysmgr.c b/drivers/mfd/altera-sysmgr.c index 8976f82..2ee14d8 100644 --- a/drivers/mfd/altera-sysmgr.c +++ b/drivers/mfd/altera-sysmgr.c @@ -92,9 +92,9 @@ static struct regmap_config altr_sysmgr_regmap_cfg = { * Matching function used by driver_find_device(). * Return: True if match is found, otherwise false. */ -static int sysmgr_match_phandle(struct device *dev, void *data) +static int sysmgr_match_phandle(struct device *dev, const void *data) { - return dev->of_node == (struct device_node *)data; + return dev->of_node == (const struct device_node *)data; } /** diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index 8ce1e41..4f39ba5 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -190,7 +190,7 @@ struct regmap *syscon_regmap_lookup_by_compatible(const char *s) } EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_compatible); -static int syscon_match_pdevname(struct device *dev, void *data) +static int syscon_match_pdevname(struct device *dev, const void *data) { return !strcmp(dev_name(dev), (const char *)data); } diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c index 4ebf6d4..7c27e53 100644 --- a/drivers/s390/cio/ccwgroup.c +++ b/drivers/s390/cio/ccwgroup.c @@ -608,7 +608,7 @@ void ccwgroup_driver_unregister(struct ccwgroup_driver *cdriver) } EXPORT_SYMBOL(ccwgroup_driver_unregister); -static int __ccwgroupdev_check_busid(struct device *dev, void *id) +static int __ccwgroupdev_check_busid(struct device *dev, const void *id) { char *bus_id = id; diff --git a/drivers/s390/cio/chsc_sch.c b/drivers/s390/cio/chsc_sch.c index 8d9f366..8f080d3 100644 --- a/drivers/s390/cio/chsc_sch.c +++ b/drivers/s390/cio/chsc_sch.c @@ -203,7 +203,7 @@ static void chsc_cleanup_sch_driver(void) static DEFINE_SPINLOCK(chsc_lock); -static int chsc_subchannel_match_next_free(struct device *dev, void *data) +static int chsc_subchannel_match_next_free(struct device *dev, const void *data) { struct subchannel *sch = to_subchannel(dev); diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 6ca9a3a..a5c2765 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c @@ -1653,7 +1653,7 @@ EXPORT_SYMBOL_GPL(ccw_device_force_console); * get ccw_device matching the busid, but only if owned by cdrv */ static int -__ccwdev_check_busid(struct device *dev, void *id) +__ccwdev_check_busid(struct device *dev, const void *id) { char *bus_id; diff --git a/include/linux/device.h b/include/linux/device.h index cbbdcadc..4d7c881 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -336,8 +336,8 @@ extern int __must_check driver_for_each_device(struct device_driver *drv, int (*fn)(struct device *dev, void *)); struct device *driver_find_device(struct device_driver *drv, - struct device *start, void *data, - int (*match)(struct device *dev, void *data)); + struct device *start, const void *data, + int (*match)(struct device *dev, const void *data)); void driver_deferred_probe_add(struct device *dev); int driver_deferred_probe_check_state(struct device *dev); From patchwork Wed Jun 5 15:13:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165893 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485407ili; Wed, 5 Jun 2019 08:14:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqxgFVGP2BxLPUwF5B4cA26X+fIfD8x7EihpABisBzjX/H4DvIExRIKupkqUEySb2gypu4dY X-Received: by 2002:a63:d416:: with SMTP id a22mr5189643pgh.218.1559747680806; Wed, 05 Jun 2019 08:14:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747680; cv=none; d=google.com; s=arc-20160816; b=kMcjA3huL2k1GYYgKlaiUSuOcYoX3xobiRO49RDfjPTMywtM6MF0Rq9ViZq+5SJFUA Sj6aEK+PH4qB7BnLfNPpDzgRFgnxS1Yx2zM0LnReKxpzPsGx4q46il0NQ2HcyvqIhzUp oudfn2exYrF7FLLNbRRQw2iWIsZwyQ0EFWrnVb8DGSePCcCHUw+OASVRuFNSEWkRddGb jzZvZZ45+lrFlyYFtFIKZTG9wNFVZzhhu4KBqb1Pi92vDr7pG+HzAOgc2oyotaUnmeMn TAsHoYe+xAXZSVjIwHsBTCwBMrZF2TUJJNajBSW0s9X6mRTAwGsAbQlVRQ8+ko/+W86t 74Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=bOYYioo2+Mo5WyuuBNP7QClb29vzs18ofNSx+oECXfQ=; b=OpQ6qiwZHFlt7EeFz5RUC3QDv3Ybb8HPvevBbGTecuxmMVkP2nC6BlyxnVLoaIYceD aJ31MrLegMb6OalnfkPMJ03O5hlw2dZx6DM8GRMMg7WXhEOTSqiVgqsuWF+cIiIZ7SMv 0iFgcOQ33TG28nTfWfEAgugeA3uPWP4zGP+S4qss9Je8MNvqsmUBzjAVw0iuVOWIMMKh co36eUqRzwmIjB+237um8q69yZhRdYQq/7Btck00FLqcYXJUiy0FTfARnq9uEnU1LBnh YHJRLEXkzZtLW3sonlzXFDzvZi9gHMWwTVYA7s5rUF4RaqkSAMUQUrjtXMFJXJM1a54Y ndSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x13si27921029pjn.50.2019.06.05.08.14.40; Wed, 05 Jun 2019 08:14:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728534AbfFEPOj (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:39 -0400 Received: from foss.arm.com ([217.140.101.70]:33426 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728458AbfFEPOh (ORCPT ); Wed, 5 Jun 2019 11:14:37 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7F2AB374; Wed, 5 Jun 2019 08:14:36 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8DD463F246; Wed, 5 Jun 2019 08:14:34 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, "David S. Miller" , Doug Ledford , Heikki Krogerus , Jason Gunthorpe , linux-usb@vger.kernel.org, Ulf Hansson , Joe Perches Subject: [PATCH 05/13] drivers: Add generic helper to match by fwnode Date: Wed, 5 Jun 2019 16:13:42 +0100 Message-Id: <1559747630-28065-6-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a helper to match the firmware node handle of a device. This will be used later for generic look up by fwnode helpers. Cc: "David S. Miller" Cc: Doug Ledford Cc: Greg Kroah-Hartman Cc: Heikki Krogerus Cc: Jason Gunthorpe Cc: linux-usb@vger.kernel.org Cc: "Rafael J. Wysocki" Cc: Greg Kroah-Hartman Cc: Ulf Hansson Cc: Joe Perches Signed-off-by: Suzuki K Poulose --- drivers/base/core.c | 6 ++++++ include/linux/device.h | 1 + 2 files changed, 7 insertions(+) -- 2.7.4 diff --git a/drivers/base/core.c b/drivers/base/core.c index 9211908..efcdb96 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3334,3 +3334,9 @@ int device_match_of_node(struct device *dev, const void *np) return dev->of_node == np; } EXPORT_SYMBOL_GPL(device_match_of_node); + +int device_match_fwnode(struct device *dev, const void *fwnode) +{ + return dev_fwnode(dev) == fwnode; +} +EXPORT_SYMBOL_GPL(device_match_fwnode); diff --git a/include/linux/device.h b/include/linux/device.h index 7093085..08aa087 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -164,6 +164,7 @@ struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter); void subsys_dev_iter_exit(struct subsys_dev_iter *iter); int device_match_of_node(struct device *dev, const void *np); +int device_match_fwnode(struct device *dev, const void *fwnode); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); From patchwork Wed Jun 5 15:13:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165895 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485601ili; Wed, 5 Jun 2019 08:14:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqzXZp34oCij2w4NGM9DOicjysqMwaVE9fyuTwxs5fwK1tx06dll0Fsvzoa7O5tpL7JsLukg X-Received: by 2002:a17:902:8c82:: with SMTP id t2mr44245859plo.256.1559747688700; Wed, 05 Jun 2019 08:14:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747688; cv=none; d=google.com; s=arc-20160816; b=hXI7JN+HKSy74vztxrTLHpil4EfUvNztGXJ85XBWrHX93w2BRuaytA6cT2lHDqtE7F Rm8HW/bfoUtGb1SHkdliiefQ01i7tnaZP/83M+r5Rcx1rHsxlGkpZzRHi4grBUyLwiqv bJU0w46pBP2JkZ7qSSd+lgFOsssTL9icTfh2zD0wfuXbEDCCoEE0WrQDeo44PhQg48TG o0a7CqJw8I+8jsUAUnNUCd7Ou99smRzKctqzXwujk/H2ixu5UbJ41ynz7VKpjQ0+sJM9 VfS+W/dLtwBhZsbOFD657POQRfjrXW9u3v8LTccn/7tyQAf2vlixZSqrLy0uVP7Uv7SX i5AA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=JawPuYwv+r4yQC6mSSi1O7MYW8mZtBQXPtwa5uHGiJg=; b=MpU6ZWkP+ery0eh4Og1nLKqlkglVUqcmUN96Jy7lykKbkPfqwIAyHZhzj2XUryEuxy n05jcZd/oMre/MEUGyzW0vmbaWdT33xS/93ZyHk3v0447UkFvrS7WrirMQK2FLy3erqb NC5glwXCS5zZGqcTOPLJCIO149IsyYDjrCS3Kfk9sSHvqK+IeaIj212Fwu/Zr73bMhsv 9nuECBTFiDnwueDC8pDXhVtIAJIYyopy1dqEKF1F5FIN6AoWKO9D0xwoh/aWscQWbJkU stwiX0jTG4UD9Ydc9mUjVaaMjVIgINVwTOQghbp8/6XN0AY8nenwIFerdH6+Gfhn2Z+H k6GA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o6si22557160pgk.52.2019.06.05.08.14.48; Wed, 05 Jun 2019 08:14:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728585AbfFEPOr (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:47 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33472 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728200AbfFEPOl (ORCPT ); Wed, 5 Jun 2019 11:14:41 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E056715BF; Wed, 5 Jun 2019 08:14:40 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 612923F246; Wed, 5 Jun 2019 08:14:39 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Len Brown , linux-acpi@vger.kernel.org, linux-spi@vger.kernel.org, Mark Brown Subject: [PATCH 07/13] drivers: Add generic match helper by ACPI_COMPANION device Date: Wed, 5 Jun 2019 16:13:44 +0100 Message-Id: <1559747630-28065-8-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a generic helper to match a device by the acpi device. Cc: Len Brown Cc: linux-acpi@vger.kernel.org Cc: linux-spi@vger.kernel.org Cc: Mark Brown Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Signed-off-by: Suzuki K Poulose --- drivers/base/core.c | 6 ++++++ include/linux/device.h | 1 + 2 files changed, 7 insertions(+) -- 2.7.4 diff --git a/drivers/base/core.c b/drivers/base/core.c index b827ca1..597095b 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3346,3 +3346,9 @@ int device_match_devt(struct device *dev, const void *pdevt) return dev->devt == *(dev_t *)pdevt; } EXPORT_SYMBOL_GPL(device_match_devt); + +int device_match_acpi_dev(struct device *dev, const void *adev) +{ + return ACPI_COMPANION(dev) == adev; +} +EXPORT_SYMBOL(device_match_acpi_dev); diff --git a/include/linux/device.h b/include/linux/device.h index f315692..a03b50d 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -166,6 +166,7 @@ void subsys_dev_iter_exit(struct subsys_dev_iter *iter); int device_match_of_node(struct device *dev, const void *np); int device_match_fwnode(struct device *dev, const void *fwnode); int device_match_devt(struct device *dev, const void *pdevt); +int device_match_acpi_dev(struct device *dev, const void *adev); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); From patchwork Wed Jun 5 15:13:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165897 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485833ili; Wed, 5 Jun 2019 08:14:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqzAKHMKNO3WeZzvue8iJnVfYhQ6VVrGpxOA/HLHCbB2qhU5ZLkp0iXbDDOnc1cZ8bofPUZU X-Received: by 2002:a17:90a:29c5:: with SMTP id h63mr11112367pjd.83.1559747697458; Wed, 05 Jun 2019 08:14:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747697; cv=none; d=google.com; s=arc-20160816; b=Y2QyzBWMw5vpTTYaPSjEDolY1/YHd2NKISR5D1Mrmiob8ZL0SkW6UUFl5qvWKVR8f5 M4d2WliKu81Vk2sZjO5mCAYQwxlaJ9kzZSqlEWuPfpZLnji9F5joGt7lT4OvrUzDWQ2D qv5DsmswnLKrnaMA5EnFbXiVdg6gax1sQW890mhaoe+F28ZlA+80hFkhekUuHxYzQUZ9 gbSIxwB5bv3F4AsfF0CAimBAiWfgVjy9c5c2N9ScqK8CT5KCC5xOlrN7RQU+8FfOq6dn xkq9hv62P0XeZ/4uwwnEqYMaEXOuD/ADbmqJXWhmZKuRKoF9xqfEBMdWoPF/rgVLyhNm cWWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=fFYYaXft/2+WM9VodjBpK+PLCOoKQitTY0IAJipzEcE=; b=MpIMRgCnl163GJHefjkqyZ51jdC+HEeiv4xD6XIyFkwYYKajqWJjlg8A534pexqvt3 HcuxVxhBkqXQARp6ahBx9YQUpmWbtYdqPZ4I2DWP1cSsmhyXisbdu4pjpPAZTCNRtrYF ZfG17n4c1PGhc212PZHAVh5iaNfky9hkyry5JEwnbZ0n5kwVME2sij2Bqh6l67caYuoq B8ntNH7LaFZV2f+Q8LWLunzeN5M1ndIk3oi/95/6uAb8M+gkavzayCQOKSjPrO2Xs8fb 0FaUy5nwmg92VZXTW+WS8PPZAjE7ChTU64ue8WuToi3HVAOVQu5rIg+3FAHR0XeQPo1h yyHA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h68si26807792pgc.270.2019.06.05.08.14.57; Wed, 05 Jun 2019 08:14:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728637AbfFEPOz (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:55 -0400 Received: from foss.arm.com ([217.140.101.70]:33484 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728553AbfFEPOp (ORCPT ); Wed, 5 Jun 2019 11:14:45 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2374915BF; Wed, 5 Jun 2019 08:14:45 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2A35A3F246; Wed, 5 Jun 2019 08:14:41 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Alessandro Zummo , Alexander Aring , Alexander Shishkin , Alexandre Belloni , Arnd Bergmann , Dan Murphy , Harald Freudenberger , Heikki Krogerus , Heiko Carstens , Jacek Anaszewski , Lee Jones , linux-leds@vger.kernel.org, linux-rtc@vger.kernel.org, linux-usb@vger.kernel.org, linux-wpan@vger.kernel.org, Martin Schwidefsky , Maxime Coquelin , Pavel Machek , Peter Oberparleiter , Stefan Schmidt , "Rafael J. Wysocki" Subject: [PATCH 08/13] drivers: Add generic helper to match by name Date: Wed, 5 Jun 2019 16:13:45 +0100 Message-Id: <1559747630-28065-9-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a helper to match the device name Cc: Alessandro Zummo Cc: Alexander Aring Cc: Alexander Shishkin Cc: Alexandre Belloni Cc: Arnd Bergmann Cc: Dan Murphy Cc: Greg Kroah-Hartman Cc: Harald Freudenberger Cc: Heikki Krogerus Cc: Heiko Carstens Cc: Jacek Anaszewski Cc: Lee Jones Cc: linux-leds@vger.kernel.org Cc: linux-rtc@vger.kernel.org Cc: linux-usb@vger.kernel.org Cc: linux-wpan@vger.kernel.org Cc: Martin Schwidefsky Cc: Maxime Coquelin Cc: Pavel Machek Cc: Peter Oberparleiter Cc: "Rafael J. Wysocki" Cc: Stefan Schmidt Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Signed-off-by: Suzuki K Poulose --- drivers/base/core.c | 6 ++++++ include/linux/device.h | 1 + 2 files changed, 7 insertions(+) -- 2.7.4 diff --git a/drivers/base/core.c b/drivers/base/core.c index 597095b..5724f93 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3352,3 +3352,9 @@ int device_match_acpi_dev(struct device *dev, const void *adev) return ACPI_COMPANION(dev) == adev; } EXPORT_SYMBOL(device_match_acpi_dev); + +int device_match_name(struct device *dev, const void *name) +{ + return sysfs_streq(dev_name(dev), name); +} +EXPORT_SYMBOL_GPL(device_match_name); diff --git a/include/linux/device.h b/include/linux/device.h index a03b50d..74dd9c6 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -167,6 +167,7 @@ int device_match_of_node(struct device *dev, const void *np); int device_match_fwnode(struct device *dev, const void *fwnode); int device_match_devt(struct device *dev, const void *pdevt); int device_match_acpi_dev(struct device *dev, const void *adev); +int device_match_name(struct device *dev, const void *name); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); From patchwork Wed Jun 5 15:13:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165896 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485655ili; Wed, 5 Jun 2019 08:14:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqyM6uwW1sDXtijcuuzvYhRG8lC2UvYzkq4Vx7+3EJ/iSaMJbbqm2ArLQ3z/RMN9wzx+RkGK X-Received: by 2002:a62:d149:: with SMTP id t9mr24967527pfl.173.1559747690742; Wed, 05 Jun 2019 08:14:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747690; cv=none; d=google.com; s=arc-20160816; b=GiXkrClVA7hlaBFvDCQ4juftc+IEslJPVCvndo5cFSXrpUPx+zZNpHtDbo6rTSL0kw WyLYsza/bX0RcH/VokDrKX4zTh13kFsQWIIR7nqrjRWBdWI0OSG9ICIT99Re+L32tGF2 4EdqXkgpmS5hBu8uQDB/+6Pk/gSIDFZtnPhzvGpPjkKWizYd2NAT3lQ5OMn3NhVgf7K+ OXs4+MEYP6AuGtonkFoSbB3Cr1jk+I0LD1Xk6S+YbDZlmcAyjytwSMFoIgrWTkWjo5AM 4nADM/+1t8TPGz3PFM4xjR31NcaxAYT4OWjusoGfbJvAuYCJUjztl2SmKRmxJTLZb44g zuAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=5ybt7INfJUw3dEPPpVIBmaMRsBEfyWzLAe+UoCOdYnY=; b=gpL/Jq33Qfwft03V/g7E5ObttQHph18OqsEn94LRcYDoYT3kJiZ2HQLwhoTn3LMrhu wUw/Y7Y1mEohLa7MYyUhEk8IjD1yVuTShilAMCywC86NhEI5QveSzOiOBgcctQsoLTw3 OsU35DAbUHTQF3RrR5sUyVWBzuQYqCH86qnZNqzQJnLuVJcqGuIk1UOXdL/wx3fnj0nd 12wji7NVVhmd+PdoVBEOcAcQRC0nU+RZts9dSwVjANy9iaYT79yvIY4+Hst2UCMnAGHX nKwCx/ALoq8k9hV2LgBpyDJWP3y2UT1bQ+mlpuHLNTUu+oZfx2N3k6tyRronODHEX9gs Xp/g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o6si22557160pgk.52.2019.06.05.08.14.50; Wed, 05 Jun 2019 08:14:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728604AbfFEPOt (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:49 -0400 Received: from foss.arm.com ([217.140.101.70]:33518 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728200AbfFEPOr (ORCPT ); Wed, 5 Jun 2019 11:14:47 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5306A15A2; Wed, 5 Jun 2019 08:14:47 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 609023F246; Wed, 5 Jun 2019 08:14:45 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Bjorn Helgaas , Elie Morisse , "James E.J. Bottomley" , "Martin K. Petersen" , Nehal Shah , "Rafael J. Wysocki" , Shyam Sundar S K Subject: [PATCH 09/13] drivers: Add generic helper to match any device Date: Wed, 5 Jun 2019 16:13:46 +0100 Message-Id: <1559747630-28065-10-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a generic helper to match any/all devices. Cc: Bjorn Helgaas Cc: Elie Morisse Cc: "James E.J. Bottomley" Cc: "Martin K. Petersen" Cc: Nehal Shah Cc: "Rafael J. Wysocki" Cc: Shyam Sundar S K Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Signed-off-by: Suzuki K Poulose --- drivers/base/core.c | 6 ++++++ include/linux/device.h | 1 + 2 files changed, 7 insertions(+) -- 2.7.4 diff --git a/drivers/base/core.c b/drivers/base/core.c index 5724f93..053ee2e 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3358,3 +3358,9 @@ int device_match_name(struct device *dev, const void *name) return sysfs_streq(dev_name(dev), name); } EXPORT_SYMBOL_GPL(device_match_name); + +int device_match_any(struct device *dev, const void *unused) +{ + return 1; +} +EXPORT_SYMBOL_GPL(device_match_any); diff --git a/include/linux/device.h b/include/linux/device.h index 74dd9c6..8c8727b 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -168,6 +168,7 @@ int device_match_fwnode(struct device *dev, const void *fwnode); int device_match_devt(struct device *dev, const void *pdevt); int device_match_acpi_dev(struct device *dev, const void *adev); int device_match_name(struct device *dev, const void *name); +int device_match_any(struct device *dev, const void *unused); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); From patchwork Wed Jun 5 15:13:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165898 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485885ili; Wed, 5 Jun 2019 08:14:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqySW9kgBvpesYMbld5KHaCme9sCY+uRCyVKQQJQn27KRYS0IczBsRR3kIpvF5LQyQh7avic X-Received: by 2002:a65:5c88:: with SMTP id a8mr5046409pgt.388.1559747699560; Wed, 05 Jun 2019 08:14:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747699; cv=none; d=google.com; s=arc-20160816; b=ozt7UrIjSrH2/tGLQUuHaBGdwJqcKR8ByQQSFwFfWQX6XA0h1Y9QCZlqMgaOmXOJbb gXIKx9sL6mN7Rr1MTbgs2QfUmLVVx4yYqUq5LAjVEraNrsMMxgz0krhEUbTs7u3cZJGV yISE6jbyohiOUA3PRyAUjkrcMV+TfYUiAFpUbwtJbiJZJhna3pNnl4GCt+LqwJchYtZA wPd0k+sz3wfiMRYJhiI9sipI/1y0e/mJxJdmOZDcKIp6WCwx7xl+3v4RIyiL01unncfs PccOdBfyWR8KwiPWUXopbFllOuEqyGAB8XwNS26KD92sxGsMR8+lW8AIzxjOAOzfXOTJ LwNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=mP7zfy1xi+SVNeGAYbDyltHY1erTbof0kYSDqRYw+0s=; b=j4rOwc5t0axx44IVzBJVBWFN6cOEg3fAcbcjXBGc89TFGtWPj1LFNI/+HDifnIO4x5 zbUNMHlfhO9AsfOBBiNzQp/nDfmQJ9DLIUxIyU3/CM37sEcSBzK50zPypTqN/I0tALTG /suG4A2p36KlXp+/UiV8vfUUyTmfxSaxvdf34sOpf8iQoaTbxAnbqD+SNFc/uKnR2V7j 4M/IKl9yXKMQCjodE3F+CL+2D/UZ0aNzYn9n+tqNbuepje+/jBJ6VT5/iq5F2Hr/plfo Qm5wSNEEMjp76F1kpWbASk1ZSSBTdCYT7rAQWX4CvjynEIdUGX/1KPr5wlcr8elac/Ty HaMg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h68si26807792pgc.270.2019.06.05.08.14.59; Wed, 05 Jun 2019 08:14:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728627AbfFEPOy (ORCPT + 30 others); Wed, 5 Jun 2019 11:14:54 -0400 Received: from foss.arm.com ([217.140.101.70]:33540 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728582AbfFEPOw (ORCPT ); Wed, 5 Jun 2019 11:14:52 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 71BF615A2; Wed, 5 Jun 2019 08:14:52 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 91E053F246; Wed, 5 Jun 2019 08:14:47 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Alessandro Zummo , Alexander Aring , Alexander Shishkin , Alexandre Belloni , Andrew Lunn , Arnd Bergmann , Dan Murphy , "David S. Miller" , Florian Fainelli , Harald Freudenberger , Heikki Krogerus , Heiko Carstens , Heiner Kallweit , Jacek Anaszewski , Jiri Slaby , Liam Girdwood , linux-leds@vger.kernel.org, linux-rtc@vger.kernel.org, linux-usb@vger.kernel.org, linux-wpan@vger.kernel.org, Mark Brown , Maxime Coquelin , Pavel Machek , Peter Rosin , Stefan Schmidt , Tomas Winkler , "Rafael J. Wysocki" Subject: [PATCH 10/13] drivers: Introduce variants of class_find_device() Date: Wed, 5 Jun 2019 16:13:47 +0100 Message-Id: <1559747630-28065-11-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that we have generic helpers to match various generic device attributes, provide wrappers to the class_find_device() to lookup devices by individual properties. The new wrappers except the lookup by devt, drops the "start" device pointer as none of the existing users need it and the attributes are usually unique. The idea is to stop the proliferation of custom match functions to do generic attribute matching. So now we have : class_find_device_by_name class_find_device_by_of_node class_find_device_by_fwnode class_find_device_by_devt Cc: Alessandro Zummo Cc: Alexander Aring Cc: Alexander Shishkin Cc: Alexandre Belloni Cc: Andrew Lunn Cc: Arnd Bergmann Cc: Dan Murphy Cc: "David S. Miller" Cc: Florian Fainelli Cc: Greg Kroah-Hartman Cc: Harald Freudenberger Cc: Heikki Krogerus Cc: Heiko Carstens Cc: Heiner Kallweit Cc: Jacek Anaszewski Cc: Jiri Slaby Cc: Liam Girdwood Cc: linux-leds@vger.kernel.org Cc: linux-rtc@vger.kernel.org Cc: linux-usb@vger.kernel.org Cc: linux-wpan@vger.kernel.org Cc: Mark Brown Cc: Maxime Coquelin Cc: Pavel Machek Cc: Peter Rosin Cc: Stefan Schmidt Cc: Tomas Winkler Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Signed-off-by: Suzuki K Poulose --- include/linux/device.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) -- 2.7.4 diff --git a/include/linux/device.h b/include/linux/device.h index 8c8727b..4396edc 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -474,6 +474,57 @@ extern struct device *class_find_device(struct class *class, struct device *start, const void *data, int (*match)(struct device *, const void *)); +/** + * class_find_device_by_name - device iterator for locating a particular device + * of a specific name. + * @class: class type + * @name: name of the device to match + */ +static inline struct device *class_find_device_by_name(struct class *class, + const char *name) +{ + return class_find_device(class, NULL, name, device_match_name); +} + +/** + * class_find_device_by_of_node : device iterator for locating a particular device + * matching the of_node. + * @class: class type + * @np: of_node of the device to match. + */ +static inline struct device * +class_find_device_by_of_node(struct class *class, const struct device_node *np) +{ + return class_find_device(class, NULL, np, device_match_of_node); +} + +/** + * class_find_device_by_fwnode : device iterator for locating a particular device + * matching the fwnode. + * @class: class type + * @fwnode: fwnode of the device to match. + */ +static inline struct device * +class_find_device_by_fwnode(struct class *class, + const struct fwnode_handle *fwnode) +{ + return class_find_device(class, NULL, fwnode, device_match_fwnode); +} + +/** + * class_find_device_by_devt : device iterator for locating a particular device + * matching the device type. + * @class: class type + * @start: device to start search from + * @devt: device type of the device to match. + */ +static inline struct device *class_find_device_by_devt(struct class *class, + struct device *start, + dev_t devt) +{ + return class_find_device(class, start, &devt, device_match_devt); +} + struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *class, struct class_attribute *attr, From patchwork Wed Jun 5 15:13:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165899 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7485924ili; Wed, 5 Jun 2019 08:15:01 -0700 (PDT) X-Google-Smtp-Source: APXvYqx2BJkkbm9j78pP69uYnQuIgCdgi0hgrwb2Q8lXlFHcQbHsfcoDwkcr1EsRm+t35fHSc0EQ X-Received: by 2002:a17:902:14e:: with SMTP id 72mr45515619plb.36.1559747701281; Wed, 05 Jun 2019 08:15:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747701; cv=none; d=google.com; s=arc-20160816; b=gxVDNa+H2Mphc3H9E3o8+t7LffzJrtABGUXMoL76Thbven499kPOn4BV/iL6SLBzwW 0V9SyW7k3PYtXVdWiOWLlRMc7XHRINlw/XFwycMA7q/eFa52c9ViinwiYAoppclaPq+X S99UeHo5yteAhMD9zpaZlJed81XCy4rltkAhAntopXQMLGZcXkp47aTl+65zzC7CX6a8 qDQ3RMauotVptNFFXYk4FlYqgSIR8vSVWPA17ESH8f5TZUuH0g3GPC6uCZG1xewJiOrZ ENVksdYxwD3v28q3nAx3cgx3QhzunUIO0gu3VniaINSWEXmTBhbgzCRJt+Y9eo8kzWzO CK3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=dV5UpgpBZ3Z65b11Na9WADjIHjgtOSXIcnoOHfUcIaU=; b=bsaVEH0bVlSDm9Qhg1QjcZ194WRcpyYDAMa6U96gw75HDazGQ0ETx63VUbLP1rXwEz nlUt0IcRGxs+oj5I9rW7Xxvf00WYdLaX5/GecZbQXNuY3m/UDsqEFpNbFrXre03Oe+Bl SaRo9JYW2KwsPyd1V70z1CGWeLa5/dMxEOKj9kw9dJMJdCBxQfnYMfoaQx30n4myRMGM mwA3L10Y0qBIgk3z0s5rs4EyliiFdnxKdEl/9Ylv3DxKAkOedcFcnwNXqGQNn3J4Wu8G +6sNCTXLsajVlTtXQJBKR64PAMC5ZLYdOqCcu2S8LAtmm+/9lTy94m/Z6BfcEObsrr9N 6+/g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h68si26807792pgc.270.2019.06.05.08.15.00; Wed, 05 Jun 2019 08:15:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728654AbfFEPPA (ORCPT + 30 others); Wed, 5 Jun 2019 11:15:00 -0400 Received: from foss.arm.com ([217.140.101.70]:33586 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728510AbfFEPO6 (ORCPT ); Wed, 5 Jun 2019 11:14:58 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8D7F0374; Wed, 5 Jun 2019 08:14:57 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id AFD3E3F246; Wed, 5 Jun 2019 08:14:52 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Alexander Shishkin , Andrew Lunn , Daniel Vetter , David Airlie , "David S. Miller" , devicetree@vger.kernel.org, Doug Ledford , dri-devel@lists.freedesktop.org, Florian Fainelli , Frank Rowand , Heiko Stuebner , Jason Gunthorpe , Liam Girdwood , linux-i2c@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-spi@vger.kernel.org, linux-usb@vger.kernel.org, Maarten Lankhorst , Mark Brown , Mathieu Poirier , Maxime Ripard , Oliver Neukum , Rob Herring , Sebastian Andrzej Siewior , Srinivas Kandagatla , Takashi Iwai , Wolfram Sang Subject: [PATCH 11/13] drivers: Introduce variants for bus_find_device() Date: Wed, 5 Jun 2019 16:13:48 +0100 Message-Id: <1559747630-28065-12-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Similar to the class_find_device_by_*() introduce the variants for bus_find_device() to automatically search for device by generic device properties. Here is the list of new helpers : bus_find_device_by_of_node bus_find_device_by_fwnode bus_find_device_by_devt bus_find_next_device While at it convert the bus_find_device_by_name to static inline reusing the generic helper to match the name. Cc: Alexander Shishkin Cc: Andrew Lunn Cc: Daniel Vetter Cc: David Airlie Cc: "David S. Miller" Cc: devicetree@vger.kernel.org Cc: Doug Ledford Cc: dri-devel@lists.freedesktop.org Cc: Florian Fainelli Cc: Frank Rowand Cc: Greg Kroah-Hartman Cc: Heiko Stuebner Cc: Jason Gunthorpe Cc: Liam Girdwood Cc: linux-i2c@vger.kernel.org Cc: linux-rockchip@lists.infradead.org Cc: linux-spi@vger.kernel.org Cc: linux-usb@vger.kernel.org Cc: Maarten Lankhorst Cc: Mark Brown Cc: Mathieu Poirier Cc: Maxime Ripard Cc: Oliver Neukum Cc: "Rafael J. Wysocki" Cc: Rob Herring Cc: Sebastian Andrzej Siewior Cc: Srinivas Kandagatla Cc: Takashi Iwai Cc: Wolfram Sang Signed-off-by: Suzuki K Poulose --- drivers/base/bus.c | 24 ------------------- include/linux/device.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 27 deletions(-) -- 2.7.4 diff --git a/drivers/base/bus.c b/drivers/base/bus.c index df3cac7..a1d1e82 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -342,30 +342,6 @@ struct device *bus_find_device(struct bus_type *bus, } EXPORT_SYMBOL_GPL(bus_find_device); -static int match_name(struct device *dev, const void *data) -{ - const char *name = data; - - return sysfs_streq(name, dev_name(dev)); -} - -/** - * bus_find_device_by_name - device iterator for locating a particular device of a specific name - * @bus: bus type - * @start: Device to begin with - * @name: name of the device to match - * - * This is similar to the bus_find_device() function above, but it handles - * searching by a name automatically, no need to write another strcmp matching - * function. - */ -struct device *bus_find_device_by_name(struct bus_type *bus, - struct device *start, const char *name) -{ - return bus_find_device(bus, start, (void *)name, match_name); -} -EXPORT_SYMBOL_GPL(bus_find_device_by_name); - /** * subsys_find_device_by_id - find a device with a specific enumeration number * @subsys: subsystem diff --git a/include/linux/device.h b/include/linux/device.h index 4396edc..10de79d 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -175,9 +175,67 @@ int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, struct device *bus_find_device(struct bus_type *bus, struct device *start, const void *data, int (*match)(struct device *dev, const void *data)); -struct device *bus_find_device_by_name(struct bus_type *bus, - struct device *start, - const char *name); +/** + * bus_find_device_by_name - device iterator for locating a particular device + * of a specific name. + * @bus: bus type + * @start: Device to begin with + * @name: name of the device to match + */ +static inline struct device *bus_find_device_by_name(struct bus_type *bus, + struct device *start, + const char *name) +{ + return bus_find_device(bus, start, name, device_match_name); +} + +/** + * bus_find_device_by_of_node : device iterator for locating a particular device + * matching the of_node. + * @bus: bus type + * @np: of_node of the device to match. + */ +static inline struct device * +bus_find_device_by_of_node(struct bus_type *bus, const struct device_node *np) +{ + return bus_find_device(bus, NULL, np, device_match_of_node); +} + +/** + * bus_find_device_by_fwnode : device iterator for locating a particular device + * matching the fwnode. + * @bus: bus type + * @fwnode: fwnode of the device to match. + */ +static inline struct device * +bus_find_device_by_fwnode(struct bus_type *bus, const struct fwnode_handle *fwnode) +{ + 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 + * @start: device to start the search from + * @devt: device type of the device to match. + */ +static inline struct device * +bus_find_device_by_devt(struct bus_type *bus, struct device *start, dev_t devt) +{ + return bus_find_device(bus, start, &devt, device_match_devt); +} + +/** + * bus_find_next_device - Find the next device after a given device in a + * given bus. + */ +static inline struct device * +bus_find_next_device(struct bus_type *bus,struct device *cur) +{ + return bus_find_device(bus, cur, NULL, device_match_any); +} + 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, From patchwork Wed Jun 5 15:13:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165901 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7486108ili; Wed, 5 Jun 2019 08:15:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqxLezp8qMj24uW7suQ/BUkXk8Ainf2iz9W+RtIBgfW/4pDSLzxG/8tdtseX30HUYHq4avVc X-Received: by 2002:a17:90a:20e7:: with SMTP id f94mr36197677pjg.68.1559747709425; Wed, 05 Jun 2019 08:15:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747709; cv=none; d=google.com; s=arc-20160816; b=h0prlkXz2loeyq/t64PckvFXb+vDQjjhNumpulmLCIfXpnLb0HJBh5AhNQ9F6BIoA0 FOgNZgpw940IYF5yXiz8TMAPC/CxJTbOZRFo0sznM+qB7Wh0vNl0AQgcuCxg8HHXHHP9 KMJ1U+H8b9aEMEqVmTFQfErlYW/NmWI/3LKUoDgfpRY+u2ZFDbMzNHzK2xxSosPRQ0Ej +mJsuB2+RK6VfxzMmAdUjqEoogiogeiBQ1IxnseRwGr92Dedq+dlqvFPPjFq+JCDLO0R bOkU2kA4/Sm258+MMhjxbbFqLe6r/G8zbEXkqQWl82FKT46AJH+f3OAalQA8TCriDcif lz8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=AJd084C/SspqeyfJL9z44/0SGf2RPxyn1BhZR24Y250=; b=s/mOxiYl+mcBGOUTyinx4/VtldGg71zxi6b594r2xNWIGAGzqzzJRd+XjfnHWaMSfe lyiQYlNPDFUARQ2AXuHTSnC3VHhRIVcJZ414VNDrnUiJRb1ik/VAnf+NCdwQY3yIUMt7 8IKj/iknZY7xZlf6q6FT3X51TRmJLfyKKE1GOyxWdL9eThuACZn5M52m+e3eMPlSiGDM R47HIq3jtludClpgJCHYZ1sbh35NN/Gc3DMBLeYBwtrgOxUBg6nlGsIW1squkGsJoUBR x692xoe84xw1vK40CgFM3vxX9dmlHSClcaq2gmWuCYFfTUjKkKdosdCqKwiZlwDUugD0 XxDQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i18si22473813pfr.65.2019.06.05.08.15.08; Wed, 05 Jun 2019 08:15:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728664AbfFEPPD (ORCPT + 30 others); Wed, 5 Jun 2019 11:15:03 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33624 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728650AbfFEPPA (ORCPT ); Wed, 5 Jun 2019 11:15:00 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E2DBC15BF; Wed, 5 Jun 2019 08:14:59 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id CA9913F246; Wed, 5 Jun 2019 08:14:57 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Arnd Bergmann , Joerg Roedel , Jonathan Hunter , Lee Jones , Robin Murphy , Thierry Reding , Thor Thayer , Will Deacon Subject: [PATCH 12/13] drivers: Introduce variants of driver_find_device() Date: Wed, 5 Jun 2019 16:13:49 +0100 Message-Id: <1559747630-28065-13-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Similar to the other device lookup helpers, introduce variants of driver_find_device() to automatically lookup devices by their generic properties to avoid proliferation of custom match functions. We add : driver_find_device_by_name driver_find_device_by_of_node driver_find_device_by_fwnode driver_find_device_by_devt driver_find_next_device Cc: Arnd Bergmann Cc: Joerg Roedel Cc: Jonathan Hunter Cc: Lee Jones Cc: Robin Murphy Cc: Thierry Reding Cc: Thor Thayer Cc: Will Deacon Cc: Greg Kroah-Hartman Cc: "Rafael J. Wysocki" Signed-off-by: Suzuki K Poulose --- include/linux/device.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) -- 2.7.4 diff --git a/include/linux/device.h b/include/linux/device.h index 10de79d..2c05e60 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -404,6 +404,64 @@ struct device *driver_find_device(struct device_driver *drv, struct device *start, const void *data, int (*match)(struct device *dev, const void *data)); +/** + * driver_find_device_by_name - device iterator for locating a particular device + * of a specific name. + * @driver: the driver we're iterating + * @name: name of the device to match + */ +static inline struct device *driver_find_device_by_name(struct device_driver *drv, + const char *name) +{ + return driver_find_device(drv, NULL, name, device_match_name); +} + +/** + * driver_find_device_by_of_node- device iterator for locating a particular device + * by of_node pointer. + * @driver: the driver we're iterating + * @np: of_node pointer to match. + */ +static inline struct device * +driver_find_device_by_of_node(struct device_driver *drv, + const struct device_node *np) +{ + return driver_find_device(drv, NULL, np, device_match_of_node); +} + +/** + * driver_find_device_by_fwnode- device iterator for locating a particular device + * by fwnode pointer. + * @driver: the driver we're iterating + * @fwnode: fwnode pointer to match. + */ +static inline struct device * +driver_find_device_by_fwnode(struct device_driver *drv, + const struct fwnode_handle *fwnode) +{ + return driver_find_device(drv, NULL, fwnode, device_match_fwnode); +} + +/** + * driver_find_device_by_devt- device iterator for locating a particular device + * by devt. + * @driver: the driver we're iterating + * @start: device to start search from + * @devt: devt pointer to match. + */ +static inline struct device *driver_find_device_by_devt(struct device_driver *drv, + struct device *start, + dev_t devt) +{ + return driver_find_device(drv, start, &devt, device_match_devt); +} + +static inline struct device *driver_find_next_device(struct device_driver *drv, + struct device *start) +{ + return driver_find_device(drv, start, NULL, device_match_any); +} + void driver_deferred_probe_add(struct device *dev); int driver_deferred_probe_check_state(struct device *dev); From patchwork Wed Jun 5 15:13:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Suzuki K Poulose X-Patchwork-Id: 165900 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp7486025ili; Wed, 5 Jun 2019 08:15:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqxO11cUpimdONsnPDvHAft4g5d2AOJZ+RQ3k5MdlhTA7FpBAnrMkW73KaDiv2Qam1qphtXa X-Received: by 2002:a63:4c0f:: with SMTP id z15mr5054949pga.245.1559747706009; Wed, 05 Jun 2019 08:15:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559747706; cv=none; d=google.com; s=arc-20160816; b=eri9l5aTb+Jk6jAiTETc1CHKmHvTmSFI/W1PIiG7cXZJezNIQjWp8tOv/p35nYhhhU USqNhCeBv12lwS7vH6n7hB9EFQZ4jnq70IYVwyb4N4rLwxAGIjsz1p2weVeYsbJGSGP+ RsEUjmL0bj6OH1U2TjJtZCJm/gTB27niZenwcApCdZwFHTRVjR9RUwI5EpJitKJ6p6sA PdeAe83YRm7L23DDgQ8zdIQ3gO26mFg3AafQfSelUn8Cfn133yr28W/kXXf42ftMbmtW WIl3tIImxp1QUZwo22RHF+rlIh5KG032Jfkemq1P646tkTDM4WpEXRoJz/WI7sF66dTO +nzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=OnhwLcJA1jVjA6cIKCDwpWAQlqEybey0MoUiSawl56k=; b=RU5znu2nVVuymAqHa4vKXXTeED5M3qzrk2YG4emSp5y9eGcVEcl2UgE3622pH+3cJC SbBanO0h4G16323hIfNydXFC0NTyDu4tZxk9JAuecqP1Gk5CymGYf81+T7Y2dVQn/aCj OQGveVlgTWx+0TEMXeziuZsF8CzZ6moe2ajJtrtk0RTvPOFTW60imU0YsoJhBlHJp4RA /1x+3pwmCvdv+0JXmtiClhmMpryamP4rHBHOAXDMiZaRjNHEAo+NvbIA7rVzFxKNf35g 7qcGQOPg23MuWs04iU7O/Ib4KPhUNUoQIiI6xweA4kSYre5ETurzD2KHYgjrwH2RilVo GBNA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i18si22473813pfr.65.2019.06.05.08.15.05; Wed, 05 Jun 2019 08:15:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728676AbfFEPPE (ORCPT + 30 others); Wed, 5 Jun 2019 11:15:04 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:33644 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728510AbfFEPPC (ORCPT ); Wed, 5 Jun 2019 11:15:02 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CD78F1682; Wed, 5 Jun 2019 08:15:01 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.196.93]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2BD483F246; Wed, 5 Jun 2019 08:15:00 -0700 (PDT) From: Suzuki K Poulose To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, rafael@kernel.org, suzuki.poulose@arm.com, Eric Anholt , =?utf-8?q?Heiko_St=C3=BCbner?= , Inki Dae , Sandy Huang , Seung-Woo Kim Subject: [PATCH 13/13] platform: Add platform_find_device_by_driver() helper Date: Wed, 5 Jun 2019 16:13:50 +0100 Message-Id: <1559747630-28065-14-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> References: <1559747630-28065-1-git-send-email-suzuki.poulose@arm.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Provide a helper to lookup platform devices by matching device driver in order to avoid drivers trying to use platform bus internals. Cc: Eric Anholt Cc: Greg Kroah-Hartman Cc: "Heiko Stübner" Cc: Inki Dae Cc: "Rafael J. Wysocki" Cc: Sandy Huang Cc: Seung-Woo Kim Signed-off-by: Suzuki K Poulose --- drivers/base/platform.c | 14 ++++++++++++++ include/linux/platform_device.h | 3 +++ 2 files changed, 17 insertions(+) -- 2.7.4 diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 4d17298..158ac24 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1197,6 +1197,20 @@ struct bus_type platform_bus_type = { }; EXPORT_SYMBOL_GPL(platform_bus_type); +/** + * platform_find_device_by_driver - Find a platform device with a given + * driver. + * @start: The device to start the search from. + * @drv: The device driver to look for. + */ +struct device *platform_find_device_by_driver(struct device *start, + const struct device_driver *drv) +{ + return bus_find_device(&platform_bus_type, start, drv, + (void *)platform_match); +} +EXPORT_SYMBOL_GPL(platform_find_device_by_driver); + int __init platform_bus_init(void) { int error; diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index cc46485..36aa775 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h @@ -52,6 +52,9 @@ extern struct device platform_bus; extern void arch_setup_pdev_archdata(struct platform_device *); extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int); +extern struct device * +platform_find_device_by_driver(struct device * dev, + const struct device_driver *drv); extern void __iomem * devm_platform_ioremap_resource(struct platform_device *pdev, unsigned int index);