no-OS
Loading...
Searching...
No Matches
max20362.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include "no_os_i2c.h"
#include "no_os_gpio.h"
#include "no_os_util.h"
#include "no_os_error.h"
Include dependency graph for max20362.h:

Classes

struct  max20362_dev
 Device descriptor for MAX20362. More...
 
struct  max20362_init_param
 Initialization parameters for MAX20362. More...
 

Macros

#define MAX20362_PMIC_I2C_ADDR   0x68
 
#define MAX20362_CHIP_ID_VAL   0x00
 
#define MAX20362_REG_CHIP_ID   0x00
 
#define MAX20362_REG_BBST_CFG0   0x01
 
#define MAX20362_REG_BBST_VSET   0x02
 
#define MAX20362_REG_CAP_VSET   0x0A
 
#define MAX20362_REG_IGN_CFG   0x0C
 
#define MAX20362_REG_STATUS   0x10
 
#define MAX20362_REG_INT   0x14
 
#define MAX20362_REG_INGEN_INT   0x16
 
#define MAX20362_REG_LDO_INT   0x17
 
#define MAX20362_REG_INT_MASK   0x18
 
#define MAX20362_REG_INGEN_INT_MASK   0x1A
 
#define MAX20362_REG_LDO_INT_MASK   0x1B
 
#define MAX20362_REG_RR_VSET_BASE   0x20
 
#define MAX20362_REG_LDO_CFG   0x40
 
#define MAX20362_REG_LDO_VSET   0x41
 
#define MAX20362_REG_LOCK_MSK   0x50
 
#define MAX20362_REG_LOCK_UNLOCK   0x51
 
#define MAX20362_REG_DVS_CFG   0x54
 
#define MAX20362_REG_RR_CFG1   0x55
 
#define MAX20362_UNLOCK_PASSWORD   0x55
 
#define MAX20362_LOCK_PASSWORD   0xAA
 
#define MAX20362_LOCK_MASK_UNLOCKED   0x00
 
#define MAX20362_LOCK_MASK_LOCKED   0x01
 
#define MAX20362_CHIPID_VENDOR_MSK   NO_OS_GENMASK(7, 4)
 
#define MAX20362_CHIPID_REV_MSK   NO_OS_GENMASK(3, 0)
 
#define MAX20362_BBSTCFG_BBHALFBW_MSK   NO_OS_BIT(7)
 
#define MAX20362_BBSTCFG_BBSTLOWEMI_MSK   NO_OS_BIT(6)
 
#define MAX20362_BBSTCFG_BBSTENA_MSK   NO_OS_BIT(5)
 
#define MAX20362_BBSTCFG_BBSTFAST_MSK   NO_OS_BIT(4)
 
#define MAX20362_BBSTCFG_BBFHIGHSH_MSK   NO_OS_BIT(2)
 
#define MAX20362_BBSTCFG_BBSTACTDSC_MSK   NO_OS_BIT(1)
 
#define MAX20362_BBSTCFG_BBSTPSVDSC_MSK   NO_OS_BIT(0)
 
#define MAX20362_BBSTVSET_MSK   NO_OS_GENMASK(6, 0)
 
#define MAX20362_CAPVSET_ACTDSC_MSK   NO_OS_BIT(7)
 
#define MAX20362_CAPVSET_PSVDSC_MSK   NO_OS_BIT(6)
 
#define MAX20362_CAPVSET_STEP_MSK   NO_OS_GENMASK(5, 4)
 
#define MAX20362_CAPVSET_VSET_MSK   NO_OS_GENMASK(3, 0)
 
#define MAX20362_IGNCFG_BBVDROP_MSK   NO_OS_GENMASK(7, 6)
 
#define MAX20362_IGNCFG_ILIM_MSK   NO_OS_GENMASK(5, 0)
 
#define MAX20362_LDOCFG_BBSTSUP_MSK   NO_OS_BIT(5)
 
#define MAX20362_LDOCFG_PROPMD_MSK   NO_OS_BIT(4)
 
#define MAX20362_LDOCFG_LOWIQ_MSK   NO_OS_BIT(3)
 
#define MAX20362_LDOCFG_ACT_MSK   NO_OS_BIT(2)
 
#define MAX20362_LDOCFG_PSV_MSK   NO_OS_BIT(1)
 
#define MAX20362_LDOCFG_ENA_MSK   NO_OS_BIT(0)
 
#define MAX20362_LDOVSET_MSK   NO_OS_GENMASK(4, 0)
 
#define MAX20362_DVSCFG_I2CLKPTDIS_MSK   NO_OS_BIT(3)
 
#define MAX20362_DVSCFG_RRWRAP_MSK   NO_OS_BIT(2)
 
#define MAX20362_DVSCFG_RRENA_MSK   NO_OS_BIT(1)
 
#define MAX20362_DVSCFG_DVSSOURCE_MSK   NO_OS_BIT(0)
 
#define MAX20362_RRCFG1_RRCLKPOLARITY_MSK   NO_OS_BIT(6)
 
#define MAX20362_RRCFG1_RRTIMEOUTRES_MSK   NO_OS_BIT(5)
 
#define MAX20362_RRCFG1_RRSIZE_MSK   NO_OS_GENMASK(4, 0)
 
#define MAX20362_STATUS_CAPOVLO_MSK   NO_OS_BIT(7)
 
#define MAX20362_STATUS_CAPUVLO_MSK   NO_OS_BIT(6)
 
#define MAX20362_STATUS_BBSTON_MSK   NO_OS_BIT(5)
 
#define MAX20362_STATUS_BBSTOFF_MSK   NO_OS_BIT(4)
 
#define MAX20362_STATUS_BBINUVLO_MSK   NO_OS_BIT(3)
 
#define MAX20362_STATUS_UVLO_MSK   NO_OS_BIT(2)
 
#define MAX20362_STATUS_BSTFLT_MSK   NO_OS_BIT(1)
 
