Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5842b47 authored by Linus Walleij's avatar Linus Walleij Committed by Jonathan Cameron
Browse files

iio: pressure: bmp280: add reset GPIO line handling



On the APQ8060 Dragonboard the reset line to the BMP085 pressure
sensor is not deasserted on boot, so the driver needs to handle
this. For a simple GPIO line supplied as a descriptor (from a board
file, device tree or ACPI) this does the trick.

Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 78f50271
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/delay.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
#include <linux/gpio/consumer.h>

/* BMP280 specific registers */
#define BMP280_REG_HUMIDITY_LSB		0xFE
@@ -1024,6 +1025,7 @@ static int bmp280_probe(struct i2c_client *client,
	struct iio_dev *indio_dev;
	struct bmp280_data *data;
	unsigned int chip_id;
	struct gpio_desc *gpiod;

	indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
	if (!indio_dev)
@@ -1063,6 +1065,14 @@ static int bmp280_probe(struct i2c_client *client,
		return -EINVAL;
	}

	/* Bring chip out of reset if there is an assigned GPIO line */
	gpiod = devm_gpiod_get(&client->dev, "reset", GPIOD_OUT_HIGH);
	/* Deassert the signal */
	if (!IS_ERR(gpiod)) {
		dev_info(&client->dev, "release reset\n");
		gpiod_set_value(gpiod, 0);
	}

	data->regmap = devm_regmap_init_i2c(client,
					data->chip_info->regmap_config);
	if (IS_ERR(data->regmap)) {