30#include "../../../SensorBuildOpt.h"
31#if !SENSORLIB_EXCLUDE_PMIC_AXP517
39static constexpr uint16_t AXP517_VENDOR_ID_ALT = 0xE0C5;
40static constexpr uint8_t TCPC_POWER_STATUS_UNINIT = 0x40;
46 uint8_t reg = 0, bit = 0;
73 uint8_t reg = 0, bit = 0;
89 if (val < 0)
return false;
90 return (val & 0x03) == 0x03;
98bool AXP517Core::initImpl(uint8_t param)
100 uint8_t buffer[2] = {0};
101 uint16_t vendorId = 0;
112 if (
writeReg(axp517::tcpc::CC_GENERAL_CONTROL, axp517::tcpc::SW_RESET) < 0) {
117 if (
writeReg(axp517::tcpc::CC_GENERAL_CONTROL, 0x00) < 0) {
124 bool tcpc_initial =
false;
125 for (uint8_t
i = 0;
i < 40; ++
i) {
126 powerStatus =
readReg(axp517::tcpc::POWER_STATUS);
127 if (powerStatus < 0) {
131 tcpc_initial = (powerStatus & TCPC_POWER_STATUS_UNINIT) == 0;
139 SENSORLIB_LOG_E(
"TCPC initialization failed, POWER_STATUS: 0x%" PRIx32,
140 static_cast<uint32_t
>(powerStatus));
144 if (
readRegBuff(axp517::tcpc::TCPC_VENDOR_ID, buffer,
sizeof(buffer)) < 0) {
148 vendorId = (buffer[1] << 8) | buffer[0];
149 if (vendorId != axp517::tcpc::VENDOR_ID && vendorId != AXP517_VENDOR_ID_ALT) {
151 static_cast<uint32_t
>(vendorId));
155 SENSORLIB_LOG_D(
"AXP517: Init complete, initializing... Vendor ID: 0x%" PRIx32,
156 static_cast<uint32_t
>(vendorId));
#define SENSORLIB_LOG_E(...)
#define SENSORLIB_LOG_D(...)
bool isModuleEnabled(Module module)
Check if a module is enabled.
bool enableModule(Module module, bool enable)
Enable or disable a module.
Module
Functional module switches exposed by AXP517.
@ CHARGE
REG 19H bit 1 Charger.
@ BC12
Module enable control 0 (REG 0BH).
@ BUCK
REG 19H bit 3 Buck converter.
@ GAUGE
REG 0BH bit 2 Fuel gauge.
@ CHGLED
REG 19H bit 2 Charge LED.
@ TYPEC
REG 0BH bit 3 Type-C.
@ BOOST
REG 19H bit 4 Boost converter.
@ MPPT
REG 22H bit 0 MPPT configure.
@ WATCHDOG
REG 0BH bit 0 Watchdog CLK and REG 19H bit 0 Watchdog Module enable.
@ GAUGE_LOW_POWER
Module enable control 1 (REG 19H).
std::unique_ptr< SensorHal > hal
bool clrRegBit(uint8_t reg, uint8_t bit)
bool getRegBit(uint8_t reg, uint8_t bit)
int readReg(uint8_t reg) const
int writeReg(uint8_t reg, uint8_t val)
int readRegBuff(uint8_t reg, uint8_t *buf, size_t len) const
bool setRegBit(uint8_t reg, uint8_t bit)
static constexpr uint8_t MODULE_EN0
Module enable control0.
static constexpr uint8_t MODULE_EN1
Module enable control1.
static constexpr uint8_t MPPT_CFG
MPPT configure.