mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
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: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
78f5027132
commit
c5842b47b2
1 changed files with 10 additions and 0 deletions
|
@ -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)) {
|
||||
|
|
Loading…
Reference in a new issue