]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: chemical: bme680: Allocate IIO device before chip initialization
authorVasileios Amoiridis <vassilisamir@gmail.com>
Sun, 9 Jun 2024 23:38:19 +0000 (01:38 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 3 Aug 2024 09:13:34 +0000 (10:13 +0100)
Move the IIO device allocation before the actual initialization of the
chip to be more consistent with most IIO drivers and also to have the
ability to use any driver specific data for the chip initialization.

While at it, fix also a misaligned line.

Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com>
Link: https://patch.msgid.link/20240609233826.330516-9-vassilisamir@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/chemical/bme680_core.c

index 493d190f4461a83c8ec2dc066b21a07791c4528f..7dfe4bf2f2aeca1d64ad46762d08364366bdb175 100644 (file)
@@ -837,25 +837,6 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap,
        unsigned int val;
        int ret;
 
-       ret = regmap_write(regmap, BME680_REG_SOFT_RESET,
-                          BME680_CMD_SOFTRESET);
-       if (ret < 0) {
-               dev_err(dev, "Failed to reset chip\n");
-               return ret;
-       }
-
-       ret = regmap_read(regmap, BME680_REG_CHIP_ID, &val);
-       if (ret < 0) {
-               dev_err(dev, "Error reading chip ID\n");
-               return ret;
-       }
-
-       if (val != BME680_CHIP_ID_VAL) {
-               dev_err(dev, "Wrong chip ID, got %x expected %x\n",
-                               val, BME680_CHIP_ID_VAL);
-               return -ENODEV;
-       }
-
        indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
        if (!indio_dev)
                return -ENOMEM;
@@ -877,6 +858,25 @@ int bme680_core_probe(struct device *dev, struct regmap *regmap,
        data->heater_temp = 320; /* degree Celsius */
        data->heater_dur = 150;  /* milliseconds */
 
+       ret = regmap_write(regmap, BME680_REG_SOFT_RESET,
+                          BME680_CMD_SOFTRESET);
+       if (ret < 0) {
+               dev_err(dev, "Failed to reset chip\n");
+               return ret;
+       }
+
+       ret = regmap_read(regmap, BME680_REG_CHIP_ID, &val);
+       if (ret < 0) {
+               dev_err(dev, "Error reading chip ID\n");
+               return ret;
+       }
+
+       if (val != BME680_CHIP_ID_VAL) {
+               dev_err(dev, "Wrong chip ID, got %x expected %x\n",
+                       val, BME680_CHIP_ID_VAL);
+               return -ENODEV;
+       }
+
        ret = bme680_chip_config(data);
        if (ret < 0) {
                dev_err(dev, "failed to set chip_config data\n");