1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Honeywell TruStability HSC Series pressure/temperature sensor
5 * Copyright (c) 2023 Petre Rodan <petre.rodan@subdimension.ro>
11 #include <linux/types.h>
13 #include <linux/iio/iio.h>
15 #define HSC_REG_MEASUREMENT_RD_SIZE 4
16 #define HSC_RESP_TIME_MS 2
26 typedef int (*hsc_recv_fn
)(struct hsc_data
*);
30 * @dev: current device structure
31 * @chip: structure containing chip's channel properties
32 * @recv_cb: function that implements the chip reads
33 * @is_valid: true if last transfer has been validated
34 * @pmin: minimum measurable pressure limit
35 * @pmax: maximum measurable pressure limit
36 * @outmin: minimum raw pressure in counts (based on transfer function)
37 * @outmax: maximum raw pressure in counts (based on transfer function)
38 * @function: transfer function
39 * @p_scale: pressure scale
40 * @p_scale_dec: pressure scale, decimal places
41 * @p_offset: pressure offset
42 * @p_offset_dec: pressure offset, decimal places
43 * @buffer: raw conversion data
47 const struct hsc_chip_data
*chip
;
61 s64 timestamp
__aligned(8);
63 u8 buffer
[HSC_REG_MEASUREMENT_RD_SIZE
] __aligned(IIO_DMA_MINALIGN
);
66 struct hsc_chip_data
{
67 bool (*valid
)(struct hsc_data
*data
);
68 const struct iio_chan_spec
*channels
;
79 int hsc_common_probe(struct device
*dev
, hsc_recv_fn recv
);