summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/regulator.9 4.html
blob: 7c9a410be8ab7332ec5951689747d1665b37218b (plain)
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> &#x2014;
    <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
    &lt;<a class="In">dev/extres/regulator/regulator.h</a>&gt;</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>
    &lt;<a class="Mt" href="mailto:mmel@FreeBSD.org">mmel@FreeBSD.org</a>&gt;.
    The <code class="Nm">regulator</code> manual page was written by
    <span class="An">Emmanuel Vadot</span>
    &lt;<a class="Mt" href="mailto:manu@FreeBSD.org">manu@FreeBSD.org</a>&gt;.</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>