Line data Source code
1 0 : /*
2 : * Copyright (c) 2024 Nordic Semiconductor ASA
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #ifndef ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_
7 : #define ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_
8 :
9 : #ifdef __cplusplus
10 : extern "C" {
11 : #endif
12 :
13 : /**
14 : * @defgroup mdf_interface_npm2100 MFD NPM2100 Interface
15 : * @ingroup mfd_interfaces
16 : * @{
17 : */
18 :
19 : #include <stddef.h>
20 : #include <stdint.h>
21 :
22 : #include <zephyr/device.h>
23 : #include <zephyr/drivers/gpio.h>
24 :
25 0 : enum mfd_npm2100_event {
26 : NPM2100_EVENT_SYS_DIETEMP_WARN,
27 : NPM2100_EVENT_SYS_SHIPHOLD_FALL,
28 : NPM2100_EVENT_SYS_SHIPHOLD_RISE,
29 : NPM2100_EVENT_SYS_PGRESET_FALL,
30 : NPM2100_EVENT_SYS_PGRESET_RISE,
31 : NPM2100_EVENT_SYS_TIMER_EXPIRY,
32 : NPM2100_EVENT_ADC_VBAT_READY,
33 : NPM2100_EVENT_ADC_DIETEMP_READY,
34 : NPM2100_EVENT_ADC_DROOP_DETECT,
35 : NPM2100_EVENT_ADC_VOUT_READY,
36 : NPM2100_EVENT_GPIO0_FALL,
37 : NPM2100_EVENT_GPIO0_RISE,
38 : NPM2100_EVENT_GPIO1_FALL,
39 : NPM2100_EVENT_GPIO1_RISE,
40 : NPM2100_EVENT_BOOST_VBAT_WARN,
41 : NPM2100_EVENT_BOOST_VOUT_MIN,
42 : NPM2100_EVENT_BOOST_VOUT_WARN,
43 : NPM2100_EVENT_BOOST_VOUT_DPS,
44 : NPM2100_EVENT_BOOST_VOUT_OK,
45 : NPM2100_EVENT_LDOSW_OCP,
46 : NPM2100_EVENT_LDOSW_VINTFAIL,
47 : NPM2100_EVENT_MAX
48 : };
49 :
50 0 : enum mfd_npm2100_timer_mode {
51 : NPM2100_TIMER_MODE_GENERAL_PURPOSE,
52 : NPM2100_TIMER_MODE_WDT_RESET,
53 : NPM2100_TIMER_MODE_WDT_POWER_CYCLE,
54 : NPM2100_TIMER_MODE_WAKEUP,
55 : };
56 :
57 : /**
58 : * @brief Write npm2100 timer register
59 : *
60 : * The timer tick resolution is 1/64 seconds.
61 : * This function does not start the timer (see mfd_npm2100_start_timer()).
62 : *
63 : * @param dev npm2100 mfd device
64 : * @param time_ms timer value in ms
65 : * @param mode timer mode
66 : * @retval 0 If successful
67 : * @retval -EINVAL if time value is too large
68 : * @retval -errno In case of any bus error (see i2c_write_dt())
69 : */
70 1 : int mfd_npm2100_set_timer(const struct device *dev, uint32_t time_ms,
71 : enum mfd_npm2100_timer_mode mode);
72 :
73 : /**
74 : * @brief Start npm2100 timer
75 : *
76 : * @param dev npm2100 mfd device
77 : * @retval 0 If successful
78 : * @retval -errno In case of any bus error (see i2c_write_dt())
79 : */
80 1 : int mfd_npm2100_start_timer(const struct device *dev);
81 :
82 : /**
83 : * @brief npm2100 full power reset
84 : *
85 : * @param dev npm2100 mfd device
86 : * @retval 0 If successful
87 : * @retval -errno In case of any bus error (see i2c_write_dt())
88 : */
89 1 : int mfd_npm2100_reset(const struct device *dev);
90 :
91 : /**
92 : * @brief npm2100 hibernate
93 : *
94 : * Enters low power state, and wakes after specified time or "shphld" pin signal.
95 : * Pass-through mode can be used when the battery voltage is high enough to supply the pmic directly
96 : * without boosting. This lowers the power consumption of the pmic when hibernate mode is active.
97 : *
98 : * @param dev npm2100 mfd device
99 : * @param time_ms timer value in ms. Set to 0 to disable timer.
100 : * @param pass_through set to use pass-through hibernate mode.
101 : * @retval 0 If successful
102 : * @retval -EINVAL if time value is too large
103 : * @retval -EBUSY if the timer is already in use.
104 : * @retval -errno In case of any bus error (see i2c_write_dt())
105 : */
106 1 : int mfd_npm2100_hibernate(const struct device *dev, uint32_t time_ms, bool pass_through);
107 :
108 : /**
109 : * @brief Add npm2100 event callback
110 : *
111 : * @param dev npm2100 mfd device
112 : * @param callback callback
113 : * @return 0 on success, -errno on failure
114 : */
115 1 : int mfd_npm2100_add_callback(const struct device *dev, struct gpio_callback *callback);
116 :
117 : /**
118 : * @brief Remove npm2100 event callback
119 : *
120 : * @param dev npm2100 mfd device
121 : * @param callback callback
122 : * @return 0 on success, -errno on failure
123 : */
124 1 : int mfd_npm2100_remove_callback(const struct device *dev, struct gpio_callback *callback);
125 :
126 : /** @} */
127 :
128 : #ifdef __cplusplus
129 : }
130 : #endif
131 :
132 : #endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_ */
|