i2c: Use device_get_match_data()
authorRob Herring <robh@kernel.org>
Fri, 6 Oct 2023 22:44:46 +0000 (17:44 -0500)
committerWolfram Sang <wsa@kernel.org>
Tue, 10 Oct 2023 19:41:14 +0000 (21:41 +0200)
Use preferred device_get_match_data() instead of of_match_device() to
get the driver match data. With this, adjust the includes to explicitly
include the correct headers.

Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-mv64xxx.c
drivers/i2c/busses/i2c-omap.c
drivers/i2c/busses/i2c-pxa.c

index fd8403b07fa61545de036306dee52a20ada121a1..dc160cbc315531e06868415a20b2541c8e1091be 100644 (file)
 #include <linux/platform_device.h>
 #include <linux/pinctrl/consumer.h>
 #include <linux/pm_runtime.h>
+#include <linux/property.h>
 #include <linux/reset.h>
 #include <linux/io.h>
 #include <linux/of.h>
-#include <linux/of_device.h>
-#include <linux/of_irq.h>
 #include <linux/clk.h>
 #include <linux/err.h>
 #include <linux/delay.h>
@@ -859,7 +858,7 @@ static int
 mv64xxx_of_config(struct mv64xxx_i2c_data *drv_data,
                  struct device *dev)
 {
-       const struct of_device_id *device;
+       const struct mv64xxx_i2c_regs *data;
        struct device_node *np = dev->of_node;
        u32 bus_freq, tclk;
        int rc = 0;
@@ -897,11 +896,11 @@ mv64xxx_of_config(struct mv64xxx_i2c_data *drv_data,
         */
        drv_data->adapter.timeout = HZ;
 
-       device = of_match_device(mv64xxx_i2c_of_match_table, dev);
-       if (!device)
+       data = device_get_match_data(dev);
+       if (!data)
                return -ENODEV;
 
-       memcpy(&drv_data->reg_offsets, device->data, sizeof(drv_data->reg_offsets));
+       memcpy(&drv_data->reg_offsets, data, sizeof(drv_data->reg_offsets));
 
        /*
         * For controllers embedded in new SoCs activate the
index 58fd6fa3edf1449c30fe713adca8273e054e52fd..42165ef57946ce1aefa76436ca7e31dff2482be1 100644 (file)
 #include <linux/clk.h>
 #include <linux/io.h>
 #include <linux/of.h>
-#include <linux/of_device.h>
 #include <linux/slab.h>
 #include <linux/platform_data/i2c-omap.h>
 #include <linux/pm_runtime.h>
 #include <linux/pinctrl/consumer.h>
+#include <linux/property.h>
 
 /* I2C controller revisions */
 #define OMAP_I2C_OMAP1_REV_2           0x20
@@ -1358,7 +1358,6 @@ omap_i2c_probe(struct platform_device *pdev)
        const struct omap_i2c_bus_platform_data *pdata =
                dev_get_platdata(&pdev->dev);
        struct device_node      *node = pdev->dev.of_node;
-       const struct of_device_id *match;
        int irq;
        int r;
        u32 rev;
@@ -1376,11 +1375,10 @@ omap_i2c_probe(struct platform_device *pdev)
        if (IS_ERR(omap->base))
                return PTR_ERR(omap->base);
 
-       match = of_match_device(of_match_ptr(omap_i2c_of_match), &pdev->dev);
-       if (match) {
+       if (pdev->dev.of_node) {
                u32 freq = I2C_MAX_STANDARD_MODE_FREQ;
 
-               pdata = match->data;
+               pdata = device_get_match_data(&pdev->dev);
                omap->flags = pdata->flags;
 
                of_property_read_u32(node, "clock-frequency", &freq);
index 29be05af826b05a3a283d75db7ca82068978c42f..1d76482427492113886af4ae84943092106e8479 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/pinctrl/consumer.h>
 #include <linux/platform_device.h>
 #include <linux/platform_data/i2c-pxa.h>
+#include <linux/property.h>
 #include <linux/slab.h>
 
 /* I2C register field definitions */
@@ -1252,10 +1253,8 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
                            enum pxa_i2c_types *i2c_types)
 {
        struct device_node *np = pdev->dev.of_node;
-       const struct of_device_id *of_id =
-                       of_match_device(i2c_pxa_dt_ids, &pdev->dev);
 
-       if (!of_id)
+       if (!pdev->dev.of_node)
                return 1;
 
        /* For device tree we always use the dynamic or alias-assigned ID */
@@ -1264,7 +1263,7 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
        i2c->use_pio = of_property_read_bool(np, "mrvl,i2c-polling");
        i2c->fast_mode = of_property_read_bool(np, "mrvl,i2c-fast-mode");
 
-       *i2c_types = (enum pxa_i2c_types)(of_id->data);
+       *i2c_types = (enum pxa_i2c_types)device_get_match_data(&pdev->dev);
 
        return 0;
 }