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 : * 96 : * @param dev npm2100 mfd device 97 : * @param time_ms timer value in ms. Set to 0 to disable timer. 98 : * @retval 0 If successful 99 : * @retval -EINVAL if time value is too large 100 : * @retval -EBUSY if the timer is already in use. 101 : * @retval -errno In case of any bus error (see i2c_write_dt()) 102 : */ 103 1 : int mfd_npm2100_hibernate(const struct device *dev, uint32_t time_ms); 104 : 105 : /** 106 : * @brief Add npm2100 event callback 107 : * 108 : * @param dev npm2100 mfd device 109 : * @param callback callback 110 : * @return 0 on success, -errno on failure 111 : */ 112 1 : int mfd_npm2100_add_callback(const struct device *dev, struct gpio_callback *callback); 113 : 114 : /** 115 : * @brief Remove npm2100 event callback 116 : * 117 : * @param dev npm2100 mfd device 118 : * @param callback callback 119 : * @return 0 on success, -errno on failure 120 : */ 121 1 : int mfd_npm2100_remove_callback(const struct device *dev, struct gpio_callback *callback); 122 : 123 : /** @} */ 124 : 125 : #ifdef __cplusplus 126 : } 127 : #endif 128 : 129 : #endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_ */