diff options
Diffstat (limited to 'static/freebsd/man4/spigen.4 3.html')
| -rw-r--r-- | static/freebsd/man4/spigen.4 3.html | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/static/freebsd/man4/spigen.4 3.html b/static/freebsd/man4/spigen.4 3.html new file mode 100644 index 00000000..4ef64742 --- /dev/null +++ b/static/freebsd/man4/spigen.4 3.html @@ -0,0 +1,186 @@ +<table class="head"> + <tr> + <td class="head-ltitle">SPIGEN(4)</td> + <td class="head-vol">Device Drivers Manual</td> + <td class="head-rtitle">SPIGEN(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">spigen</code> — <span class="Nd">SPI + generic I/O device driver</span></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> +<p class="Pp">To compile this driver into the kernel, place the following lines + in your kernel configuration file:</p> +<div class="Bd Pp Bd-indent"><code class="Cd">device spi</code> +<br/> +<code class="Cd">device spibus</code> +<br/> +<code class="Cd">device spigen</code></div> +<p class="Pp">Alternatively, to load the driver as a module at boot time, place + the following line in <a class="Xr">loader.conf(5)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>spigen_load="YES"</pre> +</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">spigen</code> driver provides direct access + to a slave device on the SPI bus. Each instance of a + <code class="Nm">spigen</code> device is associated with a single + chip-select line on the bus, and all I/O performed through that instance is + done with that chip-select line asserted.</p> +<p class="Pp">SPI data transfers are inherently bi-directional; there are no + separate read and write operations. When commands and data are sent to a + device, data also comes back from the device, although in some cases the + data may not be useful (or even documented or predictable for some devices). + Likewise on a read operation, whatever data is in the buffer at the start of + the operation is sent to (and typically ignored by) the device, with each + outgoing byte then replaced in the buffer by the corresponding incoming + byte. Thus, all buffers passed to the transfer functions are both input and + output buffers.</p> +<p class="Pp">The <code class="Nm">spigen</code> driver provides access to the + SPI slave device with the following <a class="Xr">ioctl(2)</a> calls, + defined in + <code class="In"><<a class="In">sys/spigenio.h</a>></code>:</p> +<dl class="Bl-tag"> + <dt id="SPIGENIOC_TRANSFER"><a class="permalink" href="#SPIGENIOC_TRANSFER"><code class="Dv">SPIGENIOC_TRANSFER</code></a> + (<var class="Vt">struct spigen_transfer</var>)</dt> + <dd>Transfer a command and optional associated data to/from the device, using + the buffers described by the st_command and st_data fields in the + <var class="Vt">spigen_transfer</var>. Set + <var class="Vt">st_data.iov_len</var> to zero if there is no data + associated with the command. + <div class="Bd Pp Li"> + <pre>struct spigen_transfer { + struct iovec st_command; + struct iovec st_data; +};</pre> + </div> + </dd> + <dt id="SPIGENIOC_TRANSFER_MMAPPED"><a class="permalink" href="#SPIGENIOC_TRANSFER_MMAPPED"><code class="Dv">SPIGENIOC_TRANSFER_MMAPPED</code></a> + (<var class="Vt">spigen_transfer_mmapped</var>)</dt> + <dd>Transfer a command and optional associated data to/from the device. The + buffers for the transfer are a previously-mmap'd region. The length of the + command and data within that region are described by the + <var class="Vt">stm_command_length</var> and + <var class="Vt">stm_data_length</var> fields of + <var class="Vt">spigen_transfer_mmapped</var>. If + <var class="Vt">stm_data_length</var> is non-zero, the data appears in the + memory region immediately following the command (that is, at offset + <var class="Vt">stm_command_length</var> from the start of the mapped + region). + <div class="Bd Pp Li"> + <pre>struct spigen_transfer_mmapped { + size_t stm_command_length; + size_t stm_data_length; +};</pre> + </div> + </dd> + <dt id="SPIGENIOC_GET_CLOCK_SPEED"><a class="permalink" href="#SPIGENIOC_GET_CLOCK_SPEED"><code class="Dv">SPIGENIOC_GET_CLOCK_SPEED</code></a> + (<var class="Vt">uint32_t</var>)</dt> + <dd>Get the maximum clock speed (bus frequency in Hertz) to be used when + communicating with this slave device.</dd> + <dt id="SPIGENIOC_SET_CLOCK_SPEED"><a class="permalink" href="#SPIGENIOC_SET_CLOCK_SPEED"><code class="Dv">SPIGENIOC_SET_CLOCK_SPEED</code></a> + (<var class="Vt">uint32_t</var>)</dt> + <dd>Set the maximum clock speed (bus frequency in Hertz) to be used when + communicating with this slave device. The setting remains in effect for + subsequent transfers; it is not necessary to reset this before each + transfer. The actual bus frequency may be lower due to hardware + limitations of the SPI bus controller device.</dd> + <dt id="SPIGENIOC_GET_SPI_MODE"><a class="permalink" href="#SPIGENIOC_GET_SPI_MODE"><code class="Dv">SPIGENIOC_GET_SPI_MODE</code></a> + (<var class="Vt">uint32_t</var>)</dt> + <dd>Get the SPI mode (clock polarity and phase) to be used when communicating + with this device.</dd> + <dt id="SPIGENIOC_SET_SPI_MODE"><a class="permalink" href="#SPIGENIOC_SET_SPI_MODE"><code class="Dv">SPIGENIOC_SET_SPI_MODE</code></a> + (<var class="Vt">uint32_t</var>)</dt> + <dd>Set the SPI mode (clock polarity and phase) to be used when communicating + with this device. The setting remains in effect for subsequent transfers; + it is not necessary to reset this before each transfer.</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="HINTS_CONFIGURATION"><a class="permalink" href="#HINTS_CONFIGURATION">HINTS + CONFIGURATION</a></h1> +<p class="Pp">On a <a class="Xr">device.hints(5)</a> based system, such as + <code class="Li">MIPS</code>, these values are configurable for + <code class="Nm">spigen</code>:</p> +<dl class="Bl-tag"> + <dt id="hint.spigen._d.at"><var class="Va">hint.spigen.%d.at</var></dt> + <dd>The spibus the <code class="Nm">spigen</code> instance is attached + to.</dd> + <dt id="hint.spigen._d.clock"><var class="Va">hint.spigen.%d.clock</var></dt> + <dd>The maximum bus frequency to use when communicating with this device. + Actual bus speed may be lower, depending on the capabilities of the SPI + bus controller hardware.</dd> + <dt id="hint.spigen._d.cs"><var class="Va">hint.spigen.%d.cs</var></dt> + <dd>The chip-select number to assert when performing I/O for this device. Set + the high bit (1 << 31) to invert the logic level of the chip select + line.</dd> + <dt id="hint.spigen._d.mode"><var class="Va">hint.spigen.%d.mode</var></dt> + <dd>The SPI mode (0-3) to use when communicating with this device.</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="FDT_CONFIGURATION"><a class="permalink" href="#FDT_CONFIGURATION">FDT + CONFIGURATION</a></h1> +<p class="Pp">On an <a class="Xr">fdt(4)</a> based system, the spigen device is + defined as a slave device subnode of the SPI bus controller node. All + properties documented in the <var class="Va">spibus.txt</var> bindings + document can be used with the <code class="Nm">spigen</code> device. The + most commonly-used ones are documented below.</p> +<p class="Pp">The following properties are required in the + <code class="Nm">spigen</code> device subnode:</p> +<dl class="Bl-tag"> + <dt id="compatible"><var class="Va">compatible</var></dt> + <dd>Must be the string "freebsd,spigen".</dd> + <dt id="reg"><var class="Va">reg</var></dt> + <dd>Chip select address of device.</dd> + <dt id="spi-max-frequency"><var class="Va">spi-max-frequency</var></dt> + <dd>The maximum bus frequency to use when communicating with this slave + device. Actual bus speed may be lower, depending on the capabilities of + the SPI bus controller hardware.</dd> +</dl> +<p class="Pp">The following properties are optional for the + <code class="Nm">spigen</code> device subnode:</p> +<dl class="Bl-tag"> + <dt id="spi-cpha"><var class="Va">spi-cpha</var></dt> + <dd>Empty property indicating the slave device requires shifted clock phase + (CPHA) mode.</dd> + <dt id="spi-cpol"><var class="Va">spi-cpol</var></dt> + <dd>Empty property indicating the slave device requires inverse clock polarity + (CPOL) mode.</dd> + <dt id="spi-cs-high"><var class="Va">spi-cs-high</var></dt> + <dd>Empty property indicating the slave device requires chip select active + high.</dd> +</dl> +</section> +<section class="Sh"> +<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1> +<dl class="Bl-tag"> + <dt><span class="Pa">/dev/spigen*</span></dt> + <dd style="width: auto;"> </dd> +</dl> +</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">fdt(4)</a>, <a class="Xr">device.hints(5)</a>, + <a class="Xr">spi(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">spigen</code> driver appeared in + <span class="Ux">FreeBSD 11.0</span>. FDT support appeared in + <span class="Ux">FreeBSD 11.2</span>.</p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">August 21, 2020</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
