1c72fcc34Sopenharmony_ci<?xml version='1.0'?>
2c72fcc34Sopenharmony_ci<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3c72fcc34Sopenharmony_ci  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4c72fcc34Sopenharmony_ci
5c72fcc34Sopenharmony_ci<article>
6c72fcc34Sopenharmony_ci  <section>
7c72fcc34Sopenharmony_ci    <title>alsactl init</title>
8c72fcc34Sopenharmony_ci    <refentry>
9c72fcc34Sopenharmony_ci      <refentryinfo>
10c72fcc34Sopenharmony_ci        <title>alsactl init</title>
11c72fcc34Sopenharmony_ci        <date>July 2008</date>
12c72fcc34Sopenharmony_ci        <productname>alsactl</productname>
13c72fcc34Sopenharmony_ci      </refentryinfo>
14c72fcc34Sopenharmony_ci
15c72fcc34Sopenharmony_ci      <refmeta>
16c72fcc34Sopenharmony_ci        <refentrytitle>alsactl_init</refentrytitle>
17c72fcc34Sopenharmony_ci        <manvolnum>7</manvolnum>
18c72fcc34Sopenharmony_ci        <refmiscinfo class="version"></refmiscinfo>
19c72fcc34Sopenharmony_ci      </refmeta>
20c72fcc34Sopenharmony_ci
21c72fcc34Sopenharmony_ci      <refnamediv>
22c72fcc34Sopenharmony_ci        <refname>alsactl init</refname>
23c72fcc34Sopenharmony_ci        <refpurpose>alsa control management - initialization</refpurpose>
24c72fcc34Sopenharmony_ci      </refnamediv>
25c72fcc34Sopenharmony_ci
26c72fcc34Sopenharmony_ci      <refsect1><title>DESCRIPTION</title>
27c72fcc34Sopenharmony_ci        <para>"alsactl init" provides soundcard specific initialization.</para>
28c72fcc34Sopenharmony_ci      </refsect1>
29c72fcc34Sopenharmony_ci
30c72fcc34Sopenharmony_ci      <refsect1><title>CONFIGURATION</title>
31c72fcc34Sopenharmony_ci        <para>All "alsactl init" configuration files are placed in
32c72fcc34Sopenharmony_ci        <filename>/usr/share/alsa/init/</filename> directory. The top level
33c72fcc34Sopenharmony_ci        configuration file is <filename>/usr/share/alsa/init/00main</filename>.
34c72fcc34Sopenharmony_ci	The default top-level file can be also specified using -i or
35c72fcc34Sopenharmony_ci	--initfile parameter for the alsactl tool.
36c72fcc34Sopenharmony_ci	Every file consists of a set of lines of text. All empty lines or
37c72fcc34Sopenharmony_ci        lines beginning with '#' will be ignored.</para>
38c72fcc34Sopenharmony_ci
39c72fcc34Sopenharmony_ci        <refsect2><title>Rules files</title>
40c72fcc34Sopenharmony_ci          <para>The "alsactl init" rules are read from the files located
41c72fcc34Sopenharmony_ci          in the <filename>/usr/share/alsa/init/*</filename>. The top
42c72fcc34Sopenharmony_ci          level configuration file is <filename>/usr/share/alsa/init/00main</filename>.
43c72fcc34Sopenharmony_ci          Every line in the rules file contains at least one key value pair.
44c72fcc34Sopenharmony_ci          There are two kind of keys, match and assignment keys. If all match
45c72fcc34Sopenharmony_ci          keys are matching against its value, the rule gets applied and the
46c72fcc34Sopenharmony_ci          assign keys get the specified value assigned.</para>
47c72fcc34Sopenharmony_ci          
48c72fcc34Sopenharmony_ci          <para>A rule may consists of a list of one or more key value pairs
49c72fcc34Sopenharmony_ci          separated by a comma. Each key has a distinct operation, depending
50c72fcc34Sopenharmony_ci          on the used operator. Valid operators are:</para>
51c72fcc34Sopenharmony_ci          <variablelist>
52c72fcc34Sopenharmony_ci            <varlistentry>
53c72fcc34Sopenharmony_ci              <term><option>==</option></term>
54c72fcc34Sopenharmony_ci              <listitem>
55c72fcc34Sopenharmony_ci                <para>Compare for equality.</para>
56c72fcc34Sopenharmony_ci              </listitem>
57c72fcc34Sopenharmony_ci            </varlistentry>
58c72fcc34Sopenharmony_ci
59c72fcc34Sopenharmony_ci            <varlistentry>
60c72fcc34Sopenharmony_ci              <term><option>!=</option></term>
61c72fcc34Sopenharmony_ci              <listitem>
62c72fcc34Sopenharmony_ci                <para>Compare for non-equality.</para>
63c72fcc34Sopenharmony_ci              </listitem>
64c72fcc34Sopenharmony_ci            </varlistentry>
65c72fcc34Sopenharmony_ci
66c72fcc34Sopenharmony_ci            <varlistentry>
67c72fcc34Sopenharmony_ci              <term><option>=</option></term>
68c72fcc34Sopenharmony_ci              <listitem>
69c72fcc34Sopenharmony_ci                <para>Assign a value to a key. Keys that represent a list,
70c72fcc34Sopenharmony_ci                are reset and only this single value is assigned.</para>
71c72fcc34Sopenharmony_ci              </listitem>
72c72fcc34Sopenharmony_ci            </varlistentry>
73c72fcc34Sopenharmony_ci
74c72fcc34Sopenharmony_ci            <varlistentry>
75c72fcc34Sopenharmony_ci              <term><option>+=</option></term>
76c72fcc34Sopenharmony_ci              <listitem>
77c72fcc34Sopenharmony_ci                <para>Add the value to a key that holds a list
78c72fcc34Sopenharmony_ci                of entries.</para>
79c72fcc34Sopenharmony_ci              </listitem>
80c72fcc34Sopenharmony_ci            </varlistentry>
81c72fcc34Sopenharmony_ci
82c72fcc34Sopenharmony_ci            <varlistentry>
83c72fcc34Sopenharmony_ci              <term><option>:=</option></term>
84c72fcc34Sopenharmony_ci              <listitem>
85c72fcc34Sopenharmony_ci                <para>Assign  a  value  to  a key finally; disallow any
86c72fcc34Sopenharmony_ci                later changes, which may be used to prevent changes by
87c72fcc34Sopenharmony_ci                any later rules.</para>
88c72fcc34Sopenharmony_ci              </listitem>
89c72fcc34Sopenharmony_ci            </varlistentry>
90c72fcc34Sopenharmony_ci          </variablelist>
91c72fcc34Sopenharmony_ci
92c72fcc34Sopenharmony_ci          <para>The following key names can be used to match against device
93c72fcc34Sopenharmony_ci          properties:</para>
94c72fcc34Sopenharmony_ci          <variablelist>
95c72fcc34Sopenharmony_ci            <varlistentry>
96c72fcc34Sopenharmony_ci              <term><option>CARDINDEX</option></term>
97c72fcc34Sopenharmony_ci              <listitem>
98c72fcc34Sopenharmony_ci                <para>Match the card index of the ALSA driver.</para>
99c72fcc34Sopenharmony_ci              </listitem>
100c72fcc34Sopenharmony_ci            </varlistentry>
101c72fcc34Sopenharmony_ci
102c72fcc34Sopenharmony_ci            <varlistentry>
103c72fcc34Sopenharmony_ci              <term><option>CTL{<replaceable>attribute</replaceable>}</option></term>
104c72fcc34Sopenharmony_ci              <listitem>
105c72fcc34Sopenharmony_ci                <para>Set or test universal control attribute. Possible
106c72fcc34Sopenharmony_ci		attributes:</para>
107c72fcc34Sopenharmony_ci                <variablelist>
108c72fcc34Sopenharmony_ci                  <varlistentry>
109c72fcc34Sopenharmony_ci                    <term><option>numid</option></term>
110c72fcc34Sopenharmony_ci                    <listitem>
111c72fcc34Sopenharmony_ci                      <para>Numeric control identification.</para>
112c72fcc34Sopenharmony_ci                    </listitem>
113c72fcc34Sopenharmony_ci                  </varlistentry>
114c72fcc34Sopenharmony_ci                  <varlistentry>
115c72fcc34Sopenharmony_ci                    <term><option>iface</option>, <option>interface</option></term>
116c72fcc34Sopenharmony_ci                    <listitem>
117c72fcc34Sopenharmony_ci                      <para>Control interface name (CARD, HWEDEP, MIXER, PCM, RAWMIDI, TIMER, SEQUENCER)</para>
118c72fcc34Sopenharmony_ci                    </listitem>
119c72fcc34Sopenharmony_ci                  </varlistentry>
120c72fcc34Sopenharmony_ci                  <varlistentry>
121c72fcc34Sopenharmony_ci                    <term><option>subdev</option>, <option>subdevice</option></term>
122c72fcc34Sopenharmony_ci                    <listitem>
123c72fcc34Sopenharmony_ci                      <para>Subdevice number.</para>
124c72fcc34Sopenharmony_ci                    </listitem>
125c72fcc34Sopenharmony_ci                  </varlistentry>
126c72fcc34Sopenharmony_ci                  <varlistentry>
127c72fcc34Sopenharmony_ci                    <term><option>name</option></term>
128c72fcc34Sopenharmony_ci                    <listitem>
129c72fcc34Sopenharmony_ci                      <para>Control name</para>
130c72fcc34Sopenharmony_ci                    </listitem>
131c72fcc34Sopenharmony_ci                  </varlistentry>
132c72fcc34Sopenharmony_ci                  <varlistentry>
133c72fcc34Sopenharmony_ci                    <term><option>index</option></term>
134c72fcc34Sopenharmony_ci                    <listitem>
135c72fcc34Sopenharmony_ci                      <para>Control index</para>
136c72fcc34Sopenharmony_ci                    </listitem>
137c72fcc34Sopenharmony_ci                  </varlistentry>
138c72fcc34Sopenharmony_ci                  <varlistentry>
139c72fcc34Sopenharmony_ci                    <term><option>type</option></term>
140c72fcc34Sopenharmony_ci                    <listitem>
141c72fcc34Sopenharmony_ci                      <para>Control type (BOOLEAN, INTEGER, INTEGER64, ENUMERATED, BYTES, IEC958)</para>
142c72fcc34Sopenharmony_ci                    </listitem>
143c72fcc34Sopenharmony_ci                  </varlistentry>
144c72fcc34Sopenharmony_ci                  <varlistentry>
145c72fcc34Sopenharmony_ci                    <term><option>attr</option>, <option>attribute</option></term>
146c72fcc34Sopenharmony_ci                    <listitem>
147c72fcc34Sopenharmony_ci                      <para>Attributes (stored in a string - use match characters * and ?):</para>
148c72fcc34Sopenharmony_ci	              <variablelist>
149c72fcc34Sopenharmony_ci	                <varlistentry>
150c72fcc34Sopenharmony_ci	                  <term><option>r</option></term>
151c72fcc34Sopenharmony_ci	                  <listitem>
152c72fcc34Sopenharmony_ci	                    <para>control is readable</para>
153c72fcc34Sopenharmony_ci	                  </listitem>
154c72fcc34Sopenharmony_ci	                </varlistentry>
155c72fcc34Sopenharmony_ci	                <varlistentry>
156c72fcc34Sopenharmony_ci	                  <term><option>w</option></term>
157c72fcc34Sopenharmony_ci	                  <listitem>
158c72fcc34Sopenharmony_ci	                    <para>control is writable</para>
159c72fcc34Sopenharmony_ci	                  </listitem>
160c72fcc34Sopenharmony_ci	                </varlistentry>
161c72fcc34Sopenharmony_ci	                <varlistentry>
162c72fcc34Sopenharmony_ci	                  <term><option>v</option></term>
163c72fcc34Sopenharmony_ci	                  <listitem>
164c72fcc34Sopenharmony_ci	                    <para>control is volatile</para>
165c72fcc34Sopenharmony_ci	                  </listitem>
166c72fcc34Sopenharmony_ci	                </varlistentry>
167c72fcc34Sopenharmony_ci	                <varlistentry>
168c72fcc34Sopenharmony_ci	                  <term><option>i</option></term>
169c72fcc34Sopenharmony_ci	                  <listitem>
170c72fcc34Sopenharmony_ci	                    <para>control is inactive</para>
171c72fcc34Sopenharmony_ci	                  </listitem>
172c72fcc34Sopenharmony_ci	                </varlistentry>
173c72fcc34Sopenharmony_ci	                <varlistentry>
174c72fcc34Sopenharmony_ci	                  <term><option>l</option></term>
175c72fcc34Sopenharmony_ci	                  <listitem>
176c72fcc34Sopenharmony_ci	                    <para>control is locked</para>
177c72fcc34Sopenharmony_ci	                  </listitem>
178c72fcc34Sopenharmony_ci	                </varlistentry>
179c72fcc34Sopenharmony_ci	                <varlistentry>
180c72fcc34Sopenharmony_ci	                  <term><option>R</option></term>
181c72fcc34Sopenharmony_ci	                  <listitem>
182c72fcc34Sopenharmony_ci	                    <para>control is TLV readable</para>
183c72fcc34Sopenharmony_ci	                  </listitem>
184c72fcc34Sopenharmony_ci	                </varlistentry>
185c72fcc34Sopenharmony_ci	                <varlistentry>
186c72fcc34Sopenharmony_ci	                  <term><option>W</option></term>
187c72fcc34Sopenharmony_ci	                  <listitem>
188c72fcc34Sopenharmony_ci	                    <para>control is TLV writable</para>
189c72fcc34Sopenharmony_ci	                  </listitem>
190c72fcc34Sopenharmony_ci	                </varlistentry>
191c72fcc34Sopenharmony_ci	                <varlistentry>
192c72fcc34Sopenharmony_ci	                  <term><option>C</option></term>
193c72fcc34Sopenharmony_ci	                  <listitem>
194c72fcc34Sopenharmony_ci	                    <para>control is TLV commandable</para>
195c72fcc34Sopenharmony_ci	                  </listitem>
196c72fcc34Sopenharmony_ci	                </varlistentry>
197c72fcc34Sopenharmony_ci	                <varlistentry>
198c72fcc34Sopenharmony_ci	                  <term><option>o</option></term>
199c72fcc34Sopenharmony_ci	                  <listitem>
200c72fcc34Sopenharmony_ci	                    <para>process is owner of this control</para>
201c72fcc34Sopenharmony_ci	                  </listitem>
202c72fcc34Sopenharmony_ci	                </varlistentry>
203c72fcc34Sopenharmony_ci	                <varlistentry>
204c72fcc34Sopenharmony_ci	                  <term><option>u</option></term>
205c72fcc34Sopenharmony_ci	                  <listitem>
206c72fcc34Sopenharmony_ci	                    <para>control created in user space</para>
207c72fcc34Sopenharmony_ci	                  </listitem>
208c72fcc34Sopenharmony_ci	                </varlistentry>
209c72fcc34Sopenharmony_ci	              </variablelist>
210c72fcc34Sopenharmony_ci                    </listitem>
211c72fcc34Sopenharmony_ci                  </varlistentry>
212c72fcc34Sopenharmony_ci                  <varlistentry>
213c72fcc34Sopenharmony_ci                    <term><option>owner</option></term>
214c72fcc34Sopenharmony_ci                    <listitem>
215c72fcc34Sopenharmony_ci                      <para>Control owner process PID number</para>
216c72fcc34Sopenharmony_ci                    </listitem>
217c72fcc34Sopenharmony_ci                  </varlistentry>
218c72fcc34Sopenharmony_ci                  <varlistentry>
219c72fcc34Sopenharmony_ci                    <term><option>count</option></term>
220c72fcc34Sopenharmony_ci                    <listitem>
221c72fcc34Sopenharmony_ci                      <para>Control count of values</para>
222c72fcc34Sopenharmony_ci                    </listitem>
223c72fcc34Sopenharmony_ci                  </varlistentry>
224c72fcc34Sopenharmony_ci                  <varlistentry>
225c72fcc34Sopenharmony_ci                    <term><option>min</option></term>
226c72fcc34Sopenharmony_ci                    <listitem>
227c72fcc34Sopenharmony_ci                      <para>Value range - minimum value</para>
228c72fcc34Sopenharmony_ci                    </listitem>
229c72fcc34Sopenharmony_ci                  </varlistentry>
230c72fcc34Sopenharmony_ci                  <varlistentry>
231c72fcc34Sopenharmony_ci                    <term><option>max</option></term>
232c72fcc34Sopenharmony_ci                    <listitem>
233c72fcc34Sopenharmony_ci                      <para>Value range - maximum value</para>
234c72fcc34Sopenharmony_ci                    </listitem>
235c72fcc34Sopenharmony_ci                  </varlistentry>
236c72fcc34Sopenharmony_ci                  <varlistentry>
237c72fcc34Sopenharmony_ci                    <term><option>step</option></term>
238c72fcc34Sopenharmony_ci                    <listitem>
239c72fcc34Sopenharmony_ci                      <para>Value range - step value</para>
240c72fcc34Sopenharmony_ci                    </listitem>
241c72fcc34Sopenharmony_ci                  </varlistentry>
242c72fcc34Sopenharmony_ci                  <varlistentry>
243c72fcc34Sopenharmony_ci                    <term><option>dBmin</option></term>
244c72fcc34Sopenharmony_ci                    <listitem>
245c72fcc34Sopenharmony_ci                      <para>Value range - minimum dB value</para>
246c72fcc34Sopenharmony_ci                    </listitem>
247c72fcc34Sopenharmony_ci                  </varlistentry>
248c72fcc34Sopenharmony_ci                  <varlistentry>
249c72fcc34Sopenharmony_ci                    <term><option>dBmax</option></term>
250c72fcc34Sopenharmony_ci                    <listitem>
251c72fcc34Sopenharmony_ci                      <para>Value range - maximum dB value</para>
252c72fcc34Sopenharmony_ci                    </listitem>
253c72fcc34Sopenharmony_ci                  </varlistentry>
254c72fcc34Sopenharmony_ci                  <varlistentry>
255c72fcc34Sopenharmony_ci                    <term><option>items</option></term>
256c72fcc34Sopenharmony_ci                    <listitem>
257c72fcc34Sopenharmony_ci                      <para>Enumerated value - number of text items</para>
258c72fcc34Sopenharmony_ci                    </listitem>
259c72fcc34Sopenharmony_ci                  </varlistentry>
260c72fcc34Sopenharmony_ci                  <varlistentry>
261c72fcc34Sopenharmony_ci                    <term><option>enums</option></term>
262c72fcc34Sopenharmony_ci                    <listitem>
263c72fcc34Sopenharmony_ci                      <para>Enumerated value - list of text names stored between '|' character</para>
264c72fcc34Sopenharmony_ci                    </listitem>
265c72fcc34Sopenharmony_ci                  </varlistentry>
266c72fcc34Sopenharmony_ci                  <varlistentry>
267c72fcc34Sopenharmony_ci                    <term><option>value</option></term>
268c72fcc34Sopenharmony_ci                    <listitem>
269c72fcc34Sopenharmony_ci                      <para>Value of control stored to a string delimited by
270c72fcc34Sopenharmony_ci                      comma (,).</para>
271c72fcc34Sopenharmony_ci                    </listitem>
272c72fcc34Sopenharmony_ci                  </varlistentry>
273c72fcc34Sopenharmony_ci                  <varlistentry>
274c72fcc34Sopenharmony_ci                    <term><option>do_search</option></term>
275c72fcc34Sopenharmony_ci                    <listitem>
276c72fcc34Sopenharmony_ci                      <para>Search for a control. Value "1" is returned
277c72fcc34Sopenharmony_ci                      if a control was found. The CTL{name} key might
278c72fcc34Sopenharmony_ci		      contain match characters * and ?. An control index
279c72fcc34Sopenharmony_ci		      might be specified as first argument starting from
280c72fcc34Sopenharmony_ci		      zero (e.g. CTL{do_search 2}="1").</para>
281c72fcc34Sopenharmony_ci                     </listitem>
282c72fcc34Sopenharmony_ci                  </varlistentry>
283c72fcc34Sopenharmony_ci                  <varlistentry>
284c72fcc34Sopenharmony_ci                    <term><option>do_count</option></term>
285c72fcc34Sopenharmony_ci                    <listitem>
286c72fcc34Sopenharmony_ci                      <para>Search for a controls and return total count
287c72fcc34Sopenharmony_ci                      of matched ones. The CTL{name} key might contain match
288c72fcc34Sopenharmony_ci                      characters * and ?.</para>
289c72fcc34Sopenharmony_ci                     </listitem>
290c72fcc34Sopenharmony_ci                  </varlistentry>
291c72fcc34Sopenharmony_ci                </variablelist>
292c72fcc34Sopenharmony_ci              </listitem>
293c72fcc34Sopenharmony_ci            </varlistentry>
294c72fcc34Sopenharmony_ci
295c72fcc34Sopenharmony_ci            <varlistentry>
296c72fcc34Sopenharmony_ci              <term><option>CONFIG{sysfs_device}</option></term>
297c72fcc34Sopenharmony_ci              <listitem>
298c72fcc34Sopenharmony_ci                <para>The relative path to sysfs subsystem specifying
299c72fcc34Sopenharmony_ci                the root directory of a soundcard device. Usually,
300c72fcc34Sopenharmony_ci                it should be set to "/class/sound/card$cardinfo{card}/device".
301c72fcc34Sopenharmony_ci                </para>
302c72fcc34Sopenharmony_ci              </listitem>
303c72fcc34Sopenharmony_ci            </varlistentry>
304c72fcc34Sopenharmony_ci
305c72fcc34Sopenharmony_ci            <varlistentry>
306c72fcc34Sopenharmony_ci              <term><option>ATTR{<replaceable>filename</replaceable>}</option></term>
307c72fcc34Sopenharmony_ci              <listitem>
308c72fcc34Sopenharmony_ci                <para>Match sysfs attribute values of the soundcard device.
309c72fcc34Sopenharmony_ci                The relative path to sysfs tree must be defined by
310c72fcc34Sopenharmony_ci		CONFIG{sysfs_device} key. Trailing whitespace in the attribute
311c72fcc34Sopenharmony_ci		values is ignored, if the specified match value does
312c72fcc34Sopenharmony_ci		not contain trailing whitespace itself. Depending on
313c72fcc34Sopenharmony_ci		the type of operator, this key is also used to set
314c72fcc34Sopenharmony_ci		the value of a sysfs attribute.
315c72fcc34Sopenharmony_ci                </para>
316c72fcc34Sopenharmony_ci              </listitem>
317c72fcc34Sopenharmony_ci            </varlistentry>
318c72fcc34Sopenharmony_ci
319c72fcc34Sopenharmony_ci            <varlistentry>
320c72fcc34Sopenharmony_ci              <term><option>ENV{<replaceable>key</replaceable>}</option></term>
321c72fcc34Sopenharmony_ci              <listitem>
322c72fcc34Sopenharmony_ci                <para>Match against the value of an environment variable. Up
323c72fcc34Sopenharmony_ci                to five <option>ENV</option> keys can be specified per rule.
324c72fcc34Sopenharmony_ci                Depending on the type of operator, this key is also used
325c72fcc34Sopenharmony_ci                to export a variable to the environment.</para>
326c72fcc34Sopenharmony_ci              </listitem>
327c72fcc34Sopenharmony_ci            </varlistentry>
328c72fcc34Sopenharmony_ci
329c72fcc34Sopenharmony_ci            <varlistentry>
330c72fcc34Sopenharmony_ci              <term><option>PROGRAM</option></term>
331c72fcc34Sopenharmony_ci              <listitem>
332c72fcc34Sopenharmony_ci                <para>Execute external program. The key is true, if
333c72fcc34Sopenharmony_ci                the program returns without exit code zero. The whole event
334c72fcc34Sopenharmony_ci                environment is available to the executed program. The
335c72fcc34Sopenharmony_ci                program's output printed to stdout is available for
336c72fcc34Sopenharmony_ci                the RESULT key.</para>
337c72fcc34Sopenharmony_ci                <para>Several buildin commands are available:</para>
338c72fcc34Sopenharmony_ci                <variablelist>
339c72fcc34Sopenharmony_ci                  <varlistentry>
340c72fcc34Sopenharmony_ci                    <term><option>__ctl_search</option></term>
341c72fcc34Sopenharmony_ci                    <listitem>
342c72fcc34Sopenharmony_ci                      <para>Search for a control. The CTL{name} key might
343c72fcc34Sopenharmony_ci		      contain match characters * and ?. An control index
344c72fcc34Sopenharmony_ci		      might be specified as first argument starting from
345c72fcc34Sopenharmony_ci		      zero (e.g. PROGRAM="__ctl_search 2").</para>
346c72fcc34Sopenharmony_ci                     </listitem>
347c72fcc34Sopenharmony_ci                  </varlistentry>
348c72fcc34Sopenharmony_ci                  <varlistentry>
349c72fcc34Sopenharmony_ci                    <term><option>__ctl_count</option></term>
350c72fcc34Sopenharmony_ci                    <listitem>
351c72fcc34Sopenharmony_ci                      <para>Search for a controls and return total count
352c72fcc34Sopenharmony_ci                      of matched ones. The CTL{name} key might contain match
353c72fcc34Sopenharmony_ci                      characters * and ?.</para>
354c72fcc34Sopenharmony_ci                     </listitem>
355c72fcc34Sopenharmony_ci                  </varlistentry>
356c72fcc34Sopenharmony_ci		</variablelist>
357c72fcc34Sopenharmony_ci              </listitem>
358c72fcc34Sopenharmony_ci            </varlistentry>
359c72fcc34Sopenharmony_ci
360c72fcc34Sopenharmony_ci            <varlistentry>
361c72fcc34Sopenharmony_ci              <term><option>RESULT</option></term>
362c72fcc34Sopenharmony_ci              <listitem>
363c72fcc34Sopenharmony_ci                <para>Match the returned string of the last PROGRAM call.
364c72fcc34Sopenharmony_ci                This key can be used in the same or in any later rule
365c72fcc34Sopenharmony_ci                after a PROGRAM call.</para>
366c72fcc34Sopenharmony_ci              </listitem>
367c72fcc34Sopenharmony_ci            </varlistentry>
368c72fcc34Sopenharmony_ci
369c72fcc34Sopenharmony_ci          </variablelist>
370c72fcc34Sopenharmony_ci
371c72fcc34Sopenharmony_ci          <para>Most of the fields support a shell style pattern matching.
372c72fcc34Sopenharmony_ci          The following pattern characters are supported:</para>
373c72fcc34Sopenharmony_ci          <variablelist>
374c72fcc34Sopenharmony_ci            <varlistentry>
375c72fcc34Sopenharmony_ci              <term><option>*</option></term>
376c72fcc34Sopenharmony_ci              <listitem>
377c72fcc34Sopenharmony_ci                <para>Matches zero, or any number of characters.</para>
378c72fcc34Sopenharmony_ci              </listitem>
379c72fcc34Sopenharmony_ci            </varlistentry>
380c72fcc34Sopenharmony_ci            <varlistentry>
381c72fcc34Sopenharmony_ci              <term><option>?</option></term>
382c72fcc34Sopenharmony_ci              <listitem>
383c72fcc34Sopenharmony_ci                <para>Matches any single character.</para>
384c72fcc34Sopenharmony_ci              </listitem>
385c72fcc34Sopenharmony_ci            </varlistentry>
386c72fcc34Sopenharmony_ci            <varlistentry>
387c72fcc34Sopenharmony_ci              <term><option>[]</option></term>
388c72fcc34Sopenharmony_ci              <listitem>
389c72fcc34Sopenharmony_ci                <para>Matches any single character specified within
390c72fcc34Sopenharmony_ci                the brackets. For example, the pattern string 'tty[SR]'
391c72fcc34Sopenharmony_ci                would match either 'ttyS' or 'ttyR'. Ranges are also
392c72fcc34Sopenharmony_ci                supported within this match with the '-' character.
393c72fcc34Sopenharmony_ci      		For example, to match on the range of all digits,
394c72fcc34Sopenharmony_ci      		the pattern [0-9] would be used. If the first character
395c72fcc34Sopenharmony_ci      		following the '[' is a '!', any characters
396c72fcc34Sopenharmony_ci                not enclosed are matched.</para>
397c72fcc34Sopenharmony_ci              </listitem>
398c72fcc34Sopenharmony_ci            </varlistentry>
399c72fcc34Sopenharmony_ci          </variablelist>
400c72fcc34Sopenharmony_ci
401c72fcc34Sopenharmony_ci          <para>The following keys can get values assigned:</para>
402c72fcc34Sopenharmony_ci          <variablelist>
403c72fcc34Sopenharmony_ci            <varlistentry>
404c72fcc34Sopenharmony_ci              <term><option>CTL{numid}</option>, <option>CTL{iface}</option>,
405c72fcc34Sopenharmony_ci		    <option>CTL{device}</option>, <option>CTL{subdev}</option>, 
406c72fcc34Sopenharmony_ci		    <option>CTL{name}</option>,  <option>CTL{index}</option>, 
407c72fcc34Sopenharmony_ci	      </term>
408c72fcc34Sopenharmony_ci              <listitem>
409c72fcc34Sopenharmony_ci              	 <para>Select universal control element.</para>
410c72fcc34Sopenharmony_ci              </listitem>
411c72fcc34Sopenharmony_ci            </varlistentry>
412c72fcc34Sopenharmony_ci            <varlistentry>
413c72fcc34Sopenharmony_ci              <term><option>CTL{value}</option></term>
414c72fcc34Sopenharmony_ci              <listitem>
415c72fcc34Sopenharmony_ci              	 <para>Value is set (written) also to soundcard's control
416c72fcc34Sopenharmony_ci              	 device and RESULT key is set to errno code. The result of
417c72fcc34Sopenharmony_ci                 set operation is always true (it means continue with
418c72fcc34Sopenharmony_ci                 next key on line).</para>
419c72fcc34Sopenharmony_ci              </listitem>
420c72fcc34Sopenharmony_ci            </varlistentry>
421c72fcc34Sopenharmony_ci            <varlistentry>
422c72fcc34Sopenharmony_ci              <term><option>CTL{values}</option></term>
423c72fcc34Sopenharmony_ci              <listitem>
424c72fcc34Sopenharmony_ci              	 <para>Value is set (written) also to soundcard's control
425c72fcc34Sopenharmony_ci              	 device (all control values are set to specified value) and
426c72fcc34Sopenharmony_ci              	 RESULT key is set to errno code. The result of
427c72fcc34Sopenharmony_ci                 set operation is always true (it means continue with
428c72fcc34Sopenharmony_ci                 next key on line).</para>
429c72fcc34Sopenharmony_ci              </listitem>
430c72fcc34Sopenharmony_ci            </varlistentry>
431c72fcc34Sopenharmony_ci            <varlistentry>
432c72fcc34Sopenharmony_ci              <term><option>CTL{write}</option></term>
433c72fcc34Sopenharmony_ci              <listitem>
434c72fcc34Sopenharmony_ci              	 <para>Value is set (written) also to soundcard's control
435c72fcc34Sopenharmony_ci              	 device (all control values are set to specified value).
436c72fcc34Sopenharmony_ci              	 The result of set operation is true when operation
437c72fcc34Sopenharmony_ci              	 succeed (it means continue with next key on line).</para>
438c72fcc34Sopenharmony_ci              </listitem>
439c72fcc34Sopenharmony_ci            </varlistentry>
440c72fcc34Sopenharmony_ci
441c72fcc34Sopenharmony_ci            <varlistentry>
442c72fcc34Sopenharmony_ci              <term><option>ENV{<replaceable>key</replaceable>}</option></term>
443c72fcc34Sopenharmony_ci              <listitem>
444c72fcc34Sopenharmony_ci                <para>Export a variable to the environment. Depending on the type of operator,
445c72fcc34Sopenharmony_ci                this key is also to match against an environment variable.</para>
446c72fcc34Sopenharmony_ci              </listitem>
447c72fcc34Sopenharmony_ci            </varlistentry>
448c72fcc34Sopenharmony_ci
449c72fcc34Sopenharmony_ci            <varlistentry>
450c72fcc34Sopenharmony_ci              <term><option>RESULT</option></term>
451c72fcc34Sopenharmony_ci              <listitem>
452c72fcc34Sopenharmony_ci                <para>Set RESULT variable. Note that PROGRAM also sets
453c72fcc34Sopenharmony_ci                this variable, but setting this variable manually
454c72fcc34Sopenharmony_ci                might be useful to change code execution order (included
455c72fcc34Sopenharmony_ci                files).</para>
456c72fcc34Sopenharmony_ci              </listitem>
457c72fcc34Sopenharmony_ci            </varlistentry>
458c72fcc34Sopenharmony_ci
459c72fcc34Sopenharmony_ci            <varlistentry>
460c72fcc34Sopenharmony_ci              <term><option>LABEL</option></term>
461c72fcc34Sopenharmony_ci              <listitem>
462c72fcc34Sopenharmony_ci                <para>Named label where a GOTO can jump to.</para>
463c72fcc34Sopenharmony_ci              </listitem>
464c72fcc34Sopenharmony_ci            </varlistentry>
465c72fcc34Sopenharmony_ci
466c72fcc34Sopenharmony_ci            <varlistentry>
467c72fcc34Sopenharmony_ci              <term><option>GOTO</option></term>
468c72fcc34Sopenharmony_ci              <listitem>
469c72fcc34Sopenharmony_ci                <para>Jumps to the next LABEL with a matching name.
470c72fcc34Sopenharmony_ci                      The goto cannot jump backward.</para>
471c72fcc34Sopenharmony_ci              </listitem>
472c72fcc34Sopenharmony_ci            </varlistentry>
473c72fcc34Sopenharmony_ci
474c72fcc34Sopenharmony_ci            <varlistentry>
475c72fcc34Sopenharmony_ci              <term><option>INCLUDE</option></term>
476c72fcc34Sopenharmony_ci              <listitem>
477c72fcc34Sopenharmony_ci                <para>Include the specified filename or files in specified directory.
478c72fcc34Sopenharmony_ci		</para>
479c72fcc34Sopenharmony_ci		<para>
480c72fcc34Sopenharmony_ci		When a directory is specified, only the files with the
481c72fcc34Sopenharmony_ci		extension ".conf" are read.
482c72fcc34Sopenharmony_ci		Also they are read in the alphabetical order.
483c72fcc34Sopenharmony_ci		Thus it's highly recommended to use some number prefix
484c72fcc34Sopenharmony_ci		(e.g. "01-something.conf") to assure the order of execucions.
485c72fcc34Sopenharmony_ci		</para>
486c72fcc34Sopenharmony_ci              </listitem>
487c72fcc34Sopenharmony_ci            </varlistentry>
488c72fcc34Sopenharmony_ci
489c72fcc34Sopenharmony_ci            <varlistentry>
490c72fcc34Sopenharmony_ci              <term><option>ACCESS</option></term>
491c72fcc34Sopenharmony_ci              <listitem>
492c72fcc34Sopenharmony_ci                <para>Check if specified file or directory exists</para>
493c72fcc34Sopenharmony_ci              </listitem>
494c72fcc34Sopenharmony_ci            </varlistentry>
495c72fcc34Sopenharmony_ci
496c72fcc34Sopenharmony_ci            <varlistentry>
497c72fcc34Sopenharmony_ci              <term><option>CONFIG{sysfs_device}</option></term>
498c72fcc34Sopenharmony_ci              <listitem>
499c72fcc34Sopenharmony_ci                <para>The relative path to sysfs subsystem specifying
500c72fcc34Sopenharmony_ci                the root directory of a soundcard device. Usually,
501c72fcc34Sopenharmony_ci                it should be set to "/class/sound/card$cardinfo{card}/device".
502c72fcc34Sopenharmony_ci                </para>
503c72fcc34Sopenharmony_ci              </listitem>
504c72fcc34Sopenharmony_ci            </varlistentry>
505c72fcc34Sopenharmony_ci
506c72fcc34Sopenharmony_ci            <varlistentry>
507c72fcc34Sopenharmony_ci              <term><option>PRINT</option></term>
508c72fcc34Sopenharmony_ci              <listitem>
509c72fcc34Sopenharmony_ci                <para>PRINT value to stdout.</para>
510c72fcc34Sopenharmony_ci              </listitem>
511c72fcc34Sopenharmony_ci            </varlistentry>
512c72fcc34Sopenharmony_ci
513c72fcc34Sopenharmony_ci            <varlistentry>
514c72fcc34Sopenharmony_ci              <term><option>ERROR</option></term>
515c72fcc34Sopenharmony_ci              <listitem>
516c72fcc34Sopenharmony_ci                <para>PRINT value to stderr.</para>
517c72fcc34Sopenharmony_ci              </listitem>
518c72fcc34Sopenharmony_ci            </varlistentry>
519c72fcc34Sopenharmony_ci
520c72fcc34Sopenharmony_ci            <varlistentry>
521c72fcc34Sopenharmony_ci              <term><option>EXIT</option></term>
522c72fcc34Sopenharmony_ci              <listitem>
523c72fcc34Sopenharmony_ci                <para>Exit immediately and set program exit code to value
524c72fcc34Sopenharmony_ci                (should be integer). If value is "return" string,
525c72fcc34Sopenharmony_ci                parser leaves current included file and returns to parent
526c72fcc34Sopenharmony_ci                configuration file.</para>
527c72fcc34Sopenharmony_ci              </listitem>
528c72fcc34Sopenharmony_ci            </varlistentry>
529c72fcc34Sopenharmony_ci
530c72fcc34Sopenharmony_ci          </variablelist>
531c72fcc34Sopenharmony_ci
532c72fcc34Sopenharmony_ci          <para>The <option>PROGRAM</option>, <option>RESULT</option>,
533c72fcc34Sopenharmony_ci          <option>CTL{value}</option>,
534c72fcc34Sopenharmony_ci	  <option>PRINT</option>, <option>ERROR</option>,
535c72fcc34Sopenharmony_ci	  <option>EXIT</option>, <option>CONFIG{}</option>
536c72fcc34Sopenharmony_ci	  fields support simple printf-like string substitutions.
537c72fcc34Sopenharmony_ci          It allows the use of the complete environment set by earlier matching
538c72fcc34Sopenharmony_ci          rules. For all other fields, substitutions are applied while the individual rule is
539c72fcc34Sopenharmony_ci          being processed. The available substitutions are:</para>
540c72fcc34Sopenharmony_ci          <variablelist>
541c72fcc34Sopenharmony_ci            <varlistentry>
542c72fcc34Sopenharmony_ci	      <term><option>$cardinfo{<replaceable>attribute</replaceable>}</option>, <option>%i{<replaceable>attribute</replaceable>}</option></term>
543c72fcc34Sopenharmony_ci              <listitem>
544c72fcc34Sopenharmony_ci                <para>See CARDINFO{} for more details.</para>
545c72fcc34Sopenharmony_ci              </listitem>
546c72fcc34Sopenharmony_ci            </varlistentry>
547c72fcc34Sopenharmony_ci
548c72fcc34Sopenharmony_ci            <varlistentry>
549c72fcc34Sopenharmony_ci              <term><option>$ctl{<replaceable>attribute</replaceable>}</option>, <option>%C{<replaceable>attribute</replaceable>}</option></term>
550c72fcc34Sopenharmony_ci              <listitem>
551c72fcc34Sopenharmony_ci                <para>See CTL{} for more details.</para>
552c72fcc34Sopenharmony_ci              </listitem>
553c72fcc34Sopenharmony_ci            </varlistentry>
554c72fcc34Sopenharmony_ci
555c72fcc34Sopenharmony_ci            <varlistentry>
556c72fcc34Sopenharmony_ci              <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term>
557c72fcc34Sopenharmony_ci              <listitem>
558c72fcc34Sopenharmony_ci                <para>The value of a sysfs attribute found at the device, where
559c72fcc34Sopenharmony_ci                all keys of the rule have matched.
560c72fcc34Sopenharmony_ci                If the attribute is a symlink, the last element of the symlink target is
561c72fcc34Sopenharmony_ci                returned as the value.</para>
562c72fcc34Sopenharmony_ci              </listitem>
563c72fcc34Sopenharmony_ci            </varlistentry>
564c72fcc34Sopenharmony_ci
565c72fcc34Sopenharmony_ci            <varlistentry>
566c72fcc34Sopenharmony_ci              <term><option>$env{<replaceable>key</replaceable>}</option>, <option>%E{<replaceable>key</replaceable>}</option></term>
567c72fcc34Sopenharmony_ci              <listitem>
568c72fcc34Sopenharmony_ci                <para>The value of an environment variable.</para>
569c72fcc34Sopenharmony_ci              </listitem>
570c72fcc34Sopenharmony_ci            </varlistentry>
571c72fcc34Sopenharmony_ci
572c72fcc34Sopenharmony_ci            <varlistentry>
573c72fcc34Sopenharmony_ci              <term><option>$result</option>, <option>%c</option></term>
574c72fcc34Sopenharmony_ci              <listitem>
575c72fcc34Sopenharmony_ci                <para>The string returned by the external program requested with PROGRAM.
576c72fcc34Sopenharmony_ci                A single part of the string, separated by a space character may be selected
577c72fcc34Sopenharmony_ci                by specifying the part number as an attribute: <option>%c{N}</option>.
578c72fcc34Sopenharmony_ci                If the number is followed by the '+' char this part plus all remaining parts
579c72fcc34Sopenharmony_ci                of the result string are substituted: <option>%c{N+}</option></para>
580c72fcc34Sopenharmony_ci              </listitem>
581c72fcc34Sopenharmony_ci            </varlistentry>
582c72fcc34Sopenharmony_ci
583c72fcc34Sopenharmony_ci            <varlistentry>
584c72fcc34Sopenharmony_ci              <term><option>$sysfsroot</option>, <option>%r</option></term>
585c72fcc34Sopenharmony_ci              <listitem>
586c72fcc34Sopenharmony_ci                <para>Root directory where sysfs file-system is mounted.
587c72fcc34Sopenharmony_ci                Ususally, this value is just "/sys".</para>
588c72fcc34Sopenharmony_ci              </listitem>
589c72fcc34Sopenharmony_ci            </varlistentry>
590c72fcc34Sopenharmony_ci
591c72fcc34Sopenharmony_ci            <varlistentry>
592c72fcc34Sopenharmony_ci              <term><option>$config{<replaceable>key</replaceable>}</option>, <option>%g{<replaceable>key</replaceable>}</option></term>
593c72fcc34Sopenharmony_ci              <listitem>
594c72fcc34Sopenharmony_ci                <para>The value of a configuration variable. See CONFIG{} for more details.</para>
595c72fcc34Sopenharmony_ci              </listitem>
596c72fcc34Sopenharmony_ci            </varlistentry>
597c72fcc34Sopenharmony_ci
598c72fcc34Sopenharmony_ci            <varlistentry>
599c72fcc34Sopenharmony_ci              <term><option>%%</option></term>
600c72fcc34Sopenharmony_ci              <listitem>
601c72fcc34Sopenharmony_ci              <para>The '%' character itself.</para>
602c72fcc34Sopenharmony_ci              </listitem>
603c72fcc34Sopenharmony_ci            </varlistentry>
604c72fcc34Sopenharmony_ci
605c72fcc34Sopenharmony_ci            <varlistentry>
606c72fcc34Sopenharmony_ci              <term><option>$$</option></term>
607c72fcc34Sopenharmony_ci              <listitem>
608c72fcc34Sopenharmony_ci              <para>The '$' character itself.</para>
609c72fcc34Sopenharmony_ci              </listitem>
610c72fcc34Sopenharmony_ci            </varlistentry>
611c72fcc34Sopenharmony_ci          </variablelist>
612c72fcc34Sopenharmony_ci          <para>The count of characters to be substituted may be limited
613c72fcc34Sopenharmony_ci          by specifying the format length value. For example, '%3s{file}'
614c72fcc34Sopenharmony_ci          will only insert the first three characters of the sysfs
615c72fcc34Sopenharmony_ci          attribute</para>
616c72fcc34Sopenharmony_ci        </refsect2>
617c72fcc34Sopenharmony_ci      </refsect1>
618c72fcc34Sopenharmony_ci
619c72fcc34Sopenharmony_ci      <refsect1><title>AUTHOR</title>
620c72fcc34Sopenharmony_ci        <para>Written by Jaroslav Kysela <email>perex@perex.cz</email></para>
621c72fcc34Sopenharmony_ci        <para>Some portions are written by Greg Kroah-Hartman <email>greg@kroah.com</email> and
622c72fcc34Sopenharmony_ci        Kay Sievers <email>kay.sievers@vrfy.org</email>.</para>
623c72fcc34Sopenharmony_ci      </refsect1>
624c72fcc34Sopenharmony_ci
625c72fcc34Sopenharmony_ci      <refsect1>
626c72fcc34Sopenharmony_ci        <title>SEE ALSO</title>
627c72fcc34Sopenharmony_ci        <para><citerefentry>
628c72fcc34Sopenharmony_ci            <refentrytitle>alsactl</refentrytitle><manvolnum>1</manvolnum>
629c72fcc34Sopenharmony_ci          </citerefentry></para>
630c72fcc34Sopenharmony_ci      </refsect1>
631c72fcc34Sopenharmony_ci    </refentry>
632c72fcc34Sopenharmony_ci  </section>
633c72fcc34Sopenharmony_ci</article>
634