Blame view

include/twl6030.h 5.39 KB
516799f67   Steve Sakoman   ARMV7: Add suppor...
1
2
3
4
  /*
   * (C) Copyright 2010
   * Texas Instruments, <www.ti.com>
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
5
   * SPDX-License-Identifier:	GPL-2.0+
516799f67   Steve Sakoman   ARMV7: Add suppor...
6
   */
502dac556   Nishanth Menon   twl6030: add head...
7
8
  #ifndef TWL6030_H
  #define TWL6030_H
516799f67   Steve Sakoman   ARMV7: Add suppor...
9
10
11
12
13
14
15
16
17
18
  #include <common.h>
  #include <i2c.h>
  
  /* I2C chip addresses */
  #define TWL6030_CHIP_PM		0x48
  
  #define TWL6030_CHIP_USB	0x49
  #define TWL6030_CHIP_ADC	0x49
  #define TWL6030_CHIP_CHARGER	0x49
  #define TWL6030_CHIP_PWM	0x49
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
19
  /* Slave Address 0x48 */
461484c27   Paul Kocialkowski   input: TWL6030 in...
20
21
22
  #define TWL6030_STS_HW_CONDITIONS	0x21
  
  #define TWL6030_STS_HW_CONDITIONS_PWRON	(1 << 0)
d6a2042db   Paul Kocialkowski   power: twl6030: P...
23
24
25
26
27
  #define TWL6030_PHOENIX_DEV_ON		0x25
  
  #define TWL6030_PHOENIX_APP_DEVOFF	(1 << 0)
  #define TWL6030_PHOENIX_CON_DEVOFF	(1 << 1)
  #define TWL6030_PHOENIX_MOD_DEVOFF	(1 << 2)
d7b6a7549   Paul Kocialkowski   power: twl6030: E...
28
29
30
31
32
33
34
35
36
  #define TWL6030_PH_STS_BOOT		0x29
  
  #define TWL6030_PH_STS_BOOT0		(1 << 0)
  #define TWL6030_PH_STS_BOOT1		(1 << 1)
  #define TWL6030_PH_STS_BOOT2		(1 << 2)
  #define TWL6030_PH_STS_BOOT3		(1 << 3)
  
  #define TWL6030_VAUX1_CFG_STATE		0x86
  #define TWL6030_VAUX1_CFG_VOLTAGE	0x87
c5dbae7c1   Paul Kocialkowski   power: twl6030: S...
37
38
39
  #define TWL6030_VMMC_CFG_STATE		0x9A
  #define TWL6030_VMMC_CFG_VOLTAGE	0x9B
  #define TWL6030_VUSB_CFG_STATE		0xA2
0343f71f0   Paul Kocialkowski   power: twl6030: C...
40
  #define TWL6030_VUSB_CFG_VOLTAGE	0xA3
c5dbae7c1   Paul Kocialkowski   power: twl6030: S...
41
42
43
44
  
  #define TWL6030_CFG_GRP_P1		(1 << 0)
  #define TWL6030_CFG_STATE_ON		(1 << 0)
  #define TWL6030_CFG_STATE_P1		(TWL6030_CFG_GRP_P1 << 5)
d7b6a7549   Paul Kocialkowski   power: twl6030: E...
45
46
  #define TWL6030_CFG_VOLTAGE_18		0x09
  #define TWL6030_CFG_VOLTAGE_28		0x13
c5dbae7c1   Paul Kocialkowski   power: twl6030: S...
47
  #define TWL6030_CFG_VOLTAGE_30		0x15
0343f71f0   Paul Kocialkowski   power: twl6030: C...
48
  #define TWL6030_CFG_VOLTAGE_33		0x18
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
49
50
51
52
53
  
  #define MISC1			0xE4
  #define VAC_MEAS		(1 << 2)
  #define VBAT_MEAS		(1 << 1)
  #define BB_MEAS			(1 << 0)
c5dbae7c1   Paul Kocialkowski   power: twl6030: S...
54
  #define TWL6030_MISC2			0xE5
6313c6500   Paul Kocialkowski   power: twl6030: C...
55
  #define TWL6030_MISC2_VUSB_IN_PMID	(1 << 3)
c5dbae7c1   Paul Kocialkowski   power: twl6030: S...
56
  #define TWL6030_MISC2_VUSB_IN_VSYS	(1 << 4)
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
57
58
  
  /* Slave Address 0x49 */
