Some variants have functions that need to be enabled outside of an core chip initialization. Signed-off-by: Matt Ranostay <matt.ranostay@xxxxxxxxx> --- drivers/iio/pressure/bmp280.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/iio/pressure/bmp280.c b/drivers/iio/pressure/bmp280.c index 2e7cff38f5ff..e80cbf3b21fc 100644 --- a/drivers/iio/pressure/bmp280.c +++ b/drivers/iio/pressure/bmp280.c @@ -88,6 +88,9 @@ enum { bmp280, bme280 }; struct bmp280_chip_info { int id; int num_channels; + + /* per chip initialization function */ + int (*init)(struct bmp280_data *); }; static struct bmp280_chip_info bmp280_chip_info_table[] = { @@ -336,10 +339,18 @@ static const struct iio_info bmp280_info = { .read_raw = &bmp280_read_raw, }; -static int bmp280_chip_init(struct bmp280_data *data) +static int bmp280_common_init(struct bmp280_data *data) { int ret; + if (data->chip->init) { + ret = data->chip->init(data); + if (ret < 0) { + dev_err(&data->client->dev, "failed to run chip init"); + return ret; + } + } + ret = regmap_update_bits(data->regmap, BMP280_REG_CTRL_MEAS, BMP280_OSRS_TEMP_MASK | BMP280_OSRS_PRESS_MASK | @@ -429,7 +440,7 @@ static int bmp280_probe(struct i2c_client *client, return -EINVAL; } - ret = bmp280_chip_init(data); + ret = bmp280_common_init(data); if (ret < 0) return ret; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html