56 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * STMicroelectronics hts221 sensor driver4 *5 * Copyright 2016 STMicroelectronics Inc.6 *7 * Lorenzo Bianconi <lorenzo.bianconi@st.com>8 */9 10#ifndef HTS221_H11#define HTS221_H12 13#define HTS221_DEV_NAME "hts221"14 15#include <linux/iio/iio.h>16 17enum hts221_sensor_type {18 HTS221_SENSOR_H,19 HTS221_SENSOR_T,20 HTS221_SENSOR_MAX,21};22 23struct hts221_sensor {24 u8 cur_avg_idx;25 int slope, b_gen;26};27 28struct hts221_hw {29 const char *name;30 struct device *dev;31 struct regmap *regmap;32 33 struct iio_trigger *trig;34 int irq;35 36 struct hts221_sensor sensors[HTS221_SENSOR_MAX];37 38 bool enabled;39 u8 odr;40 /* Ensure natural alignment of timestamp */41 struct {42 __le16 channels[2];43 s64 ts __aligned(8);44 } scan;45};46 47extern const struct dev_pm_ops hts221_pm_ops;48 49int hts221_probe(struct device *dev, int irq, const char *name,50 struct regmap *regmap);51int hts221_set_enable(struct hts221_hw *hw, bool enable);52int hts221_allocate_buffers(struct iio_dev *iio_dev);53int hts221_allocate_trigger(struct iio_dev *iio_dev);54 55#endif /* HTS221_H */56