#include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/module.h>
-#include <linux/of_device.h>
+#include <linux/mod_devicetable.h>
+#include <linux/property.h>
 
 #define DRIVER_NAME                    "max9611"
 
                         const struct i2c_device_id *id)
 {
        const char * const shunt_res_prop = "shunt-resistor-micro-ohms";
-       const struct device_node *of_node = client->dev.of_node;
-       const struct of_device_id *of_id =
-               of_match_device(max9611_of_table, &client->dev);
        struct max9611_dev *max9611;
        struct iio_dev *indio_dev;
+       struct device *dev = &client->dev;
        unsigned int of_shunt;
        int ret;
 
        i2c_set_clientdata(client, indio_dev);
 
        max9611                 = iio_priv(indio_dev);
-       max9611->dev            = &client->dev;
+       max9611->dev            = dev;
        max9611->i2c_client     = client;
        mutex_init(&max9611->lock);
 
-       ret = of_property_read_u32(of_node, shunt_res_prop, &of_shunt);
+       ret = device_property_read_u32(dev, shunt_res_prop, &of_shunt);
        if (ret) {
-               dev_err(&client->dev,
-                       "Missing %s property for %pOF node\n",
-                       shunt_res_prop, of_node);
+               dev_err(dev, "Missing %s property for %pfw node\n",
+                       shunt_res_prop, dev_fwnode(dev));
                return ret;
        }
        max9611->shunt_resistor_uohm = of_shunt;
        if (ret)
                return ret;
 
-       indio_dev->name         = of_id->data;
+       indio_dev->name         = device_get_match_data(dev);
        indio_dev->modes        = INDIO_DIRECT_MODE;
        indio_dev->info         = &indio_info;
        indio_dev->channels     = max9611_channels;
        indio_dev->num_channels = ARRAY_SIZE(max9611_channels);
 
-       return devm_iio_device_register(&client->dev, indio_dev);
+       return devm_iio_device_register(dev, indio_dev);
 }
 
 static struct i2c_driver max9611_driver = {