461484c27   Paul Kocialkowski   input: TWL6030 in...
59
60
61
62
  #define TWL6030_CONTROLLER_STAT1		0xE3
  
  #define TWL6030_CONTROLLER_STAT1_VAC_DET	(1 << 3)
  #define TWL6030_CONTROLLER_STAT1_VBUS_DET	(1 << 2)
516799f67   Steve Sakoman   ARMV7: Add suppor...
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
  /* Battery CHARGER REGISTERS */
  #define CONTROLLER_INT_MASK	0xE0
  #define CONTROLLER_CTRL1	0xE1
  #define CONTROLLER_WDG		0xE2
  #define CONTROLLER_STAT1	0xE3
  #define CHARGERUSB_INT_STATUS	0xE4
  #define CHARGERUSB_INT_MASK	0xE5
  #define CHARGERUSB_STATUS_INT1	0xE6
  #define CHARGERUSB_STATUS_INT2	0xE7
  #define CHARGERUSB_CTRL1	0xE8
  #define CHARGERUSB_CTRL2	0xE9
  #define CHARGERUSB_CTRL3	0xEA
  #define CHARGERUSB_STAT1	0xEB
  #define CHARGERUSB_VOREG	0xEC
  #define CHARGERUSB_VICHRG	0xED
  #define CHARGERUSB_CINLIMIT	0xEE
  #define CHARGERUSB_CTRLLIMIT1	0xEF
  
  /* CHARGERUSB_VICHRG */
  #define CHARGERUSB_VICHRG_500		0x4
  #define CHARGERUSB_VICHRG_1500		0xE
  /* CHARGERUSB_CINLIMIT */
  #define CHARGERUSB_CIN_LIMIT_100	0x1
  #define CHARGERUSB_CIN_LIMIT_300	0x5
  #define CHARGERUSB_CIN_LIMIT_500	0x9
  #define CHARGERUSB_CIN_LIMIT_NONE	0xF
  /* CONTROLLER_INT_MASK */
  #define MVAC_FAULT		(1 << 6)
  #define MAC_EOC			(1 << 5)
  #define MBAT_REMOVED		(1 << 4)
  #define MFAULT_WDG		(1 << 3)
  #define MBAT_TEMP		(1 << 2)
  #define MVBUS_DET		(1 << 1)
  #define MVAC_DET		(1 << 0)
  /* CHARGERUSB_INT_MASK */
  #define MASK_MCURRENT_TERM		(1 << 3)
  #define MASK_MCHARGERUSB_STAT		(1 << 2)
  #define MASK_MCHARGERUSB_THMREG		(1 << 1)
  #define MASK_MCHARGERUSB_FAULT		(1 << 0)
  /* CHARGERUSB_VOREG */
  #define CHARGERUSB_VOREG_3P52		0x01
  #define CHARGERUSB_VOREG_4P0		0x19
  #define CHARGERUSB_VOREG_4P2		0x23
  #define CHARGERUSB_VOREG_4P76		0x3F
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
107
108
109
110
111
  /* CHARGERUSB_CTRL1 */
  #define SUSPEND_BOOT		(1 << 7)
  #define OPA_MODE		(1 << 6)
  #define HZ_MODE			(1 << 5)
  #define TERM			(1 << 4)
516799f67   Steve Sakoman   ARMV7: Add suppor...
112
113
114
115
  /* CHARGERUSB_CTRL2 */
  #define CHARGERUSB_CTRL2_VITERM_50	(0 << 5)
  #define CHARGERUSB_CTRL2_VITERM_100	(1 << 5)
  #define CHARGERUSB_CTRL2_VITERM_150	(2 << 5)
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
116
  #define CHARGERUSB_CTRL2_VITERM_400	(7 << 5)
516799f67   Steve Sakoman   ARMV7: Add suppor...
117
118
119
  /* CONTROLLER_CTRL1 */
  #define CONTROLLER_CTRL1_EN_CHARGER	(1 << 4)
  #define CONTROLLER_CTRL1_SEL_CHARGER	(1 << 3)
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
120
121
122
123
124
  /* CONTROLLER_STAT1 */
  #define CHRG_EXTCHRG_STATZ	(1 << 7)
  #define CHRG_DET_N		(1 << 5)
  #define VAC_DET			(1 << 3)
  #define VBUS_DET		(1 << 2)
516799f67   Steve Sakoman   ARMV7: Add suppor...
125

