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 | |