#define MAX20362_STATUS_THMFLT_MSK   NO_OS_BIT(0)
 
#define MAX20362_INT_CAPOVLO_MSK   NO_OS_BIT(7)
 
#define MAX20362_INT_CAPUVLO_MSK   NO_OS_BIT(6)
 
#define MAX20362_INT_BBSTON_MSK   NO_OS_BIT(5)
 
#define MAX20362_INT_BBSTOFF_MSK   NO_OS_BIT(4)
 
#define MAX20362_INT_BBINUVLO_MSK   NO_OS_BIT(3)
 
#define MAX20362_INT_UVLO_MSK   NO_OS_BIT(2)
 
#define MAX20362_INT_BSTFLT_MSK   NO_OS_BIT(1)
 
#define MAX20362_INT_THMFLT_MSK   NO_OS_BIT(0)
 
#define MAX20362_LDOINT_DIV_MSK   NO_OS_BIT(3)
 
#define MAX20362_LDOINT_SHR_MSK   NO_OS_BIT(2)
 
#define MAX20362_LDOINT_THM_MSK   NO_OS_BIT(1)
 
#define MAX20362_LDOINT_CLP_MSK   NO_OS_BIT(0)
 
#define MAX20362_INGENINT_OUTTMO_MSK   NO_OS_BIT(4)
 
#define MAX20362_INGENINT_DRPMIN_MSK   NO_OS_BIT(3)
 
#define MAX20362_INGENINT_TNKTMO_MSK   NO_OS_BIT(2)
 
#define MAX20362_INGENINT_SIMOPIN_MSK   NO_OS_BIT(1)
 
#define MAX20362_INGENINT_DRPMAX_MSK   NO_OS_BIT(0)
 
#define MAX20362_INT_EN   0xCF
 
#define MAX20362_LDO_INT_EN   0x0F
 
#define MAX20362_INGEN_INT_EN   0x1D
 
#define MAX20362_INT_UNMASK_ALL   0x00
 
#define MAX20362_INT_MASK_ALL   0xFF
 
#define MAX20362_BBOUT_MIN_UV   1500000
 
#define MAX20362_BBOUT_MAX_UV   5500000
 
#define MAX20362_BBOUT_STEP_UV   50000
 
#define MAX20362_LDO_MIN_UV   900000
 
#define MAX20362_LDO_MAX_UV   4000000
 
#define MAX20362_LDO_STEP_UV   100000
 
#define MAX20362_VCAP_MIN_UV   1600000
 
#define MAX20362_VCAP_MAX_UV   9500000
 
#define MAX20362_VCAP_STEP_UV   250000
 
#define MAX20362_VCAP_STEP_500MV   0
 
#define MAX20362_VCAP_STEP_250MV   1
 
#define MAX20362_VCAP_STEP_125MV   2
 
#define MAX20362_VCAP_500MV_MIN_UV   2500000
 
#define MAX20362_VCAP_500MV_MAX_UV   9500000
 
#define MAX20362_VCAP_500MV_STEP_UV   500000
 
#define MAX20362_VCAP_250MV_MIN_UV   1600000
 
#define MAX20362_VCAP_250MV_MAX_UV   5350000
 
#define MAX20362_VCAP_250MV_STEP_UV   250000
 
#define MAX20362_VCAP_125MV_MIN_UV   1650000
 
#define MAX20362_VCAP_125MV_MAX_UV   3025000
 
#define MAX20362_VCAP_125MV_STEP_UV   125000
 
#define MAX20362_VCAP_500MV_VSET_MAX   14
 
#define MAX20362_VCAP_250MV_VSET_MAX   15
 
#define MAX20362_VCAP_125MV_VSET_MAX   15
 
#define MAX20362_VCAP_125MV_BASE_OFFSET   4
 
#define MAX20362_VCAP_125MV_UPPER_LIMIT_UV   2900000
 
#define MAX20362_ILIM_MIN_MA   5
 
#define MAX20362_ILIM_MAX_MA   50
 
#define MAX20362_ILIM_STEP_MA   1
 
#define MAX20362_DVS_SETTLE_DELAY_US   300
 
#define MAX20362_VOLTAGE_SETTLE_MS   10
 
#define MAX20362_RR_MAX_VOLTAGES   20
 
#define MAX20362_RR_REGISTER_START   0x20
 
#define MAX20362_RR_MIN_COUNT   1
 
#define MAX20362_RR_VSET_ADDR(x)
 
#define MAX20362_REGISTER_COUNT_OFFSET   1
 
#define MAX20362_DVS_I2C_MODE   0x00
 
#define MAX20362_DVS_PSPI_MODE   0x01
 
#define MAX20362_DVS_AUTO_MODE   0x02
 
#define MAX20362_VOLTAGE_MASK_7BIT   0x7F
 
#define MAX20362_DVS_VSET_MASK   0x0F
 
#define MAX20362_INTERRUPT_CLEAR_ALL   0xFF
 

Enumerations

enum  max20362_dvs_source {
  MAX20362_DVS_SOURCE_I2C ,
  MAX20362_DVS_SOURCE_PSPI ,
  MAX20362_DVS_SOURCE_ROUND_ROBIN
}
 Dynamic voltage scaling source selection. More...
 
enum  max20362_bbat_vdrop {
  MAX20362_BBAT_VDROP_55MV ,
  MAX20362_BBAT_VDROP_100MV ,
  MAX20362_BBAT_VDROP_150MV ,
  MAX20362_BBAT_VDROP_200MV
}
 Battery voltage droop configuration. More...
 
enum  max20362_ldo_source {
  MAX20362_LDO_SOURCE_BBOUT ,
  MAX20362_LDO_SOURCE_CAP ,
  MAX20362_LDO_SOURCE_BATT
}
 LDO input source selection. More...
 

Functions

int max20362_init (struct max20362_dev **device, const struct max20362_init_param *init_param)
 Initialize MAX20362 device.
 
