91 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			91 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * Copyright 2012 Texas Instruments | ||
|  |  * | ||
|  |  * Author: Milo(Woogyom) Kim <milo.kim@ti.com> | ||
|  |  * | ||
|  |  * This program is free software; you can redistribute it and/or modify | ||
|  |  * it under the terms of the GNU General Public License version 2 as | ||
|  |  * published by the Free Software Foundation. | ||
|  |  * | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef __LP872X_REGULATOR_H__
 | ||
|  | #define __LP872X_REGULATOR_H__
 | ||
|  | 
 | ||
|  | #include <linux/regulator/machine.h>
 | ||
|  | #include <linux/platform_device.h>
 | ||
|  | #include <linux/gpio.h>
 | ||
|  | 
 | ||
|  | #define LP872X_MAX_REGULATORS		9
 | ||
|  | 
 | ||
|  | enum lp872x_regulator_id { | ||
|  | 	LP8720_ID_BASE, | ||
|  | 	LP8720_ID_LDO1 = LP8720_ID_BASE, | ||
|  | 	LP8720_ID_LDO2, | ||
|  | 	LP8720_ID_LDO3, | ||
|  | 	LP8720_ID_LDO4, | ||
|  | 	LP8720_ID_LDO5, | ||
|  | 	LP8720_ID_BUCK, | ||
|  | 
 | ||
|  | 	LP8725_ID_BASE, | ||
|  | 	LP8725_ID_LDO1 = LP8725_ID_BASE, | ||
|  | 	LP8725_ID_LDO2, | ||
|  | 	LP8725_ID_LDO3, | ||
|  | 	LP8725_ID_LDO4, | ||
|  | 	LP8725_ID_LDO5, | ||
|  | 	LP8725_ID_LILO1, | ||
|  | 	LP8725_ID_LILO2, | ||
|  | 	LP8725_ID_BUCK1, | ||
|  | 	LP8725_ID_BUCK2, | ||
|  | 
 | ||
|  | 	LP872X_ID_MAX, | ||
|  | }; | ||
|  | 
 | ||
|  | enum lp872x_dvs_state { | ||
|  | 	DVS_LOW  = GPIOF_OUT_INIT_LOW, | ||
|  | 	DVS_HIGH = GPIOF_OUT_INIT_HIGH, | ||
|  | }; | ||
|  | 
 | ||
|  | enum lp872x_dvs_sel { | ||
|  | 	SEL_V1, | ||
|  | 	SEL_V2, | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * lp872x_dvs | ||
|  |  * @gpio       : gpio pin number for dvs control | ||
|  |  * @vsel       : dvs selector for buck v1 or buck v2 register | ||
|  |  * @init_state : initial dvs pin state | ||
|  |  */ | ||
|  | struct lp872x_dvs { | ||
|  | 	int gpio; | ||
|  | 	enum lp872x_dvs_sel vsel; | ||
|  | 	enum lp872x_dvs_state init_state; | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * lp872x_regdata | ||
|  |  * @id        : regulator id | ||
|  |  * @init_data : init data for each regulator | ||
|  |  */ | ||
|  | struct lp872x_regulator_data { | ||
|  | 	enum lp872x_regulator_id id; | ||
|  | 	struct regulator_init_data *init_data; | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * lp872x_platform_data | ||
|  |  * @general_config    : the value of LP872X_GENERAL_CFG register | ||
|  |  * @update_config     : if LP872X_GENERAL_CFG register is updated, set true | ||
|  |  * @regulator_data    : platform regulator id and init data | ||
|  |  * @dvs               : dvs data for buck voltage control | ||
|  |  */ | ||
|  | struct lp872x_platform_data { | ||
|  | 	u8 general_config; | ||
|  | 	bool update_config; | ||
|  | 	struct lp872x_regulator_data regulator_data[LP872X_MAX_REGULATORS]; | ||
|  | 	struct lp872x_dvs *dvs; | ||
|  | }; | ||
|  | 
 | ||
|  | #endif
 |