PebbleOS
Loading...
Searching...
No Matches
nPM1300

Nordic nPM1300 PMIC core. More...

Data Structures

struct  pbl_npm1300
 nPM1300 core. More...
 

Macros

#define PBL_NPM1300_DEFINE(sym, _bus, _addr)
 Define the core.
 

Functions

static const struct pbl_npm1300 * pbl_npm1300_from_cell (const struct pbl_device *cell)
 Get the core a cell belongs to.
 
void pbl_npm1300_lock (const struct pbl_npm1300 *pmic)
 Lock the registers, around a read-modify-write sequence.
 
void pbl_npm1300_unlock (const struct pbl_npm1300 *pmic)
 Unlock the registers.
 
int pbl_npm1300_read (const struct pbl_npm1300 *pmic, uint16_t reg, uint8_t *val)
 Read a register.
 
int pbl_npm1300_write (const struct pbl_npm1300 *pmic, uint16_t reg, uint8_t val)
 Write a register.
 

Detailed Description

Nordic nPM1300 PMIC core.

The core is a struct pbl_npm1300 device on its I2C bus. It owns the register access, under a lock so its cells cannot interleave read-modify-write sequences, and brings its cells up from its init. Each cell is a child device in its own subsystem: the charger (nPM1300 charger), the GPIO port (nPM1300 GPIO) and one regulator per rail (nPM1300 regulators).

PBL_NPM1300_DEFINE(s_npm1300, &s_i2c1.bus, 0x6B);
PBL_NPM1300_CHARGER_DEFINE(s_npm1300_charger, &s_npm1300, &NPM1300_CONFIG,
{.peripheral = hwp_gpio1, .gpio_pin = 26});
PBL_NPM1300_GPIO_DEFINE(s_npm1300_gpio, &s_npm1300);
PBL_NPM1300_REGULATOR_DEFINE(s_ldo2, "ldo2", &s_npm1300, PBL_NPM1300_LDSW2, 3300, true, false);
#define PBL_NPM1300_GPIO_DEFINE(sym, _pmic)
Define the GPIO port.
Definition npm1300.h:50
#define PBL_NPM1300_DEFINE(sym, _bus, _addr)
Define the core.
Definition npm1300.h:61
const Npm1300Config NPM1300_CONFIG
The board's charger configuration.
#define PBL_NPM1300_CHARGER_DEFINE(sym, _pmic, _cfg, _irq)
Define the charger.
Definition npm1300.h:90
#define PBL_NPM1300_REGULATOR_DEFINE(sym, _name, _pmic, _rail, _voltage_mv, _ldo, _always_on)
Define a PMIC rail.
Definition npm1300.h:57
@ PBL_NPM1300_LDSW2
Load switch / LDO 2.
Definition npm1300.h:27

Data Structure Documentation

◆ pbl_npm1300

struct pbl_npm1300

nPM1300 core.

Data Fields
struct pbl_device dev Device, child of the I2C bus.
struct pbl_i2c_dev i2c I2C device.
struct pbl_npm1300_state * state Runtime state.

Macro Definition Documentation

◆ PBL_NPM1300_DEFINE

#define PBL_NPM1300_DEFINE (   sym,
  _bus,
  _addr 
)
Value:
static struct pbl_npm1300_state sym##_npm1300_state; \
const struct pbl_npm1300 sym = { \
.dev = PBL_DEVICE_INIT(sym, "npm1300", pbl_npm1300_init, &(_bus)->dev, nullptr), \
.i2c = PBL_I2C_DEV(_bus, _addr), \
.state = &sym##_npm1300_state, \
}; \
PBL_DEVICE_REGISTER(sym, &sym.dev)
#define PBL_DEVICE_STATE_DEFINE(sym)
Define the runtime state of device instance sym.
Definition device.h:109
#define PBL_DEVICE_INIT(sym, _name, _init, _parent, _deps)
Initializer for the struct pbl_device of device instance sym.
Definition device.h:142
#define PBL_I2C_DEV(_bus, _addr)
Initializer for a struct pbl_i2c_dev.
Definition i2c.h:135
struct pbl_device dev
Device, child of the I2C bus.
Definition npm1300.h:43
nPM1300 core.
Definition npm1300.h:41
struct pbl_device_state * state
Runtime state.
Definition device.h:98

Define the core.

Parameters
symSymbol of the core.
_busI2C bus.
_addr7-bit I2C address.

Function Documentation

◆ pbl_npm1300_from_cell()

static const struct pbl_npm1300 * pbl_npm1300_from_cell ( const struct pbl_device *  cell)
inlinestatic

Get the core a cell belongs to.

Parameters
cellCell device, a child of the core.
Returns
Core.

References container_of, pbl_npm1300::dev, and pbl_device::parent.

◆ pbl_npm1300_lock()

void pbl_npm1300_lock ( const struct pbl_npm1300 *  pmic)

Lock the registers, around a read-modify-write sequence.

Single accesses lock on their own.

Parameters
pmicCore.

◆ pbl_npm1300_read()

int pbl_npm1300_read ( const struct pbl_npm1300 *  pmic,
uint16_t  reg,
uint8_t *  val 
)

Read a register.

Parameters
pmicCore.
regRegister address.
[out]valRegister value.
Returns
0 on success, or a negative errno.

◆ pbl_npm1300_unlock()

void pbl_npm1300_unlock ( const struct pbl_npm1300 *  pmic)

Unlock the registers.

Parameters
pmicCore.

◆ pbl_npm1300_write()

int pbl_npm1300_write ( const struct pbl_npm1300 *  pmic,
uint16_t  reg,
uint8_t  val 
)

Write a register.

Parameters
pmicCore.
regRegister address.
valValue.
Returns
0 on success, or a negative errno.