1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
<table class="head">
<tr>
<td class="head-ltitle">REGULATOR(9)</td>
<td class="head-vol">Kernel Developer's Manual</td>
<td class="head-rtitle">REGULATOR(9)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">regulator</code>,
<code class="Nm">regulator_get_by_name</code>,
<code class="Nm">regulator_get_by_id</code>,
<code class="Nm">regulator_release</code>,
<code class="Nm">regulator_get_name</code>,
<code class="Nm">regulator_enable</code>,
<code class="Nm">regulator_disable</code>,
<code class="Nm">regulator_stop</code>,
<code class="Nm">regulator_status</code>,
<code class="Nm">regulator_get_voltage</code>,
<code class="Nm">regulator_set_voltage</code>,
<code class="Nm">regulator_check_voltage</code>,
<code class="Nm">regulator_get_by_ofw_property</code> —
<span class="Nd">regulator methods</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="Cd">device regulator</code>
<br/>
<code class="In">#include
<<a class="In">dev/extres/regulator/regulator.h</a>></code></p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_get_by_name</code>(<var class="Fa" style="white-space: nowrap;">device_t
cdev</var>, <var class="Fa" style="white-space: nowrap;">const char
*name</var>, <var class="Fa" style="white-space: nowrap;">regulator_t
*regulator</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_get_by_id</code>(<var class="Fa" style="white-space: nowrap;">device_t
cdev</var>, <var class="Fa" style="white-space: nowrap;">device_t
pdev</var>, <var class="Fa" style="white-space: nowrap;">intptr_t id</var>,
<var class="Fa" style="white-space: nowrap;">regulator_t
*regulator</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_release</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
regulator</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_get_name</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
regulator</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_enable</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_disable</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_stop</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_status</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>, <var class="Fa" style="white-space: nowrap;">int
*status</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_get_voltage</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>, <var class="Fa" style="white-space: nowrap;">int
*uvolt</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_set_voltage</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>, <var class="Fa" style="white-space: nowrap;">int min_uvolt</var>,
<var class="Fa" style="white-space: nowrap;">int max_uvolt</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_check_voltage</code>(<var class="Fa" style="white-space: nowrap;">regulator_t
reg</var>, <var class="Fa" style="white-space: nowrap;">int
uvolt</var>);</p>
<p class="Pp"><var class="Ft">int</var>
<br/>
<code class="Fn">regulator_get_by_ofw_property</code>(<var class="Fa" style="white-space: nowrap;">device_t
dev</var>, <var class="Fa" style="white-space: nowrap;">phandle_t
node</var>, <var class="Fa" style="white-space: nowrap;">char *name</var>,
<var class="Fa" style="white-space: nowrap;">regulator_t *reg</var>);</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The regulator framework allow drivers to enable, disable and
change regulator voltage.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="RETURN_VALUES"><a class="permalink" href="#RETURN_VALUES">RETURN
VALUES</a></h1>
<p class="Pp">All functions returns 0 on success or
<code class="Er">ENODEV</code> if the regulator or one of its parent was not
found.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="INTERFACE"><a class="permalink" href="#INTERFACE">INTERFACE</a></h1>
<dl class="Bl-tag">
<dt id="regulator_get_by_name"><a class="permalink" href="#regulator_get_by_name"><code class="Fn">regulator_get_by_name</code></a>(<var class="Fa">device_t
cdev</var>, <var class="Fa">const char *name</var>,
<var class="Fa">regulator_t *regulator</var>)</dt>
<dd>Resolve a regulator based on its name. All regulators names are unique.
This will also increment the refcount on the regulator.</dd>
<dt id="regulator_get_by_id"><a class="permalink" href="#regulator_get_by_id"><code class="Fn">regulator_get_by_id</code></a>(<var class="Fa">device_t
cdev</var>, <var class="Fa">device_t pdev</var>, <var class="Fa">intptr_t
id</var>, <var class="Fa">regulator_t *regulator</var>)</dt>
<dd>Resolve a regulator based on its id. All regulators ids are unique. This
will also increment the refcount on the regulator.</dd>
<dt id="regulator_get_by_ofw_property"><a class="permalink" href="#regulator_get_by_ofw_property"><code class="Fn">regulator_get_by_ofw_property</code></a>(<var class="Fa">device_t
dev</var>, <var class="Fa">phandle_t node</var>, <var class="Fa">char
*name</var>, <var class="Fa">regulator_t *reg</var>)</dt>
<dd>Resolve a regulator based on the fdt property named name. If node is 0
then the function will get the ofw node itself. This will also increment
the refcount on the regulator. Returns 0 on success or
<code class="Er">ENOENT</code> if the ofw property does not exists.</dd>
<dt id="regulator_release"><a class="permalink" href="#regulator_release"><code class="Fn">regulator_release</code></a>(<var class="Fa">regulator_t
regulator</var>)</dt>
<dd>This disables the regulator, decrements the refcount on it and frees the
regulator variable passed.</dd>
<dt id="regulator_get_name"><a class="permalink" href="#regulator_get_name"><code class="Fn">regulator_get_name</code></a>(<var class="Fa">regulator_t
regulator</var>)</dt>
<dd>Returns the name of the regulator. All regulator names are unique.</dd>
<dt id="regulator_enable"><a class="permalink" href="#regulator_enable"><code class="Fn">regulator_enable</code></a>(<var class="Fa">regulator_t
reg</var>)</dt>
<dd>Enable the regulator. If the regulator supports a voltage range, the one
configured in the hardware will be the output voltage. If the regulator
was already enabled by another driver this simply increments the enable
counter.</dd>
<dt id="regulator_disable"><a class="permalink" href="#regulator_disable"><code class="Fn">regulator_disable</code></a>(<var class="Fa">regulator_t
reg</var>)</dt>
<dd>Disable the regulator. If the regulator was also enabled by another driver
this simply decrements the enable counter. If the regulator was not
previously enabled we will kassert.</dd>
<dt id="regulator_stop"><a class="permalink" href="#regulator_stop"><code class="Fn">regulator_stop</code></a>(<var class="Fa">regulator_t
reg</var>)</dt>
<dd>Disable the regulator in hardware. This ensures the regulator is disabled
even if it was enabled by bootloader. This should not be called on
regulator that has previously been enabled by a driver. Returns 0 on
success or <code class="Er">EBUSY</code> if another consumer enabled
it.</dd>
<dt id="regulator_status"><a class="permalink" href="#regulator_status"><code class="Fn">regulator_status</code></a>(<var class="Fa">regulator_t
reg</var>, <var class="Fa">int *status</var>)</dt>
<dd>Get the hardware status of the regulator. status will contain a bit mask
with thoses possible value :
<dl class="Bl-tag">
<dt>REGULATOR_STATUS_ENABLED</dt>
<dd>The regulator is enabled.</dd>
<dt>REGULATOR_STATUS_OVERCURRENT</dt>
<dd>The hardware reports that too much current is being drawn.</dd>
</dl>
</dd>
<dt id="regulator_get_voltage"><a class="permalink" href="#regulator_get_voltage"><code class="Fn">regulator_get_voltage</code></a>(<var class="Fa">regulator_t
reg</var>, <var class="Fa">int *uvolt</var>)</dt>
<dd>Get the current voltage set for the regulator in microvolts.</dd>
<dt id="regulator_set_voltage"><a class="permalink" href="#regulator_set_voltage"><code class="Fn">regulator_set_voltage</code></a>(<var class="Fa">regulator_t
reg</var>, <var class="Fa">int min_uvolt</var>, <var class="Fa">int
max_uvolt</var>)</dt>
<dd>Change the voltage for the regulator. If a range is acceptable by the
hardware or driver different values can be provided as min and max.
Returns 0 on success or <code class="Er">ERANGE</code> if the regulator
doesn't support this voltage range.</dd>
<dt id="regulator_check_voltage"><a class="permalink" href="#regulator_check_voltage"><code class="Fn">regulator_check_voltage</code></a>(<var class="Fa">regulator_t
reg</var>, <var class="Fa">int uvolt</var>)</dt>
<dd>Checks if the regulator support the given voltage. Returns 0 on success or
<code class="Er">ERANGE</code> if the regulator doesn't support this
voltage range.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">regulator</code> framework first appear in
<span class="Ux">FreeBSD 12.0</span>. The <code class="Nm">regulator</code>
framework was written by <span class="An">Michal Meloun</span>
<<a class="Mt" href="mailto:mmel@FreeBSD.org">mmel@FreeBSD.org</a>>.
The <code class="Nm">regulator</code> manual page was written by
<span class="An">Emmanuel Vadot</span>
<<a class="Mt" href="mailto:manu@FreeBSD.org">manu@FreeBSD.org</a>>.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">June 14, 2021</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|