3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
126
127
128
129
130
131
132
133
134
135
136
137
138
  #define FG_REG_10	0xCA
  #define FG_REG_11	0xCB
  
  #define TOGGLE1		0x90
  #define FGS		(1 << 5)
  #define FGR		(1 << 4)
  #define GPADCS		(1 << 1)
  #define GPADCR		(1 << 0)
  
  #define CTRL_P2		0x34
  #define CTRL_P2_SP2	(1 << 2)
  #define CTRL_P2_EOCP2	(1 << 1)
  #define CTRL_P2_BUSY	(1 << 0)
340e6c830   Oleg Kosheliev   ARMV7: OMAP4: Add...
139
140
  #define TWL6032_CTRL_P1	0x36
  #define CTRL_P1_SP1	(1 << 3)
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
141
142
  #define GPCH0_LSB	0x57
  #define GPCH0_MSB	0x58
516799f67   Steve Sakoman   ARMV7: Add suppor...
143

340e6c830   Oleg Kosheliev   ARMV7: OMAP4: Add...
144
145
146
147
148
149
150
151
152
153
154
155
156
  #define TWL6032_GPCH0_LSB	0x3b
  
  #define TWL6032_GPSELECT_ISB	0x35
  
  #define USB_PRODUCT_ID_LSB	0x02
  
  #define TWL6030_GPADC_VBAT_CHNL	0x07
  #define TWL6032_GPADC_VBAT_CHNL	0x12
  
  #define TWL6030_GPADC_CTRL	0x2e
  #define TWL6032_GPADC_CTRL2	0x2f
  #define GPADC_CTRL2_CH18_SCALER_EN	(1 << 2)
  #define GPADC_CTRL_SCALER_DIV4		(1 << 3)
fc8895035   Oleg Kosheliev   ARMV7: OMAP4: Add...
157
  #define TWL6030_VBAT_MULT	40 * 1000
340e6c830   Oleg Kosheliev   ARMV7: OMAP4: Add...
158
  #define TWL6032_VBAT_MULT	25 * 1000
fc8895035   Oleg Kosheliev   ARMV7: OMAP4: Add...
159
160
  
  #define TWL6030_VBAT_SHIFT	(10 + 3)
340e6c830   Oleg Kosheliev   ARMV7: OMAP4: Add...
161
  #define TWL6032_VBAT_SHIFT	(12 + 2)
fc8895035   Oleg Kosheliev   ARMV7: OMAP4: Add...
162
163
164
  
  enum twl603x_chip_type{
  	chip_TWL6030,
340e6c830   Oleg Kosheliev   ARMV7: OMAP4: Add...
165
  	chip_TWL6032,
fc8895035   Oleg Kosheliev   ARMV7: OMAP4: Add...
166
167
168
169
170
171
172
173
174
175
176
  	chip_TWL603X_cnt
  };
  
  struct twl6030_data{
  	u8 chip_type;
  	u8 adc_rbase;
  	u8 adc_ctrl;
  	u8 adc_enable;
  	int vbat_mult;
  	int vbat_shift;
  };
ebce10e5b   Nishanth Menon   twl6030: move twl...
177
178
179
180
181
182
183
184
185
186
  /* Functions to read and write from TWL6030 */
  static inline int twl6030_i2c_write_u8(u8 chip_no, u8 reg, u8 val)
  {
  	return i2c_write(chip_no, reg, 1, &val, 1);
  }
  
  static inline int twl6030_i2c_read_u8(u8 chip_no, u8 reg, u8 *val)
  {
  	return i2c_read(chip_no, reg, 1, val, 1);
  }
461484c27   Paul Kocialkowski   input: TWL6030 in...
187
188
189
  /*
   * Power
   */
d6a2042db   Paul Kocialkowski   power: twl6030: P...
190
  void twl6030_power_off(void);
516799f67   Steve Sakoman   ARMV7: Add suppor...
191
192
  void twl6030_init_battery_charging(void);
  void twl6030_usb_device_settings(void);
3e664f6d5   Balaji T K   ARMV7: OMAP4: twl...
193
194
195
196
  void twl6030_start_usb_charging(void);
  void twl6030_stop_usb_charging(void);
  int twl6030_get_battery_voltage(void);
  int twl6030_get_battery_current(void);
a85362fb3   Paul Kocialkowski   power: twl6030: D...
197
  void twl6030_power_mmc_init(int dev_index);
502dac556   Nishanth Menon   twl6030: add head...
198

461484c27   Paul Kocialkowski   input: TWL6030 in...
199
200
201
202
203
204
205
  /*
   * Input
   */
  
  int twl6030_input_power_button(void);
  int twl6030_input_charger(void);
  int twl6030_input_usb(void);
502dac556   Nishanth Menon   twl6030: add head...
206
  #endif /* TWL6030_H */