int max20362_remove (struct max20362_dev *dev)
 Free resources and remove device.
 
int max20362_reg_write (struct max20362_dev *dev, uint8_t reg, uint8_t val)
 Write register.
 
int max20362_reg_read (struct max20362_dev *dev, uint8_t reg, uint8_t *val)
 Read register.
 
int max20362_reg_update_bits (struct max20362_dev *dev, uint8_t reg, uint8_t mask, uint8_t val)
 Modify register bits.
 
int max20362_enable_buck_boost (struct max20362_dev *dev, bool enable)
 Enable/disable buck-boost converter.
 
int max20362_set_buck_boost_voltage (struct max20362_dev *dev, uint32_t microvolts)
 Set buck-boost output voltage.
 
int max20362_config_buck_boost_mode (struct max20362_dev *dev, bool half_bw, bool low_emi, bool fast_fpwm)
 Configure buck-boost operating parameters.
 
int max20362_config_buck_boost_discharge (struct max20362_dev *dev, bool active_discharge, bool passive_discharge)
 Configure buck-boost discharge modes.
 
int max20362_enable_ldo (struct max20362_dev *dev, bool enable)
 Enable/disable LDO regulator.
 
int max20362_set_ldo_voltage (struct max20362_dev *dev, uint32_t microvolts)
 Set LDO output voltage.
 
int max20362_config_ldo_mode (struct max20362_dev *dev, bool low_iq_mode, bool passive_discharge, bool active_discharge)
 Configure LDO operating modes.
 
int max20362_set_ldo_input_source (struct max20362_dev *dev, enum max20362_ldo_source source)
 Set LDO input source.
 
int max20362_set_dvs_mode (struct max20362_dev *dev, enum max20362_dvs_source source)
 Set DVS operating mode.
 
int max20362_set_dvs_rr_table (struct max20362_dev *dev, const uint32_t *voltages_uv, uint8_t count)
 Configure DVS round-robin voltage table.
 
int max20362_set_rr_wrap (struct max20362_dev *dev, bool enable)
 Set round-robin wrap mode.
 
int max20362_set_rr_clk_polarity (struct max20362_dev *dev, bool rising_edge)
 Set round-robin clock polarity.
 
int max20362_set_rr_timeout_reset (struct max20362_dev *dev, bool enable)
 Set round-robin timeout reset behavior.
 
int max20362_set_cap_voltage (struct max20362_dev *dev, uint32_t microvolts, uint8_t step_size)
 Set energy storage capacitor voltage.
 
int max20362_set_input_current_limit (struct max20362_dev *dev, uint8_t ma)
 Set input current limit.
 
int max20362_set_bbat_vdrop (struct max20362_dev *dev, enum max20362_bbat_vdrop vdrop)
 Set battery voltage droop.
 
int max20362_get_status (struct max20362_dev *dev, uint8_t *status)
 Read fault status flags.
 
int max20362_get_int_status (struct max20362_dev *dev, uint8_t *status)
 Read main interrupt status.
 
int max20362_get_ldo_int_status (struct max20362_dev *dev, uint8_t *status)
 Read LDO interrupt status.
 
int max20362_get_ingen_int_status (struct max20362_dev *dev, uint8_t *status)
 Read Ingenuity interrupt status.
 
int max20362_set_int_mask (struct max20362_dev *dev, uint8_t mask)
 Set main interrupt mask.
 
int max20362_set_ldo_int_mask (struct max20362_dev *dev, uint8_t mask)
 Set LDO interrupt mask.
 
int max20362_set_ingen_int_mask (struct max20362_dev *dev, uint8_t mask)
 Set Ingenuity interrupt mask.
 
int max20362_clear_all_interrupts (struct max20362_dev *dev)
 Clear all interrupt flags.
 
int max20362_unlock_registers (struct max20362_dev *dev)
 Unlock write protection for protected registers.
 
int max20362_lock_registers (struct max20362_dev *dev)
 Lock write protection for protected registers.
 

Macro Definition Documentation

◆ MAX20362_BBOUT_MAX_UV

#define MAX20362_BBOUT_MAX_UV   5500000

Buck-boost max: 5.5V

◆ MAX20362_BBOUT_MIN_UV

#define MAX20362_BBOUT_MIN_UV   1500000

Voltage Range Constants (microvolts) Buck-boost min: 1.5V

◆ MAX20362_BBOUT_STEP_UV

#define MAX20362_BBOUT_STEP_UV   50000

Buck-boost step: 50mV

◆ MAX20362_BBSTCFG_BBFHIGHSH_MSK

#define MAX20362_BBSTCFG_BBFHIGHSH_MSK   NO_OS_BIT(2)

High side FET control

◆ MAX20362_BBSTCFG_BBHALFBW_MSK

#define MAX20362_BBSTCFG_BBHALFBW_MSK   NO_OS_BIT(7)

BBstCfg0 Register Bits (0x01) Half bandwidth mode

◆ MAX20362_BBSTCFG_BBSTACTDSC_MSK

#define MAX20362_BBSTCFG_BBSTACTDSC_MSK   NO_OS_BIT(1)

Active discharge

◆ MAX20362_BBSTCFG_BBSTENA_MSK

#define MAX20362_BBSTCFG_BBSTENA_MSK   NO_OS_BIT(5)

Buck-boost enable

◆ MAX20362_BBSTCFG_BBSTFAST_MSK

#define MAX20362_BBSTCFG_BBSTFAST_MSK   NO_OS_BIT(4)

Fast FPWM mode

◆ MAX20362_BBSTCFG_BBSTLOWEMI_MSK

#define MAX20362_BBSTCFG_BBSTLOWEMI_MSK   NO_OS_BIT(6)

Low EMI mode

◆ MAX20362_BBSTCFG_BBSTPSVDSC_MSK

#define MAX20362_BBSTCFG_BBSTPSVDSC_MSK   NO_OS_BIT(0)

Passive discharge

