Fix issue with External I2C power on M5Stack Core S3. (#246)

It's just 214ce6f191 adapted to Tactility source code.
All credits to original author of fix.

Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
This commit is contained in:
PabloPL 2025-03-13 21:33:31 +01:00 committed by GitHub
parent 19521791c5
commit 21936f7e9e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 0 deletions

View File

@ -57,6 +57,12 @@ bool initGpioExpander() {
// Boost enable // Boost enable
p1_state |= (1U << 7U); p1_state |= (1U << 7U);
/* AW9523 P0 is in push-pull mode */
if (!aw9523->writeCTL(0x10)) {
TT_LOG_E(TAG, "AW9523: Failed to set CTL");
return false;
}
if (!aw9523->writeP0(p0_state)) { if (!aw9523->writeP0(p0_state)) {
TT_LOG_E(TAG, "AW9523: Failed to set P0"); TT_LOG_E(TAG, "AW9523: Failed to set P0");
return false; return false;

View File

@ -2,6 +2,7 @@
#define AW9523_REGISTER_P0 0x02 #define AW9523_REGISTER_P0 0x02
#define AW9523_REGISTER_P1 0x03 #define AW9523_REGISTER_P1 0x03
#define AW9523_REGISTER_CTL 0x11
bool Aw9523::readP0(uint8_t& output) const { bool Aw9523::readP0(uint8_t& output) const {
return readRegister8(AW9523_REGISTER_P0, output); return readRegister8(AW9523_REGISTER_P0, output);
@ -11,6 +12,10 @@ bool Aw9523::readP1(uint8_t& output) const {
return readRegister8(AW9523_REGISTER_P1, output); return readRegister8(AW9523_REGISTER_P1, output);
} }
bool Aw9523::readCTL(uint8_t& output) const {
return readRegister8(AW9523_REGISTER_CTL, output);
}
bool Aw9523::writeP0(uint8_t value) const { bool Aw9523::writeP0(uint8_t value) const {
return writeRegister8(AW9523_REGISTER_P0, value); return writeRegister8(AW9523_REGISTER_P0, value);
} }
@ -19,6 +24,10 @@ bool Aw9523::writeP1(uint8_t value) const {
return writeRegister8(AW9523_REGISTER_P1, value); return writeRegister8(AW9523_REGISTER_P1, value);
} }
bool Aw9523::writeCTL(uint8_t value) const {
return writeRegister8(AW9523_REGISTER_CTL, value);
}
bool Aw9523::bitOnP1(uint8_t bitmask) const { bool Aw9523::bitOnP1(uint8_t bitmask) const {
return bitOn(AW9523_REGISTER_P1, bitmask); return bitOn(AW9523_REGISTER_P1, bitmask);
} }

View File

@ -15,9 +15,11 @@ public:
bool readP0(uint8_t& output) const; bool readP0(uint8_t& output) const;
bool readP1(uint8_t& output) const; bool readP1(uint8_t& output) const;
bool readCTL(uint8_t& output) const;
bool writeP0(uint8_t value) const; bool writeP0(uint8_t value) const;
bool writeP1(uint8_t value) const; bool writeP1(uint8_t value) const;
bool writeCTL(uint8_t value) const;
bool bitOnP1(uint8_t bitmask) const; bool bitOnP1(uint8_t bitmask) const;
}; };