1 /* HopeRF Electronic HP206C precision barometer and altimeter header
2  *
3  * Copyright (c) 2016 Intel Corporation
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  *
7  */
8 
9 #ifndef ZEPHYR_DRIVERS_SENSOR_HP206C_HP206C_H_
10 #define ZEPHYR_DRIVERS_SENSOR_HP206C_HP206C_H_
11 
12 #include <sys/util.h>
13 
14 #define HP206C_I2C_ADDRESS				0x76
15 
16 /* HP206C configuration registers */
17 #define HP206C_REG_ALT_OFF_LSB				0x00
18 #define HP206C_REG_ALT_OFF_MSB				0x01
19 #define HP206C_REG_PA_H_TH_LSB				0x02
20 #define HP206C_REG_PA_H_TH_MSB				0x03
21 #define HP206C_REG_PA_M_TH_LSB				0x04
22 #define HP206C_REG_PA_M_TH_MSB				0x05
23 #define HP206C_REG_PA_L_TH_LSB				0x06
24 #define HP206C_REG_PA_L_TH_MSB				0x07
25 #define HP206C_REG_T_H_TH				0x08
26 #define HP206C_REG_T_M_TH				0x09
27 #define HP206C_REG_T_L_TH				0x0A
28 #define HP206C_REG_INT_EN				0x0B
29 #define HP206C_REG_INT_GFG				0x0C
30 #define HP206C_REG_INT_SRC				0x0D
31 #define HP206C_REG_INT_DIR				0x0E
32 #define HP206C_REG_PARA					0x0F
33 
34 /* HP206C commands */
35 #define HP206C_CMD_SOFT_RST				0x06
36 #define HP206C_CMD_ADC_CVT				0x40
37 #define HP206C_CMD_READ_PT				0x10
38 #define HP206C_CMD_READ_AT				0x11
39 #define HP206C_CMD_READ_P				0x30
40 #define HP206C_CMD_READ_A				0x31
41 #define HP206C_CMD_READ_T				0x32
42 #define HP206C_CMD_ANA_CAL				0x28
43 #define HP206C_CMD_READ_REG				0x80
44 #define HP206C_CMD_WRITE_REG				0xC0
45 
46 #define HP206C_REG_ADDR_MASK				0x3F
47 
48 /* HP206C_REG_INT_SRC */
49 #define HP206C_T_WIN					BIT(0)
50 #define HP206C_PA_WIN					BIT(1)
51 #define HP206C_T_TRAV					BIT(2)
52 #define HP206C_PA_TRAV					BIT(3)
53 #define HP206C_T_RDY					BIT(4)
54 #define HP206C_PA_RDY					BIT(5)
55 #define HP206C_DEV_RDY					BIT(6)
56 #define HP206C_TH_ERR					BIT(7)
57 
58 /* HP206C_REG_PARA */
59 #define HP206C_COMPENSATION_EN				BIT(7)
60 
61 /* default settings, based on menuconfig options */
62 #if defined(CONFIG_HP206C_OSR_RUNTIME)
63 #	define HP206C_DEFAULT_OSR			4096
64 #else
65 #	define HP206C_DEFAULT_OSR			CONFIG_HP206C_OSR
66 #endif
67 
68 #if defined(CONFIG_HP206C_ALT_OFFSET_RUNTIME)
69 #	define HP206C_DEFAULT_ALT_OFFSET		0
70 #else
71 #	define HP206C_DEFAULT_ALT_OFFSET		CONFIG_HP206C_ALT_OFFSET
72 #endif
73 /* end of default settings */
74 
75 struct hp206c_device_data {
76 	const struct device *i2c;
77 #if CONFIG_SYS_CLOCK_TICKS_PER_SEC < 1000
78 #error "driver needs millisecond tick granularity"
79 #endif
80 	struct k_timer tmr;
81 	uint8_t osr;
82 };
83 
84 #endif /* ZEPHYR_DRIVERS_SENSOR_HP206C_HP206C_H_ */
85