summaryrefslogtreecommitdiff
path: root/board/cyan/bq24773.h
diff options
context:
space:
mode:
Diffstat (limited to 'board/cyan/bq24773.h')
-rw-r--r--board/cyan/bq24773.h122
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 */