◆ MAX20362_BBSTVSET_MSK

#define MAX20362_BBSTVSET_MSK   NO_OS_GENMASK(6, 0)

BBST_VSET Register Bits

◆ MAX20362_CAPVSET_ACTDSC_MSK

#define MAX20362_CAPVSET_ACTDSC_MSK   NO_OS_BIT(7)

CAP_VSET Register Bits Active discharge

◆ MAX20362_CAPVSET_PSVDSC_MSK

#define MAX20362_CAPVSET_PSVDSC_MSK   NO_OS_BIT(6)

Passive discharge

◆ MAX20362_CAPVSET_STEP_MSK

#define MAX20362_CAPVSET_STEP_MSK   NO_OS_GENMASK(5, 4)

Voltage step size

◆ MAX20362_CAPVSET_VSET_MSK

#define MAX20362_CAPVSET_VSET_MSK   NO_OS_GENMASK(3, 0)

Voltage setting

◆ MAX20362_CHIP_ID_VAL

#define MAX20362_CHIP_ID_VAL   0x00

Expected Chip ID (Vendor: 0x0, Revision: 0x0)

◆ MAX20362_CHIPID_REV_MSK

#define MAX20362_CHIPID_REV_MSK   NO_OS_GENMASK(3, 0)

◆ MAX20362_CHIPID_VENDOR_MSK

#define MAX20362_CHIPID_VENDOR_MSK   NO_OS_GENMASK(7, 4)

CHIP_ID Register Bits

◆ MAX20362_DVS_AUTO_MODE

#define MAX20362_DVS_AUTO_MODE   0x02

DVS round-robin mode value

◆ MAX20362_DVS_I2C_MODE

#define MAX20362_DVS_I2C_MODE   0x00

DVS Mode Values DVS I2C control mode value

◆ MAX20362_DVS_PSPI_MODE

#define MAX20362_DVS_PSPI_MODE   0x01

DVS pSPI control mode value

◆ MAX20362_DVS_SETTLE_DELAY_US

#define MAX20362_DVS_SETTLE_DELAY_US   300

Timing Constants (microseconds) DVS mode change delay: 300µs

◆ MAX20362_DVS_VSET_MASK

#define MAX20362_DVS_VSET_MASK   0x0F

DVS VSET field mask

◆ MAX20362_DVSCFG_DVSSOURCE_MSK

#define MAX20362_DVSCFG_DVSSOURCE_MSK   NO_OS_BIT(0)

DVS source

◆ MAX20362_DVSCFG_I2CLKPTDIS_MSK

#define MAX20362_DVSCFG_I2CLKPTDIS_MSK   NO_OS_BIT(3)

DVS_CFG Register Bits I2C lockup timer disable

◆ MAX20362_DVSCFG_RRENA_MSK

#define MAX20362_DVSCFG_RRENA_MSK   NO_OS_BIT(1)

Round-robin enable

◆ MAX20362_DVSCFG_RRWRAP_MSK

#define MAX20362_DVSCFG_RRWRAP_MSK   NO_OS_BIT(2)

RR wrap enable

◆ MAX20362_IGNCFG_BBVDROP_MSK

#define MAX20362_IGNCFG_BBVDROP_MSK   NO_OS_GENMASK(7, 6)

IGN_CFG Register Bits Battery droop

◆ MAX20362_IGNCFG_ILIM_MSK

#define MAX20362_IGNCFG_ILIM_MSK   NO_OS_GENMASK(5, 0)

Current limit

◆ MAX20362_ILIM_MAX_MA

#define MAX20362_ILIM_MAX_MA   50

Max current limit: 50mA

◆ MAX20362_ILIM_MIN_MA

#define MAX20362_ILIM_MIN_MA   5

Current Limit Constants (milliamps) Min current limit: 5mA

◆ MAX20362_ILIM_STEP_MA

#define MAX20362_ILIM_STEP_MA   1

Current limit step: 1mA

◆ MAX20362_INGEN_INT_EN

#define MAX20362_INGEN_INT_EN   0x1D

Enable Ingenuity interrupts

◆ MAX20362_INGENINT_DRPMAX_MSK

#define MAX20362_INGENINT_DRPMAX_MSK   NO_OS_BIT(0)

Droop max

◆ MAX20362_INGENINT_DRPMIN_MSK

#define MAX20362_INGENINT_DRPMIN_MSK   NO_OS_BIT(3)

Droop min

◆ MAX20362_INGENINT_OUTTMO_MSK

#define MAX20362_INGENINT_OUTTMO_MSK   NO_OS_BIT(4)

INGEN_INT and INGEN_INT_MASK Register Bits Output timeout

◆ MAX20362_INGENINT_SIMOPIN_MSK

#define MAX20362_INGENINT_SIMOPIN_MSK   NO_OS_BIT(1)

SIMO pin

◆ MAX20362_INGENINT_TNKTMO_MSK

#define MAX20362_INGENINT_TNKTMO_MSK   NO_OS_BIT(2)

Tank timeout

◆ MAX20362_INT_BBINUVLO_MSK

#define MAX20362_INT_BBINUVLO_MSK   NO_OS_BIT(3)

BB input UVLO

◆ MAX20362_INT_BBSTOFF_MSK

#define MAX20362_INT_BBSTOFF_MSK   NO_OS_BIT(4)

Buck-boost off

◆ MAX20362_INT_BBSTON_MSK

#define MAX20362_INT_BBSTON_MSK   NO_OS_BIT(5)

Buck-boost on

◆ MAX20362_INT_BSTFLT_MSK

#define MAX20362_INT_BSTFLT_MSK   NO_OS_BIT(1)

Boost fault

◆ MAX20362_INT_CAPOVLO_MSK

#define MAX20362_INT_CAPOVLO_MSK   NO_OS_BIT(7)

INT and INT_MASK Register Bits Cap overvoltage

◆ MAX20362_INT_CAPUVLO_MSK

