summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/gpio.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/gpio.4 3.html')
-rw-r--r--static/freebsd/man4/gpio.4 3.html148
1 files changed, 148 insertions, 0 deletions
diff --git a/static/freebsd/man4/gpio.4 3.html b/static/freebsd/man4/gpio.4 3.html
new file mode 100644
index 00000000..7e024634
--- /dev/null
+++ b/static/freebsd/man4/gpio.4 3.html
@@ -0,0 +1,148 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">GPIO(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">GPIO(4)</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">gpiobus</code> &#x2014; <span class="Nd">GPIO bus
+ system</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<p class="Pp">To compile these devices into your kernel and use the device
+ hints, place the following lines in your kernel configuration file:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">device gpio</code>
+<br/>
+<code class="Cd">device gpioiic</code>
+<br/>
+<code class="Cd">device gpioled</code></div>
+<p class="Pp">Additional device entries for the <code class="Li">ARM</code>
+ architecture include:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">device a10_gpio</code>
+<br/>
+<code class="Cd">device bcm_gpio</code>
+<br/>
+<code class="Cd">device imx51_gpio</code>
+<br/>
+<code class="Cd">device lpcgpio</code>
+<br/>
+<code class="Cd">device mv_gpio</code>
+<br/>
+<code class="Cd">device ti_gpio</code>
+<br/>
+<code class="Cd">device gpio_avila</code>
+<br/>
+<code class="Cd">device gpio_cambria</code>
+<br/>
+<code class="Cd">device zy7_gpio</code>
+<br/>
+<code class="Cd">device pxagpio</code></div>
+<p class="Pp">Additional device entries for the <code class="Li">MIPS</code>
+ architecture include:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">device ar71xxx_gpio</code>
+<br/>
+<code class="Cd">device octeon_gpio</code>
+<br/>
+<code class="Cd">device rt305_gpio</code></div>
+<p class="Pp">Additional device entries for the <code class="Li">POWERPC</code>
+ architecture include:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">device wiigpio</code>
+<br/>
+<code class="Cd">device macgpio</code></div>
+<p class="Pp">Additional device entries for the <code class="Li">RISC-V</code>
+ architecture include:</p>
+<div class="Bd Pp Bd-indent"><code class="Cd">device sifive_gpio</code></div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The <code class="Nm">gpiobus</code> system provides a simple
+ interface to the GPIO pins that are usually available on embedded
+ architectures and can provide bit banging style devices to the system.</p>
+<p class="Pp">The acronym <code class="Li">GPIO</code> means
+ &#x201C;General-Purpose Input/Output.&#x201D;</p>
+<p class="Pp" id="iicbus">The BUS physically consists of multiple pins that can
+ be configured for input/output, IRQ delivery, SDA/SCL
+ <a class="permalink" href="#iicbus"><i class="Em">iicbus</i></a> use,
+ etc.</p>
+<p class="Pp">On some embedded architectures (like MIPS), discovery of the bus
+ and configuration of the pins is done via <a class="Xr">device.hints(5)</a>
+ in the platform's kernel <a class="Xr">config(5)</a> file.</p>
+<p class="Pp">On some others (like ARM), where <a class="Xr">FDT(4)</a> is used
+ to describe the device tree, the bus discovery is done via the DTS passed to
+ the kernel, being either statically compiled in, or by a variety of ways
+ where the boot loader (or Open Firmware enabled system) passes the DTS blob
+ to the kernel at boot.</p>
+<p class="Pp">On a <a class="Xr">device.hints(5)</a> based system these hints
+ can be used to configure drivers for devices attached to
+ <code class="Nm">gpiobus</code> pins:</p>
+<dl class="Bl-tag">
+ <dt id="hint.driver.unit.at"><var class="Va">hint.driver.unit.at</var></dt>
+ <dd>The <code class="Nm">gpiobus</code> where the device is attached. For
+ example, &quot;gpiobus0&quot;. <var class="Ar">driver</var> and
+ <var class="Ar">unit</var> are the driver name and the unit number for the
+ device driver.</dd>
+ <dt id="hint.driver.unit.pins"><var class="Va">hint.driver.unit.pins</var></dt>
+ <dd>This is a bitmask of the pins on the <code class="Nm">gpiobus</code> that
+ are connected to the device. The pins will be allocated to the specified
+ driver instance. Only pins with numbers from 0 to 31 can be specified
+ using this hint.</dd>
+ <dt id="hint.driver.unit.pin_list"><var class="Va">hint.driver.unit.pin_list</var></dt>
+ <dd>This is a list of pin numbers of pins on the
+ <code class="Nm">gpiobus</code> that are connected to the device. The pins
+ will be allocated to the specified driver instance. This is a more user
+ friendly alternative to the <var class="Ar">pins</var> hint. Additionally,
+ this hint allows specifying pin numbers greater than 31. The numbers can
+ be decimal or hexadecimal with 0x prefix. Any non-digit character can be
+ used as a separator. For example, it can be a comma, a slash or a space.
+ The separator can be followed by any number of space characters.</dd>
+</dl>
+<p class="Pp">The following <a class="Xr">device.hints(5)</a> are only provided
+ by the <code class="Cd">ar71xx_gpio</code> driver:</p>
+<dl class="Bl-tag">
+ <dt id="hint.gpio._d.pinmask"><var class="Va">hint.gpio.%d.pinmask</var></dt>
+ <dd>This is a bitmask of pins on the GPIO board that we would like to expose
+ for use to the host operating system. To expose pin 0, 4 and 7, use the
+ bitmask of 10010001 converted to the hexadecimal value 0x0091.</dd>
+ <dt id="hint.gpio._d.pinon"><var class="Va">hint.gpio.%d.pinon</var></dt>
+ <dd>This is a bitmask of pins on the GPIO board that will be set to ON at host
+ start. To set pin 2, 5 and 13 to be set ON at boot, use the bitmask of
+ 10000000010010 converted to the hexadecimal value 0x2012.</dd>
+ <dt id="hint.gpio.function_set"><var class="Va">hint.gpio.function_set</var></dt>
+ <dd style="width: auto;">&#x00A0;</dd>
+ <dt id="hint.gpio.function_clear"><var class="Va">hint.gpio.function_clear</var></dt>
+ <dd>These are bitmasks of pins that will remap a pin to handle a specific
+ function (USB, UART TX/RX, etc) in the Atheros function registers. This is
+ mainly used to set/clear functions that we need when they are set up or
+ not set up by uBoot.</dd>
+</dl>
+<p class="Pp">Simply put, each pin of the GPIO interface is connected to an
+ input/output of some device in a system.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<p class="Pp"><a class="Xr">gpioiic(4)</a>, <a class="Xr">gpioled(4)</a>,
+ <a class="Xr">iicbus(4)</a>, <a class="Xr">device.hints(5)</a>,
+ <a class="Xr">gpioctl(8)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">The <code class="Nm">gpiobus</code> manual page first appeared in
+ <span class="Ux">FreeBSD 10.0</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<p class="Pp">This manual page was written by <span class="An">Sean Bruno</span>
+ &lt;<a class="Mt" href="mailto:sbruno@FreeBSD.org">sbruno@FreeBSD.org</a>&gt;.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">August 28, 2025</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>