@@ -295,38 +295,61 @@ void AXP2101::coreS3_AW9523_init() {
295
295
write1Byte (0x58 , 0x02 , 0b00000100 );
296
296
}
297
297
298
- void AXP2101::setBoostEn (bool state) {
299
- uint8_t value = read8Bit (AW9523_ADDR, 0x03 );
298
+ void AXP2101::setBusOutEn (bool state) { // BUS OUT EN
299
+ uint8_t value = read8Bit (AW9523_ADDR, 0x02 );
300
300
if (state == true )
301
- value |= 0b10000000 ;
301
+ value |= 0b00000010 ;
302
302
else
303
- value &= ~0b10000000 ;
304
- write1Byte (AW9523_ADDR, 0x03 , value);
303
+ value &= ~0b00000010 ;
304
+ write1Byte (AW9523_ADDR, 0x02 , value);
305
305
}
306
306
307
- void AXP2101::setBusOutEn (bool state) {
307
+ void AXP2101::setUsbOtgEn (bool state) { // USB OTG EN
308
308
uint8_t value = read8Bit (AW9523_ADDR, 0x02 );
309
309
if (state == true )
310
- value |= 0b00000010 ;
310
+ value |= 0b00100000 ;
311
311
else
312
- value &= ~0b00000010 ;
312
+ value &= ~0b00100000 ;
313
313
write1Byte (AW9523_ADDR, 0x02 , value);
314
314
}
315
315
316
+ void AXP2101::setBoostEn (bool state) { // Boost
317
+ uint8_t value = read8Bit (AW9523_ADDR, 0x03 );
318
+ if (state == true )
319
+ value |= 0b10000000 ;
320
+ else
321
+ value &= ~0b10000000 ;
322
+ write1Byte (AW9523_ADDR, 0x03 , value);
323
+ }
324
+
316
325
void AXP2101::setBoostBusOutEn (bool state) {
317
326
setBoostEn (state);
318
327
// delay is required to prevent reverse current flow from VBUS to BUS_OUT
319
328
if (state == false ) delay (250 );
320
329
setBusOutEn (state);
321
330
}
322
331
323
- void AXP2101::setUsbOtgEn (bool state) {
324
- uint8_t value = read8Bit (AW9523_ADDR, 0x02 );
325
- if (state == true )
326
- value |= 0b00100000 ;
327
- else
328
- value &= ~0b00100000 ;
329
- write1Byte (AW9523_ADDR, 0x02 , value);
332
+ void AXP2101::powerModeSet (power_mode mode) {
333
+ switch (mode) {
334
+ case POWER_MODE_USB_IN_BUS_IN:
335
+ setUsbOtgEn (false ); // USB_OTG_EN=0
336
+ setBoostBusOutEn (false ); // BUS_OUT_EN,Boost=0
337
+ break ;
338
+ case POWER_MODE_USB_IN_BUS_OUT:
339
+ setUsbOtgEn (false ); // USB_OTG_EN=0
340
+ setBoostBusOutEn (true ); // BUS_OUT_EN,Boost=1
341
+ break ;
342
+ case POWER_MODE_USB_OUT_BUS_IN:
343
+ setUsbOtgEn (true ); // USB_OTG_EN=1
344
+ setBoostBusOutEn (false ); // BUS_OUT_EN,Boost=0
345
+ break ;
346
+ case POWER_MODE_USB_OUT_BUS_OUT:
347
+ setUsbOtgEn (true ); // USB_OTG_EN=1
348
+ setBoostBusOutEn (true ); // BUS_OUT_EN,Boost=1
349
+ break ;
350
+ default :
351
+ break ;
352
+ }
330
353
}
331
354
332
355
/* *
0 commit comments