Merge tag 'char-misc-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[linux-2.6-microblaze.git] / drivers / iio / temperature / ltc2983.c
index fcb96c4..39447c7 100644 (file)
@@ -207,6 +207,7 @@ enum {
                container_of(_sensor, struct ltc2983_temp, sensor)
 
 struct ltc2983_chip_info {
+       const char *name;
        unsigned int max_channels_nr;
        bool has_temp;
        bool has_eeprom;
@@ -1346,7 +1347,7 @@ static irqreturn_t ltc2983_irq_handler(int irq, void *data)
        __chan; \
 })
 
-static int ltc2983_parse_dt(struct ltc2983_data *st)
+static int ltc2983_parse_fw(struct ltc2983_data *st)
 {
        struct device *dev = &st->spi->dev;
        struct fwnode_handle *child;
@@ -1605,7 +1606,6 @@ static int ltc2983_probe(struct spi_device *spi)
        struct ltc2983_data *st;
        struct iio_dev *indio_dev;
        struct gpio_desc *gpio;
-       const char *name = spi_get_device_id(spi)->name;
        int ret;
 
        indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
@@ -1614,9 +1614,7 @@ static int ltc2983_probe(struct spi_device *spi)
 
        st = iio_priv(indio_dev);
 
-       st->info = device_get_match_data(&spi->dev);
-       if (!st->info)
-               st->info = (void *)spi_get_device_id(spi)->driver_data;
+       st->info = spi_get_device_match_data(spi);
        if (!st->info)
                return -ENODEV;
 
@@ -1632,7 +1630,7 @@ static int ltc2983_probe(struct spi_device *spi)
        st->eeprom_key = cpu_to_be32(LTC2983_EEPROM_KEY);
        spi_set_drvdata(spi, st);
 
-       ret = ltc2983_parse_dt(st);
+       ret = ltc2983_parse_fw(st);
        if (ret)
                return ret;
 
@@ -1657,7 +1655,7 @@ static int ltc2983_probe(struct spi_device *spi)
                return ret;
 
        ret = devm_request_irq(&spi->dev, spi->irq, ltc2983_irq_handler,
-                              IRQF_TRIGGER_RISING, name, st);
+                              IRQF_TRIGGER_RISING, st->info->name, st);
        if (ret) {
                dev_err(&spi->dev, "failed to request an irq, %d", ret);
                return ret;
@@ -1672,7 +1670,7 @@ static int ltc2983_probe(struct spi_device *spi)
                        return ret;
        }
 
-       indio_dev->name = name;
+       indio_dev->name = st->info->name;
        indio_dev->num_channels = st->iio_channels;
        indio_dev->channels = st->iio_chan;
        indio_dev->modes = INDIO_DIRECT_MODE;
@@ -1703,15 +1701,25 @@ static DEFINE_SIMPLE_DEV_PM_OPS(ltc2983_pm_ops, ltc2983_suspend,
                                ltc2983_resume);
 
 static const struct ltc2983_chip_info ltc2983_chip_info_data = {
+       .name = "ltc2983",
        .max_channels_nr = 20,
 };
 
 static const struct ltc2983_chip_info ltc2984_chip_info_data = {
+       .name = "ltc2984",
        .max_channels_nr = 20,
        .has_eeprom = true,
 };
 
 static const struct ltc2983_chip_info ltc2986_chip_info_data = {
+       .name = "ltc2986",
+       .max_channels_nr = 10,
+       .has_temp = true,
+       .has_eeprom = true,
+};
+
+static const struct ltc2983_chip_info ltm2985_chip_info_data = {
+       .name = "ltm2985",
        .max_channels_nr = 10,
        .has_temp = true,
        .has_eeprom = true,
@@ -1721,7 +1729,7 @@ static const struct spi_device_id ltc2983_id_table[] = {
        { "ltc2983", (kernel_ulong_t)&ltc2983_chip_info_data },
        { "ltc2984", (kernel_ulong_t)&ltc2984_chip_info_data },
        { "ltc2986", (kernel_ulong_t)&ltc2986_chip_info_data },
-       { "ltm2985", (kernel_ulong_t)&ltc2986_chip_info_data },
+       { "ltm2985", (kernel_ulong_t)&ltm2985_chip_info_data },
        {},
 };
 MODULE_DEVICE_TABLE(spi, ltc2983_id_table);
@@ -1730,7 +1738,7 @@ static const struct of_device_id ltc2983_of_match[] = {
        { .compatible = "adi,ltc2983", .data = &ltc2983_chip_info_data },
        { .compatible = "adi,ltc2984", .data = &ltc2984_chip_info_data },
        { .compatible = "adi,ltc2986", .data = &ltc2986_chip_info_data },
-       { .compatible = "adi,ltm2985", .data = &ltc2986_chip_info_data },
+       { .compatible = "adi,ltm2985", .data = &ltm2985_chip_info_data },
        {},
 };
 MODULE_DEVICE_TABLE(of, ltc2983_of_match);