2 * STMicroelectronics hts221 sensor driver
4 * Copyright 2016 STMicroelectronics Inc.
6 * Lorenzo Bianconi <lorenzo.bianconi@st.com>
8 * Licensed under the GPL-2.
14 #define HTS221_DEV_NAME "hts221"
16 #include <linux/iio/iio.h>
18 #define HTS221_RX_MAX_LENGTH 8
19 #define HTS221_TX_MAX_LENGTH 8
21 #define HTS221_DATA_SIZE 2
23 struct hts221_transfer_buffer
{
24 u8 rx_buf
[HTS221_RX_MAX_LENGTH
];
25 u8 tx_buf
[HTS221_TX_MAX_LENGTH
] ____cacheline_aligned
;
28 struct hts221_transfer_function
{
29 int (*read
)(struct device
*dev
, u8 addr
, int len
, u8
*data
);
30 int (*write
)(struct device
*dev
, u8 addr
, int len
, u8
*data
);
33 enum hts221_sensor_type
{
39 struct hts221_sensor
{
49 struct iio_trigger
*trig
;
52 struct hts221_sensor sensors
[HTS221_SENSOR_MAX
];
57 const struct hts221_transfer_function
*tf
;
58 struct hts221_transfer_buffer tb
;
61 extern const struct dev_pm_ops hts221_pm_ops
;
63 int hts221_write_with_mask(struct hts221_hw
*hw
, u8 addr
, u8 mask
, u8 val
);
64 int hts221_probe(struct device
*dev
, int irq
, const char *name
,
65 const struct hts221_transfer_function
*tf_ops
);
66 int hts221_set_enable(struct hts221_hw
*hw
, bool enable
);
67 int hts221_allocate_buffers(struct hts221_hw
*hw
);
68 int hts221_allocate_trigger(struct hts221_hw
*hw
);