#define MAX20362_INT_CAPUVLO_MSK   NO_OS_BIT(6)

Cap undervoltage

◆ MAX20362_INT_EN

#define MAX20362_INT_EN   0xCF

Interrupt Mask Values (0=unmask/enable, 1=mask/disable) Enable main interrupts

◆ MAX20362_INT_MASK_ALL

#define MAX20362_INT_MASK_ALL   0xFF

Mask all interrupts

◆ MAX20362_INT_THMFLT_MSK

#define MAX20362_INT_THMFLT_MSK   NO_OS_BIT(0)

Thermal fault

◆ MAX20362_INT_UNMASK_ALL

#define MAX20362_INT_UNMASK_ALL   0x00

Interrupt Mask Control Values Unmask all interrupts

◆ MAX20362_INT_UVLO_MSK

#define MAX20362_INT_UVLO_MSK   NO_OS_BIT(2)

UVLO

◆ MAX20362_INTERRUPT_CLEAR_ALL

#define MAX20362_INTERRUPT_CLEAR_ALL   0xFF

Clear all interrupts value

◆ MAX20362_LDO_INT_EN

#define MAX20362_LDO_INT_EN   0x0F

Enable LDO interrupts

◆ MAX20362_LDO_MAX_UV

#define MAX20362_LDO_MAX_UV   4000000

LDO max: 4.0V

◆ MAX20362_LDO_MIN_UV

#define MAX20362_LDO_MIN_UV   900000

LDO min: 0.9V

◆ MAX20362_LDO_STEP_UV

#define MAX20362_LDO_STEP_UV   100000

LDO step: 100mV

◆ MAX20362_LDOCFG_ACT_MSK

#define MAX20362_LDOCFG_ACT_MSK   NO_OS_BIT(2)

Active discharge

◆ MAX20362_LDOCFG_BBSTSUP_MSK

#define MAX20362_LDOCFG_BBSTSUP_MSK   NO_OS_BIT(5)

LDO_CFG Register Bits LDO source select

◆ MAX20362_LDOCFG_ENA_MSK

#define MAX20362_LDOCFG_ENA_MSK   NO_OS_BIT(0)

LDO enable

◆ MAX20362_LDOCFG_LOWIQ_MSK

#define MAX20362_LDOCFG_LOWIQ_MSK   NO_OS_BIT(3)

Low IQ mode

◆ MAX20362_LDOCFG_PROPMD_MSK

#define MAX20362_LDOCFG_PROPMD_MSK   NO_OS_BIT(4)

Proportional mode

◆ MAX20362_LDOCFG_PSV_MSK

#define MAX20362_LDOCFG_PSV_MSK   NO_OS_BIT(1)

Passive discharge

◆ MAX20362_LDOINT_CLP_MSK

#define MAX20362_LDOINT_CLP_MSK   NO_OS_BIT(0)

Current limit fault

◆ MAX20362_LDOINT_DIV_MSK

#define MAX20362_LDOINT_DIV_MSK   NO_OS_BIT(3)

LDO_INT and LDO_INT_MASK Register Bits Divider fault

◆ MAX20362_LDOINT_SHR_MSK

#define MAX20362_LDOINT_SHR_MSK   NO_OS_BIT(2)

Short circuit

◆ MAX20362_LDOINT_THM_MSK

#define MAX20362_LDOINT_THM_MSK   NO_OS_BIT(1)

Thermal fault

◆ MAX20362_LDOVSET_MSK

#define MAX20362_LDOVSET_MSK   NO_OS_GENMASK(4, 0)

LDO_VSET Register Bits

◆ MAX20362_LOCK_MASK_LOCKED

#define MAX20362_LOCK_MASK_LOCKED   0x01

BBLck bit = 1 (locked)

◆ MAX20362_LOCK_MASK_UNLOCKED

#define MAX20362_LOCK_MASK_UNLOCKED   0x00

Lock Mask Definitions BBLck bit = 0 (unlocked)

◆ MAX20362_LOCK_PASSWORD

#define MAX20362_LOCK_PASSWORD   0xAA

Lock write protection

◆ MAX20362_PMIC_I2C_ADDR

#define MAX20362_PMIC_I2C_ADDR   0x68

I2C slave address

◆ MAX20362_REG_BBST_CFG0

#define MAX20362_REG_BBST_CFG0   0x01

Buck-boost configuration 0

◆ MAX20362_REG_BBST_VSET

#define MAX20362_REG_BBST_VSET   0x02

Buck-boost voltage setting

◆ MAX20362_REG_CAP_VSET

#define MAX20362_REG_CAP_VSET   0x0A

Capacitor voltage setting

◆ MAX20362_REG_CHIP_ID

#define MAX20362_REG_CHIP_ID   0x00

Register Map Chip ID register

◆ MAX20362_REG_DVS_CFG

#define MAX20362_REG_DVS_CFG   0x54

DVS configuration

◆ MAX20362_REG_IGN_CFG

#define MAX20362_REG_IGN_CFG   0x0C

Input/Ingenuity config

◆ MAX20362_REG_INGEN_INT

#define MAX20362_REG_INGEN_INT   0x16

Ingenuity interrupt register

◆ MAX20362_REG_INGEN_INT_MASK

#define MAX20362_REG_INGEN_INT_MASK   0x1A

Ingenuity interrupt mask

◆ MAX20362_REG_INT

#define MAX20362_REG_INT   0x14

Main interrupt register

◆ MAX20362_REG_INT_MASK

#define MAX20362_REG_INT_MASK   0x18

Main interrupt mask

◆ MAX20362_REG_LDO_CFG

#define MAX20362_REG_LDO_CFG   0x40

LDO configuration

◆ MAX20362_REG_LDO_INT

#define MAX20362_REG_LDO_INT   0x17

LDO interrupt register

◆ MAX20362_REG_LDO_INT_MASK

#define MAX20362_REG_LDO_INT_MASK   0x1B

LDO interrupt mask

