diff options
Diffstat (limited to 'fw/fe310/eos/i2c')
-rw-r--r-- | fw/fe310/eos/i2c/bq25895.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/fw/fe310/eos/i2c/bq25895.c b/fw/fe310/eos/i2c/bq25895.c index 85b162b..db4a6ab 100644 --- a/fw/fe310/eos/i2c/bq25895.c +++ b/fw/fe310/eos/i2c/bq25895.c @@ -9,27 +9,31 @@ void eos_bq25895_init(uint8_t wakeup_cause) { int rst = (wakeup_cause == EOS_PWR_WAKE_RST); - int i, ret = EOS_OK; + int i, rv = EOS_OK; uint8_t data = 0; - eos_i2c_start(100000); + rv = eos_i2c_start(100000); + if (rv) { + printf("I2C BUSY\n"); + return; + } if (rst) { - ret = eos_i2c_write8(BQ25895_ADDR, 0x14, 0x80); // reset - if (ret) printf("I2C ERROR 0x14\n"); - ret = eos_i2c_write8(BQ25895_ADDR, 0x14, 0x00); // disable watchdog - if (ret) printf("I2C ERROR 0x14\n"); - ret = eos_i2c_write8(BQ25895_ADDR, 0x07, 0x8d); // disable watchdog - if (ret) printf("I2C ERROR 0x07\n"); - ret = eos_i2c_write8(BQ25895_ADDR, 0x00, 0x28); // 2.1A input current - if (ret) printf("I2C ERROR 0x00\n"); - ret = eos_i2c_write8(BQ25895_ADDR, 0x02, 0x30); // enable ICO, disaable MaxCharge and D+/D- - if (ret) printf("I2C ERROR 0x02\n"); + rv = eos_i2c_write8(BQ25895_ADDR, 0x14, 0x80); // reset + if (rv) printf("I2C ERROR 0x14\n"); + rv = eos_i2c_write8(BQ25895_ADDR, 0x14, 0x00); // disable watchdog + if (rv) printf("I2C ERROR 0x14\n"); + rv = eos_i2c_write8(BQ25895_ADDR, 0x07, 0x8d); // disable watchdog + if (rv) printf("I2C ERROR 0x07\n"); + rv = eos_i2c_write8(BQ25895_ADDR, 0x00, 0x28); // 2.1A input current + if (rv) printf("I2C ERROR 0x00\n"); + rv = eos_i2c_write8(BQ25895_ADDR, 0x02, 0x30); // enable ICO, disaable MaxCharge and D+/D- + if (rv) printf("I2C ERROR 0x02\n"); } printf("BQ25895:\n"); for (i=0; i<0x15; i++) { - ret = eos_i2c_read8(BQ25895_ADDR, i, &data); - if (!ret) printf("REG%02x: %02x\n", i, data); + rv = eos_i2c_read8(BQ25895_ADDR, i, &data); + if (!rv) printf("REG%02x: %02x\n", i, data); } eos_i2c_stop(); } |