123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * STMicroelectronics hts221 sensor driver
- *
- * Copyright 2016 STMicroelectronics Inc.
- *
- * Lorenzo Bianconi <[email protected]>
- */
- #ifndef HTS221_H
- #define HTS221_H
- #define HTS221_DEV_NAME "hts221"
- #include <linux/iio/iio.h>
- #include <linux/regulator/consumer.h>
- enum hts221_sensor_type {
- HTS221_SENSOR_H,
- HTS221_SENSOR_T,
- HTS221_SENSOR_MAX,
- };
- struct hts221_sensor {
- u8 cur_avg_idx;
- int slope, b_gen;
- };
- struct hts221_hw {
- const char *name;
- struct device *dev;
- struct regmap *regmap;
- struct regulator *vdd;
- struct iio_trigger *trig;
- int irq;
- struct hts221_sensor sensors[HTS221_SENSOR_MAX];
- bool enabled;
- u8 odr;
- /* Ensure natural alignment of timestamp */
- struct {
- __le16 channels[2];
- s64 ts __aligned(8);
- } scan;
- };
- extern const struct dev_pm_ops hts221_pm_ops;
- int hts221_probe(struct device *dev, int irq, const char *name,
- struct regmap *regmap);
- int hts221_set_enable(struct hts221_hw *hw, bool enable);
- int hts221_allocate_buffers(struct iio_dev *iio_dev);
- int hts221_allocate_trigger(struct iio_dev *iio_dev);
- #endif /* HTS221_H */
|