Merge tag 'Wimplicit-fallthrough-clang-5.14-rc1' of git://git.kernel.org/pub/scm...
[linux-2.6-microblaze.git] / include / linux / regulator / gpio-regulator.h
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  * @enabled_at_boot:    Whether regulator has been enabled at
46  *                      boot or not. 1 = Yes, 0 = No
47  *                      This is used to keep the regulator at
48  *                      the default state
49  * @startup_delay:      Start-up time in microseconds
50  * @gflags:             Array of GPIO configuration flags for initial
51  *                      states
52  * @ngpios:             Number of GPIOs and configurations available
53  * @states:             Array of gpio_regulator_state entries describing
54  *                      the gpio state for specific voltages
55  * @nr_states:          Number of states available
56  * @regulator_type:     either REGULATOR_CURRENT or REGULATOR_VOLTAGE
57  * @init_data:          regulator_init_data
58  *
59  * This structure contains gpio-voltage regulator configuration
60  * information that must be passed by platform code to the
61  * gpio-voltage regulator driver.
62  */
63 struct gpio_regulator_config {
64         const char *supply_name;
65
66         unsigned enabled_at_boot:1;
67         unsigned startup_delay;
68
69         enum gpiod_flags *gflags;
70         int ngpios;
71
72         struct gpio_regulator_state *states;
73         int nr_states;
74
75         enum regulator_type type;
76         struct regulator_init_data *init_data;
77 };
78
79 #endif