18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * STMicroelectronics hts221 sensor driver 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2016 STMicroelectronics Inc. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Lorenzo Bianconi <lorenzo.bianconi@st.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef HTS221_H 118c2ecf20Sopenharmony_ci#define HTS221_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#define HTS221_DEV_NAME "hts221" 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include <linux/iio/iio.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cienum hts221_sensor_type { 188c2ecf20Sopenharmony_ci HTS221_SENSOR_H, 198c2ecf20Sopenharmony_ci HTS221_SENSOR_T, 208c2ecf20Sopenharmony_ci HTS221_SENSOR_MAX, 218c2ecf20Sopenharmony_ci}; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_cistruct hts221_sensor { 248c2ecf20Sopenharmony_ci u8 cur_avg_idx; 258c2ecf20Sopenharmony_ci int slope, b_gen; 268c2ecf20Sopenharmony_ci}; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_cistruct hts221_hw { 298c2ecf20Sopenharmony_ci const char *name; 308c2ecf20Sopenharmony_ci struct device *dev; 318c2ecf20Sopenharmony_ci struct regmap *regmap; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci struct iio_trigger *trig; 348c2ecf20Sopenharmony_ci int irq; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci struct hts221_sensor sensors[HTS221_SENSOR_MAX]; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci bool enabled; 398c2ecf20Sopenharmony_ci u8 odr; 408c2ecf20Sopenharmony_ci /* Ensure natural alignment of timestamp */ 418c2ecf20Sopenharmony_ci struct { 428c2ecf20Sopenharmony_ci __le16 channels[2]; 438c2ecf20Sopenharmony_ci s64 ts __aligned(8); 448c2ecf20Sopenharmony_ci } scan; 458c2ecf20Sopenharmony_ci}; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciextern const struct dev_pm_ops hts221_pm_ops; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciint hts221_probe(struct device *dev, int irq, const char *name, 508c2ecf20Sopenharmony_ci struct regmap *regmap); 518c2ecf20Sopenharmony_ciint hts221_set_enable(struct hts221_hw *hw, bool enable); 528c2ecf20Sopenharmony_ciint hts221_allocate_buffers(struct iio_dev *iio_dev); 538c2ecf20Sopenharmony_ciint hts221_allocate_trigger(struct iio_dev *iio_dev); 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci#endif /* HTS221_H */ 56