1 /* 2 * gpio-regulator.h 3 * 4 * Copyright 2011 Heiko Stuebner <heiko@sntech.de> 5 * 6 * based on fixed.h 7 * 8 * Copyright 2008 Wolfson Microelectronics PLC. 9 * 10 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> 11 * 12 * Copyright (c) 2009 Nokia Corporation 13 * Roger Quadros <ext-roger.quadros@nokia.com> 14 * 15 * This program is free software; you can redistribute it and/or 16 * modify it under the terms of the GNU General Public License as 17 * published by the Free Software Foundation; either version 2 of the 18 * License, or (at your option) any later version. 19 */ 20 21 #ifndef __REGULATOR_GPIO_H 22 #define __REGULATOR_GPIO_H 23 24 struct regulator_init_data; 25 26 enum regulator_type; 27 28 /** 29 * struct gpio_regulator_state - state description 30 * @value: microvolts or microamps 31 * @gpios: bitfield of gpio target-states for the value 32 * 33 * This structure describes a supported setting of the regulator 34 * and the necessary gpio-state to achieve it. 35 * 36 * The n-th bit in the bitfield describes the state of the n-th GPIO 37 * from the gpios-array defined in gpio_regulator_config below. 38 */ 39 struct gpio_regulator_state { 40 int value; 41 int gpios; 42 }; 43 44 /** 45 * struct gpio_regulator_config - config structure 46 * @supply_name: Name of the regulator supply 47 * @enable_gpio: GPIO to use for enable control 48 * set to -EINVAL if not used 49 * @enable_high: Polarity of enable GPIO 50 * 1 = Active high, 0 = Active low 51 * @enabled_at_boot: Whether regulator has been enabled at 52 * boot or not. 1 = Yes, 0 = No 53 * This is used to keep the regulator at 54 * the default state 55 * @startup_delay: Start-up time in microseconds 56 * @gpios: Array containing the gpios needed to control 57 * the setting of the regulator 58 * @nr_gpios: Number of gpios 59 * @states: Array of gpio_regulator_state entries describing 60 * the gpio state for specific voltages 61 * @nr_states: Number of states available 62 * @regulator_type: either REGULATOR_CURRENT or REGULATOR_VOLTAGE 63 * @init_data: regulator_init_data 64 * 65 * This structure contains gpio-voltage regulator configuration 66 * information that must be passed by platform code to the 67 * gpio-voltage regulator driver. 68 */ 69 struct gpio_regulator_config { 70 const char *supply_name; 71 72 int enable_gpio; 73 unsigned enable_high:1; 74 unsigned enabled_at_boot:1; 75 unsigned startup_delay; 76 77 struct gpio *gpios; 78 int nr_gpios; 79 80 struct gpio_regulator_state *states; 81 int nr_states; 82 83 enum regulator_type type; 84 struct regulator_init_data *init_data; 85 }; 86 87 #endif 88