◆ MAX20362_REG_LDO_VSET

#define MAX20362_REG_LDO_VSET   0x41

LDO voltage setting

◆ MAX20362_REG_LOCK_MSK

#define MAX20362_REG_LOCK_MSK   0x50

Lock mask register

◆ MAX20362_REG_LOCK_UNLOCK

#define MAX20362_REG_LOCK_UNLOCK   0x51

Lock/unlock password

◆ MAX20362_REG_RR_CFG1

#define MAX20362_REG_RR_CFG1   0x55

Round-robin configuration 1 (Size)

◆ MAX20362_REG_RR_VSET_BASE

#define MAX20362_REG_RR_VSET_BASE   0x20

Round-robin voltage table base (0x20-0x33)

◆ MAX20362_REG_STATUS

#define MAX20362_REG_STATUS   0x10

Status register

◆ MAX20362_REGISTER_COUNT_OFFSET

#define MAX20362_REGISTER_COUNT_OFFSET   1

Register Value Constants Offset for count-based register values

◆ MAX20362_RR_MAX_VOLTAGES

#define MAX20362_RR_MAX_VOLTAGES   20

Round-Robin Constants Max RR table entries

◆ MAX20362_RR_MIN_COUNT

#define MAX20362_RR_MIN_COUNT   1

Minimum RR table count

◆ MAX20362_RR_REGISTER_START

#define MAX20362_RR_REGISTER_START   0x20

First RR register address

◆ MAX20362_RR_VSET_ADDR

#define MAX20362_RR_VSET_ADDR ( x)
Value:
#define MAX20362_REG_RR_VSET_BASE
Definition max20362.h:41

Index RR table

◆ MAX20362_RRCFG1_RRCLKPOLARITY_MSK

#define MAX20362_RRCFG1_RRCLKPOLARITY_MSK   NO_OS_BIT(6)

RRCfg1 Register Bits (0x55) RR clock polarity

◆ MAX20362_RRCFG1_RRSIZE_MSK

#define MAX20362_RRCFG1_RRSIZE_MSK   NO_OS_GENMASK(4, 0)

RR table size

◆ MAX20362_RRCFG1_RRTIMEOUTRES_MSK

#define MAX20362_RRCFG1_RRTIMEOUTRES_MSK   NO_OS_BIT(5)

RR timeout reset

◆ MAX20362_STATUS_BBINUVLO_MSK

#define MAX20362_STATUS_BBINUVLO_MSK   NO_OS_BIT(3)

BB input UVLO

◆ MAX20362_STATUS_BBSTOFF_MSK

#define MAX20362_STATUS_BBSTOFF_MSK   NO_OS_BIT(4)

Buck-boost off

◆ MAX20362_STATUS_BBSTON_MSK

#define MAX20362_STATUS_BBSTON_MSK   NO_OS_BIT(5)

Buck-boost on

◆ MAX20362_STATUS_BSTFLT_MSK

#define MAX20362_STATUS_BSTFLT_MSK   NO_OS_BIT(1)

Boost fault

◆ MAX20362_STATUS_CAPOVLO_MSK

#define MAX20362_STATUS_CAPOVLO_MSK   NO_OS_BIT(7)

STATUS Register Bits Cap overvoltage

◆ MAX20362_STATUS_CAPUVLO_MSK

#define MAX20362_STATUS_CAPUVLO_MSK   NO_OS_BIT(6)

Cap undervoltage

◆ MAX20362_STATUS_THMFLT_MSK

#define MAX20362_STATUS_THMFLT_MSK   NO_OS_BIT(0)

Thermal fault

◆ MAX20362_STATUS_UVLO_MSK

#define MAX20362_STATUS_UVLO_MSK   NO_OS_BIT(2)

Undervoltage lockout

◆ MAX20362_UNLOCK_PASSWORD

#define MAX20362_UNLOCK_PASSWORD   0x55

Lock/Unlock Passwords Unlock write protection

◆ MAX20362_VCAP_125MV_BASE_OFFSET

#define MAX20362_VCAP_125MV_BASE_OFFSET   4

Base offset for 125mV step calculations

◆ MAX20362_VCAP_125MV_MAX_UV

#define MAX20362_VCAP_125MV_MAX_UV   3025000

◆ MAX20362_VCAP_125MV_MIN_UV

#define MAX20362_VCAP_125MV_MIN_UV   1650000

◆ MAX20362_VCAP_125MV_STEP_UV

#define MAX20362_VCAP_125MV_STEP_UV   125000

◆ MAX20362_VCAP_125MV_UPPER_LIMIT_UV

#define MAX20362_VCAP_125MV_UPPER_LIMIT_UV   2900000

Upper limit for 125mV step calculation

◆ MAX20362_VCAP_125MV_VSET_MAX

#define MAX20362_VCAP_125MV_VSET_MAX   15

Max VSET value for 125mV steps

◆ MAX20362_VCAP_250MV_MAX_UV

#define MAX20362_VCAP_250MV_MAX_UV   5350000

◆ MAX20362_VCAP_250MV_MIN_UV

#define MAX20362_VCAP_250MV_MIN_UV   1600000

◆ MAX20362_VCAP_250MV_STEP_UV

#define MAX20362_VCAP_250MV_STEP_UV   250000

◆ MAX20362_VCAP_250MV_VSET_MAX

#define MAX20362_VCAP_250MV_VSET_MAX   15

Max VSET value for 250mV steps

◆ MAX20362_VCAP_500MV_MAX_UV

#define MAX20362_VCAP_500MV_MAX_UV   9500000

◆ MAX20362_VCAP_500MV_MIN_UV

#define MAX20362_VCAP_500MV_MIN_UV   2500000

Capacitor Voltage Ranges (microvolts)

◆ MAX20362_VCAP_500MV_STEP_UV

#define MAX20362_VCAP_500MV_STEP_UV   500000

◆ MAX20362_VCAP_500MV_VSET_MAX

