1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * gpio-regulator.h 4 * 5 * Copyright 2011 Heiko Stuebner <heiko@sntech.de> 6 * 7 * based on fixed.h 8 * 9 * Copyright 2008 Wolfson Microelectronics PLC. 10 * 11 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> 12 * 13 * Copyright (c) 2009 Nokia Corporation 14 * Roger Quadros <ext-roger.quadros@nokia.com> 15 */ 16 17 #ifndef __REGULATOR_GPIO_H 18 #define __REGULATOR_GPIO_H 19 20 #include <linux/gpio/consumer.h> 21 22 struct regulator_init_data; 23 24 enum regulator_type; 25 26 /** 27 * struct gpio_regulator_state - state description 28 * @value: microvolts or microamps 29 * @gpios: bitfield of gpio target-states for the value 30 * 31 * This structure describes a supported setting of the regulator 32 * and the necessary gpio-state to achieve it. 33 * 34 * The n-th bit in the bitfield describes the state of the n-th GPIO 35 * from the gpios-array defined in gpio_regulator_config below. 36 */ 37 struct gpio_regulator_state { 38 int value; 39 int gpios; 40 }; 41 42 /** 43 * struct gpio_regulator_config - config structure 44 * @supply_name: Name of the regulator supply 45 * @input_supply: Name of the input regulator supply 46 * @enabled_at_boot: Whether regulator has been enabled at 47 * boot or not. 1 = Yes, 0 = No 48 * This is used to keep the regulator at 49 * the default state 50 * @startup_delay: Start-up time in microseconds 51 * @gflags: Array of GPIO configuration flags for initial 52 * states 53 * @ngpios: Number of GPIOs and configurations available 54 * @states: Array of gpio_regulator_state entries describing 55 * the gpio state for specific voltages 56 * @nr_states: Number of states available 57 * @regulator_type: either REGULATOR_CURRENT or REGULATOR_VOLTAGE 58 * @init_data: regulator_init_data 59 * 60 * This structure contains gpio-voltage regulator configuration 61 * information that must be passed by platform code to the 62 * gpio-voltage regulator driver. 63 */ 64 struct gpio_regulator_config { 65 const char *supply_name; 66 const char *input_supply; 67 68 unsigned enabled_at_boot:1; 69 unsigned startup_delay; 70 71 enum gpiod_flags *gflags; 72 int ngpios; 73 74 struct gpio_regulator_state *states; 75 int nr_states; 76 77 enum regulator_type type; 78 struct regulator_init_data *init_data; 79 }; 80 81 #endif 82