| /* 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 OPTION0_SWITCHING_FREQ_MASK (3 << 8) |
| #define OPTION0_SWITCHING_FREQ_600KHZ (0 << 8) |
| #define OPTION0_SWITCHING_FREQ_800KHZ (1 << 8) |
| #define OPTION0_SWITCHING_FREQ_1000KHZ (2 << 8) |
| #define OPTION0_SWITCHING_FREQ_1200KHZ (3 << 8) |
| |
| #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_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 */ |