#define MAX20362_VCAP_500MV_VSET_MAX   14

Capacitor Voltage Setting Maximum Values Max VSET value for 500mV steps

◆ MAX20362_VCAP_MAX_UV

#define MAX20362_VCAP_MAX_UV   9500000

Cap max: 9.5V

◆ MAX20362_VCAP_MIN_UV

#define MAX20362_VCAP_MIN_UV   1600000

Cap min: 1.6V

◆ MAX20362_VCAP_STEP_125MV

#define MAX20362_VCAP_STEP_125MV   2

◆ MAX20362_VCAP_STEP_250MV

#define MAX20362_VCAP_STEP_250MV   1

◆ MAX20362_VCAP_STEP_500MV

#define MAX20362_VCAP_STEP_500MV   0

Capacitor Voltage Step Sizes

◆ MAX20362_VCAP_STEP_UV

#define MAX20362_VCAP_STEP_UV   250000

Cap step: 250mV

◆ MAX20362_VOLTAGE_MASK_7BIT

#define MAX20362_VOLTAGE_MASK_7BIT   0x7F

Bit Masks and Field Values 7-bit voltage register mask

◆ MAX20362_VOLTAGE_SETTLE_MS

#define MAX20362_VOLTAGE_SETTLE_MS   10

General voltage settle delay: 10ms

Enumeration Type Documentation

◆ max20362_bbat_vdrop

Battery voltage droop configuration.

Enumerator
MAX20362_BBAT_VDROP_55MV 

55mV droop

MAX20362_BBAT_VDROP_100MV 

100mV droop

MAX20362_BBAT_VDROP_150MV 

150mV droop

MAX20362_BBAT_VDROP_200MV 

200mV droop

◆ max20362_dvs_source

Dynamic voltage scaling source selection.

Enumerator
MAX20362_DVS_SOURCE_I2C 

Control via I2C register

MAX20362_DVS_SOURCE_PSPI 

Control via Pseudo-SPI pins

MAX20362_DVS_SOURCE_ROUND_ROBIN 

Cycle through RR table

◆ max20362_ldo_source

LDO input source selection.

This is an abstraction. The hardware selection is controlled by the LDOBBstSupp bit in the LDOCfg register (0x40), which toggles between the battery input and the buck-boost output. The driver must manage this selection logic.

Enumerator
MAX20362_LDO_SOURCE_BBOUT 

Buck-boost output

MAX20362_LDO_SOURCE_CAP 

Storage capacitor

MAX20362_LDO_SOURCE_BATT 

Battery input

Function Documentation

◆ max20362_clear_all_interrupts()

int max20362_clear_all_interrupts ( struct max20362_dev * dev)

Clear all interrupt flags.

Parameters
dev- Device structure
Returns
0 on success, negative error code otherwise

◆ max20362_config_buck_boost_discharge()

int max20362_config_buck_boost_discharge ( struct max20362_dev * dev,
bool active_discharge,
bool passive_discharge )

Configure buck-boost discharge modes.

Parameters
dev- Device structure
active_discharge- Active discharge enable
passive_discharge- Passive discharge enable
Returns
0 on success, negative error code otherwise

◆ max20362_config_buck_boost_mode()

int max20362_config_buck_boost_mode ( struct max20362_dev * dev,
bool half_bw,
bool low_emi,
bool fast_fpwm )

Configure buck-boost operating parameters.

Parameters
dev- Device structure
half_bw- Half bandwidth mode enable
low_emi- Low EMI mode enable
fast_fpwm- Fast FPWM mode enable
Returns
0 on success, negative error code otherwise

◆ max20362_config_ldo_mode()

int max20362_config_ldo_mode ( struct max20362_dev * dev,
bool low_iq_mode,
bool passive_discharge,
bool active_discharge )

Configure LDO operating modes.

Parameters
dev- Device structure
low_iq_mode- Low quiescent current mode
passive_discharge- Passive discharge enable
active_discharge- Active discharge enable
Returns
0 on success, negative error code otherwise

◆ max20362_enable_buck_boost()

int max20362_enable_buck_boost ( struct max20362_dev * dev,
bool enable )

Enable/disable buck-boost converter.

Parameters
dev- Device structure
enable- Enable flag
Returns
0 on success, negative error code otherwise

◆ max20362_enable_ldo()

int max20362_enable_ldo ( struct max20362_dev * dev,
bool enable )

Enable/disable LDO regulator.

Parameters
dev- Device structure
enable- Enable flag
Returns
0 on success, negative error code otherwise

◆ max20362_get_ingen_int_status()

int max20362_get_ingen_int_status ( struct max20362_dev * dev,
uint8_t * status )

Read Ingenuity interrupt status.

Parameters
dev- Device structure
status- Status byte pointer
Returns
0 on success, negative error code otherwise

◆ max20362_get_int_status()

int max20362_get_int_status ( struct max20362_dev * dev,
uint8_t * status )

Read main interrupt status.

Parameters
dev- Device structure
status- Status byte pointer
Returns
0 on success, negative error code otherwise

◆ max20362_get_ldo_int_status()

int max20362_get_ldo_int_status ( struct max20362_dev * dev,
uint8_t * status )

Read LDO interrupt status.

Parameters
dev- Device structure
status- Status byte pointer
Returns
0 on success, negative error code otherwise

◆ max20362_get_status()

int max20362_get_status ( struct max20362_dev * dev,
uint8_t * status )

Read fault status flags.

Parameters
dev- Device structure
status- Pointer to store status register value
Returns
0 on success, negative error code otherwise

◆ max20362_init()

int max20362_init ( struct max20362_dev ** device,
const struct max20362_init_param * init_param )

Initialize MAX20362 device.

Parameters
device- Pointer to device structure pointer
init_param- Initialization parameters
Returns
0 on success, negative error code otherwise

◆ max20362_lock_registers()

int max20362_lock_registers ( struct max20362_dev * dev)

