|
@@ -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)) {
|