aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd/max77686.h
diff options
context:
space:
mode:
authorJonghwa Lee <jonghwa3.lee@samsung.com>2012-06-25 04:34:36 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2012-07-08 18:16:07 -0400
commitdae8a969d512ee15e08fbec7837b9dab1777896d (patch)
tree9158b5af28aa5a5be5c9d52c1dc3ffaff782914e /include/linux/mfd/max77686.h
parentbd0a521e88aa7a06ae7aabaed7ae196ed4ad867a (diff)
mfd: Add Maxim 77686 driver
This patch is device driver for MAX77686 chip. MAX77686 is PMIC and includes regulator and rtc on it. This driver is core of MAX77686 chip, so provides common support for accessing on-chip devices. It uses irq_domain to manage irq and regmap to read/write data to its register with i2c bus. Signed-off-by: Chiwoong Byun <woong.byun@samsung.com> Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Reviewed-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'include/linux/mfd/max77686.h')
-rw-r--r--include/linux/mfd/max77686.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/include/linux/mfd/max77686.h b/include/linux/mfd/max77686.h
new file mode 100644
index 000000000000..fcf312678cac
--- /dev/null
+++ b/include/linux/mfd/max77686.h
@@ -0,0 +1,117 @@
1/*
2 * max77686.h - Driver for the Maxim 77686
3 *
4 * Copyright (C) 2012 Samsung Electrnoics
5 * Chiwoong Byun <woong.byun@samsung.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 * This driver is based on max8997.h
22 *
23 * MAX77686 has PMIC, RTC devices.
24 * The devices share the same I2C bus and included in
25 * this mfd driver.
26 */
27
28#ifndef __LINUX_MFD_MAX77686_H
29#define __LINUX_MFD_MAX77686_H
30
31#include <linux/regulator/consumer.h>
32
33/* MAX77686 regulator IDs */
34enum max77686_regulators {
35 MAX77686_LDO1 = 0,
36 MAX77686_LDO2,
37 MAX77686_LDO3,
38 MAX77686_LDO4,
39 MAX77686_LDO5,
40 MAX77686_LDO6,
41 MAX77686_LDO7,
42 MAX77686_LDO8,
43 MAX77686_LDO9,
44 MAX77686_LDO10,
45 MAX77686_LDO11,
46 MAX77686_LDO12,
47 MAX77686_LDO13,
48 MAX77686_LDO14,
49 MAX77686_LDO15,
50 MAX77686_LDO16,
51 MAX77686_LDO17,
52 MAX77686_LDO18,
53 MAX77686_LDO19,
54 MAX77686_LDO20,
55 MAX77686_LDO21,
56 MAX77686_LDO22,
57 MAX77686_LDO23,
58 MAX77686_LDO24,
59 MAX77686_LDO25,
60 MAX77686_LDO26,
61 MAX77686_BUCK1,
62 MAX77686_BUCK2,
63 MAX77686_BUCK3,
64 MAX77686_BUCK4,
65 MAX77686_BUCK5,
66 MAX77686_BUCK6,
67 MAX77686_BUCK7,
68 MAX77686_BUCK8,
69 MAX77686_BUCK9,
70 MAX77686_EN32KHZ_AP,
71 MAX77686_EN32KHZ_CP,
72 MAX77686_P32KH,
73
74 MAX77686_REG_MAX,
75};
76
77struct max77686_regulator_data {
78 int id;
79 struct regulator_init_data *initdata;
80};
81
82enum max77686_opmode {
83 MAX77686_OPMODE_NORMAL,
84 MAX77686_OPMODE_LP,
85 MAX77686_OPMODE_STANDBY,
86};
87
88struct max77686_opmode_data {
89 int id;
90 int mode;
91};
92
93struct max77686_platform_data {
94 /* IRQ */
95 int irq_gpio;
96 int ono;
97 int wakeup;
98
99 /* ---- PMIC ---- */
100 struct max77686_regulator_data *regulators;
101 int num_regulators;
102
103 struct max77686_opmode_data *opmode_data;
104
105 /*
106 * GPIO-DVS feature is not enabled with the current version of
107 * MAX77686 driver. Buck2/3/4_voltages[0] is used as the default
108 * voltage at probe. DVS/SELB gpios are set as OUTPUT-LOW.
109 */
110 int buck234_gpio_dvs[3]; /* GPIO of [0]DVS1, [1]DVS2, [2]DVS3 */
111 int buck234_gpio_selb[3]; /* [0]SELB2, [1]SELB3, [2]SELB4 */
112 unsigned int buck2_voltage[8]; /* buckx_voltage in uV */
113 unsigned int buck3_voltage[8];
114 unsigned int buck4_voltage[8];
115};
116
117#endif /* __LINUX_MFD_MAX77686_H */