aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd/tps6507x.h
blob: c923e4864f557e9fa51290d2518925a0848e0fa8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/* linux/mfd/tps6507x.h
 *
 * Functions to access TPS65070 power management chip.
 *
 * Copyright (c) 2009 RidgeRun (todd.fischer@ridgerun.com)
 *
 *
 *  For licencing details see kernel-base/COPYING
 */

#ifndef __LINUX_MFD_TPS6507X_H
#define __LINUX_MFD_TPS6507X_H

/*
 * ----------------------------------------------------------------------------
 * Registers, all 8 bits
 * ----------------------------------------------------------------------------
 */


/* Register definitions */
#define	TPS6507X_REG_PPATH1			0X01
#define	TPS6507X_CHG_USB			BIT(7)
#define	TPS6507X_CHG_AC				BIT(6)
#define	TPS6507X_CHG_USB_PW_ENABLE		BIT(5)
#define	TPS6507X_CHG_AC_PW_ENABLE		BIT(4)
#define	TPS6507X_CHG_AC_CURRENT			BIT(2)
#define	TPS6507X_CHG_USB_CURRENT		BIT(0)

#define	TPS6507X_REG_INT			0X02
#define	TPS6507X_REG_MASK_AC_USB		BIT(7)
#define	TPS6507X_REG_MASK_TSC			BIT(6)
#define	TPS6507X_REG_MASK_PB_IN			BIT(5)
#define	TPS6507X_REG_TSC_INT			BIT(3)
#define	TPS6507X_REG_PB_IN_INT			BIT(2)
#define	TPS6507X_REG_AC_USB_APPLIED		BIT(1)
#define	TPS6507X_REG_AC_USB_REMOVED		BIT(0)

#define	TPS6507X_REG_CHGCONFIG0			0X03

#define	TPS6507X_REG_CHGCONFIG1			0X04
#define	TPS6507X_CON_CTRL1_DCDC1_ENABLE		BIT(4)
#define	TPS6507X_CON_CTRL1_DCDC2_ENABLE		BIT(3)
#define	TPS6507X_CON_CTRL1_DCDC3_ENABLE		BIT(2)
#define	TPS6507X_CON_CTRL1_LDO1_ENABLE		BIT(1)
#define	TPS6507X_CON_CTRL1_LDO2_ENABLE		BIT(0)

#define	TPS6507X_REG_CHGCONFIG2			0X05

#define	TPS6507X_REG_CHGCONFIG3			0X06

#define	TPS6507X_REG_ADCONFIG			0X07
#define	TPS6507X_ADCONFIG_AD_ENABLE		BIT(7)
#define	TPS6507X_ADCONFIG_START_CONVERSION	BIT(6)
#define	TPS6507X_ADCONFIG_CONVERSION_DONE	BIT(5)
#define	TPS6507X_ADCONFIG_VREF_ENABLE		BIT(4)
#define	TPS6507X_ADCONFIG_INPUT_AD_IN1		0
#define	TPS6507X_ADCONFIG_INPUT_AD_IN2		1
#define	TPS6507X_ADCONFIG_INPUT_AD_IN3		2
#define	TPS6507X_ADCONFIG_INPUT_AD_IN4		3
#define	TPS6507X_ADCONFIG_INPUT_TS_PIN		4
#define	TPS6507X_ADCONFIG_INPUT_BAT_CURRENT	5
#define	TPS6507X_ADCONFIG_INPUT_AC_VOLTAGE	6
#define	TPS6507X_ADCONFIG_INPUT_SYS_VOLTAGE	7
#define	TPS6507X_ADCONFIG_INPUT_CHARGER_VOLTAGE 8
#define	TPS6507X_ADCONFIG_INPUT_BAT_VOLTAGE	9
#define	TPS6507X_ADCONFIG_INPUT_THRESHOLD_VOLTAGE 10
#define	TPS6507X_ADCONFIG_INPUT_ISET1_VOLTAGE	11
#define	TPS6507X_ADCONFIG_INPUT_ISET2_VOLTAGE	12
#define	TPS6507X_ADCONFIG_INPUT_REAL_TSC	14
#define	TPS6507X_ADCONFIG_INPUT_TSC		15

