File tree Expand file tree Collapse file tree 2 files changed +8
-3
lines changed
include/zephyr/drivers/mfd Expand file tree Collapse file tree 2 files changed +8
-3
lines changed Original file line number Diff line number Diff line change 2626#define SHPHLD_WAKEUP 0xC1U
2727#define SHPHLD_SHPHLD 0xC2U
2828#define HIBERNATE_TASKS_HIBER 0xC8U
29+ #define HIBERNATE_TASKS_HIBERPT 0xC9U
2930#define RESET_TASKS_RESET 0xD0U
3031#define RESET_BUTTON 0xD2U
3132#define RESET_PIN 0xD3U
@@ -337,7 +338,7 @@ int mfd_npm2100_reset(const struct device *dev)
337338 return i2c_reg_write_byte_dt (& config -> i2c , RESET_TASKS_RESET , 1U );
338339}
339340
340- int mfd_npm2100_hibernate (const struct device * dev , uint32_t time_ms )
341+ int mfd_npm2100_hibernate (const struct device * dev , uint32_t time_ms , bool pass_through )
341342{
342343 const struct mfd_npm2100_config * config = dev -> config ;
343344 int ret ;
@@ -365,7 +366,8 @@ int mfd_npm2100_hibernate(const struct device *dev, uint32_t time_ms)
365366 return ret ;
366367 }
367368
368- return i2c_reg_write_byte_dt (& config -> i2c , HIBERNATE_TASKS_HIBER , 1U );
369+ return i2c_reg_write_byte_dt (
370+ & config -> i2c , pass_through ? HIBERNATE_TASKS_HIBERPT : HIBERNATE_TASKS_HIBER , 1U );
369371}
370372
371373int mfd_npm2100_add_callback (const struct device * dev , struct gpio_callback * callback )
Original file line number Diff line number Diff line change @@ -92,15 +92,18 @@ int mfd_npm2100_reset(const struct device *dev);
9292 * @brief npm2100 hibernate
9393 *
9494 * 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.
9597 *
9698 * @param dev npm2100 mfd device
9799 * @param time_ms timer value in ms. Set to 0 to disable timer.
100+ * @param pass_through set to use pass-through hibernate mode.
98101 * @retval 0 If successful
99102 * @retval -EINVAL if time value is too large
100103 * @retval -EBUSY if the timer is already in use.
101104 * @retval -errno In case of any bus error (see i2c_write_dt())
102105 */
103- int mfd_npm2100_hibernate (const struct device * dev , uint32_t time_ms );
106+ int mfd_npm2100_hibernate (const struct device * dev , uint32_t time_ms , bool pass_through );
104107
105108/**
106109 * @brief Add npm2100 event callback
You can’t perform that action at this time.
0 commit comments