1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>Linux Device Drivers</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Device Drivers"><link rel="next" href="Basics.html" title="Chapter&#160;1.&#160;Driver Basics"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Linux Device Drivers</th></tr><tr><td width="20%" align="left">&#160;</td><th width="60%" align="center">&#160;</th><td width="20%" align="right">&#160;<a accesskey="n" href="Basics.html">Next</a></td></tr></table><hr></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="LinuxDriversAPI"></a>Linux Device Drivers</h1></div><div><div class="legalnotice"><a name="idp1105183116"></a><p>
2     This documentation is free software; you can redistribute
3     it and/or modify it under the terms of the GNU General Public
4     License as published by the Free Software Foundation; either
5     version 2 of the License, or (at your option) any later
6     version.
7   </p><p>
8     This program is distributed in the hope that it will be
9     useful, but WITHOUT ANY WARRANTY; without even the implied
10     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11     See the GNU General Public License for more details.
12   </p><p>
13     You should have received a copy of the GNU General Public
14     License along with this program; if not, write to the Free
15     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
16     MA 02111-1307 USA
17   </p><p>
18     For more details see the file COPYING in the source
19     distribution of Linux.
20   </p></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="Basics.html">1. Driver Basics</a></span></dt><dd><dl><dt><span class="sect1"><a href="Basics.html#idp1105204404">Driver Entry and Exit points</a></span></dt><dt><span class="sect1"><a href="ch01s02.html">Atomic and pointer manipulation</a></span></dt><dt><span class="sect1"><a href="ch01s03.html">Delaying, scheduling, and timer routines</a></span></dt><dt><span class="sect1"><a href="ch01s04.html">Wait queues and Wake events</a></span></dt><dt><span class="sect1"><a href="ch01s05.html">High-resolution timers</a></span></dt><dt><span class="sect1"><a href="ch01s06.html">Workqueues and Kevents</a></span></dt><dt><span class="sect1"><a href="ch01s07.html">Internal Functions</a></span></dt><dt><span class="sect1"><a href="ch01s08.html">Kernel objects manipulation</a></span></dt><dt><span class="sect1"><a href="ch01s09.html">Kernel utility functions</a></span></dt><dt><span class="sect1"><a href="ch01s10.html">Device Resource Management</a></span></dt></dl></dd><dt><span class="chapter"><a href="devdrivers.html">2. Device drivers infrastructure</a></span></dt><dd><dl><dt><span class="sect1"><a href="devdrivers.html#idp1109043876">The Basic Device Driver-Model Structures </a></span></dt><dt><span class="sect1"><a href="ch02s02.html">Device Drivers Base</a></span></dt><dt><span class="sect1"><a href="ch02s03.html">Device Drivers DMA Management</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">Device Drivers Power Management</a></span></dt><dt><span class="sect1"><a href="ch02s05.html">Device Drivers ACPI Support</a></span></dt><dt><span class="sect1"><a href="ch02s06.html">Device drivers PnP support</a></span></dt><dt><span class="sect1"><a href="ch02s07.html">Userspace IO devices</a></span></dt></dl></dd><dt><span class="chapter"><a href="parportdev.html">3. Parallel Port Devices</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-parport-yield.html"><span class="phrase">parport_yield</span></a></span><span class="refpurpose"> &#8212; 
21  relinquish a parallel port temporarily
22 </span></dt><dt><span class="refentrytitle"><a href="API-parport-yield-blocking.html"><span class="phrase">parport_yield_blocking</span></a></span><span class="refpurpose"> &#8212; 
23     relinquish a parallel port temporarily
24 </span></dt><dt><span class="refentrytitle"><a href="API-parport-wait-event.html"><span class="phrase">parport_wait_event</span></a></span><span class="refpurpose"> &#8212; 
25  wait for an event on a parallel port
26 </span></dt><dt><span class="refentrytitle"><a href="API-parport-wait-peripheral.html"><span class="phrase">parport_wait_peripheral</span></a></span><span class="refpurpose"> &#8212; 
27     wait for status lines to change in 35ms
28 </span></dt><dt><span class="refentrytitle"><a href="API-parport-negotiate.html"><span class="phrase">parport_negotiate</span></a></span><span class="refpurpose"> &#8212; 
29     negotiate an IEEE 1284 mode
30 </span></dt><dt><span class="refentrytitle"><a href="API-parport-write.html"><span class="phrase">parport_write</span></a></span><span class="refpurpose"> &#8212; 
31     write a block of data to a parallel port
32 </span></dt><dt><span class="refentrytitle"><a href="API-parport-read.html"><span class="phrase">parport_read</span></a></span><span class="refpurpose"> &#8212; 
33     read a block of data from a parallel port
34 </span></dt><dt><span class="refentrytitle"><a href="API-parport-set-timeout.html"><span class="phrase">parport_set_timeout</span></a></span><span class="refpurpose"> &#8212; 
35     set the inactivity timeout for a device
36 </span></dt><dt><span class="refentrytitle"><a href="API-parport-register-driver.html"><span class="phrase">parport_register_driver</span></a></span><span class="refpurpose"> &#8212; 
37  register a parallel port device driver
38 </span></dt><dt><span class="refentrytitle"><a href="API-parport-unregister-driver.html"><span class="phrase">parport_unregister_driver</span></a></span><span class="refpurpose"> &#8212; 
39     deregister a parallel port device driver
40 </span></dt><dt><span class="refentrytitle"><a href="API-parport-get-port.html"><span class="phrase">parport_get_port</span></a></span><span class="refpurpose"> &#8212; 
41     increment a port's reference count
42 </span></dt><dt><span class="refentrytitle"><a href="API-parport-put-port.html"><span class="phrase">parport_put_port</span></a></span><span class="refpurpose"> &#8212; 
43     decrement a port's reference count
44 </span></dt><dt><span class="refentrytitle"><a href="API-parport-register-port.html"><span class="phrase">parport_register_port</span></a></span><span class="refpurpose"> &#8212; 
45     register a parallel port
46 </span></dt><dt><span class="refentrytitle"><a href="API-parport-announce-port.html"><span class="phrase">parport_announce_port</span></a></span><span class="refpurpose"> &#8212; 
47     tell device drivers about a parallel port
48 </span></dt><dt><span class="refentrytitle"><a href="API-parport-remove-port.html"><span class="phrase">parport_remove_port</span></a></span><span class="refpurpose"> &#8212; 
49     deregister a parallel port
50 </span></dt><dt><span class="refentrytitle"><a href="API-parport-register-device.html"><span class="phrase">parport_register_device</span></a></span><span class="refpurpose"> &#8212; 
51     register a device on a parallel port
52 </span></dt><dt><span class="refentrytitle"><a href="API-parport-unregister-device.html"><span class="phrase">parport_unregister_device</span></a></span><span class="refpurpose"> &#8212; 
53     deregister a device on a parallel port
54 </span></dt><dt><span class="refentrytitle"><a href="API-parport-find-number.html"><span class="phrase">parport_find_number</span></a></span><span class="refpurpose"> &#8212; 
55     find a parallel port by number
56 </span></dt><dt><span class="refentrytitle"><a href="API-parport-find-base.html"><span class="phrase">parport_find_base</span></a></span><span class="refpurpose"> &#8212; 
57     find a parallel port by base address
58 </span></dt><dt><span class="refentrytitle"><a href="API-parport-claim.html"><span class="phrase">parport_claim</span></a></span><span class="refpurpose"> &#8212; 
59     claim access to a parallel port device
60 </span></dt><dt><span class="refentrytitle"><a href="API-parport-claim-or-block.html"><span class="phrase">parport_claim_or_block</span></a></span><span class="refpurpose"> &#8212; 
61     claim access to a parallel port device
62 </span></dt><dt><span class="refentrytitle"><a href="API-parport-release.html"><span class="phrase">parport_release</span></a></span><span class="refpurpose"> &#8212; 
63     give up access to a parallel port device
64 </span></dt><dt><span class="refentrytitle"><a href="API-parport-open.html"><span class="phrase">parport_open</span></a></span><span class="refpurpose"> &#8212; 
65  find a device by canonical device number
66 </span></dt><dt><span class="refentrytitle"><a href="API-parport-close.html"><span class="phrase">parport_close</span></a></span><span class="refpurpose"> &#8212; 
67     close a device opened with <code class="function">parport_open</code>
68 </span></dt></dl></dd><dt><span class="chapter"><a href="message_devices.html">4. Message-based devices</a></span></dt><dd><dl><dt><span class="sect1"><a href="message_devices.html#idp1111130356">Fusion message devices</a></span></dt></dl></dd><dt><span class="chapter"><a href="snddev.html">5. Sound Devices</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-snd-printk.html"><span class="phrase">snd_printk</span></a></span><span class="refpurpose"> &#8212; 
69  printk wrapper
70 </span></dt><dt><span class="refentrytitle"><a href="API-snd-printd.html"><span class="phrase">snd_printd</span></a></span><span class="refpurpose"> &#8212; 
71     debug printk
72 </span></dt><dt><span class="refentrytitle"><a href="API-snd-BUG.html"><span class="phrase">snd_BUG</span></a></span><span class="refpurpose"> &#8212; 
73     give a BUG warning message and stack trace
74 </span></dt><dt><span class="refentrytitle"><a href="API-snd-printd-ratelimit.html"><span class="phrase">snd_printd_ratelimit</span></a></span><span class="refpurpose"> &#8212; 
75   </span></dt><dt><span class="refentrytitle"><a href="API-snd-BUG-ON.html"><span class="phrase">snd_BUG_ON</span></a></span><span class="refpurpose"> &#8212; 
76     debugging check macro
77 </span></dt><dt><span class="refentrytitle"><a href="API-snd-printdd.html"><span class="phrase">snd_printdd</span></a></span><span class="refpurpose"> &#8212; 
78     debug printk
79 </span></dt><dt><span class="refentrytitle"><a href="API-register-sound-special-device.html"><span class="phrase">register_sound_special_device</span></a></span><span class="refpurpose"> &#8212; 
80  register a special sound node
81 </span></dt><dt><span class="refentrytitle"><a href="API-register-sound-mixer.html"><span class="phrase">register_sound_mixer</span></a></span><span class="refpurpose"> &#8212; 
82     register a mixer device
83 </span></dt><dt><span class="refentrytitle"><a href="API-register-sound-midi.html"><span class="phrase">register_sound_midi</span></a></span><span class="refpurpose"> &#8212; 
84     register a midi device
85 </span></dt><dt><span class="refentrytitle"><a href="API-register-sound-dsp.html"><span class="phrase">register_sound_dsp</span></a></span><span class="refpurpose"> &#8212; 
86     register a DSP device
87 </span></dt><dt><span class="refentrytitle"><a href="API-unregister-sound-special.html"><span class="phrase">unregister_sound_special</span></a></span><span class="refpurpose"> &#8212; 
88     unregister a special sound device
89 </span></dt><dt><span class="refentrytitle"><a href="API-unregister-sound-mixer.html"><span class="phrase">unregister_sound_mixer</span></a></span><span class="refpurpose"> &#8212; 
90     unregister a mixer
91 </span></dt><dt><span class="refentrytitle"><a href="API-unregister-sound-midi.html"><span class="phrase">unregister_sound_midi</span></a></span><span class="refpurpose"> &#8212; 
92     unregister a midi device
93 </span></dt><dt><span class="refentrytitle"><a href="API-unregister-sound-dsp.html"><span class="phrase">unregister_sound_dsp</span></a></span><span class="refpurpose"> &#8212; 
94     unregister a DSP device
95 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-linked.html"><span class="phrase">snd_pcm_stream_linked</span></a></span><span class="refpurpose"> &#8212; 
96  Check whether the substream is linked with others
97 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-lock-irqsave.html"><span class="phrase">snd_pcm_stream_lock_irqsave</span></a></span><span class="refpurpose"> &#8212; 
98     Lock the PCM stream
99 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-group-for-each-entry.html"><span class="phrase">snd_pcm_group_for_each_entry</span></a></span><span class="refpurpose"> &#8212; 
100     iterate over the linked substreams
101 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-running.html"><span class="phrase">snd_pcm_running</span></a></span><span class="refpurpose"> &#8212; 
102     Check whether the substream is in a running state
103 </span></dt><dt><span class="refentrytitle"><a href="API-bytes-to-samples.html"><span class="phrase">bytes_to_samples</span></a></span><span class="refpurpose"> &#8212; 
104     Unit conversion of the size from bytes to samples
105 </span></dt><dt><span class="refentrytitle"><a href="API-bytes-to-frames.html"><span class="phrase">bytes_to_frames</span></a></span><span class="refpurpose"> &#8212; 
106     Unit conversion of the size from bytes to frames
107 </span></dt><dt><span class="refentrytitle"><a href="API-samples-to-bytes.html"><span class="phrase">samples_to_bytes</span></a></span><span class="refpurpose"> &#8212; 
108     Unit conversion of the size from samples to bytes
109 </span></dt><dt><span class="refentrytitle"><a href="API-frames-to-bytes.html"><span class="phrase">frames_to_bytes</span></a></span><span class="refpurpose"> &#8212; 
110     Unit conversion of the size from frames to bytes
111 </span></dt><dt><span class="refentrytitle"><a href="API-frame-aligned.html"><span class="phrase">frame_aligned</span></a></span><span class="refpurpose"> &#8212; 
112     Check whether the byte size is aligned to frames
113 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-buffer-bytes.html"><span class="phrase">snd_pcm_lib_buffer_bytes</span></a></span><span class="refpurpose"> &#8212; 
114     Get the buffer size of the current PCM in bytes
115 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-period-bytes.html"><span class="phrase">snd_pcm_lib_period_bytes</span></a></span><span class="refpurpose"> &#8212; 
116     Get the period size of the current PCM in bytes
117 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-playback-avail.html"><span class="phrase">snd_pcm_playback_avail</span></a></span><span class="refpurpose"> &#8212; 
118     Get the available (writable) space for playback
119 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-capture-avail.html"><span class="phrase">snd_pcm_capture_avail</span></a></span><span class="refpurpose"> &#8212; 
120     Get the available (readable) space for capture
121 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-playback-hw-avail.html"><span class="phrase">snd_pcm_playback_hw_avail</span></a></span><span class="refpurpose"> &#8212; 
122     Get the queued space for playback
123 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-capture-hw-avail.html"><span class="phrase">snd_pcm_capture_hw_avail</span></a></span><span class="refpurpose"> &#8212; 
124     Get the free space for capture
125 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-playback-ready.html"><span class="phrase">snd_pcm_playback_ready</span></a></span><span class="refpurpose"> &#8212; 
126     check whether the playback buffer is available
127 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-capture-ready.html"><span class="phrase">snd_pcm_capture_ready</span></a></span><span class="refpurpose"> &#8212; 
128     check whether the capture buffer is available
129 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-playback-data.html"><span class="phrase">snd_pcm_playback_data</span></a></span><span class="refpurpose"> &#8212; 
130     check whether any data exists on the playback buffer
131 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-playback-empty.html"><span class="phrase">snd_pcm_playback_empty</span></a></span><span class="refpurpose"> &#8212; 
132     check whether the playback buffer is empty
133 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-capture-empty.html"><span class="phrase">snd_pcm_capture_empty</span></a></span><span class="refpurpose"> &#8212; 
134     check whether the capture buffer is empty
135 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-trigger-done.html"><span class="phrase">snd_pcm_trigger_done</span></a></span><span class="refpurpose"> &#8212; 
136     Mark the master substream
137 </span></dt><dt><span class="refentrytitle"><a href="API-params-channels.html"><span class="phrase">params_channels</span></a></span><span class="refpurpose"> &#8212; 
138     Get the number of channels from the hw params
139 </span></dt><dt><span class="refentrytitle"><a href="API-params-rate.html"><span class="phrase">params_rate</span></a></span><span class="refpurpose"> &#8212; 
140     Get the sample rate from the hw params
141 </span></dt><dt><span class="refentrytitle"><a href="API-params-period-size.html"><span class="phrase">params_period_size</span></a></span><span class="refpurpose"> &#8212; 
142     Get the period size (in frames) from the hw params
143 </span></dt><dt><span class="refentrytitle"><a href="API-params-periods.html"><span class="phrase">params_periods</span></a></span><span class="refpurpose"> &#8212; 
144     Get the number of periods from the hw params
145 </span></dt><dt><span class="refentrytitle"><a href="API-params-buffer-size.html"><span class="phrase">params_buffer_size</span></a></span><span class="refpurpose"> &#8212; 
146     Get the buffer size (in frames) from the hw params
147 </span></dt><dt><span class="refentrytitle"><a href="API-params-buffer-bytes.html"><span class="phrase">params_buffer_bytes</span></a></span><span class="refpurpose"> &#8212; 
148     Get the buffer size (in bytes) from the hw params
149 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-format-cpu-endian.html"><span class="phrase">snd_pcm_format_cpu_endian</span></a></span><span class="refpurpose"> &#8212; 
150     Check the PCM format is CPU-endian
151 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-set-runtime-buffer.html"><span class="phrase">snd_pcm_set_runtime_buffer</span></a></span><span class="refpurpose"> &#8212; 
152     Set the PCM runtime buffer
153 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-gettime.html"><span class="phrase">snd_pcm_gettime</span></a></span><span class="refpurpose"> &#8212; 
154     Fill the timespec depending on the timestamp mode
155 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-alloc-vmalloc-buffer.html"><span class="phrase">snd_pcm_lib_alloc_vmalloc_buffer</span></a></span><span class="refpurpose"> &#8212; 
156     allocate virtual DMA buffer
157 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-alloc-vmalloc-32-buffer.html"><span class="phrase">snd_pcm_lib_alloc_vmalloc_32_buffer</span></a></span><span class="refpurpose"> &#8212; 
158     allocate 32-bit-addressable buffer
159 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-sgbuf-get-addr.html"><span class="phrase">snd_pcm_sgbuf_get_addr</span></a></span><span class="refpurpose"> &#8212; 
160     Get the DMA address at the corresponding offset
161 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-sgbuf-get-ptr.html"><span class="phrase">snd_pcm_sgbuf_get_ptr</span></a></span><span class="refpurpose"> &#8212; 
162     Get the virtual address at the corresponding offset
163 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-sgbuf-get-chunk-size.html"><span class="phrase">snd_pcm_sgbuf_get_chunk_size</span></a></span><span class="refpurpose"> &#8212; 
164     Compute the max size that fits within the contig. page from the given size
165 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-mmap-data-open.html"><span class="phrase">snd_pcm_mmap_data_open</span></a></span><span class="refpurpose"> &#8212; 
166     increase the mmap counter
167 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-mmap-data-close.html"><span class="phrase">snd_pcm_mmap_data_close</span></a></span><span class="refpurpose"> &#8212; 
168     decrease the mmap counter
169 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-limit-isa-dma-size.html"><span class="phrase">snd_pcm_limit_isa_dma_size</span></a></span><span class="refpurpose"> &#8212; 
170     Get the max size fitting with ISA DMA transfer
171 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-str.html"><span class="phrase">snd_pcm_stream_str</span></a></span><span class="refpurpose"> &#8212; 
172     Get a string naming the direction of a stream
173 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-chmap-substream.html"><span class="phrase">snd_pcm_chmap_substream</span></a></span><span class="refpurpose"> &#8212; 
174     get the PCM substream assigned to the given chmap info
175 </span></dt><dt><span class="refentrytitle"><a href="API-pcm-format-to-bits.html"><span class="phrase">pcm_format_to_bits</span></a></span><span class="refpurpose"> &#8212; 
176     Strong-typed conversion of pcm_format to bitwise
177 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-format-name.html"><span class="phrase">snd_pcm_format_name</span></a></span><span class="refpurpose"> &#8212; 
178  Return a name string for the given PCM format
179 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-new-stream.html"><span class="phrase">snd_pcm_new_stream</span></a></span><span class="refpurpose"> &#8212; 
180     create a new PCM stream
181 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-new.html"><span class="phrase">snd_pcm_new</span></a></span><span class="refpurpose"> &#8212; 
182     create a new PCM instance
183 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-new-internal.html"><span class="phrase">snd_pcm_new_internal</span></a></span><span class="refpurpose"> &#8212; 
184     create a new internal PCM instance
185 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-notify.html"><span class="phrase">snd_pcm_notify</span></a></span><span class="refpurpose"> &#8212; 
186     Add/remove the notify list
187 </span></dt><dt><span class="refentrytitle"><a href="API-snd-device-new.html"><span class="phrase">snd_device_new</span></a></span><span class="refpurpose"> &#8212; 
188  create an ALSA device component
189 </span></dt><dt><span class="refentrytitle"><a href="API-snd-device-disconnect.html"><span class="phrase">snd_device_disconnect</span></a></span><span class="refpurpose"> &#8212; 
190     disconnect the device
191 </span></dt><dt><span class="refentrytitle"><a href="API-snd-device-free.html"><span class="phrase">snd_device_free</span></a></span><span class="refpurpose"> &#8212; 
192     release the device from the card
193 </span></dt><dt><span class="refentrytitle"><a href="API-snd-device-register.html"><span class="phrase">snd_device_register</span></a></span><span class="refpurpose"> &#8212; 
194     register the device
195 </span></dt><dt><span class="refentrytitle"><a href="API-snd-iprintf.html"><span class="phrase">snd_iprintf</span></a></span><span class="refpurpose"> &#8212; 
196  printf on the procfs buffer
197 </span></dt><dt><span class="refentrytitle"><a href="API-snd-info-get-line.html"><span class="phrase">snd_info_get_line</span></a></span><span class="refpurpose"> &#8212; 
198     read one line from the procfs buffer
199 </span></dt><dt><span class="refentrytitle"><a href="API-snd-info-get-str.html"><span class="phrase">snd_info_get_str</span></a></span><span class="refpurpose"> &#8212; 
200     parse a string token
201 </span></dt><dt><span class="refentrytitle"><a href="API-snd-info-create-module-entry.html"><span class="phrase">snd_info_create_module_entry</span></a></span><span class="refpurpose"> &#8212; 
202     create an info entry for the given module
203 </span></dt><dt><span class="refentrytitle"><a href="API-snd-info-create-card-entry.html"><span class="phrase">snd_info_create_card_entry</span></a></span><span class="refpurpose"> &#8212; 
204     create an info entry for the given card
205 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-proc-new.html"><span class="phrase">snd_card_proc_new</span></a></span><span class="refpurpose"> &#8212; 
206     create an info entry for the given card
207 </span></dt><dt><span class="refentrytitle"><a href="API-snd-info-free-entry.html"><span class="phrase">snd_info_free_entry</span></a></span><span class="refpurpose"> &#8212; 
208     release the info entry
209 </span></dt><dt><span class="refentrytitle"><a href="API-snd-info-register.html"><span class="phrase">snd_info_register</span></a></span><span class="refpurpose"> &#8212; 
210     register the info entry
211 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-receive.html"><span class="phrase">snd_rawmidi_receive</span></a></span><span class="refpurpose"> &#8212; 
212  receive the input data from the device
213 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-transmit-empty.html"><span class="phrase">snd_rawmidi_transmit_empty</span></a></span><span class="refpurpose"> &#8212; 
214     check whether the output buffer is empty
215 </span></dt><dt><span class="refentrytitle"><a href="API---snd-rawmidi-transmit-peek.html"><span class="phrase">__snd_rawmidi_transmit_peek</span></a></span><span class="refpurpose"> &#8212; 
216     copy data from the internal buffer
217 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-transmit-peek.html"><span class="phrase">snd_rawmidi_transmit_peek</span></a></span><span class="refpurpose"> &#8212; 
218     copy data from the internal buffer
219 </span></dt><dt><span class="refentrytitle"><a href="API---snd-rawmidi-transmit-ack.html"><span class="phrase">__snd_rawmidi_transmit_ack</span></a></span><span class="refpurpose"> &#8212; 
220     acknowledge the transmission
221 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-transmit-ack.html"><span class="phrase">snd_rawmidi_transmit_ack</span></a></span><span class="refpurpose"> &#8212; 
222     acknowledge the transmission
223 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-transmit.html"><span class="phrase">snd_rawmidi_transmit</span></a></span><span class="refpurpose"> &#8212; 
224     copy from the buffer to the device
225 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-new.html"><span class="phrase">snd_rawmidi_new</span></a></span><span class="refpurpose"> &#8212; 
226     create a rawmidi instance
227 </span></dt><dt><span class="refentrytitle"><a href="API-snd-rawmidi-set-ops.html"><span class="phrase">snd_rawmidi_set_ops</span></a></span><span class="refpurpose"> &#8212; 
228     set the rawmidi operators
229 </span></dt><dt><span class="refentrytitle"><a href="API-snd-request-card.html"><span class="phrase">snd_request_card</span></a></span><span class="refpurpose"> &#8212; 
230  try to load the card module
231 </span></dt><dt><span class="refentrytitle"><a href="API-snd-lookup-minor-data.html"><span class="phrase">snd_lookup_minor_data</span></a></span><span class="refpurpose"> &#8212; 
232     get user data of a registered device
233 </span></dt><dt><span class="refentrytitle"><a href="API-snd-register-device.html"><span class="phrase">snd_register_device</span></a></span><span class="refpurpose"> &#8212; 
234     Register the ALSA device file for the card
235 </span></dt><dt><span class="refentrytitle"><a href="API-snd-unregister-device.html"><span class="phrase">snd_unregister_device</span></a></span><span class="refpurpose"> &#8212; 
236     unregister the device on the given card
237 </span></dt><dt><span class="refentrytitle"><a href="API-copy-to-user-fromio.html"><span class="phrase">copy_to_user_fromio</span></a></span><span class="refpurpose"> &#8212; 
238  copy data from mmio-space to user-space
239 </span></dt><dt><span class="refentrytitle"><a href="API-copy-from-user-toio.html"><span class="phrase">copy_from_user_toio</span></a></span><span class="refpurpose"> &#8212; 
240     copy data from user-space to mmio-space
241 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-preallocate-free-for-all.html"><span class="phrase">snd_pcm_lib_preallocate_free_for_all</span></a></span><span class="refpurpose"> &#8212; 
242  release all pre-allocated buffers on the pcm
243 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-preallocate-pages.html"><span class="phrase">snd_pcm_lib_preallocate_pages</span></a></span><span class="refpurpose"> &#8212; 
244     pre-allocation for the given DMA type
245 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-preallocate-pages-for-all.html"><span class="phrase">snd_pcm_lib_preallocate_pages_for_all</span></a></span><span class="refpurpose"> &#8212; 
246     pre-allocation for continuous memory type (all substreams)
247 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-sgbuf-ops-page.html"><span class="phrase">snd_pcm_sgbuf_ops_page</span></a></span><span class="refpurpose"> &#8212; 
248     get the page struct at the given offset
249 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-malloc-pages.html"><span class="phrase">snd_pcm_lib_malloc_pages</span></a></span><span class="refpurpose"> &#8212; 
250     allocate the DMA buffer
251 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-free-pages.html"><span class="phrase">snd_pcm_lib_free_pages</span></a></span><span class="refpurpose"> &#8212; 
252     release the allocated DMA buffer.
253 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-free-vmalloc-buffer.html"><span class="phrase">snd_pcm_lib_free_vmalloc_buffer</span></a></span><span class="refpurpose"> &#8212; 
254     free vmalloc buffer
255 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-get-vmalloc-page.html"><span class="phrase">snd_pcm_lib_get_vmalloc_page</span></a></span><span class="refpurpose"> &#8212; 
256     map vmalloc buffer offset to page struct
257 </span></dt><dt><span class="refentrytitle"><a href="API-snd-device-initialize.html"><span class="phrase">snd_device_initialize</span></a></span><span class="refpurpose"> &#8212; 
258  Initialize struct device for sound devices
259 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-new.html"><span class="phrase">snd_card_new</span></a></span><span class="refpurpose"> &#8212; 
260     create and initialize a soundcard structure
261 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-disconnect.html"><span class="phrase">snd_card_disconnect</span></a></span><span class="refpurpose"> &#8212; 
262     disconnect all APIs from the file-operations (user space)
263 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-free-when-closed.html"><span class="phrase">snd_card_free_when_closed</span></a></span><span class="refpurpose"> &#8212; 
264     Disconnect the card, free it later eventually
265 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-free.html"><span class="phrase">snd_card_free</span></a></span><span class="refpurpose"> &#8212; 
266     frees given soundcard structure
267 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-set-id.html"><span class="phrase">snd_card_set_id</span></a></span><span class="refpurpose"> &#8212; 
268     set card identification name
269 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-add-dev-attr.html"><span class="phrase">snd_card_add_dev_attr</span></a></span><span class="refpurpose"> &#8212; 
270     Append a new sysfs attribute group to card
271 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-register.html"><span class="phrase">snd_card_register</span></a></span><span class="refpurpose"> &#8212; 
272     register the soundcard
273 </span></dt><dt><span class="refentrytitle"><a href="API-snd-component-add.html"><span class="phrase">snd_component_add</span></a></span><span class="refpurpose"> &#8212; 
274     add a component string
275 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-file-add.html"><span class="phrase">snd_card_file_add</span></a></span><span class="refpurpose"> &#8212; 
276     add the file to the file list of the card
277 </span></dt><dt><span class="refentrytitle"><a href="API-snd-card-file-remove.html"><span class="phrase">snd_card_file_remove</span></a></span><span class="refpurpose"> &#8212; 
278     remove the file from the file list
279 </span></dt><dt><span class="refentrytitle"><a href="API-snd-power-wait.html"><span class="phrase">snd_power_wait</span></a></span><span class="refpurpose"> &#8212; 
280     wait until the power-state is changed.
281 </span></dt><dt><span class="refentrytitle"><a href="API-snd-dma-program.html"><span class="phrase">snd_dma_program</span></a></span><span class="refpurpose"> &#8212; 
282  program an ISA DMA transfer
283 </span></dt><dt><span class="refentrytitle"><a href="API-snd-dma-disable.html"><span class="phrase">snd_dma_disable</span></a></span><span class="refpurpose"> &#8212; 
284     stop the ISA DMA transfer
285 </span></dt><dt><span class="refentrytitle"><a href="API-snd-dma-pointer.html"><span class="phrase">snd_dma_pointer</span></a></span><span class="refpurpose"> &#8212; 
286     return the current pointer to DMA transfer buffer in bytes
287 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-notify.html"><span class="phrase">snd_ctl_notify</span></a></span><span class="refpurpose"> &#8212; 
288  Send notification to user-space for a control change
289 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-new1.html"><span class="phrase">snd_ctl_new1</span></a></span><span class="refpurpose"> &#8212; 
290     create a control instance from the template
291 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-free-one.html"><span class="phrase">snd_ctl_free_one</span></a></span><span class="refpurpose"> &#8212; 
292     release the control instance
293 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-add.html"><span class="phrase">snd_ctl_add</span></a></span><span class="refpurpose"> &#8212; 
294     add the control instance to the card
295 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-replace.html"><span class="phrase">snd_ctl_replace</span></a></span><span class="refpurpose"> &#8212; 
296     replace the control instance of the card
297 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-remove.html"><span class="phrase">snd_ctl_remove</span></a></span><span class="refpurpose"> &#8212; 
298     remove the control from the card and release it
299 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-remove-id.html"><span class="phrase">snd_ctl_remove_id</span></a></span><span class="refpurpose"> &#8212; 
300     remove the control of the given id and release it
301 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-activate-id.html"><span class="phrase">snd_ctl_activate_id</span></a></span><span class="refpurpose"> &#8212; 
302     activate/inactivate the control of the given id
303 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-rename-id.html"><span class="phrase">snd_ctl_rename_id</span></a></span><span class="refpurpose"> &#8212; 
304     replace the id of a control on the card
305 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-find-numid.html"><span class="phrase">snd_ctl_find_numid</span></a></span><span class="refpurpose"> &#8212; 
306     find the control instance with the given number-id
307 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-find-id.html"><span class="phrase">snd_ctl_find_id</span></a></span><span class="refpurpose"> &#8212; 
308     find the control instance with the given id
309 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-register-ioctl.html"><span class="phrase">snd_ctl_register_ioctl</span></a></span><span class="refpurpose"> &#8212; 
310     register the device-specific control-ioctls
311 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-register-ioctl-compat.html"><span class="phrase">snd_ctl_register_ioctl_compat</span></a></span><span class="refpurpose"> &#8212; 
312     register the device-specific 32bit compat control-ioctls
313 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-unregister-ioctl.html"><span class="phrase">snd_ctl_unregister_ioctl</span></a></span><span class="refpurpose"> &#8212; 
314     de-register the device-specific control-ioctls
315 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-unregister-ioctl-compat.html"><span class="phrase">snd_ctl_unregister_ioctl_compat</span></a></span><span class="refpurpose"> &#8212; 
316     de-register the device-specific compat 32bit control-ioctls
317 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-boolean-mono-info.html"><span class="phrase">snd_ctl_boolean_mono_info</span></a></span><span class="refpurpose"> &#8212; 
318     Helper function for a standard boolean info callback with a mono channel
319 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-boolean-stereo-info.html"><span class="phrase">snd_ctl_boolean_stereo_info</span></a></span><span class="refpurpose"> &#8212; 
320     Helper function for a standard boolean info callback with stereo two channels
321 </span></dt><dt><span class="refentrytitle"><a href="API-snd-ctl-enum-info.html"><span class="phrase">snd_ctl_enum_info</span></a></span><span class="refpurpose"> &#8212; 
322     fills the info structure for an enumerated control
323 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-set-ops.html"><span class="phrase">snd_pcm_set_ops</span></a></span><span class="refpurpose"> &#8212; 
324  set the PCM operators
325 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-set-sync.html"><span class="phrase">snd_pcm_set_sync</span></a></span><span class="refpurpose"> &#8212; 
326     set the PCM sync id
327 </span></dt><dt><span class="refentrytitle"><a href="API-snd-interval-refine.html"><span class="phrase">snd_interval_refine</span></a></span><span class="refpurpose"> &#8212; 
328     refine the interval value of configurator
329 </span></dt><dt><span class="refentrytitle"><a href="API-snd-interval-ratnum.html"><span class="phrase">snd_interval_ratnum</span></a></span><span class="refpurpose"> &#8212; 
330     refine the interval value
331 </span></dt><dt><span class="refentrytitle"><a href="API-snd-interval-list.html"><span class="phrase">snd_interval_list</span></a></span><span class="refpurpose"> &#8212; 
332     refine the interval value from the list
333 </span></dt><dt><span class="refentrytitle"><a href="API-snd-interval-ranges.html"><span class="phrase">snd_interval_ranges</span></a></span><span class="refpurpose"> &#8212; 
334     refine the interval value from the list of ranges
335 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-rule-add.html"><span class="phrase">snd_pcm_hw_rule_add</span></a></span><span class="refpurpose"> &#8212; 
336     add the hw-constraint rule
337 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-mask64.html"><span class="phrase">snd_pcm_hw_constraint_mask64</span></a></span><span class="refpurpose"> &#8212; 
338     apply the given bitmap mask constraint
339 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-integer.html"><span class="phrase">snd_pcm_hw_constraint_integer</span></a></span><span class="refpurpose"> &#8212; 
340     apply an integer constraint to an interval
341 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-minmax.html"><span class="phrase">snd_pcm_hw_constraint_minmax</span></a></span><span class="refpurpose"> &#8212; 
342     apply a min/max range constraint to an interval
343 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-list.html"><span class="phrase">snd_pcm_hw_constraint_list</span></a></span><span class="refpurpose"> &#8212; 
344     apply a list of constraints to a parameter
345 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-ranges.html"><span class="phrase">snd_pcm_hw_constraint_ranges</span></a></span><span class="refpurpose"> &#8212; 
346     apply list of range constraints to a parameter
347 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-ratnums.html"><span class="phrase">snd_pcm_hw_constraint_ratnums</span></a></span><span class="refpurpose"> &#8212; 
348     apply ratnums constraint to a parameter
349 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-ratdens.html"><span class="phrase">snd_pcm_hw_constraint_ratdens</span></a></span><span class="refpurpose"> &#8212; 
350     apply ratdens constraint to a parameter
351 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-msbits.html"><span class="phrase">snd_pcm_hw_constraint_msbits</span></a></span><span class="refpurpose"> &#8212; 
352     add a hw constraint msbits rule
353 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-step.html"><span class="phrase">snd_pcm_hw_constraint_step</span></a></span><span class="refpurpose"> &#8212; 
354     add a hw constraint step rule
355 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-constraint-pow2.html"><span class="phrase">snd_pcm_hw_constraint_pow2</span></a></span><span class="refpurpose"> &#8212; 
356     add a hw constraint power-of-2 rule
357 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-rule-noresample.html"><span class="phrase">snd_pcm_hw_rule_noresample</span></a></span><span class="refpurpose"> &#8212; 
358     add a rule to allow disabling hw resampling
359 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-param-value.html"><span class="phrase">snd_pcm_hw_param_value</span></a></span><span class="refpurpose"> &#8212; 
360     return <em class="parameter"><code>params</code></em> field <em class="parameter"><code>var</code></em> value
361 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-param-first.html"><span class="phrase">snd_pcm_hw_param_first</span></a></span><span class="refpurpose"> &#8212; 
362     refine config space and return minimum value
363 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-hw-param-last.html"><span class="phrase">snd_pcm_hw_param_last</span></a></span><span class="refpurpose"> &#8212; 
364     refine config space and return maximum value
365 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-ioctl.html"><span class="phrase">snd_pcm_lib_ioctl</span></a></span><span class="refpurpose"> &#8212; 
366     a generic PCM ioctl callback
367 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-period-elapsed.html"><span class="phrase">snd_pcm_period_elapsed</span></a></span><span class="refpurpose"> &#8212; 
368     update the pcm status for the next period
369 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-add-chmap-ctls.html"><span class="phrase">snd_pcm_add_chmap_ctls</span></a></span><span class="refpurpose"> &#8212; 
370     create channel-mapping control elements
371 </span></dt><dt><span class="refentrytitle"><a href="API-snd-hwdep-new.html"><span class="phrase">snd_hwdep_new</span></a></span><span class="refpurpose"> &#8212; 
372  create a new hwdep instance
373 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-lock.html"><span class="phrase">snd_pcm_stream_lock</span></a></span><span class="refpurpose"> &#8212; 
374  Lock the PCM stream
375 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-unlock.html"><span class="phrase">snd_pcm_stream_unlock</span></a></span><span class="refpurpose"> &#8212; 
376     Unlock the PCM stream
377 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-lock-irq.html"><span class="phrase">snd_pcm_stream_lock_irq</span></a></span><span class="refpurpose"> &#8212; 
378     Lock the PCM stream
379 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-unlock-irq.html"><span class="phrase">snd_pcm_stream_unlock_irq</span></a></span><span class="refpurpose"> &#8212; 
380     Unlock the PCM stream
381 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stream-unlock-irqrestore.html"><span class="phrase">snd_pcm_stream_unlock_irqrestore</span></a></span><span class="refpurpose"> &#8212; 
382     Unlock the PCM stream
383 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stop.html"><span class="phrase">snd_pcm_stop</span></a></span><span class="refpurpose"> &#8212; 
384     try to stop all running streams in the substream group
385 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-stop-xrun.html"><span class="phrase">snd_pcm_stop_xrun</span></a></span><span class="refpurpose"> &#8212; 
386     stop the running streams as XRUN
387 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-suspend.html"><span class="phrase">snd_pcm_suspend</span></a></span><span class="refpurpose"> &#8212; 
388     trigger SUSPEND to all linked streams
389 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-suspend-all.html"><span class="phrase">snd_pcm_suspend_all</span></a></span><span class="refpurpose"> &#8212; 
390     trigger SUSPEND to all substreams in the given pcm
391 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-default-mmap.html"><span class="phrase">snd_pcm_lib_default_mmap</span></a></span><span class="refpurpose"> &#8212; 
392     Default PCM data mmap function
393 </span></dt><dt><span class="refentrytitle"><a href="API-snd-pcm-lib-mmap-iomem.html"><span class="phrase">snd_pcm_lib_mmap_iomem</span></a></span><span class="refpurpose"> &#8212; 
394     Default PCM data mmap function for I/O mem
395 </span></dt><dt><span class="refentrytitle"><a href="API-snd-malloc-pages.html"><span class="phrase">snd_malloc_pages</span></a></span><span class="refpurpose"> &#8212; 
396  allocate pages with the given size
397 </span></dt><dt><span class="refentrytitle"><a href="API-snd-free-pages.html"><span class="phrase">snd_free_pages</span></a></span><span class="refpurpose"> &#8212; 
398     release the pages
399 </span></dt><dt><span class="refentrytitle"><a href="API-snd-dma-alloc-pages.html"><span class="phrase">snd_dma_alloc_pages</span></a></span><span class="refpurpose"> &#8212; 
400     allocate the buffer area according to the given type
401 </span></dt><dt><span class="refentrytitle"><a href="API-snd-dma-alloc-pages-fallback.html"><span class="phrase">snd_dma_alloc_pages_fallback</span></a></span><span class="refpurpose"> &#8212; 
402     allocate the buffer area according to the given type with fallback
403 </span></dt><dt><span class="refentrytitle"><a href="API-snd-dma-free-pages.html"><span class="phrase">snd_dma_free_pages</span></a></span><span class="refpurpose"> &#8212; 
404     release the allocated buffer
405 </span></dt></dl></dd><dt><span class="chapter"><a href="uart16x50.html">6. 16x50 UART Driver</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-uart-update-timeout.html"><span class="phrase">uart_update_timeout</span></a></span><span class="refpurpose"> &#8212; 
406  update per-port FIFO timeout.
407 </span></dt><dt><span class="refentrytitle"><a href="API-uart-get-baud-rate.html"><span class="phrase">uart_get_baud_rate</span></a></span><span class="refpurpose"> &#8212; 
408     return baud rate for a particular port
409 </span></dt><dt><span class="refentrytitle"><a href="API-uart-get-divisor.html"><span class="phrase">uart_get_divisor</span></a></span><span class="refpurpose"> &#8212; 
410     return uart clock divisor
411 </span></dt><dt><span class="refentrytitle"><a href="API-uart-console-write.html"><span class="phrase">uart_console_write</span></a></span><span class="refpurpose"> &#8212; 
412     write a console message to a serial port
413 </span></dt><dt><span class="refentrytitle"><a href="API-uart-parse-earlycon.html"><span class="phrase">uart_parse_earlycon</span></a></span><span class="refpurpose"> &#8212; 
414     Parse earlycon options
415 </span></dt><dt><span class="refentrytitle"><a href="API-uart-parse-options.html"><span class="phrase">uart_parse_options</span></a></span><span class="refpurpose"> &#8212; 
416     Parse serial port baud/parity/bits/flow control.
417 </span></dt><dt><span class="refentrytitle"><a href="API-uart-set-options.html"><span class="phrase">uart_set_options</span></a></span><span class="refpurpose"> &#8212; 
418     setup the serial console parameters
419 </span></dt><dt><span class="refentrytitle"><a href="API-uart-register-driver.html"><span class="phrase">uart_register_driver</span></a></span><span class="refpurpose"> &#8212; 
420     register a driver with the uart core layer
421 </span></dt><dt><span class="refentrytitle"><a href="API-uart-unregister-driver.html"><span class="phrase">uart_unregister_driver</span></a></span><span class="refpurpose"> &#8212; 
422     remove a driver from the uart core layer
423 </span></dt><dt><span class="refentrytitle"><a href="API-uart-add-one-port.html"><span class="phrase">uart_add_one_port</span></a></span><span class="refpurpose"> &#8212; 
424     attach a driver-defined port structure
425 </span></dt><dt><span class="refentrytitle"><a href="API-uart-remove-one-port.html"><span class="phrase">uart_remove_one_port</span></a></span><span class="refpurpose"> &#8212; 
426     detach a driver defined port structure
427 </span></dt><dt><span class="refentrytitle"><a href="API-uart-handle-dcd-change.html"><span class="phrase">uart_handle_dcd_change</span></a></span><span class="refpurpose"> &#8212; 
428     handle a change of carrier detect state
429 </span></dt><dt><span class="refentrytitle"><a href="API-uart-handle-cts-change.html"><span class="phrase">uart_handle_cts_change</span></a></span><span class="refpurpose"> &#8212; 
430     handle a change of clear-to-send state
431 </span></dt><dt><span class="refentrytitle"><a href="API-uart-insert-char.html"><span class="phrase">uart_insert_char</span></a></span><span class="refpurpose"> &#8212; 
432     push a char to the uart layer
433 </span></dt><dt><span class="refentrytitle"><a href="API-serial8250-get-port.html"><span class="phrase">serial8250_get_port</span></a></span><span class="refpurpose"> &#8212; 
434  retrieve struct uart_8250_port
435 </span></dt><dt><span class="refentrytitle"><a href="API-serial8250-suspend-port.html"><span class="phrase">serial8250_suspend_port</span></a></span><span class="refpurpose"> &#8212; 
436     suspend one serial port
437 </span></dt><dt><span class="refentrytitle"><a href="API-serial8250-resume-port.html"><span class="phrase">serial8250_resume_port</span></a></span><span class="refpurpose"> &#8212; 
438     resume one serial port
439 </span></dt><dt><span class="refentrytitle"><a href="API-serial8250-register-8250-port.html"><span class="phrase">serial8250_register_8250_port</span></a></span><span class="refpurpose"> &#8212; 
440     register a serial port
441 </span></dt><dt><span class="refentrytitle"><a href="API-serial8250-unregister-port.html"><span class="phrase">serial8250_unregister_port</span></a></span><span class="refpurpose"> &#8212; 
442     remove a 16x50 serial port at runtime
443 </span></dt></dl></dd><dt><span class="chapter"><a href="fbdev.html">7. Frame Buffer Library</a></span></dt><dd><dl><dt><span class="sect1"><a href="fbdev.html#idp1113948452">Frame Buffer Memory</a></span></dt><dt><span class="sect1"><a href="ch07s02.html">Frame Buffer Colormap</a></span></dt><dt><span class="sect1"><a href="ch07s03.html">Frame Buffer Video Mode Database</a></span></dt><dt><span class="sect1"><a href="ch07s04.html">Frame Buffer Macintosh Video Mode Database</a></span></dt><dt><span class="sect1"><a href="ch07s05.html">Frame Buffer Fonts</a></span></dt></dl></dd><dt><span class="chapter"><a href="input_subsystem.html">8. Input Subsystem</a></span></dt><dd><dl><dt><span class="sect1"><a href="input_subsystem.html#idp1114168316">Input core</a></span></dt><dt><span class="sect1"><a href="ch08s02.html">Multitouch Library</a></span></dt><dt><span class="sect1"><a href="ch08s03.html">Polled input devices</a></span></dt><dt><span class="sect1"><a href="ch08s04.html">Matrix keyboars/keypads</a></span></dt><dt><span class="sect1"><a href="ch08s05.html">Sparse keymap support</a></span></dt></dl></dd><dt><span class="chapter"><a href="spi.html">9. Serial Peripheral Interface (SPI)</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-spi-device.html"><span class="phrase">struct spi_device</span></a></span><span class="refpurpose"> &#8212; 
444  Master side proxy for an SPI slave device
445 </span></dt><dt><span class="refentrytitle"><a href="API-struct-spi-driver.html"><span class="phrase">struct spi_driver</span></a></span><span class="refpurpose"> &#8212; 
446     Host side <span class="quote">&#8220;<span class="quote">protocol</span>&#8221;</span> driver
447 </span></dt><dt><span class="refentrytitle"><a href="API-spi-unregister-driver.html"><span class="phrase">spi_unregister_driver</span></a></span><span class="refpurpose"> &#8212; 
448     reverse effect of spi_register_driver
449 </span></dt><dt><span class="refentrytitle"><a href="API-module-spi-driver.html"><span class="phrase">module_spi_driver</span></a></span><span class="refpurpose"> &#8212; 
450     Helper macro for registering a SPI driver
451 </span></dt><dt><span class="refentrytitle"><a href="API-struct-spi-master.html"><span class="phrase">struct spi_master</span></a></span><span class="refpurpose"> &#8212; 
452     interface to SPI master controller
453 </span></dt><dt><span class="refentrytitle"><a href="API-struct-spi-transfer.html"><span class="phrase">struct spi_transfer</span></a></span><span class="refpurpose"> &#8212; 
454     a read/write buffer pair
455 </span></dt><dt><span class="refentrytitle"><a href="API-struct-spi-message.html"><span class="phrase">struct spi_message</span></a></span><span class="refpurpose"> &#8212; 
456     one multi-segment SPI transaction
457 </span></dt><dt><span class="refentrytitle"><a href="API-spi-message-init-with-transfers.html"><span class="phrase">spi_message_init_with_transfers</span></a></span><span class="refpurpose"> &#8212; 
458     Initialize spi_message and append transfers
459 </span></dt><dt><span class="refentrytitle"><a href="API-spi-write.html"><span class="phrase">spi_write</span></a></span><span class="refpurpose"> &#8212; 
460     SPI synchronous write
461 </span></dt><dt><span class="refentrytitle"><a href="API-spi-read.html"><span class="phrase">spi_read</span></a></span><span class="refpurpose"> &#8212; 
462     SPI synchronous read
463 </span></dt><dt><span class="refentrytitle"><a href="API-spi-sync-transfer.html"><span class="phrase">spi_sync_transfer</span></a></span><span class="refpurpose"> &#8212; 
464     synchronous SPI data transfer
465 </span></dt><dt><span class="refentrytitle"><a href="API-spi-w8r8.html"><span class="phrase">spi_w8r8</span></a></span><span class="refpurpose"> &#8212; 
466     SPI synchronous 8 bit write followed by 8 bit read
467 </span></dt><dt><span class="refentrytitle"><a href="API-spi-w8r16.html"><span class="phrase">spi_w8r16</span></a></span><span class="refpurpose"> &#8212; 
468     SPI synchronous 8 bit write followed by 16 bit read
469 </span></dt><dt><span class="refentrytitle"><a href="API-spi-w8r16be.html"><span class="phrase">spi_w8r16be</span></a></span><span class="refpurpose"> &#8212; 
470     SPI synchronous 8 bit write followed by 16 bit big-endian read
471 </span></dt><dt><span class="refentrytitle"><a href="API-struct-spi-board-info.html"><span class="phrase">struct spi_board_info</span></a></span><span class="refpurpose"> &#8212; 
472     board-specific template for a SPI device
473 </span></dt><dt><span class="refentrytitle"><a href="API-spi-register-board-info.html"><span class="phrase">spi_register_board_info</span></a></span><span class="refpurpose"> &#8212; 
474  register SPI devices for a given board
475 </span></dt><dt><span class="refentrytitle"><a href="API-spi-register-driver.html"><span class="phrase">spi_register_driver</span></a></span><span class="refpurpose"> &#8212; 
476  register a SPI driver
477 </span></dt><dt><span class="refentrytitle"><a href="API-spi-alloc-device.html"><span class="phrase">spi_alloc_device</span></a></span><span class="refpurpose"> &#8212; 
478     Allocate a new SPI device
479 </span></dt><dt><span class="refentrytitle"><a href="API-spi-add-device.html"><span class="phrase">spi_add_device</span></a></span><span class="refpurpose"> &#8212; 
480     Add spi_device allocated with spi_alloc_device
481 </span></dt><dt><span class="refentrytitle"><a href="API-spi-new-device.html"><span class="phrase">spi_new_device</span></a></span><span class="refpurpose"> &#8212; 
482     instantiate one new SPI device
483 </span></dt><dt><span class="refentrytitle"><a href="API-spi-finalize-current-transfer.html"><span class="phrase">spi_finalize_current_transfer</span></a></span><span class="refpurpose"> &#8212; 
484     report completion of a transfer
485 </span></dt><dt><span class="refentrytitle"><a href="API-spi-get-next-queued-message.html"><span class="phrase">spi_get_next_queued_message</span></a></span><span class="refpurpose"> &#8212; 
486     called by driver to check for queued messages
487 </span></dt><dt><span class="refentrytitle"><a href="API-spi-finalize-current-message.html"><span class="phrase">spi_finalize_current_message</span></a></span><span class="refpurpose"> &#8212; 
488     the current message is complete
489 </span></dt><dt><span class="refentrytitle"><a href="API-spi-alloc-master.html"><span class="phrase">spi_alloc_master</span></a></span><span class="refpurpose"> &#8212; 
490     allocate SPI master controller
491 </span></dt><dt><span class="refentrytitle"><a href="API-spi-register-master.html"><span class="phrase">spi_register_master</span></a></span><span class="refpurpose"> &#8212; 
492     register SPI master controller
493 </span></dt><dt><span class="refentrytitle"><a href="API-devm-spi-register-master.html"><span class="phrase">devm_spi_register_master</span></a></span><span class="refpurpose"> &#8212; 
494     register managed SPI master controller
495 </span></dt><dt><span class="refentrytitle"><a href="API-spi-unregister-master.html"><span class="phrase">spi_unregister_master</span></a></span><span class="refpurpose"> &#8212; 
496     unregister SPI master controller
497 </span></dt><dt><span class="refentrytitle"><a href="API-spi-busnum-to-master.html"><span class="phrase">spi_busnum_to_master</span></a></span><span class="refpurpose"> &#8212; 
498     look up master associated with bus_num
499 </span></dt><dt><span class="refentrytitle"><a href="API-spi-setup.html"><span class="phrase">spi_setup</span></a></span><span class="refpurpose"> &#8212; 
500     setup SPI mode and clock rate
501 </span></dt><dt><span class="refentrytitle"><a href="API-spi-async.html"><span class="phrase">spi_async</span></a></span><span class="refpurpose"> &#8212; 
502     asynchronous SPI transfer
503 </span></dt><dt><span class="refentrytitle"><a href="API-spi-async-locked.html"><span class="phrase">spi_async_locked</span></a></span><span class="refpurpose"> &#8212; 
504     version of spi_async with exclusive bus usage
505 </span></dt><dt><span class="refentrytitle"><a href="API-spi-sync.html"><span class="phrase">spi_sync</span></a></span><span class="refpurpose"> &#8212; 
506     blocking/synchronous SPI data transfers
507 </span></dt><dt><span class="refentrytitle"><a href="API-spi-sync-locked.html"><span class="phrase">spi_sync_locked</span></a></span><span class="refpurpose"> &#8212; 
508     version of spi_sync with exclusive bus usage
509 </span></dt><dt><span class="refentrytitle"><a href="API-spi-bus-lock.html"><span class="phrase">spi_bus_lock</span></a></span><span class="refpurpose"> &#8212; 
510     obtain a lock for exclusive SPI bus usage
511 </span></dt><dt><span class="refentrytitle"><a href="API-spi-bus-unlock.html"><span class="phrase">spi_bus_unlock</span></a></span><span class="refpurpose"> &#8212; 
512     release the lock for exclusive SPI bus usage
513 </span></dt><dt><span class="refentrytitle"><a href="API-spi-write-then-read.html"><span class="phrase">spi_write_then_read</span></a></span><span class="refpurpose"> &#8212; 
514     SPI synchronous write followed by read
515 </span></dt></dl></dd><dt><span class="chapter"><a href="i2c.html">10. I<sup>2</sup>C and SMBus Subsystem</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-i2c-driver.html"><span class="phrase">struct i2c_driver</span></a></span><span class="refpurpose"> &#8212; 
516  represent an I2C device driver
517 </span></dt><dt><span class="refentrytitle"><a href="API-struct-i2c-client.html"><span class="phrase">struct i2c_client</span></a></span><span class="refpurpose"> &#8212; 
518     represent an I2C slave device
519 </span></dt><dt><span class="refentrytitle"><a href="API-struct-i2c-board-info.html"><span class="phrase">struct i2c_board_info</span></a></span><span class="refpurpose"> &#8212; 
520     template for device creation
521 </span></dt><dt><span class="refentrytitle"><a href="API-I2C-BOARD-INFO.html"><span class="phrase">I2C_BOARD_INFO</span></a></span><span class="refpurpose"> &#8212; 
522     macro used to list an i2c device and its address
523 </span></dt><dt><span class="refentrytitle"><a href="API-struct-i2c-algorithm.html"><span class="phrase">struct i2c_algorithm</span></a></span><span class="refpurpose"> &#8212; 
524     represent I2C transfer method
525 </span></dt><dt><span class="refentrytitle"><a href="API-struct-i2c-bus-recovery-info.html"><span class="phrase">struct i2c_bus_recovery_info</span></a></span><span class="refpurpose"> &#8212; 
526     I2C bus recovery information
527 </span></dt><dt><span class="refentrytitle"><a href="API-struct-i2c-adapter-quirks.html"><span class="phrase">struct i2c_adapter_quirks</span></a></span><span class="refpurpose"> &#8212; 
528     describe flaws of an i2c adapter
529 </span></dt><dt><span class="refentrytitle"><a href="API-module-i2c-driver.html"><span class="phrase">module_i2c_driver</span></a></span><span class="refpurpose"> &#8212; 
530     Helper macro for registering a I2C driver
531 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-register-board-info.html"><span class="phrase">i2c_register_board_info</span></a></span><span class="refpurpose"> &#8212; 
532  statically declare I2C devices
533 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-verify-client.html"><span class="phrase">i2c_verify_client</span></a></span><span class="refpurpose"> &#8212; 
534  return parameter as i2c_client, or NULL
535 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-lock-adapter.html"><span class="phrase">i2c_lock_adapter</span></a></span><span class="refpurpose"> &#8212; 
536     Get exclusive access to an I2C bus segment
537 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-unlock-adapter.html"><span class="phrase">i2c_unlock_adapter</span></a></span><span class="refpurpose"> &#8212; 
538     Release exclusive access to an I2C bus segment
539 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-new-device.html"><span class="phrase">i2c_new_device</span></a></span><span class="refpurpose"> &#8212; 
540     instantiate an i2c device
541 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-unregister-device.html"><span class="phrase">i2c_unregister_device</span></a></span><span class="refpurpose"> &#8212; 
542     reverse effect of <code class="function">i2c_new_device</code>
543 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-new-dummy.html"><span class="phrase">i2c_new_dummy</span></a></span><span class="refpurpose"> &#8212; 
544     return a new i2c device bound to a dummy driver
545 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-verify-adapter.html"><span class="phrase">i2c_verify_adapter</span></a></span><span class="refpurpose"> &#8212; 
546     return parameter as i2c_adapter or NULL
547 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-add-adapter.html"><span class="phrase">i2c_add_adapter</span></a></span><span class="refpurpose"> &#8212; 
548     declare i2c adapter, use dynamic bus number
549 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-add-numbered-adapter.html"><span class="phrase">i2c_add_numbered_adapter</span></a></span><span class="refpurpose"> &#8212; 
550     declare i2c adapter, use static bus number
551 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-del-adapter.html"><span class="phrase">i2c_del_adapter</span></a></span><span class="refpurpose"> &#8212; 
552     unregister I2C adapter
553 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-del-driver.html"><span class="phrase">i2c_del_driver</span></a></span><span class="refpurpose"> &#8212; 
554     unregister I2C driver
555 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-use-client.html"><span class="phrase">i2c_use_client</span></a></span><span class="refpurpose"> &#8212; 
556     increments the reference count of the i2c client structure
557 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-release-client.html"><span class="phrase">i2c_release_client</span></a></span><span class="refpurpose"> &#8212; 
558     release a use of the i2c client structure
559 </span></dt><dt><span class="refentrytitle"><a href="API---i2c-transfer.html"><span class="phrase">__i2c_transfer</span></a></span><span class="refpurpose"> &#8212; 
560     unlocked flavor of i2c_transfer
561 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-transfer.html"><span class="phrase">i2c_transfer</span></a></span><span class="refpurpose"> &#8212; 
562     execute a single or combined I2C message
563 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-master-send.html"><span class="phrase">i2c_master_send</span></a></span><span class="refpurpose"> &#8212; 
564     issue a single I2C message in master transmit mode
565 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-master-recv.html"><span class="phrase">i2c_master_recv</span></a></span><span class="refpurpose"> &#8212; 
566     issue a single I2C message in master receive mode
567 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-read-byte.html"><span class="phrase">i2c_smbus_read_byte</span></a></span><span class="refpurpose"> &#8212; 
568     SMBus <span class="quote">&#8220;<span class="quote">receive byte</span>&#8221;</span> protocol
569 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-write-byte.html"><span class="phrase">i2c_smbus_write_byte</span></a></span><span class="refpurpose"> &#8212; 
570     SMBus <span class="quote">&#8220;<span class="quote">send byte</span>&#8221;</span> protocol
571 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-read-byte-data.html"><span class="phrase">i2c_smbus_read_byte_data</span></a></span><span class="refpurpose"> &#8212; 
572     SMBus <span class="quote">&#8220;<span class="quote">read byte</span>&#8221;</span> protocol
573 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-write-byte-data.html"><span class="phrase">i2c_smbus_write_byte_data</span></a></span><span class="refpurpose"> &#8212; 
574     SMBus <span class="quote">&#8220;<span class="quote">write byte</span>&#8221;</span> protocol
575 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-read-word-data.html"><span class="phrase">i2c_smbus_read_word_data</span></a></span><span class="refpurpose"> &#8212; 
576     SMBus <span class="quote">&#8220;<span class="quote">read word</span>&#8221;</span> protocol
577 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-write-word-data.html"><span class="phrase">i2c_smbus_write_word_data</span></a></span><span class="refpurpose"> &#8212; 
578     SMBus <span class="quote">&#8220;<span class="quote">write word</span>&#8221;</span> protocol
579 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-read-block-data.html"><span class="phrase">i2c_smbus_read_block_data</span></a></span><span class="refpurpose"> &#8212; 
580     SMBus <span class="quote">&#8220;<span class="quote">block read</span>&#8221;</span> protocol
581 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-write-block-data.html"><span class="phrase">i2c_smbus_write_block_data</span></a></span><span class="refpurpose"> &#8212; 
582     SMBus <span class="quote">&#8220;<span class="quote">block write</span>&#8221;</span> protocol
583 </span></dt><dt><span class="refentrytitle"><a href="API-i2c-smbus-xfer.html"><span class="phrase">i2c_smbus_xfer</span></a></span><span class="refpurpose"> &#8212; 
584     execute SMBus protocol operations
585 </span></dt></dl></dd><dt><span class="chapter"><a href="hsi.html">11. High Speed Synchronous Serial Interface (HSI)</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="API-struct-hsi-channel.html"><span class="phrase">struct hsi_channel</span></a></span><span class="refpurpose"> &#8212; 
586  channel resource used by the hsi clients
587 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-config.html"><span class="phrase">struct hsi_config</span></a></span><span class="refpurpose"> &#8212; 
588     Configuration for RX/TX HSI modules
589 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-board-info.html"><span class="phrase">struct hsi_board_info</span></a></span><span class="refpurpose"> &#8212; 
590     HSI client board info
591 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-client.html"><span class="phrase">struct hsi_client</span></a></span><span class="refpurpose"> &#8212; 
592     HSI client attached to an HSI port
593 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-client-driver.html"><span class="phrase">struct hsi_client_driver</span></a></span><span class="refpurpose"> &#8212; 
594     Driver associated to an HSI client
595 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-msg.html"><span class="phrase">struct hsi_msg</span></a></span><span class="refpurpose"> &#8212; 
596     HSI message descriptor
597 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-port.html"><span class="phrase">struct hsi_port</span></a></span><span class="refpurpose"> &#8212; 
598     HSI port device
599 </span></dt><dt><span class="refentrytitle"><a href="API-struct-hsi-controller.html"><span class="phrase">struct hsi_controller</span></a></span><span class="refpurpose"> &#8212; 
600     HSI controller device
601 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-id.html"><span class="phrase">hsi_id</span></a></span><span class="refpurpose"> &#8212; 
602     Get HSI controller ID associated to a client
603 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-port-id.html"><span class="phrase">hsi_port_id</span></a></span><span class="refpurpose"> &#8212; 
604     Gets the port number a client is attached to
605 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-setup.html"><span class="phrase">hsi_setup</span></a></span><span class="refpurpose"> &#8212; 
606     Configure the client's port
607 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-flush.html"><span class="phrase">hsi_flush</span></a></span><span class="refpurpose"> &#8212; 
608     Flush all pending transactions on the client's port
609 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-async-read.html"><span class="phrase">hsi_async_read</span></a></span><span class="refpurpose"> &#8212; 
610     Submit a read transfer
611 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-async-write.html"><span class="phrase">hsi_async_write</span></a></span><span class="refpurpose"> &#8212; 
612     Submit a write transfer
613 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-start-tx.html"><span class="phrase">hsi_start_tx</span></a></span><span class="refpurpose"> &#8212; 
614     Signal the port that the client wants to start a TX
615 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-stop-tx.html"><span class="phrase">hsi_stop_tx</span></a></span><span class="refpurpose"> &#8212; 
616     Signal the port that the client no longer wants to transmit
617 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-port-unregister-clients.html"><span class="phrase">hsi_port_unregister_clients</span></a></span><span class="refpurpose"> &#8212; 
618  Unregister an HSI port
619 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-unregister-controller.html"><span class="phrase">hsi_unregister_controller</span></a></span><span class="refpurpose"> &#8212; 
620     Unregister an HSI controller
621 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-register-controller.html"><span class="phrase">hsi_register_controller</span></a></span><span class="refpurpose"> &#8212; 
622     Register an HSI controller and its ports
623 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-register-client-driver.html"><span class="phrase">hsi_register_client_driver</span></a></span><span class="refpurpose"> &#8212; 
624     Register an HSI client to the HSI bus
625 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-put-controller.html"><span class="phrase">hsi_put_controller</span></a></span><span class="refpurpose"> &#8212; 
626     Free an HSI controller
627 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-alloc-controller.html"><span class="phrase">hsi_alloc_controller</span></a></span><span class="refpurpose"> &#8212; 
628     Allocate an HSI controller and its ports
629 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-free-msg.html"><span class="phrase">hsi_free_msg</span></a></span><span class="refpurpose"> &#8212; 
630     Free an HSI message
631 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-alloc-msg.html"><span class="phrase">hsi_alloc_msg</span></a></span><span class="refpurpose"> &#8212; 
632     Allocate an HSI message
633 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-async.html"><span class="phrase">hsi_async</span></a></span><span class="refpurpose"> &#8212; 
634     Submit an HSI transfer to the controller
635 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-claim-port.html"><span class="phrase">hsi_claim_port</span></a></span><span class="refpurpose"> &#8212; 
636     Claim the HSI client's port
637 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-release-port.html"><span class="phrase">hsi_release_port</span></a></span><span class="refpurpose"> &#8212; 
638     Release the HSI client's port
639 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-register-port-event.html"><span class="phrase">hsi_register_port_event</span></a></span><span class="refpurpose"> &#8212; 
640     Register a client to receive port events
641 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-unregister-port-event.html"><span class="phrase">hsi_unregister_port_event</span></a></span><span class="refpurpose"> &#8212; 
642     Stop receiving port events for a client
643 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-event.html"><span class="phrase">hsi_event</span></a></span><span class="refpurpose"> &#8212; 
644     Notifies clients about port events
645 </span></dt><dt><span class="refentrytitle"><a href="API-hsi-get-channel-id-by-name.html"><span class="phrase">hsi_get_channel_id_by_name</span></a></span><span class="refpurpose"> &#8212; 
646     acquire channel id by channel name
647 </span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right">&#160;<a accesskey="n" href="Basics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right" valign="top">&#160;Chapter&#160;1.&#160;Driver Basics</td></tr></table></div></body></html>
648