#define	TPS6507X_REG_TSCMODE			0X08
#define	TPS6507X_TSCMODE_X_POSITION		0
#define	TPS6507X_TSCMODE_Y_POSITION		1
#define	TPS6507X_TSCMODE_PRESSURE		2
#define	TPS6507X_TSCMODE_X_PLATE		3
#define	TPS6507X_TSCMODE_Y_PLATE		4
#define	TPS6507X_TSCMODE_STANDBY		5
#define	TPS6507X_TSCMODE_ADC_INPUT		6
#define	TPS6507X_TSCMODE_DISABLE		7

#define	TPS6507X_REG_ADRESULT_1			0X09

#define	TPS6507X_REG_ADRESULT_2			0X0A
#define	TPS6507X_REG_ADRESULT_2_MASK		(BIT(1) | BIT(0))

#define	TPS6507X_REG_PGOOD			0X0B

#define	TPS6507X_REG_PGOODMASK			0X0C

#define	TPS6507X_REG_CON_CTRL1			0X0D
#define	TPS6507X_CON_CTRL1_DCDC1_ENABLE		BIT(4)
#define	TPS6507X_CON_CTRL1_DCDC2_ENABLE		BIT(3)
#define	TPS6507X_CON_CTRL1_DCDC3_ENABLE		BIT(2)
#define	TPS6507X_CON_CTRL1_LDO1_ENABLE		BIT(1)
#define	TPS6507X_CON_CTRL1_LDO2_ENABLE		BIT(0)

#define	TPS6507X_REG_CON_CTRL2			0X0E

#define	TPS6507X_REG_CON_CTRL3			0X0F

#define	TPS6507X_REG_DEFDCDC1			0X10
#define TPS6507X_DEFDCDC1_DCDC1_EXT_ADJ_EN	BIT(7)
#define TPS6507X_DEFDCDC1_DCDC1_MASK		0X3F

#define	TPS6507X_REG_DEFDCDC2_LOW		0X11
#define TPS6507X_DEFDCDC2_LOW_DCDC2_MASK	0X3F

#define	TPS6507X_REG_DEFDCDC2_HIGH		0X12
#define TPS6507X_DEFDCDC2_HIGH_DCDC2_MASK	0X3F

#define	TPS6507X_REG_DEFDCDC3_LOW		0X13
#define TPS6507X_DEFDCDC3_LOW_DCDC3_MASK	0X3F

#define	TPS6507X_REG_DEFDCDC3_HIGH		0X14
#define TPS6507X_DEFDCDC3_HIGH_DCDC3_MASK	0X3F

#define	TPS6507X_REG_DEFSLEW			0X15

#define	TPS6507X_REG_LDO_CTRL1			0X16
#define TPS6507X_REG_LDO_CTRL1_LDO1_MASK	0X0F

#define	TPS6507X_REG_DEFLDO2			0X17
#define TPS6507X_REG_DEFLDO2_LDO2_MASK		0X3F

#define	TPS6507X_REG_WLED_CTRL1			0X18

#define	TPS6507X_REG_WLED_CTRL2			0X19

/* VDCDC MASK */
#define TPS6507X_DEFDCDCX_DCDC_MASK		0X3F

#define TPS6507X_MAX_REGISTER			0X19

/**
 * struct tps6507x_board - packages regulator and touchscreen init data
 * @tps6507x_regulator_data: regulator initialization values
 *
 * Board data may be used to initialize regulator and touchscreen.
 */

struct tps6507x_board {
	struct regulator_init_data *tps6507x_pmic_init_data;
	struct touchscreen_init_data *tps6507x_ts_init_data;
};

/**
 * struct tps6507x_dev - tps6507x sub-driver chip access routines
 * @read_dev() - I2C register read function
 * @write_dev() - I2C register write function
 *
 * Device data may be used to access the TPS6507x chip
 */

struct tps6507x_dev {
	struct device *dev;
	struct i2c_client *i2c_client;
	int (*read_dev)(struct tps6507x_dev *tps6507x, char reg, int size,
			void *dest);
	int (*write_dev)(struct tps6507x_dev *tps6507x, char reg, int size,
			 void *src);

	/* Client devices */
	struct tps6507x_pmic *pmic;
	struct tps6507x_ts *ts;
};

#endif /*  __LINUX_MFD_TPS6507X_H */