34512ec315fe41dd875210f0c92776f87607e7d1
[linux-2.6.git] / include / linux / mfd / bq2419x.h
1 /*
2  * bq2419x.h -- BQ2419X driver
3  *
4  * Interface for mfd/regualtor/battery charging driver for BQ2419X VBUS.
5  *
6  * Copyright (C) 2012 NVIDIA Corporation
7
8  * Author: Laxman Dewangan <ldewangan@nvidia.com>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful, but WITHOUT
16  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
18  * more details.
19  *
20  * You should have received a copy of the GNU General Public License along
21  * with this program; if not, write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
23  *
24  */
25
26 #ifndef __LINUX_MFD_BQ2419X_H
27 #define __LINUX_MFD_BQ2419X_H
28
29 struct regmap;
30
31 #define BQ2419X_INPUT_SRC_REG   0x00
32 #define BQ2419X_PWR_ON_REG      0x01
33 #define BQ2419X_CHRG_CTRL_REG   0x02
34 #define BQ2419X_CHRG_TERM_REG   0x03
35 #define BQ2419X_VOLT_CTRL_REG   0x04
36 #define BQ2419X_TIME_CTRL_REG   0x05
37 #define BQ2419X_THERM_REG       0x06
38 #define BQ2419X_MISC_OPER_REG   0x07
39 #define BQ2419X_SYS_STAT_REG    0x08
40 #define BQ2419X_FAULT_REG       0x09
41 #define BQ2419X_REVISION_REG    0x0a
42
43 #define BQ24190_IC_VER          0x40
44 #define BQ24192_IC_VER          0x28
45 #define BQ24192i_IC_VER         0x18
46 #define ENABLE_CHARGE_MASK      0x30
47 #define ENABLE_CHARGE           0x10
48
49 #define BQ2419X_REG0                    0x0
50 #define BQ2419X_EN_HIZ                  BIT(7)
51
52 #define BQ2419X_OTG                     0x1
53 #define BQ2419X_OTG_ENABLE_MASK         0x30
54 #define BQ2419X_OTG_ENABLE              0x20
55
56 #define BQ2419X_WD                      0x5
57 #define BQ2419X_WD_MASK                 0x30
58 #define BQ2419X_WD_DISABLE              0x0
59
60 #define BQ2419x_VBUS_STAT               0xc0
61 #define BQ2419x_VBUS_UNKNOWN            0x00
62 #define BQ2419x_VBUS_USB                0x40
63 #define BQ2419x_VBUS_AC                 0x80
64
65 #define BQ2419x_CONFIG_MASK             0x7
66 #define BQ2419X_MAX_REGS                (BQ2419X_REVISION_REG + 1)
67
68 /* bq2419x chip information */
69 struct bq2419x_chip {
70         struct device *dev;
71         struct regmap *regmap;
72 };
73
74 /*
75  * struct bq2419x_regulator_platform_data - bq2419x regulator platform data.
76  *
77  * @reg_init_data: The regulator init data.
78  * @gpio_otg_iusb: Gpio number for OTG/IUSB
79  */
80 struct bq2419x_regulator_platform_data {
81         struct regulator_init_data *reg_init_data;
82         int gpio_otg_iusb;
83 };
84
85 struct bq2419x_charger_platform_data {
86         int gpio_interrupt;
87         int gpio_status;
88         unsigned use_mains:1;
89         unsigned use_usb:1;
90         void (*update_status)(int, int);
91         int (*battery_check)(void);
92
93         int regulator_id;
94         int max_charge_volt_mV;
95         int max_charge_current_mA;
96         int charging_term_current_mA;
97         int num_consumer_supplies;
98         struct regulator_consumer_supply *consumer_supplies;
99 };
100 struct bq2419x_platform_data {
101         struct bq2419x_regulator_platform_data *reg_pdata;
102         struct bq2419x_charger_platform_data *bcharger_pdata;
103         bool disable_watchdog;
104 };
105
106 #endif /* __LINUX_MFD_BQ2419X_H */