42#include "../../PmicPowerBase.hpp"
43#include "../../../platform/SensorCommWrapper.hpp"
45template<
typename Regs>
68 if (mv < 2600) mv = 2600;
69 if (mv > 3300) mv = 3300;
70 uint8_t code = (mv - 2600) / 100;
71 return _core.
updateBits(Regs::pmu::VOFF_SET, 0x07, code) >= 0;
80 int val = _core.
readReg(Regs::pmu::VOFF_SET);
81 if (val < 0)
return 0;
82 return 2600 + (val & 0x07) * 100;
119 uint8_t code = Regs::pmu::encodeInputCurrentLimit(mA);
120 return _core.
updateBits(Regs::pmu::IPS_SET, Regs::pmu::INPUT_CURR_MASK, code) >= 0;
129 int val = _core.
readReg(Regs::pmu::IPS_SET);
130 if (val < 0)
return 0;
131 return Regs::pmu::decodeInputCurrentLimit(
static_cast<uint8_t
>(val));
148 return _core.
setRegBit(Regs::pmu::OFF_CTL, 7);
150 return _core.
clrRegBit(Regs::pmu::OFF_CTL, 7);
159 return _core.
getRegBit(Regs::pmu::OFF_CTL, 7);
bool setMinimumSystemVoltage(uint32_t mv) override
Set minimum system voltage.
bool isShipModeEnabled() const override
Check if ship mode is enabled.
bool setInputCurrentLimit(uint32_t mA) override
Set input current limit.
uint32_t getInputVoltageLimit() const override
Get input voltage limit (not supported by AXP1xx).
AXP1xxPower(SensorCommWrapper &core)
Construct power management interface.
bool setInputVoltageLimit(uint32_t mv) override
Set input voltage limit (not supported by AXP1xx).
bool enableShipMode(bool enable) override
Enable or disable ship mode.
uint32_t getMinimumSystemVoltage() const override
Get minimum system voltage.
uint32_t getInputCurrentLimit() const override
Get input current limit.
bool clrRegBit(uint8_t reg, uint8_t bit)
bool getRegBit(uint8_t reg, uint8_t bit)
int readReg(uint8_t reg) const
int updateBits(uint8_t reg, uint8_t mask, uint8_t value_shifted)
bool setRegBit(uint8_t reg, uint8_t bit)