diff options
Diffstat (limited to 'board/cyan/bq24773.h')
-rw-r--r-- | board/cyan/bq24773.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/board/cyan/bq24773.h b/board/cyan/bq24773.h new file mode 100644 index 0000000000..d93d1a0dbc --- /dev/null +++ b/board/cyan/bq24773.h @@ -0,0 +1,122 @@ +/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * TI bq24773 battery charger driver. + */ + +#ifndef __CROS_EC_BQ24773_H +#define __CROS_EC_BQ24773_H + +/* for i2c_read and i2c_write functions. */ +#include "i2c.h" + +/* I2C address */ +#define BQ24770_ADDR (0x12) +#define BQ24773_ADDR (0x6a << 1) + +/* Chip specific commands */ +#define BQ24770_CHARGE_OPTION0 0x12 +#define BQ24770_CHARGE_OPTION1 0x3B +#define BQ24770_CHARGE_OPTION2 0x38 +#define BQ24770_PROCHOT_OPTION0 0x3C +#define BQ24770_PROCHOT_OPTION1 0x3D +#define BQ24770_CHARGE_CURRENT 0x14 +#define BQ24770_MAX_CHARGE_VOLTAGE 0x15 +#define BQ24770_MIN_SYSTEM_VOLTAGE 0x3E +#define BQ24770_INPUT_CURRENT 0x3F +#define BQ24770_MANUFACTURE_ID 0xFE +#define BQ24770_DEVICE_ADDRESS 0xFF + +#define BQ24773_CHARGE_OPTION0 0x00 +#define BQ24773_CHARGE_OPTION1 0x02 +#define BQ24773_PROCHOT_OPTION0 0x04 +#define BQ24773_PROCHOT_OPTION1 0x06 +#define BQ24773_PROCHOT_STATUS 0x08 +#define BQ24773_DEVICE_ADDRESS 0x09 +#define BQ24773_CHARGE_CURRENT 0x0A +#define BQ24773_MAX_CHARGE_VOLTAGE 0x0C +#define BQ24773_MIN_SYSTEM_VOLTAGE 0x0E +#define BQ24773_INPUT_CURRENT 0x0F +#define BQ24773_CHARGE_OPTION2 0x10 + +/* Option bits */ +#define OPTION0_CHARGE_INHIBIT (1 << 0) +#define OPTION0_LEARN_ENABLE (1 << 5) + +#define OPTION2_EN_EXTILIM (1 << 7) + +/* Prochot Option bits */ +#define PROCHOT_OPTION1_SELECTOR_MASK 0x7f /* [6:0] PROCHOT SELECTOR */ + +/* ChargeCurrent Register - 0x14 (mA) */ +#define CHARGE_I_OFF 0 +#define CHARGE_I_MIN 128 +#define CHARGE_I_MAX 8128 +#define CHARGE_I_STEP 64 + +/* MaxChargeVoltage Register - 0x15 (mV) */ +#define CHARGE_V_MIN 1024 +#define CHARGE_V_MAX 19200 +#define CHARGE_V_STEP 16 + +/* InputCurrent Register - 0x3f (mA) */ +#define INPUT_I_MIN 128 +#define INPUT_I_MAX 8128 +#define INPUT_I_STEP 64 + +#ifdef CONFIG_CHARGER_CYAN_BQ24770 + #define CHARGER_NAME "bq24770" + #define I2C_ADDR_CHARGER BQ24770_ADDR + + #define REG_CHARGE_OPTION0 BQ24770_CHARGE_OPTION0 + #define REG_CHARGE_OPTION1 BQ24770_CHARGE_OPTION1 + #define REG_CHARGE_OPTION2 BQ24770_CHARGE_OPTION2 + #define REG_PROCHOT_OPTION0 BQ24770_PROCHOT_OPTION0 + #define REG_PROCHOT_OPTION1 BQ24770_PROCHOT_OPTION1 + #define REG_CHARGE_CURRENT BQ24770_CHARGE_CURRENT + #define REG_MAX_CHARGE_VOLTAGE BQ24770_MAX_CHARGE_VOLTAGE + #define REG_MIN_SYSTEM_VOLTAGE BQ24770_MIN_SYSTEM_VOLTAGE + #define REG_INPUT_CURRENT BQ24770_INPUT_CURRENT + #define REG_MANUFACTURE_ID BQ24770_MANUFACTURE_ID + #define REG_DEVICE_ADDRESS BQ24770_DEVICE_ADDRESS + +#elif defined(CONFIG_CHARGER_BQ24773) + #define CHARGER_NAME "bq24773" + #define I2C_ADDR_CHARGER BQ24773_ADDR + + #define REG_CHARGE_OPTION0 BQ24773_CHARGE_OPTION0 + #define REG_CHARGE_OPTION1 BQ24773_CHARGE_OPTION1 + #define REG_CHARGE_OPTION2 BQ24773_CHARGE_OPTION2 + #define REG_PROCHOT_OPTION0 BQ24773_PROCHOT_OPTION0 + #define REG_PROCHOT_OPTION1 BQ24773_PROCHOT_OPTION1 + #define REG_CHARGE_CURRENT BQ24773_CHARGE_CURRENT + #define REG_MAX_CHARGE_VOLTAGE BQ24773_MAX_CHARGE_VOLTAGE + #define REG_MIN_SYSTEM_VOLTAGE BQ24773_MIN_SYSTEM_VOLTAGE + #define REG_INPUT_CURRENT BQ24773_INPUT_CURRENT + #define REG_DEVICE_ADDRESS BQ24773_DEVICE_ADDRESS +#endif + +#ifdef CONFIG_CHARGER_BQ24773 +static inline int raw_read8(int offset, int *value) +{ + return i2c_read8(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); +} + +static inline int raw_write8(int offset, int value) +{ + return i2c_write8(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); +} +#endif + +static inline int raw_read16(int offset, int *value) +{ + return i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); +} + +static inline int raw_write16(int offset, int value) +{ + return i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER, offset, value); +} + +#endif /* __CROS_EC_BQ24773_H */ |