1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * max8998.h - Voltage regulator driver for the Maxim 8998 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2009-2010 Samsung Electrnoics 6*4882a593Smuzhiyun * Kyungmin Park <kyungmin.park@samsung.com> 7*4882a593Smuzhiyun * Marek Szyprowski <m.szyprowski@samsung.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __LINUX_MFD_MAX8998_H 11*4882a593Smuzhiyun #define __LINUX_MFD_MAX8998_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/regulator/machine.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* MAX 8998 regulator ids */ 16*4882a593Smuzhiyun enum { 17*4882a593Smuzhiyun MAX8998_LDO2 = 2, 18*4882a593Smuzhiyun MAX8998_LDO3, 19*4882a593Smuzhiyun MAX8998_LDO4, 20*4882a593Smuzhiyun MAX8998_LDO5, 21*4882a593Smuzhiyun MAX8998_LDO6, 22*4882a593Smuzhiyun MAX8998_LDO7, 23*4882a593Smuzhiyun MAX8998_LDO8, 24*4882a593Smuzhiyun MAX8998_LDO9, 25*4882a593Smuzhiyun MAX8998_LDO10, 26*4882a593Smuzhiyun MAX8998_LDO11, 27*4882a593Smuzhiyun MAX8998_LDO12, 28*4882a593Smuzhiyun MAX8998_LDO13, 29*4882a593Smuzhiyun MAX8998_LDO14, 30*4882a593Smuzhiyun MAX8998_LDO15, 31*4882a593Smuzhiyun MAX8998_LDO16, 32*4882a593Smuzhiyun MAX8998_LDO17, 33*4882a593Smuzhiyun MAX8998_BUCK1, 34*4882a593Smuzhiyun MAX8998_BUCK2, 35*4882a593Smuzhiyun MAX8998_BUCK3, 36*4882a593Smuzhiyun MAX8998_BUCK4, 37*4882a593Smuzhiyun MAX8998_EN32KHZ_AP, 38*4882a593Smuzhiyun MAX8998_EN32KHZ_CP, 39*4882a593Smuzhiyun MAX8998_ENVICHG, 40*4882a593Smuzhiyun MAX8998_ESAFEOUT1, 41*4882a593Smuzhiyun MAX8998_ESAFEOUT2, 42*4882a593Smuzhiyun MAX8998_CHARGER, 43*4882a593Smuzhiyun }; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /** 46*4882a593Smuzhiyun * max8998_regulator_data - regulator data 47*4882a593Smuzhiyun * @id: regulator id 48*4882a593Smuzhiyun * @initdata: regulator init data (contraints, supplies, ...) 49*4882a593Smuzhiyun * @reg_node: DT node of regulator (unused on non-DT platforms) 50*4882a593Smuzhiyun */ 51*4882a593Smuzhiyun struct max8998_regulator_data { 52*4882a593Smuzhiyun int id; 53*4882a593Smuzhiyun struct regulator_init_data *initdata; 54*4882a593Smuzhiyun struct device_node *reg_node; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun /** 58*4882a593Smuzhiyun * struct max8998_board - packages regulator init data 59*4882a593Smuzhiyun * @regulators: array of defined regulators 60*4882a593Smuzhiyun * @num_regulators: number of regulators used 61*4882a593Smuzhiyun * @irq_base: base IRQ number for max8998, required for IRQs 62*4882a593Smuzhiyun * @ono: power onoff IRQ number for max8998 63*4882a593Smuzhiyun * @buck_voltage_lock: Do NOT change the values of the following six 64*4882a593Smuzhiyun * registers set by buck?_voltage?. The voltage of BUCK1/2 cannot 65*4882a593Smuzhiyun * be other than the preset values. 66*4882a593Smuzhiyun * @buck1_voltage: BUCK1 DVS mode 1 voltage registers 67*4882a593Smuzhiyun * @buck2_voltage: BUCK2 DVS mode 2 voltage registers 68*4882a593Smuzhiyun * @buck1_set1: BUCK1 gpio pin 1 to set output voltage 69*4882a593Smuzhiyun * @buck1_set2: BUCK1 gpio pin 2 to set output voltage 70*4882a593Smuzhiyun * @buck1_default_idx: Default for BUCK1 gpio pin 1, 2 71*4882a593Smuzhiyun * @buck2_set3: BUCK2 gpio pin to set output voltage 72*4882a593Smuzhiyun * @buck2_default_idx: Default for BUCK2 gpio pin. 73*4882a593Smuzhiyun * @wakeup: Allow to wake up from suspend 74*4882a593Smuzhiyun * @rtc_delay: LP3974 RTC chip bug that requires delay after a register 75*4882a593Smuzhiyun * write before reading it. 76*4882a593Smuzhiyun * @eoc: End of Charge Level in percent: 10% ~ 45% by 5% step 77*4882a593Smuzhiyun * If it equals 0, leave it unchanged. 78*4882a593Smuzhiyun * Otherwise, it is a invalid value. 79*4882a593Smuzhiyun * @restart: Restart Level in mV: 100, 150, 200, and -1 for disable. 80*4882a593Smuzhiyun * If it equals 0, leave it unchanged. 81*4882a593Smuzhiyun * Otherwise, it is a invalid value. 82*4882a593Smuzhiyun * @timeout: Full Timeout in hours: 5, 6, 7, and -1 for disable. 83*4882a593Smuzhiyun * If it equals 0, leave it unchanged. 84*4882a593Smuzhiyun * Otherwise, leave it unchanged. 85*4882a593Smuzhiyun */ 86*4882a593Smuzhiyun struct max8998_platform_data { 87*4882a593Smuzhiyun struct max8998_regulator_data *regulators; 88*4882a593Smuzhiyun int num_regulators; 89*4882a593Smuzhiyun unsigned int irq_base; 90*4882a593Smuzhiyun int ono; 91*4882a593Smuzhiyun bool buck_voltage_lock; 92*4882a593Smuzhiyun int buck1_voltage[4]; 93*4882a593Smuzhiyun int buck2_voltage[2]; 94*4882a593Smuzhiyun int buck1_set1; 95*4882a593Smuzhiyun int buck1_set2; 96*4882a593Smuzhiyun int buck1_default_idx; 97*4882a593Smuzhiyun int buck2_set3; 98*4882a593Smuzhiyun int buck2_default_idx; 99*4882a593Smuzhiyun bool wakeup; 100*4882a593Smuzhiyun bool rtc_delay; 101*4882a593Smuzhiyun int eoc; 102*4882a593Smuzhiyun int restart; 103*4882a593Smuzhiyun int timeout; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #endif /* __LINUX_MFD_MAX8998_H */ 107