summaryrefslogtreecommitdiff
path: root/include/linux/battery/charger/sm5414_charger.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/battery/charger/sm5414_charger.h')
-rw-r--r--include/linux/battery/charger/sm5414_charger.h299
1 files changed, 299 insertions, 0 deletions
diff --git a/include/linux/battery/charger/sm5414_charger.h b/include/linux/battery/charger/sm5414_charger.h
new file mode 100644
index 00000000..1bee317b
--- /dev/null
+++ b/include/linux/battery/charger/sm5414_charger.h
@@ -0,0 +1,299 @@
+/*
+ * SM5414_charger.h
+ * SiliconMitus SM5414 Charger Header
+ *
+ * Copyright (C) 2013 SiliconMitus
+ *
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __SM5414_CHARGER_H
+#define __SM5414_CHARGER_H __FILE__
+
+/* Slave address should be shifted to the right 1bit.
+ * R/W bit should NOT be included.
+ */
+#define SEC_CHARGER_I2C_SLAVEADDR (0x92>>1)
+
+#define CALL_EVENT_SIOP 50
+#define HIGH_TEMP_SIOP 30
+#define CALL_EVENT_CURRENT 450
+#define HIGH_TEMP_CURRENT 350
+
+/* SM5414 Registers. */
+
+#define SM5414_INT1 0x00
+#define SM5414_INT2 0x01
+#define SM5414_INT3 0x02
+#define SM5414_INTMASK1 0x03
+#define SM5414_INTMASK2 0x04
+#define SM5414_INTMASK3 0x05
+#define SM5414_STATUS 0x06
+#define SM5414_CTRL 0x07
+#define SM5414_VBUSCTRL 0x08
+#define SM5414_CHGCTRL1 0x09
+#define SM5414_CHGCTRL2 0x0A
+#define SM5414_CHGCTRL3 0x0B
+#define SM5414_CHGCTRL4 0x0C
+#define SM5414_CHGCTRL5 0x0D
+
+#define SM5414_INT1_THEMREG 0x01
+#define SM5414_INT1_THEMSHDN 0x02
+#define SM5414_INT1_BATOVP 0x04
+#define SM5414_INT1_VBUSLIMIT 0x08
+#define SM5414_INT1_AICL 0x10
+#define SM5414_INT1_VBUSINOK 0x20
+#define SM5414_INT1_VBUSUVLO 0x40
+#define SM5414_INT1_VBUSOVP 0x80
+
+#define SM5414_INT2_TOPOFF 0x01
+#define SM5414_INT2_DONE 0x02
+#define SM5414_INT2_CHGRSTF 0x04
+#define SM5414_INT2_PRETMROFF 0x08
+#define SM5414_INT2_OTGFAIL 0x10
+#define SM5414_INT2_WEAKBAT 0x20
+#define SM5414_INT2_NOBAT 0x40
+#define SM5414_INT2_FASTTMROFF 0x80
+
+#define SM5414_INT3_DISLIMIT 0x01
+#define SM5414_INT3_VSYSOLP 0x02
+#define SM5414_INT3_VSYSNG 0x04
+#define SM5414_INT3_VSYSOK 0x08
+#define SM5414_CHGCTRL1_AUTOSTOP (1 << 3)
+
+/* FAST Charge current */
+#define FASTCHG_100mA 0
+#define FASTCHG_150mA 1
+#define FASTCHG_200mA 2
+#define FASTCHG_250mA 3
+#define FASTCHG_300mA 4
+#define FASTCHG_350mA 5
+#define FASTCHG_400mA 6
+#define FASTCHG_450mA 7
+#define FASTCHG_500mA 8
+#define FASTCHG_550mA 9
+#define FASTCHG_600mA 10
+#define FASTCHG_650mA 11
+#define FASTCHG_700mA 12
+#define FASTCHG_750mA 13
+#define FASTCHG_800mA 14
+#define FASTCHG_850mA 15
+#define FASTCHG_900mA 16
+#define FASTCHG_950mA 17
+#define FASTCHG_1000mA 18
+#define FASTCHG_1050mA 19
+#define FASTCHG_1100mA 20
+#define FASTCHG_1150mA 21
+#define FASTCHG_1200mA 22
+#define FASTCHG_1250mA 23
+#define FASTCHG_1300mA 24
+#define FASTCHG_1350mA 25
+#define FASTCHG_1400mA 26
+#define FASTCHG_1450mA 27
+#define FASTCHG_1500mA 28
+#define FASTCHG_1550mA 29
+#define FASTCHG_1600mA 30
+#define FASTCHG_1650mA 31
+#define FASTCHG_1700mA 32
+#define FASTCHG_1750mA 33
+#define FASTCHG_1800mA 34
+#define FASTCHG_1850mA 35
+#define FASTCHG_1900mA 36
+#define FASTCHG_1950mA 37
+#define FASTCHG_2000mA 38
+#define FASTCHG_2050mA 39
+#define FASTCHG_2100mA 40
+#define FASTCHG_2150mA 41
+#define FASTCHG_2200mA 42
+#define FASTCHG_2250mA 43
+#define FASTCHG_2300mA 44
+#define FASTCHG_2350mA 45
+#define FASTCHG_2400mA 46
+#define FASTCHG_2450mA 47
+#define FASTCHG_2500mA 48
+
+/* Input current Limit */
+#define VBUSLIMIT_100mA 0
+#define VBUSLIMIT_150mA 1
+#define VBUSLIMIT_200mA 2
+#define VBUSLIMIT_250mA 3
+#define VBUSLIMIT_300mA 4
+#define VBUSLIMIT_350mA 5
+#define VBUSLIMIT_400mA 6
+#define VBUSLIMIT_450mA 7
+#define VBUSLIMIT_500mA 8
+#define VBUSLIMIT_550mA 9
+#define VBUSLIMIT_600mA 10
+#define VBUSLIMIT_650mA 11
+#define VBUSLIMIT_700mA 12
+#define VBUSLIMIT_750mA 13
+#define VBUSLIMIT_800mA 14
+#define VBUSLIMIT_850mA 15
+#define VBUSLIMIT_900mA 16
+#define VBUSLIMIT_950mA 17
+#define VBUSLIMIT_1000mA 18
+#define VBUSLIMIT_1050mA 19
+#define VBUSLIMIT_1100mA 20
+#define VBUSLIMIT_1150mA 21
+#define VBUSLIMIT_1200mA 22
+#define VBUSLIMIT_1250mA 23
+#define VBUSLIMIT_1300mA 24
+#define VBUSLIMIT_1350mA 25
+#define VBUSLIMIT_1400mA 26
+#define VBUSLIMIT_1450mA 27
+#define VBUSLIMIT_1500mA 28
+#define VBUSLIMIT_1550mA 29
+#define VBUSLIMIT_1600mA 30
+#define VBUSLIMIT_1650mA 31
+#define VBUSLIMIT_1700mA 32
+#define VBUSLIMIT_1750mA 33
+#define VBUSLIMIT_1800mA 34
+#define VBUSLIMIT_1850mA 35
+#define VBUSLIMIT_1900mA 36
+#define VBUSLIMIT_1950mA 37
+#define VBUSLIMIT_2000mA 38
+#define VBUSLIMIT_2050mA 39
+#define VBUSLIMIT_2100mA 40
+#define VBUSLIMIT_2150mA 41
+#define VBUSLIMIT_2200mA 42
+#define VBUSLIMIT_2250mA 43
+#define VBUSLIMIT_2300mA 44
+#define VBUSLIMIT_2350mA 45
+#define VBUSLIMIT_2400mA 46
+#define VBUSLIMIT_2450mA 47
+#define VBUSLIMIT_2500mA 48
+
+/* AICL TH */
+#define AICL_THRESHOLD_4_3_V 0
+#define AICL_THRESHOLD_4_4_V 1
+#define AICL_THRESHOLD_4_5_V 2
+#define AICL_THRESHOLD_4_6_V 3
+#define AICL_THRESHOLD_4_7_V 4
+#define AICL_THRESHOLD_4_8_V 5
+#define AICL_THRESHOLD_4_9_V 6
+#define AICL_THRESHOLD_MASK 0x0F
+
+/* AUTOSTOP */
+#define AUTOSTOP_EN (1<<3)
+
+/* AICLEN */
+#define AICL_EN (1<<2)
+
+/* PRECHG */
+#define PRECHG_150mA 0
+#define PRECHG_250mA 1
+#define PRECHG_350mA 2
+#define PRECHG_450mA 3
+#define PRECHG_MASK 0xFC
+
+/* Battery Regulation Voltage */
+#define BATREG_4_1_0_0_V 0
+#define BATREG_4_1_2_5_V 1
+#define BATREG_4_1_5_0_V 2
+#define BATREG_4_1_7_5_V 3
+#define BATREG_4_2_0_0_V 4
+#define BATREG_4_2_2_5_V 5
+#define BATREG_4_2_5_0_V 6
+#define BATREG_4_2_7_5_V 7
+#define BATREG_4_3_0_0_V 8
+#define BATREG_4_3_2_5_V 9
+#define BATREG_4_3_5_0_V 10
+#define BATREG_4_3_7_5_V 11
+#define BATREG_4_4_0_0_V 12
+#define BATREG_4_4_2_5_V 13
+#define BATREG_4_4_5_0_V 14
+#define BATREG_4_4_7_5_V 15
+#define BATREG_MASK 0x0F
+
+/* Weak Battery Voltage */
+#define WEAKBAT_3_0_0_V 0
+#define WEAKBAT_3_0_5_V 1
+#define WEAKBAT_3_1_0_V 2
+#define WEAKBAT_3_1_5_V 3
+#define WEAKBAT_3_2_0_V 4
+#define WEAKBAT_3_2_5_V 5
+#define WEAKBAT_3_3_0_V 6
+#define WEAKBAT_3_3_5_V 7
+#define WEAKBAT_3_4_0_V 8
+#define WEAKBAT_3_4_5_V 9
+#define WEAKBAT_3_5_0_V 10
+#define WEAKBAT_3_5_5_V 11
+#define WEAKBAT_3_6_0_V 12
+#define WEAKBAT_3_6_5_V 13
+#define WEAKBAT_3_7_0_V 14
+#define WEAKBAT_3_7_5_V 15
+#define WEAKBAT_MASK 0xF0
+
+/* top-off charge current */
+#define TOPOFF_100mA 0
+#define TOPOFF_150mA 1
+#define TOPOFF_200mA 2
+#define TOPOFF_250mA 3
+#define TOPOFF_300mA 4
+#define TOPOFF_350mA 5
+#define TOPOFF_400mA 6
+#define TOPOFF_450mA 7
+#define TOPOFF_500mA 8
+#define TOPOFF_550mA 9
+#define TOPOFF_600mA 10
+#define TOPOFF_650mA 11
+#define TOPOFF_MASK 0x07
+
+/* discharge current */
+#define DISCHARGELIMIT_DISABLED 0
+#define DISCHARGELIMIT_2_0_A 1
+#define DISCHARGELIMIT_2_5_A 2
+#define DISCHARGELIMIT_3_0_A 3
+#define DISCHARGELIMIT_3_5_A 4
+#define DISCHARGELIMIT_4_0_A 5
+#define DISCHARGELIMIT_4_5_A 6
+#define DISCHARGELIMIT_5_0_A 7
+#define DISCHARGELIMIT_MASK 0xF8
+
+/* OTG voltage */
+#define VOTG_5_0_V 0
+#define VOTG_5_1_V 1
+#define VOTG_5_2_V 2
+#define VOTG_MASK 0x0F
+
+/* Fast timer */
+#define FASTTIMER_3_5_HOUR 0
+#define FASTTIMER_4_5_HOUR 1
+#define FASTTIMER_5_5_HOUR 2
+#define FASTTIMER_DISABLED 3
+#define FASTTIMER_MASK 0xF3
+
+/* Topoff timer */
+#define TOPOFFTIMER_10MIN 0
+#define TOPOFFTIMER_20MIN 1
+#define TOPOFFTIMER_30MIN 2
+#define TOPOFFTIMER_45MIN 3
+#define TOPOFFTIMER_MASK 0xFC
+
+/* Enable charger */
+#define CHARGE_EN 0x02
+
+void SM5414_i2c_int_read(struct i2c_client *client);
+
+#define BATREG_MASK 0x0F
+
+struct sec_chg_info {
+ bool dummy;
+ u8 int_1_s;
+ u8 int_2_s;
+ u8 int_3_s;
+ u8 int_1_h;
+ u8 int_2_h;
+ u8 int_3_h;
+};
+
+#endif /* __SM5414_CHARGER_H */