1 /* 2 * Copyright 2012 Texas Instruments 3 * 4 * Author: Milo(Woogyom) Kim <milo.kim@ti.com> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 */ 11 12 #ifndef __LP872X_REGULATOR_H__ 13 #define __LP872X_REGULATOR_H__ 14 15 #include <linux/regulator/machine.h> 16 #include <linux/platform_device.h> 17 #include <linux/gpio.h> 18 19 #define LP872X_MAX_REGULATORS 9 20 21 enum lp872x_regulator_id { 22 LP8720_ID_BASE, 23 LP8720_ID_LDO1 = LP8720_ID_BASE, 24 LP8720_ID_LDO2, 25 LP8720_ID_LDO3, 26 LP8720_ID_LDO4, 27 LP8720_ID_LDO5, 28 LP8720_ID_BUCK, 29 30 LP8725_ID_BASE, 31 LP8725_ID_LDO1 = LP8725_ID_BASE, 32 LP8725_ID_LDO2, 33 LP8725_ID_LDO3, 34 LP8725_ID_LDO4, 35 LP8725_ID_LDO5, 36 LP8725_ID_LILO1, 37 LP8725_ID_LILO2, 38 LP8725_ID_BUCK1, 39 LP8725_ID_BUCK2, 40 41 LP872X_ID_MAX, 42 }; 43 44 enum lp872x_dvs_state { 45 DVS_LOW = GPIOF_OUT_INIT_LOW, 46 DVS_HIGH = GPIOF_OUT_INIT_HIGH, 47 }; 48 49 enum lp872x_dvs_sel { 50 SEL_V1, 51 SEL_V2, 52 }; 53 54 /** 55 * lp872x_dvs 56 * @gpio : gpio pin number for dvs control 57 * @vsel : dvs selector for buck v1 or buck v2 register 58 * @init_state : initial dvs pin state 59 */ 60 struct lp872x_dvs { 61 int gpio; 62 enum lp872x_dvs_sel vsel; 63 enum lp872x_dvs_state init_state; 64 }; 65 66 /** 67 * lp872x_regdata 68 * @id : regulator id 69 * @init_data : init data for each regulator 70 */ 71 struct lp872x_regulator_data { 72 enum lp872x_regulator_id id; 73 struct regulator_init_data *init_data; 74 }; 75 76 /** 77 * lp872x_platform_data 78 * @general_config : the value of LP872X_GENERAL_CFG register 79 * @update_config : if LP872X_GENERAL_CFG register is updated, set true 80 * @regulator_data : platform regulator id and init data 81 * @dvs : dvs data for buck voltage control 82 */ 83 struct lp872x_platform_data { 84 u8 general_config; 85 bool update_config; 86 struct lp872x_regulator_data regulator_data[LP872X_MAX_REGULATORS]; 87 struct lp872x_dvs *dvs; 88 }; 89 90 #endif 91