iio: potentiometer: mcp4131: use of_device_get_match_data()
authorSlawomir Stepien <sst@poczta.fm>
Fri, 16 Nov 2018 09:47:21 +0000 (10:47 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Fri, 16 Nov 2018 18:32:35 +0000 (18:32 +0000)
Try to get the device's data using OF API. In case of failure, fallback
to the spi_get_device_id() method.

Signed-off-by: Slawomir Stepien <sst@poczta.fm>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/potentiometer/mcp4131.c

index b3e30db246cc0d0aceb656e2d1fce405378316f3..efe035ce010de788f80322cf9c63d4bbfb89dbfd 100644 (file)
@@ -42,6 +42,7 @@
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/spi/spi.h>
 
 #define MCP4131_WRITE          (0x00 << 2)
@@ -243,7 +244,7 @@ static int mcp4131_probe(struct spi_device *spi)
 {
        int err;
        struct device *dev = &spi->dev;
-       unsigned long devid = spi_get_device_id(spi)->driver_data;
+       unsigned long devid;
        struct mcp4131_data *data;
        struct iio_dev *indio_dev;
 
@@ -254,7 +255,11 @@ static int mcp4131_probe(struct spi_device *spi)
        data = iio_priv(indio_dev);
        spi_set_drvdata(spi, indio_dev);
        data->spi = spi;
-       data->cfg = &mcp4131_cfg[devid];
+       data->cfg = of_device_get_match_data(&spi->dev);
+       if (!data->cfg) {
+               devid = spi_get_device_id(spi)->driver_data;
+               data->cfg = &mcp4131_cfg[devid];
+       }
 
        mutex_init(&data->lock);
 
@@ -273,7 +278,6 @@ static int mcp4131_probe(struct spi_device *spi)
        return 0;
 }
 
-#if defined(CONFIG_OF)
 static const struct of_device_id mcp4131_dt_ids[] = {
        { .compatible = "microchip,mcp4131-502",
                .data = &mcp4131_cfg[MCP413x_502] },
@@ -406,7 +410,6 @@ static const struct of_device_id mcp4131_dt_ids[] = {
        {}
 };
 MODULE_DEVICE_TABLE(of, mcp4131_dt_ids);
-#endif /* CONFIG_OF */
 
 static const struct spi_device_id mcp4131_id[] = {
        { "mcp4131-502", MCP413x_502 },