Lock write protection for protected registers.

Parameters
dev- Device structure
Returns
0 on success, negative error code otherwise

◆ max20362_reg_read()

int max20362_reg_read ( struct max20362_dev * dev,
uint8_t reg,
uint8_t * val )

Read register.

Parameters
dev- Device structure
reg- Register address
val- Pointer to store read value
Returns
0 on success, negative error code otherwise

◆ max20362_reg_update_bits()

int max20362_reg_update_bits ( struct max20362_dev * dev,
uint8_t reg,
uint8_t mask,
uint8_t val )

Modify register bits.

Parameters
dev- Device structure
reg- Register address
mask- Bit mask
val- New value for masked bits
Returns
0 on success, negative error code otherwise

◆ max20362_reg_write()

int max20362_reg_write ( struct max20362_dev * dev,
uint8_t reg,
uint8_t val )

Write register.

Parameters
dev- Device structure
reg- Register address
val- Value to write
Returns
0 on success, negative error code otherwise

◆ max20362_remove()

int max20362_remove ( struct max20362_dev * dev)

Free resources and remove device.

Parameters
dev- Device structure pointer
Returns
0 on success, negative error code otherwise

◆ max20362_set_bbat_vdrop()

int max20362_set_bbat_vdrop ( struct max20362_dev * dev,
enum max20362_bbat_vdrop vdrop )

Set battery voltage droop.

Parameters
dev- Device structure
vdrop- Voltage droop enum value
Returns
0 on success, negative error code otherwise

◆ max20362_set_buck_boost_voltage()

int max20362_set_buck_boost_voltage ( struct max20362_dev * dev,
uint32_t microvolts )

Set buck-boost output voltage.

Parameters
dev- Device structure
microvolts- Voltage in microvolts (1.5V-5.5V, 50mV steps)
Returns
0 on success, negative error code otherwise

◆ max20362_set_cap_voltage()

int max20362_set_cap_voltage ( struct max20362_dev * dev,
uint32_t microvolts,
uint8_t step_size )

Set energy storage capacitor voltage.

Parameters
dev- Device structure
microvolts- Voltage in microvolts (1.6V-9.5V)
step_size- Step size (0=500mV, 1=250mV, 2=125mV)
Returns
0 on success, negative error code otherwise

◆ max20362_set_dvs_mode()

int max20362_set_dvs_mode ( struct max20362_dev * dev,
enum max20362_dvs_source source )

Set DVS operating mode.

Parameters
dev- Device structure
source- DVS source enum
Returns
0 on success, negative error code otherwise

◆ max20362_set_dvs_rr_table()

int max20362_set_dvs_rr_table ( struct max20362_dev * dev,
const uint32_t * voltages_uv,
uint8_t count )

Configure DVS round-robin voltage table.

Parameters
dev- Device structure
voltages_uv- Array of voltages in microvolts
count- Number of voltages (1-20)
Returns
0 on success, negative error code otherwise

◆ max20362_set_ingen_int_mask()

int max20362_set_ingen_int_mask ( struct max20362_dev * dev,
uint8_t mask )

Set Ingenuity interrupt mask.

Parameters
dev- Device structure
mask- Interrupt mask (1=mask/disable, 0=unmask/enable)
Returns
0 on success, negative error code otherwise

◆ max20362_set_input_current_limit()

int max20362_set_input_current_limit ( struct max20362_dev * dev,
uint8_t ma )

Set input current limit.

Parameters
dev- Device structure
ma- Current limit in milliamps (5-50mA)
Returns
0 on success, negative error code otherwise

◆ max20362_set_int_mask()

int max20362_set_int_mask ( struct max20362_dev * dev,
uint8_t mask )

Set main interrupt mask.

Parameters
dev- Device structure
mask- Interrupt mask (1=mask/disable, 0=unmask/enable)
Returns
0 on success, negative error code otherwise

◆ max20362_set_ldo_input_source()

int max20362_set_ldo_input_source ( struct max20362_dev * dev,
enum max20362_ldo_source source )

Set LDO input source.

Parameters
dev- Device structure
source- LDO input source enum
Returns
0 on success, negative error code otherwise

◆ max20362_set_ldo_int_mask()

int max20362_set_ldo_int_mask ( struct max20362_dev * dev,
uint8_t mask )

Set LDO interrupt mask.

Parameters
dev- Device structure
mask- Interrupt mask (1=mask/disable, 0=unmask/enable)
Returns
0 on success, negative error code otherwise

◆ max20362_set_ldo_voltage()

int max20362_set_ldo_voltage ( struct max20362_dev * dev,
uint32_t microvolts )

Set LDO output voltage.

Parameters
dev- Device structure
microvolts- Voltage in microvolts (0.9V-4.0V, 100mV steps)
Returns
0 on success, negative error code otherwise

◆ max20362_set_rr_clk_polarity()

int max20362_set_rr_clk_polarity ( struct max20362_dev * dev,
bool rising_edge )

Set round-robin clock polarity.

Parameters
dev- Device structure
rising_edge- true: rising edge active, false: falling edge active
Returns
0 on success, negative error code otherwise

◆ max20362_set_rr_timeout_reset()

int max20362_set_rr_timeout_reset ( struct max20362_dev * dev,
bool enable )

Set round-robin timeout reset behavior.

Parameters
dev- Device structure
enable- true: timeout resets RR pointer, false: timeout does not reset
Returns
0 on success, negative error code otherwise

◆ max20362_set_rr_wrap()

int max20362_set_rr_wrap ( struct max20362_dev * dev,
bool enable )

Set round-robin wrap mode.

Parameters
dev- Device structure
enable- true: wrap back to first entry, false: stay on last entry
Returns
0 on success, negative error code otherwise

◆ max20362_unlock_registers()

int max20362_unlock_registers ( struct max20362_dev * dev)

Unlock write protection for protected registers.

Parameters
dev- Device structure
Returns
0 on success, negative error code otherwise