1 /* 2 * max77686.h - Driver for the Maxim 77686/802 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 */ 34 enum 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 71 MAX77686_REG_MAX, 72 }; 73 74 /* MAX77802 regulator IDs */ 75 enum max77802_regulators { 76 MAX77802_BUCK1 = 0, 77 MAX77802_BUCK2, 78 MAX77802_BUCK3, 79 MAX77802_BUCK4, 80 MAX77802_BUCK5, 81 MAX77802_BUCK6, 82 MAX77802_BUCK7, 83 MAX77802_BUCK8, 84 MAX77802_BUCK9, 85 MAX77802_BUCK10, 86 MAX77802_LDO1, 87 MAX77802_LDO2, 88 MAX77802_LDO3, 89 MAX77802_LDO4, 90 MAX77802_LDO5, 91 MAX77802_LDO6, 92 MAX77802_LDO7, 93 MAX77802_LDO8, 94 MAX77802_LDO9, 95 MAX77802_LDO10, 96 MAX77802_LDO11, 97 MAX77802_LDO12, 98 MAX77802_LDO13, 99 MAX77802_LDO14, 100 MAX77802_LDO15, 101 MAX77802_LDO17, 102 MAX77802_LDO18, 103 MAX77802_LDO19, 104 MAX77802_LDO20, 105 MAX77802_LDO21, 106 MAX77802_LDO23, 107 MAX77802_LDO24, 108 MAX77802_LDO25, 109 MAX77802_LDO26, 110 MAX77802_LDO27, 111 MAX77802_LDO28, 112 MAX77802_LDO29, 113 MAX77802_LDO30, 114 MAX77802_LDO32, 115 MAX77802_LDO33, 116 MAX77802_LDO34, 117 MAX77802_LDO35, 118 119 MAX77802_REG_MAX, 120 }; 121 122 struct max77686_regulator_data { 123 int id; 124 struct regulator_init_data *initdata; 125 struct device_node *of_node; 126 }; 127 128 enum max77686_opmode { 129 MAX77686_OPMODE_NORMAL, 130 MAX77686_OPMODE_LP, 131 MAX77686_OPMODE_STANDBY, 132 }; 133 134 enum max77802_opmode { 135 MAX77802_OPMODE_OFF, 136 MAX77802_OPMODE_STANDBY, 137 MAX77802_OPMODE_LP, 138 MAX77802_OPMODE_NORMAL, 139 }; 140 141 struct max77686_opmode_data { 142 int id; 143 int mode; 144 }; 145 146 struct max77686_platform_data { 147 int ono; 148 int wakeup; 149 150 /* ---- PMIC ---- */ 151 struct max77686_regulator_data *regulators; 152 int num_regulators; 153 154 struct max77686_opmode_data *opmode_data; 155 156 /* 157 * GPIO-DVS feature is not enabled with the current version of 158 * MAX77686 driver. Buck2/3/4_voltages[0] is used as the default 159 * voltage at probe. DVS/SELB gpios are set as OUTPUT-LOW. 160 */ 161 int buck234_gpio_dvs[3]; /* GPIO of [0]DVS1, [1]DVS2, [2]DVS3 */ 162 int buck234_gpio_selb[3]; /* [0]SELB2, [1]SELB3, [2]SELB4 */ 163 unsigned int buck2_voltage[8]; /* buckx_voltage in uV */ 164 unsigned int buck3_voltage[8]; 165 unsigned int buck4_voltage[8]; 166 }; 167 168 #endif /* __LINUX_MFD_MAX77686_H */ 169