blob: e41a3d83e95d367bf83f0fbda6ef278537a7515b [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/*
2 * STMicroelectronics hts221 sensor driver
3 *
4 * Copyright 2016 STMicroelectronics Inc.
5 *
6 * Lorenzo Bianconi <lorenzo.bianconi@st.com>
7 *
8 * Licensed under the GPL-2.
9 */
10
11#ifndef HTS221_H
12#define HTS221_H
13
14#define HTS221_DEV_NAME "hts221"
15
16#include <linux/iio/iio.h>
17
18#define HTS221_DATA_SIZE 2
19
20enum hts221_sensor_type {
21 HTS221_SENSOR_H,
22 HTS221_SENSOR_T,
23 HTS221_SENSOR_MAX,
24};
25
26struct hts221_sensor {
27 u8 cur_avg_idx;
28 int slope, b_gen;
29};
30
31struct hts221_hw {
32 const char *name;
33 struct device *dev;
34 struct regmap *regmap;
35
36 struct iio_trigger *trig;
37 int irq;
38
39 struct hts221_sensor sensors[HTS221_SENSOR_MAX];
40
41 bool enabled;
42 u8 odr;
43};
44
45extern const struct dev_pm_ops hts221_pm_ops;
46
47int hts221_probe(struct device *dev, int irq, const char *name,
48 struct regmap *regmap);
49int hts221_set_enable(struct hts221_hw *hw, bool enable);
50int hts221_allocate_buffers(struct hts221_hw *hw);
51int hts221_allocate_trigger(struct hts221_hw *hw);
52
53#endif /* HTS221_H */