1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> 4 5<!-- ****************************************************** --> 6<!-- Header --> 7<!-- ****************************************************** --> 8<book id="ALSA-Driver-API"> 9 <bookinfo> 10 <title>The ALSA Driver API</title> 11 12 <legalnotice> 13 <para> 14 This document is free; you can redistribute it and/or modify it 15 under the terms of the GNU General Public License as published by 16 the Free Software Foundation; either version 2 of the License, or 17 (at your option) any later version. 18 </para> 19 20 <para> 21 This document is distributed in the hope that it will be useful, 22 but <emphasis>WITHOUT ANY WARRANTY</emphasis>; without even the 23 implied warranty of <emphasis>MERCHANTABILITY or FITNESS FOR A 24 PARTICULAR PURPOSE</emphasis>. See the GNU General Public License 25 for more details. 26 </para> 27 28 <para> 29 You should have received a copy of the GNU General Public 30 License along with this program; if not, write to the Free 31 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 32 MA 02111-1307 USA 33 </para> 34 </legalnotice> 35 36 </bookinfo> 37 38<toc></toc> 39 40 <chapter><title>Management of Cards and Devices</title> 41 <sect1><title>Card Management</title> 42<!-- sound/core/init.c --> 43<refentry id="API-snd-device-initialize"> 44<refentryinfo> 45 <title>LINUX</title> 46 <productname>Kernel Hackers Manual</productname> 47 <date>July 2017</date> 48</refentryinfo> 49<refmeta> 50 <refentrytitle><phrase>snd_device_initialize</phrase></refentrytitle> 51 <manvolnum>9</manvolnum> 52 <refmiscinfo class="version">4.4.14</refmiscinfo> 53</refmeta> 54<refnamediv> 55 <refname>snd_device_initialize</refname> 56 <refpurpose> 57 Initialize struct device for sound devices 58 </refpurpose> 59</refnamediv> 60<refsynopsisdiv> 61 <title>Synopsis</title> 62 <funcsynopsis><funcprototype> 63 <funcdef>void <function>snd_device_initialize </function></funcdef> 64 <paramdef>struct device * <parameter>dev</parameter></paramdef> 65 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 66 </funcprototype></funcsynopsis> 67</refsynopsisdiv> 68<refsect1> 69 <title>Arguments</title> 70 <variablelist> 71 <varlistentry> 72 <term><parameter>dev</parameter></term> 73 <listitem> 74 <para> 75 device to initialize 76 </para> 77 </listitem> 78 </varlistentry> 79 <varlistentry> 80 <term><parameter>card</parameter></term> 81 <listitem> 82 <para> 83 card to assign, optional 84 </para> 85 </listitem> 86 </varlistentry> 87 </variablelist> 88</refsect1> 89</refentry> 90 91<refentry id="API-snd-card-new"> 92<refentryinfo> 93 <title>LINUX</title> 94 <productname>Kernel Hackers Manual</productname> 95 <date>July 2017</date> 96</refentryinfo> 97<refmeta> 98 <refentrytitle><phrase>snd_card_new</phrase></refentrytitle> 99 <manvolnum>9</manvolnum> 100 <refmiscinfo class="version">4.4.14</refmiscinfo> 101</refmeta> 102<refnamediv> 103 <refname>snd_card_new</refname> 104 <refpurpose> 105 create and initialize a soundcard structure 106 </refpurpose> 107</refnamediv> 108<refsynopsisdiv> 109 <title>Synopsis</title> 110 <funcsynopsis><funcprototype> 111 <funcdef>int <function>snd_card_new </function></funcdef> 112 <paramdef>struct device * <parameter>parent</parameter></paramdef> 113 <paramdef>int <parameter>idx</parameter></paramdef> 114 <paramdef>const char * <parameter>xid</parameter></paramdef> 115 <paramdef>struct module * <parameter>module</parameter></paramdef> 116 <paramdef>int <parameter>extra_size</parameter></paramdef> 117 <paramdef>struct snd_card ** <parameter>card_ret</parameter></paramdef> 118 </funcprototype></funcsynopsis> 119</refsynopsisdiv> 120<refsect1> 121 <title>Arguments</title> 122 <variablelist> 123 <varlistentry> 124 <term><parameter>parent</parameter></term> 125 <listitem> 126 <para> 127 the parent device object 128 </para> 129 </listitem> 130 </varlistentry> 131 <varlistentry> 132 <term><parameter>idx</parameter></term> 133 <listitem> 134 <para> 135 card index (address) [0 ... (SNDRV_CARDS-1)] 136 </para> 137 </listitem> 138 </varlistentry> 139 <varlistentry> 140 <term><parameter>xid</parameter></term> 141 <listitem> 142 <para> 143 card identification (ASCII string) 144 </para> 145 </listitem> 146 </varlistentry> 147 <varlistentry> 148 <term><parameter>module</parameter></term> 149 <listitem> 150 <para> 151 top level module for locking 152 </para> 153 </listitem> 154 </varlistentry> 155 <varlistentry> 156 <term><parameter>extra_size</parameter></term> 157 <listitem> 158 <para> 159 allocate this extra size after the main soundcard structure 160 </para> 161 </listitem> 162 </varlistentry> 163 <varlistentry> 164 <term><parameter>card_ret</parameter></term> 165 <listitem> 166 <para> 167 the pointer to store the created card instance 168 </para> 169 </listitem> 170 </varlistentry> 171 </variablelist> 172</refsect1> 173<refsect1> 174<title>Description</title> 175<para> 176 Creates and initializes a soundcard structure. 177 </para><para> 178 179 The function allocates snd_card instance via kzalloc with the given 180 space for the driver to use freely. The allocated struct is stored 181 in the given card_ret pointer. 182</para> 183</refsect1> 184<refsect1> 185<title>Return</title> 186<para> 187 Zero if successful or a negative error code. 188</para> 189</refsect1> 190</refentry> 191 192<refentry id="API-snd-card-disconnect"> 193<refentryinfo> 194 <title>LINUX</title> 195 <productname>Kernel Hackers Manual</productname> 196 <date>July 2017</date> 197</refentryinfo> 198<refmeta> 199 <refentrytitle><phrase>snd_card_disconnect</phrase></refentrytitle> 200 <manvolnum>9</manvolnum> 201 <refmiscinfo class="version">4.4.14</refmiscinfo> 202</refmeta> 203<refnamediv> 204 <refname>snd_card_disconnect</refname> 205 <refpurpose> 206 disconnect all APIs from the file-operations (user space) 207 </refpurpose> 208</refnamediv> 209<refsynopsisdiv> 210 <title>Synopsis</title> 211 <funcsynopsis><funcprototype> 212 <funcdef>int <function>snd_card_disconnect </function></funcdef> 213 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 214 </funcprototype></funcsynopsis> 215</refsynopsisdiv> 216<refsect1> 217 <title>Arguments</title> 218 <variablelist> 219 <varlistentry> 220 <term><parameter>card</parameter></term> 221 <listitem> 222 <para> 223 soundcard structure 224 </para> 225 </listitem> 226 </varlistentry> 227 </variablelist> 228</refsect1> 229<refsect1> 230<title>Description</title> 231<para> 232 Disconnects all APIs from the file-operations (user space). 233</para> 234</refsect1> 235<refsect1> 236<title>Return</title> 237<para> 238 Zero, otherwise a negative error code. 239</para> 240</refsect1> 241<refsect1> 242<title>Note</title> 243<para> 244 The current implementation replaces all active file->f_op with special 245 dummy file operations (they do nothing except release). 246</para> 247</refsect1> 248</refentry> 249 250<refentry id="API-snd-card-free-when-closed"> 251<refentryinfo> 252 <title>LINUX</title> 253 <productname>Kernel Hackers Manual</productname> 254 <date>July 2017</date> 255</refentryinfo> 256<refmeta> 257 <refentrytitle><phrase>snd_card_free_when_closed</phrase></refentrytitle> 258 <manvolnum>9</manvolnum> 259 <refmiscinfo class="version">4.4.14</refmiscinfo> 260</refmeta> 261<refnamediv> 262 <refname>snd_card_free_when_closed</refname> 263 <refpurpose> 264 Disconnect the card, free it later eventually 265 </refpurpose> 266</refnamediv> 267<refsynopsisdiv> 268 <title>Synopsis</title> 269 <funcsynopsis><funcprototype> 270 <funcdef>int <function>snd_card_free_when_closed </function></funcdef> 271 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 272 </funcprototype></funcsynopsis> 273</refsynopsisdiv> 274<refsect1> 275 <title>Arguments</title> 276 <variablelist> 277 <varlistentry> 278 <term><parameter>card</parameter></term> 279 <listitem> 280 <para> 281 soundcard structure 282 </para> 283 </listitem> 284 </varlistentry> 285 </variablelist> 286</refsect1> 287<refsect1> 288<title>Description</title> 289<para> 290 Unlike <function>snd_card_free</function>, this function doesn't try to release the card 291 resource immediately, but tries to disconnect at first. When the card 292 is still in use, the function returns before freeing the resources. 293 The card resources will be freed when the refcount gets to zero. 294</para> 295</refsect1> 296</refentry> 297 298<refentry id="API-snd-card-free"> 299<refentryinfo> 300 <title>LINUX</title> 301 <productname>Kernel Hackers Manual</productname> 302 <date>July 2017</date> 303</refentryinfo> 304<refmeta> 305 <refentrytitle><phrase>snd_card_free</phrase></refentrytitle> 306 <manvolnum>9</manvolnum> 307 <refmiscinfo class="version">4.4.14</refmiscinfo> 308</refmeta> 309<refnamediv> 310 <refname>snd_card_free</refname> 311 <refpurpose> 312 frees given soundcard structure 313 </refpurpose> 314</refnamediv> 315<refsynopsisdiv> 316 <title>Synopsis</title> 317 <funcsynopsis><funcprototype> 318 <funcdef>int <function>snd_card_free </function></funcdef> 319 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 320 </funcprototype></funcsynopsis> 321</refsynopsisdiv> 322<refsect1> 323 <title>Arguments</title> 324 <variablelist> 325 <varlistentry> 326 <term><parameter>card</parameter></term> 327 <listitem> 328 <para> 329 soundcard structure 330 </para> 331 </listitem> 332 </varlistentry> 333 </variablelist> 334</refsect1> 335<refsect1> 336<title>Description</title> 337<para> 338 This function releases the soundcard structure and the all assigned 339 devices automatically. That is, you don't have to release the devices 340 by yourself. 341 </para><para> 342 343 This function waits until the all resources are properly released. 344</para> 345</refsect1> 346<refsect1> 347<title>Return</title> 348<para> 349 Zero. Frees all associated devices and frees the control 350 interface associated to given soundcard. 351</para> 352</refsect1> 353</refentry> 354 355<refentry id="API-snd-card-set-id"> 356<refentryinfo> 357 <title>LINUX</title> 358 <productname>Kernel Hackers Manual</productname> 359 <date>July 2017</date> 360</refentryinfo> 361<refmeta> 362 <refentrytitle><phrase>snd_card_set_id</phrase></refentrytitle> 363 <manvolnum>9</manvolnum> 364 <refmiscinfo class="version">4.4.14</refmiscinfo> 365</refmeta> 366<refnamediv> 367 <refname>snd_card_set_id</refname> 368 <refpurpose> 369 set card identification name 370 </refpurpose> 371</refnamediv> 372<refsynopsisdiv> 373 <title>Synopsis</title> 374 <funcsynopsis><funcprototype> 375 <funcdef>void <function>snd_card_set_id </function></funcdef> 376 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 377 <paramdef>const char * <parameter>nid</parameter></paramdef> 378 </funcprototype></funcsynopsis> 379</refsynopsisdiv> 380<refsect1> 381 <title>Arguments</title> 382 <variablelist> 383 <varlistentry> 384 <term><parameter>card</parameter></term> 385 <listitem> 386 <para> 387 soundcard structure 388 </para> 389 </listitem> 390 </varlistentry> 391 <varlistentry> 392 <term><parameter>nid</parameter></term> 393 <listitem> 394 <para> 395 new identification string 396 </para> 397 </listitem> 398 </varlistentry> 399 </variablelist> 400</refsect1> 401<refsect1> 402<title>Description</title> 403<para> 404 This function sets the card identification and checks for name 405 collisions. 406</para> 407</refsect1> 408</refentry> 409 410<refentry id="API-snd-card-add-dev-attr"> 411<refentryinfo> 412 <title>LINUX</title> 413 <productname>Kernel Hackers Manual</productname> 414 <date>July 2017</date> 415</refentryinfo> 416<refmeta> 417 <refentrytitle><phrase>snd_card_add_dev_attr</phrase></refentrytitle> 418 <manvolnum>9</manvolnum> 419 <refmiscinfo class="version">4.4.14</refmiscinfo> 420</refmeta> 421<refnamediv> 422 <refname>snd_card_add_dev_attr</refname> 423 <refpurpose> 424 Append a new sysfs attribute group to card 425 </refpurpose> 426</refnamediv> 427<refsynopsisdiv> 428 <title>Synopsis</title> 429 <funcsynopsis><funcprototype> 430 <funcdef>int <function>snd_card_add_dev_attr </function></funcdef> 431 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 432 <paramdef>const struct attribute_group * <parameter>group</parameter></paramdef> 433 </funcprototype></funcsynopsis> 434</refsynopsisdiv> 435<refsect1> 436 <title>Arguments</title> 437 <variablelist> 438 <varlistentry> 439 <term><parameter>card</parameter></term> 440 <listitem> 441 <para> 442 card instance 443 </para> 444 </listitem> 445 </varlistentry> 446 <varlistentry> 447 <term><parameter>group</parameter></term> 448 <listitem> 449 <para> 450 attribute group to append 451 </para> 452 </listitem> 453 </varlistentry> 454 </variablelist> 455</refsect1> 456</refentry> 457 458<refentry id="API-snd-card-register"> 459<refentryinfo> 460 <title>LINUX</title> 461 <productname>Kernel Hackers Manual</productname> 462 <date>July 2017</date> 463</refentryinfo> 464<refmeta> 465 <refentrytitle><phrase>snd_card_register</phrase></refentrytitle> 466 <manvolnum>9</manvolnum> 467 <refmiscinfo class="version">4.4.14</refmiscinfo> 468</refmeta> 469<refnamediv> 470 <refname>snd_card_register</refname> 471 <refpurpose> 472 register the soundcard 473 </refpurpose> 474</refnamediv> 475<refsynopsisdiv> 476 <title>Synopsis</title> 477 <funcsynopsis><funcprototype> 478 <funcdef>int <function>snd_card_register </function></funcdef> 479 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 480 </funcprototype></funcsynopsis> 481</refsynopsisdiv> 482<refsect1> 483 <title>Arguments</title> 484 <variablelist> 485 <varlistentry> 486 <term><parameter>card</parameter></term> 487 <listitem> 488 <para> 489 soundcard structure 490 </para> 491 </listitem> 492 </varlistentry> 493 </variablelist> 494</refsect1> 495<refsect1> 496<title>Description</title> 497<para> 498 This function registers all the devices assigned to the soundcard. 499 Until calling this, the ALSA control interface is blocked from the 500 external accesses. Thus, you should call this function at the end 501 of the initialization of the card. 502</para> 503</refsect1> 504<refsect1> 505<title>Return</title> 506<para> 507 Zero otherwise a negative error code if the registration failed. 508</para> 509</refsect1> 510</refentry> 511 512<refentry id="API-snd-component-add"> 513<refentryinfo> 514 <title>LINUX</title> 515 <productname>Kernel Hackers Manual</productname> 516 <date>July 2017</date> 517</refentryinfo> 518<refmeta> 519 <refentrytitle><phrase>snd_component_add</phrase></refentrytitle> 520 <manvolnum>9</manvolnum> 521 <refmiscinfo class="version">4.4.14</refmiscinfo> 522</refmeta> 523<refnamediv> 524 <refname>snd_component_add</refname> 525 <refpurpose> 526 add a component string 527 </refpurpose> 528</refnamediv> 529<refsynopsisdiv> 530 <title>Synopsis</title> 531 <funcsynopsis><funcprototype> 532 <funcdef>int <function>snd_component_add </function></funcdef> 533 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 534 <paramdef>const char * <parameter>component</parameter></paramdef> 535 </funcprototype></funcsynopsis> 536</refsynopsisdiv> 537<refsect1> 538 <title>Arguments</title> 539 <variablelist> 540 <varlistentry> 541 <term><parameter>card</parameter></term> 542 <listitem> 543 <para> 544 soundcard structure 545 </para> 546 </listitem> 547 </varlistentry> 548 <varlistentry> 549 <term><parameter>component</parameter></term> 550 <listitem> 551 <para> 552 the component id string 553 </para> 554 </listitem> 555 </varlistentry> 556 </variablelist> 557</refsect1> 558<refsect1> 559<title>Description</title> 560<para> 561 This function adds the component id string to the supported list. 562 The component can be referred from the alsa-lib. 563</para> 564</refsect1> 565<refsect1> 566<title>Return</title> 567<para> 568 Zero otherwise a negative error code. 569</para> 570</refsect1> 571</refentry> 572 573<refentry id="API-snd-card-file-add"> 574<refentryinfo> 575 <title>LINUX</title> 576 <productname>Kernel Hackers Manual</productname> 577 <date>July 2017</date> 578</refentryinfo> 579<refmeta> 580 <refentrytitle><phrase>snd_card_file_add</phrase></refentrytitle> 581 <manvolnum>9</manvolnum> 582 <refmiscinfo class="version">4.4.14</refmiscinfo> 583</refmeta> 584<refnamediv> 585 <refname>snd_card_file_add</refname> 586 <refpurpose> 587 add the file to the file list of the card 588 </refpurpose> 589</refnamediv> 590<refsynopsisdiv> 591 <title>Synopsis</title> 592 <funcsynopsis><funcprototype> 593 <funcdef>int <function>snd_card_file_add </function></funcdef> 594 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 595 <paramdef>struct file * <parameter>file</parameter></paramdef> 596 </funcprototype></funcsynopsis> 597</refsynopsisdiv> 598<refsect1> 599 <title>Arguments</title> 600 <variablelist> 601 <varlistentry> 602 <term><parameter>card</parameter></term> 603 <listitem> 604 <para> 605 soundcard structure 606 </para> 607 </listitem> 608 </varlistentry> 609 <varlistentry> 610 <term><parameter>file</parameter></term> 611 <listitem> 612 <para> 613 file pointer 614 </para> 615 </listitem> 616 </varlistentry> 617 </variablelist> 618</refsect1> 619<refsect1> 620<title>Description</title> 621<para> 622 This function adds the file to the file linked-list of the card. 623 This linked-list is used to keep tracking the connection state, 624 and to avoid the release of busy resources by hotplug. 625</para> 626</refsect1> 627<refsect1> 628<title>Return</title> 629<para> 630 zero or a negative error code. 631</para> 632</refsect1> 633</refentry> 634 635<refentry id="API-snd-card-file-remove"> 636<refentryinfo> 637 <title>LINUX</title> 638 <productname>Kernel Hackers Manual</productname> 639 <date>July 2017</date> 640</refentryinfo> 641<refmeta> 642 <refentrytitle><phrase>snd_card_file_remove</phrase></refentrytitle> 643 <manvolnum>9</manvolnum> 644 <refmiscinfo class="version">4.4.14</refmiscinfo> 645</refmeta> 646<refnamediv> 647 <refname>snd_card_file_remove</refname> 648 <refpurpose> 649 remove the file from the file list 650 </refpurpose> 651</refnamediv> 652<refsynopsisdiv> 653 <title>Synopsis</title> 654 <funcsynopsis><funcprototype> 655 <funcdef>int <function>snd_card_file_remove </function></funcdef> 656 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 657 <paramdef>struct file * <parameter>file</parameter></paramdef> 658 </funcprototype></funcsynopsis> 659</refsynopsisdiv> 660<refsect1> 661 <title>Arguments</title> 662 <variablelist> 663 <varlistentry> 664 <term><parameter>card</parameter></term> 665 <listitem> 666 <para> 667 soundcard structure 668 </para> 669 </listitem> 670 </varlistentry> 671 <varlistentry> 672 <term><parameter>file</parameter></term> 673 <listitem> 674 <para> 675 file pointer 676 </para> 677 </listitem> 678 </varlistentry> 679 </variablelist> 680</refsect1> 681<refsect1> 682<title>Description</title> 683<para> 684 This function removes the file formerly added to the card via 685 <function>snd_card_file_add</function> function. 686 If all files are removed and <function>snd_card_free_when_closed</function> was 687 called beforehand, it processes the pending release of 688 resources. 689</para> 690</refsect1> 691<refsect1> 692<title>Return</title> 693<para> 694 Zero or a negative error code. 695</para> 696</refsect1> 697</refentry> 698 699<refentry id="API-snd-power-wait"> 700<refentryinfo> 701 <title>LINUX</title> 702 <productname>Kernel Hackers Manual</productname> 703 <date>July 2017</date> 704</refentryinfo> 705<refmeta> 706 <refentrytitle><phrase>snd_power_wait</phrase></refentrytitle> 707 <manvolnum>9</manvolnum> 708 <refmiscinfo class="version">4.4.14</refmiscinfo> 709</refmeta> 710<refnamediv> 711 <refname>snd_power_wait</refname> 712 <refpurpose> 713 wait until the power-state is changed. 714 </refpurpose> 715</refnamediv> 716<refsynopsisdiv> 717 <title>Synopsis</title> 718 <funcsynopsis><funcprototype> 719 <funcdef>int <function>snd_power_wait </function></funcdef> 720 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 721 <paramdef>unsigned int <parameter>power_state</parameter></paramdef> 722 </funcprototype></funcsynopsis> 723</refsynopsisdiv> 724<refsect1> 725 <title>Arguments</title> 726 <variablelist> 727 <varlistentry> 728 <term><parameter>card</parameter></term> 729 <listitem> 730 <para> 731 soundcard structure 732 </para> 733 </listitem> 734 </varlistentry> 735 <varlistentry> 736 <term><parameter>power_state</parameter></term> 737 <listitem> 738 <para> 739 expected power state 740 </para> 741 </listitem> 742 </varlistentry> 743 </variablelist> 744</refsect1> 745<refsect1> 746<title>Description</title> 747<para> 748 Waits until the power-state is changed. 749</para> 750</refsect1> 751<refsect1> 752<title>Return</title> 753<para> 754 Zero if successful, or a negative error code. 755</para> 756</refsect1> 757<refsect1> 758<title>Note</title> 759<para> 760 the power lock must be active before call. 761</para> 762</refsect1> 763</refentry> 764 765 </sect1> 766 <sect1><title>Device Components</title> 767<!-- sound/core/device.c --> 768<refentry id="API-snd-device-new"> 769<refentryinfo> 770 <title>LINUX</title> 771 <productname>Kernel Hackers Manual</productname> 772 <date>July 2017</date> 773</refentryinfo> 774<refmeta> 775 <refentrytitle><phrase>snd_device_new</phrase></refentrytitle> 776 <manvolnum>9</manvolnum> 777 <refmiscinfo class="version">4.4.14</refmiscinfo> 778</refmeta> 779<refnamediv> 780 <refname>snd_device_new</refname> 781 <refpurpose> 782 create an ALSA device component 783 </refpurpose> 784</refnamediv> 785<refsynopsisdiv> 786 <title>Synopsis</title> 787 <funcsynopsis><funcprototype> 788 <funcdef>int <function>snd_device_new </function></funcdef> 789 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 790 <paramdef>enum snd_device_type <parameter>type</parameter></paramdef> 791 <paramdef>void * <parameter>device_data</parameter></paramdef> 792 <paramdef>struct snd_device_ops * <parameter>ops</parameter></paramdef> 793 </funcprototype></funcsynopsis> 794</refsynopsisdiv> 795<refsect1> 796 <title>Arguments</title> 797 <variablelist> 798 <varlistentry> 799 <term><parameter>card</parameter></term> 800 <listitem> 801 <para> 802 the card instance 803 </para> 804 </listitem> 805 </varlistentry> 806 <varlistentry> 807 <term><parameter>type</parameter></term> 808 <listitem> 809 <para> 810 the device type, SNDRV_DEV_XXX 811 </para> 812 </listitem> 813 </varlistentry> 814 <varlistentry> 815 <term><parameter>device_data</parameter></term> 816 <listitem> 817 <para> 818 the data pointer of this device 819 </para> 820 </listitem> 821 </varlistentry> 822 <varlistentry> 823 <term><parameter>ops</parameter></term> 824 <listitem> 825 <para> 826 the operator table 827 </para> 828 </listitem> 829 </varlistentry> 830 </variablelist> 831</refsect1> 832<refsect1> 833<title>Description</title> 834<para> 835 Creates a new device component for the given data pointer. 836 The device will be assigned to the card and managed together 837 by the card. 838 </para><para> 839 840 The data pointer plays a role as the identifier, too, so the 841 pointer address must be unique and unchanged. 842</para> 843</refsect1> 844<refsect1> 845<title>Return</title> 846<para> 847 Zero if successful, or a negative error code on failure. 848</para> 849</refsect1> 850</refentry> 851 852<refentry id="API-snd-device-disconnect"> 853<refentryinfo> 854 <title>LINUX</title> 855 <productname>Kernel Hackers Manual</productname> 856 <date>July 2017</date> 857</refentryinfo> 858<refmeta> 859 <refentrytitle><phrase>snd_device_disconnect</phrase></refentrytitle> 860 <manvolnum>9</manvolnum> 861 <refmiscinfo class="version">4.4.14</refmiscinfo> 862</refmeta> 863<refnamediv> 864 <refname>snd_device_disconnect</refname> 865 <refpurpose> 866 disconnect the device 867 </refpurpose> 868</refnamediv> 869<refsynopsisdiv> 870 <title>Synopsis</title> 871 <funcsynopsis><funcprototype> 872 <funcdef>void <function>snd_device_disconnect </function></funcdef> 873 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 874 <paramdef>void * <parameter>device_data</parameter></paramdef> 875 </funcprototype></funcsynopsis> 876</refsynopsisdiv> 877<refsect1> 878 <title>Arguments</title> 879 <variablelist> 880 <varlistentry> 881 <term><parameter>card</parameter></term> 882 <listitem> 883 <para> 884 the card instance 885 </para> 886 </listitem> 887 </varlistentry> 888 <varlistentry> 889 <term><parameter>device_data</parameter></term> 890 <listitem> 891 <para> 892 the data pointer to disconnect 893 </para> 894 </listitem> 895 </varlistentry> 896 </variablelist> 897</refsect1> 898<refsect1> 899<title>Description</title> 900<para> 901 Turns the device into the disconnection state, invoking 902 dev_disconnect callback, if the device was already registered. 903 </para><para> 904 905 Usually called from <function>snd_card_disconnect</function>. 906</para> 907</refsect1> 908<refsect1> 909<title>Return</title> 910<para> 911 Zero if successful, or a negative error code on failure or if the 912 device not found. 913</para> 914</refsect1> 915</refentry> 916 917<refentry id="API-snd-device-free"> 918<refentryinfo> 919 <title>LINUX</title> 920 <productname>Kernel Hackers Manual</productname> 921 <date>July 2017</date> 922</refentryinfo> 923<refmeta> 924 <refentrytitle><phrase>snd_device_free</phrase></refentrytitle> 925 <manvolnum>9</manvolnum> 926 <refmiscinfo class="version">4.4.14</refmiscinfo> 927</refmeta> 928<refnamediv> 929 <refname>snd_device_free</refname> 930 <refpurpose> 931 release the device from the card 932 </refpurpose> 933</refnamediv> 934<refsynopsisdiv> 935 <title>Synopsis</title> 936 <funcsynopsis><funcprototype> 937 <funcdef>void <function>snd_device_free </function></funcdef> 938 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 939 <paramdef>void * <parameter>device_data</parameter></paramdef> 940 </funcprototype></funcsynopsis> 941</refsynopsisdiv> 942<refsect1> 943 <title>Arguments</title> 944 <variablelist> 945 <varlistentry> 946 <term><parameter>card</parameter></term> 947 <listitem> 948 <para> 949 the card instance 950 </para> 951 </listitem> 952 </varlistentry> 953 <varlistentry> 954 <term><parameter>device_data</parameter></term> 955 <listitem> 956 <para> 957 the data pointer to release 958 </para> 959 </listitem> 960 </varlistentry> 961 </variablelist> 962</refsect1> 963<refsect1> 964<title>Description</title> 965<para> 966 Removes the device from the list on the card and invokes the 967 callbacks, dev_disconnect and dev_free, corresponding to the state. 968 Then release the device. 969</para> 970</refsect1> 971</refentry> 972 973<refentry id="API-snd-device-register"> 974<refentryinfo> 975 <title>LINUX</title> 976 <productname>Kernel Hackers Manual</productname> 977 <date>July 2017</date> 978</refentryinfo> 979<refmeta> 980 <refentrytitle><phrase>snd_device_register</phrase></refentrytitle> 981 <manvolnum>9</manvolnum> 982 <refmiscinfo class="version">4.4.14</refmiscinfo> 983</refmeta> 984<refnamediv> 985 <refname>snd_device_register</refname> 986 <refpurpose> 987 register the device 988 </refpurpose> 989</refnamediv> 990<refsynopsisdiv> 991 <title>Synopsis</title> 992 <funcsynopsis><funcprototype> 993 <funcdef>int <function>snd_device_register </function></funcdef> 994 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 995 <paramdef>void * <parameter>device_data</parameter></paramdef> 996 </funcprototype></funcsynopsis> 997</refsynopsisdiv> 998<refsect1> 999 <title>Arguments</title> 1000 <variablelist> 1001 <varlistentry> 1002 <term><parameter>card</parameter></term> 1003 <listitem> 1004 <para> 1005 the card instance 1006 </para> 1007 </listitem> 1008 </varlistentry> 1009 <varlistentry> 1010 <term><parameter>device_data</parameter></term> 1011 <listitem> 1012 <para> 1013 the data pointer to register 1014 </para> 1015 </listitem> 1016 </varlistentry> 1017 </variablelist> 1018</refsect1> 1019<refsect1> 1020<title>Description</title> 1021<para> 1022 Registers the device which was already created via 1023 <function>snd_device_new</function>. Usually this is called from <function>snd_card_register</function>, 1024 but it can be called later if any new devices are created after 1025 invocation of <function>snd_card_register</function>. 1026</para> 1027</refsect1> 1028<refsect1> 1029<title>Return</title> 1030<para> 1031 Zero if successful, or a negative error code on failure or if the 1032 device not found. 1033</para> 1034</refsect1> 1035</refentry> 1036 1037 </sect1> 1038 <sect1><title>Module requests and Device File Entries</title> 1039<!-- sound/core/sound.c --> 1040<refentry id="API-snd-request-card"> 1041<refentryinfo> 1042 <title>LINUX</title> 1043 <productname>Kernel Hackers Manual</productname> 1044 <date>July 2017</date> 1045</refentryinfo> 1046<refmeta> 1047 <refentrytitle><phrase>snd_request_card</phrase></refentrytitle> 1048 <manvolnum>9</manvolnum> 1049 <refmiscinfo class="version">4.4.14</refmiscinfo> 1050</refmeta> 1051<refnamediv> 1052 <refname>snd_request_card</refname> 1053 <refpurpose> 1054 try to load the card module 1055 </refpurpose> 1056</refnamediv> 1057<refsynopsisdiv> 1058 <title>Synopsis</title> 1059 <funcsynopsis><funcprototype> 1060 <funcdef>void <function>snd_request_card </function></funcdef> 1061 <paramdef>int <parameter>card</parameter></paramdef> 1062 </funcprototype></funcsynopsis> 1063</refsynopsisdiv> 1064<refsect1> 1065 <title>Arguments</title> 1066 <variablelist> 1067 <varlistentry> 1068 <term><parameter>card</parameter></term> 1069 <listitem> 1070 <para> 1071 the card number 1072 </para> 1073 </listitem> 1074 </varlistentry> 1075 </variablelist> 1076</refsect1> 1077<refsect1> 1078<title>Description</title> 1079<para> 1080 Tries to load the module <quote>snd-card-X</quote> for the given card number 1081 via request_module. Returns immediately if already loaded. 1082</para> 1083</refsect1> 1084</refentry> 1085 1086<refentry id="API-snd-lookup-minor-data"> 1087<refentryinfo> 1088 <title>LINUX</title> 1089 <productname>Kernel Hackers Manual</productname> 1090 <date>July 2017</date> 1091</refentryinfo> 1092<refmeta> 1093 <refentrytitle><phrase>snd_lookup_minor_data</phrase></refentrytitle> 1094 <manvolnum>9</manvolnum> 1095 <refmiscinfo class="version">4.4.14</refmiscinfo> 1096</refmeta> 1097<refnamediv> 1098 <refname>snd_lookup_minor_data</refname> 1099 <refpurpose> 1100 get user data of a registered device 1101 </refpurpose> 1102</refnamediv> 1103<refsynopsisdiv> 1104 <title>Synopsis</title> 1105 <funcsynopsis><funcprototype> 1106 <funcdef>void * <function>snd_lookup_minor_data </function></funcdef> 1107 <paramdef>unsigned int <parameter>minor</parameter></paramdef> 1108 <paramdef>int <parameter>type</parameter></paramdef> 1109 </funcprototype></funcsynopsis> 1110</refsynopsisdiv> 1111<refsect1> 1112 <title>Arguments</title> 1113 <variablelist> 1114 <varlistentry> 1115 <term><parameter>minor</parameter></term> 1116 <listitem> 1117 <para> 1118 the minor number 1119 </para> 1120 </listitem> 1121 </varlistentry> 1122 <varlistentry> 1123 <term><parameter>type</parameter></term> 1124 <listitem> 1125 <para> 1126 device type (SNDRV_DEVICE_TYPE_XXX) 1127 </para> 1128 </listitem> 1129 </varlistentry> 1130 </variablelist> 1131</refsect1> 1132<refsect1> 1133<title>Description</title> 1134<para> 1135 Checks that a minor device with the specified type is registered, and returns 1136 its user data pointer. 1137 </para><para> 1138 1139 This function increments the reference counter of the card instance 1140 if an associated instance with the given minor number and type is found. 1141 The caller must call <function>snd_card_unref</function> appropriately later. 1142</para> 1143</refsect1> 1144<refsect1> 1145<title>Return</title> 1146<para> 1147 The user data pointer if the specified device is found. <constant>NULL</constant> 1148 otherwise. 1149</para> 1150</refsect1> 1151</refentry> 1152 1153<refentry id="API-snd-register-device"> 1154<refentryinfo> 1155 <title>LINUX</title> 1156 <productname>Kernel Hackers Manual</productname> 1157 <date>July 2017</date> 1158</refentryinfo> 1159<refmeta> 1160 <refentrytitle><phrase>snd_register_device</phrase></refentrytitle> 1161 <manvolnum>9</manvolnum> 1162 <refmiscinfo class="version">4.4.14</refmiscinfo> 1163</refmeta> 1164<refnamediv> 1165 <refname>snd_register_device</refname> 1166 <refpurpose> 1167 Register the ALSA device file for the card 1168 </refpurpose> 1169</refnamediv> 1170<refsynopsisdiv> 1171 <title>Synopsis</title> 1172 <funcsynopsis><funcprototype> 1173 <funcdef>int <function>snd_register_device </function></funcdef> 1174 <paramdef>int <parameter>type</parameter></paramdef> 1175 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 1176 <paramdef>int <parameter>dev</parameter></paramdef> 1177 <paramdef>const struct file_operations * <parameter>f_ops</parameter></paramdef> 1178 <paramdef>void * <parameter>private_data</parameter></paramdef> 1179 <paramdef>struct device * <parameter>device</parameter></paramdef> 1180 </funcprototype></funcsynopsis> 1181</refsynopsisdiv> 1182<refsect1> 1183 <title>Arguments</title> 1184 <variablelist> 1185 <varlistentry> 1186 <term><parameter>type</parameter></term> 1187 <listitem> 1188 <para> 1189 the device type, SNDRV_DEVICE_TYPE_XXX 1190 </para> 1191 </listitem> 1192 </varlistentry> 1193 <varlistentry> 1194 <term><parameter>card</parameter></term> 1195 <listitem> 1196 <para> 1197 the card instance 1198 </para> 1199 </listitem> 1200 </varlistentry> 1201 <varlistentry> 1202 <term><parameter>dev</parameter></term> 1203 <listitem> 1204 <para> 1205 the device index 1206 </para> 1207 </listitem> 1208 </varlistentry> 1209 <varlistentry> 1210 <term><parameter>f_ops</parameter></term> 1211 <listitem> 1212 <para> 1213 the file operations 1214 </para> 1215 </listitem> 1216 </varlistentry> 1217 <varlistentry> 1218 <term><parameter>private_data</parameter></term> 1219 <listitem> 1220 <para> 1221 user pointer for f_ops-><function>open</function> 1222 </para> 1223 </listitem> 1224 </varlistentry> 1225 <varlistentry> 1226 <term><parameter>device</parameter></term> 1227 <listitem> 1228 <para> 1229 the device to register 1230 </para> 1231 </listitem> 1232 </varlistentry> 1233 </variablelist> 1234</refsect1> 1235<refsect1> 1236<title>Description</title> 1237<para> 1238 Registers an ALSA device file for the given card. 1239 The operators have to be set in reg parameter. 1240</para> 1241</refsect1> 1242<refsect1> 1243<title>Return</title> 1244<para> 1245 Zero if successful, or a negative error code on failure. 1246</para> 1247</refsect1> 1248</refentry> 1249 1250<refentry id="API-snd-unregister-device"> 1251<refentryinfo> 1252 <title>LINUX</title> 1253 <productname>Kernel Hackers Manual</productname> 1254 <date>July 2017</date> 1255</refentryinfo> 1256<refmeta> 1257 <refentrytitle><phrase>snd_unregister_device</phrase></refentrytitle> 1258 <manvolnum>9</manvolnum> 1259 <refmiscinfo class="version">4.4.14</refmiscinfo> 1260</refmeta> 1261<refnamediv> 1262 <refname>snd_unregister_device</refname> 1263 <refpurpose> 1264 unregister the device on the given card 1265 </refpurpose> 1266</refnamediv> 1267<refsynopsisdiv> 1268 <title>Synopsis</title> 1269 <funcsynopsis><funcprototype> 1270 <funcdef>int <function>snd_unregister_device </function></funcdef> 1271 <paramdef>struct device * <parameter>dev</parameter></paramdef> 1272 </funcprototype></funcsynopsis> 1273</refsynopsisdiv> 1274<refsect1> 1275 <title>Arguments</title> 1276 <variablelist> 1277 <varlistentry> 1278 <term><parameter>dev</parameter></term> 1279 <listitem> 1280 <para> 1281 the device instance 1282 </para> 1283 </listitem> 1284 </varlistentry> 1285 </variablelist> 1286</refsect1> 1287<refsect1> 1288<title>Description</title> 1289<para> 1290 Unregisters the device file already registered via 1291 <function>snd_register_device</function>. 1292</para> 1293</refsect1> 1294<refsect1> 1295<title>Return</title> 1296<para> 1297 Zero if successful, or a negative error code on failure. 1298</para> 1299</refsect1> 1300</refentry> 1301 1302 </sect1> 1303 <sect1><title>Memory Management Helpers</title> 1304<!-- sound/core/memory.c --> 1305<refentry id="API-copy-to-user-fromio"> 1306<refentryinfo> 1307 <title>LINUX</title> 1308 <productname>Kernel Hackers Manual</productname> 1309 <date>July 2017</date> 1310</refentryinfo> 1311<refmeta> 1312 <refentrytitle><phrase>copy_to_user_fromio</phrase></refentrytitle> 1313 <manvolnum>9</manvolnum> 1314 <refmiscinfo class="version">4.4.14</refmiscinfo> 1315</refmeta> 1316<refnamediv> 1317 <refname>copy_to_user_fromio</refname> 1318 <refpurpose> 1319 copy data from mmio-space to user-space 1320 </refpurpose> 1321</refnamediv> 1322<refsynopsisdiv> 1323 <title>Synopsis</title> 1324 <funcsynopsis><funcprototype> 1325 <funcdef>int <function>copy_to_user_fromio </function></funcdef> 1326 <paramdef>void __user * <parameter>dst</parameter></paramdef> 1327 <paramdef>const volatile void __iomem * <parameter>src</parameter></paramdef> 1328 <paramdef>size_t <parameter>count</parameter></paramdef> 1329 </funcprototype></funcsynopsis> 1330</refsynopsisdiv> 1331<refsect1> 1332 <title>Arguments</title> 1333 <variablelist> 1334 <varlistentry> 1335 <term><parameter>dst</parameter></term> 1336 <listitem> 1337 <para> 1338 the destination pointer on user-space 1339 </para> 1340 </listitem> 1341 </varlistentry> 1342 <varlistentry> 1343 <term><parameter>src</parameter></term> 1344 <listitem> 1345 <para> 1346 the source pointer on mmio 1347 </para> 1348 </listitem> 1349 </varlistentry> 1350 <varlistentry> 1351 <term><parameter>count</parameter></term> 1352 <listitem> 1353 <para> 1354 the data size to copy in bytes 1355 </para> 1356 </listitem> 1357 </varlistentry> 1358 </variablelist> 1359</refsect1> 1360<refsect1> 1361<title>Description</title> 1362<para> 1363 Copies the data from mmio-space to user-space. 1364</para> 1365</refsect1> 1366<refsect1> 1367<title>Return</title> 1368<para> 1369 Zero if successful, or non-zero on failure. 1370</para> 1371</refsect1> 1372</refentry> 1373 1374<refentry id="API-copy-from-user-toio"> 1375<refentryinfo> 1376 <title>LINUX</title> 1377 <productname>Kernel Hackers Manual</productname> 1378 <date>July 2017</date> 1379</refentryinfo> 1380<refmeta> 1381 <refentrytitle><phrase>copy_from_user_toio</phrase></refentrytitle> 1382 <manvolnum>9</manvolnum> 1383 <refmiscinfo class="version">4.4.14</refmiscinfo> 1384</refmeta> 1385<refnamediv> 1386 <refname>copy_from_user_toio</refname> 1387 <refpurpose> 1388 copy data from user-space to mmio-space 1389 </refpurpose> 1390</refnamediv> 1391<refsynopsisdiv> 1392 <title>Synopsis</title> 1393 <funcsynopsis><funcprototype> 1394 <funcdef>int <function>copy_from_user_toio </function></funcdef> 1395 <paramdef>volatile void __iomem * <parameter>dst</parameter></paramdef> 1396 <paramdef>const void __user * <parameter>src</parameter></paramdef> 1397 <paramdef>size_t <parameter>count</parameter></paramdef> 1398 </funcprototype></funcsynopsis> 1399</refsynopsisdiv> 1400<refsect1> 1401 <title>Arguments</title> 1402 <variablelist> 1403 <varlistentry> 1404 <term><parameter>dst</parameter></term> 1405 <listitem> 1406 <para> 1407 the destination pointer on mmio-space 1408 </para> 1409 </listitem> 1410 </varlistentry> 1411 <varlistentry> 1412 <term><parameter>src</parameter></term> 1413 <listitem> 1414 <para> 1415 the source pointer on user-space 1416 </para> 1417 </listitem> 1418 </varlistentry> 1419 <varlistentry> 1420 <term><parameter>count</parameter></term> 1421 <listitem> 1422 <para> 1423 the data size to copy in bytes 1424 </para> 1425 </listitem> 1426 </varlistentry> 1427 </variablelist> 1428</refsect1> 1429<refsect1> 1430<title>Description</title> 1431<para> 1432 Copies the data from user-space to mmio-space. 1433</para> 1434</refsect1> 1435<refsect1> 1436<title>Return</title> 1437<para> 1438 Zero if successful, or non-zero on failure. 1439</para> 1440</refsect1> 1441</refentry> 1442 1443<!-- sound/core/memalloc.c --> 1444<refentry id="API-snd-malloc-pages"> 1445<refentryinfo> 1446 <title>LINUX</title> 1447 <productname>Kernel Hackers Manual</productname> 1448 <date>July 2017</date> 1449</refentryinfo> 1450<refmeta> 1451 <refentrytitle><phrase>snd_malloc_pages</phrase></refentrytitle> 1452 <manvolnum>9</manvolnum> 1453 <refmiscinfo class="version">4.4.14</refmiscinfo> 1454</refmeta> 1455<refnamediv> 1456 <refname>snd_malloc_pages</refname> 1457 <refpurpose> 1458 allocate pages with the given size 1459 </refpurpose> 1460</refnamediv> 1461<refsynopsisdiv> 1462 <title>Synopsis</title> 1463 <funcsynopsis><funcprototype> 1464 <funcdef>void * <function>snd_malloc_pages </function></funcdef> 1465 <paramdef>size_t <parameter>size</parameter></paramdef> 1466 <paramdef>gfp_t <parameter>gfp_flags</parameter></paramdef> 1467 </funcprototype></funcsynopsis> 1468</refsynopsisdiv> 1469<refsect1> 1470 <title>Arguments</title> 1471 <variablelist> 1472 <varlistentry> 1473 <term><parameter>size</parameter></term> 1474 <listitem> 1475 <para> 1476 the size to allocate in bytes 1477 </para> 1478 </listitem> 1479 </varlistentry> 1480 <varlistentry> 1481 <term><parameter>gfp_flags</parameter></term> 1482 <listitem> 1483 <para> 1484 the allocation conditions, GFP_XXX 1485 </para> 1486 </listitem> 1487 </varlistentry> 1488 </variablelist> 1489</refsect1> 1490<refsect1> 1491<title>Description</title> 1492<para> 1493 Allocates the physically contiguous pages with the given size. 1494</para> 1495</refsect1> 1496<refsect1> 1497<title>Return</title> 1498<para> 1499 The pointer of the buffer, or <constant>NULL</constant> if no enough memory. 1500</para> 1501</refsect1> 1502</refentry> 1503 1504<refentry id="API-snd-free-pages"> 1505<refentryinfo> 1506 <title>LINUX</title> 1507 <productname>Kernel Hackers Manual</productname> 1508 <date>July 2017</date> 1509</refentryinfo> 1510<refmeta> 1511 <refentrytitle><phrase>snd_free_pages</phrase></refentrytitle> 1512 <manvolnum>9</manvolnum> 1513 <refmiscinfo class="version">4.4.14</refmiscinfo> 1514</refmeta> 1515<refnamediv> 1516 <refname>snd_free_pages</refname> 1517 <refpurpose> 1518 release the pages 1519 </refpurpose> 1520</refnamediv> 1521<refsynopsisdiv> 1522 <title>Synopsis</title> 1523 <funcsynopsis><funcprototype> 1524 <funcdef>void <function>snd_free_pages </function></funcdef> 1525 <paramdef>void * <parameter>ptr</parameter></paramdef> 1526 <paramdef>size_t <parameter>size</parameter></paramdef> 1527 </funcprototype></funcsynopsis> 1528</refsynopsisdiv> 1529<refsect1> 1530 <title>Arguments</title> 1531 <variablelist> 1532 <varlistentry> 1533 <term><parameter>ptr</parameter></term> 1534 <listitem> 1535 <para> 1536 the buffer pointer to release 1537 </para> 1538 </listitem> 1539 </varlistentry> 1540 <varlistentry> 1541 <term><parameter>size</parameter></term> 1542 <listitem> 1543 <para> 1544 the allocated buffer size 1545 </para> 1546 </listitem> 1547 </varlistentry> 1548 </variablelist> 1549</refsect1> 1550<refsect1> 1551<title>Description</title> 1552<para> 1553 Releases the buffer allocated via <function>snd_malloc_pages</function>. 1554</para> 1555</refsect1> 1556</refentry> 1557 1558<refentry id="API-snd-dma-alloc-pages"> 1559<refentryinfo> 1560 <title>LINUX</title> 1561 <productname>Kernel Hackers Manual</productname> 1562 <date>July 2017</date> 1563</refentryinfo> 1564<refmeta> 1565 <refentrytitle><phrase>snd_dma_alloc_pages</phrase></refentrytitle> 1566 <manvolnum>9</manvolnum> 1567 <refmiscinfo class="version">4.4.14</refmiscinfo> 1568</refmeta> 1569<refnamediv> 1570 <refname>snd_dma_alloc_pages</refname> 1571 <refpurpose> 1572 allocate the buffer area according to the given type 1573 </refpurpose> 1574</refnamediv> 1575<refsynopsisdiv> 1576 <title>Synopsis</title> 1577 <funcsynopsis><funcprototype> 1578 <funcdef>int <function>snd_dma_alloc_pages </function></funcdef> 1579 <paramdef>int <parameter>type</parameter></paramdef> 1580 <paramdef>struct device * <parameter>device</parameter></paramdef> 1581 <paramdef>size_t <parameter>size</parameter></paramdef> 1582 <paramdef>struct snd_dma_buffer * <parameter>dmab</parameter></paramdef> 1583 </funcprototype></funcsynopsis> 1584</refsynopsisdiv> 1585<refsect1> 1586 <title>Arguments</title> 1587 <variablelist> 1588 <varlistentry> 1589 <term><parameter>type</parameter></term> 1590 <listitem> 1591 <para> 1592 the DMA buffer type 1593 </para> 1594 </listitem> 1595 </varlistentry> 1596 <varlistentry> 1597 <term><parameter>device</parameter></term> 1598 <listitem> 1599 <para> 1600 the device pointer 1601 </para> 1602 </listitem> 1603 </varlistentry> 1604 <varlistentry> 1605 <term><parameter>size</parameter></term> 1606 <listitem> 1607 <para> 1608 the buffer size to allocate 1609 </para> 1610 </listitem> 1611 </varlistentry> 1612 <varlistentry> 1613 <term><parameter>dmab</parameter></term> 1614 <listitem> 1615 <para> 1616 buffer allocation record to store the allocated data 1617 </para> 1618 </listitem> 1619 </varlistentry> 1620 </variablelist> 1621</refsect1> 1622<refsect1> 1623<title>Description</title> 1624<para> 1625 Calls the memory-allocator function for the corresponding 1626 buffer type. 1627</para> 1628</refsect1> 1629<refsect1> 1630<title>Return</title> 1631<para> 1632 Zero if the buffer with the given size is allocated successfully, 1633 otherwise a negative value on error. 1634</para> 1635</refsect1> 1636</refentry> 1637 1638<refentry id="API-snd-dma-alloc-pages-fallback"> 1639<refentryinfo> 1640 <title>LINUX</title> 1641 <productname>Kernel Hackers Manual</productname> 1642 <date>July 2017</date> 1643</refentryinfo> 1644<refmeta> 1645 <refentrytitle><phrase>snd_dma_alloc_pages_fallback</phrase></refentrytitle> 1646 <manvolnum>9</manvolnum> 1647 <refmiscinfo class="version">4.4.14</refmiscinfo> 1648</refmeta> 1649<refnamediv> 1650 <refname>snd_dma_alloc_pages_fallback</refname> 1651 <refpurpose> 1652 allocate the buffer area according to the given type with fallback 1653 </refpurpose> 1654</refnamediv> 1655<refsynopsisdiv> 1656 <title>Synopsis</title> 1657 <funcsynopsis><funcprototype> 1658 <funcdef>int <function>snd_dma_alloc_pages_fallback </function></funcdef> 1659 <paramdef>int <parameter>type</parameter></paramdef> 1660 <paramdef>struct device * <parameter>device</parameter></paramdef> 1661 <paramdef>size_t <parameter>size</parameter></paramdef> 1662 <paramdef>struct snd_dma_buffer * <parameter>dmab</parameter></paramdef> 1663 </funcprototype></funcsynopsis> 1664</refsynopsisdiv> 1665<refsect1> 1666 <title>Arguments</title> 1667 <variablelist> 1668 <varlistentry> 1669 <term><parameter>type</parameter></term> 1670 <listitem> 1671 <para> 1672 the DMA buffer type 1673 </para> 1674 </listitem> 1675 </varlistentry> 1676 <varlistentry> 1677 <term><parameter>device</parameter></term> 1678 <listitem> 1679 <para> 1680 the device pointer 1681 </para> 1682 </listitem> 1683 </varlistentry> 1684 <varlistentry> 1685 <term><parameter>size</parameter></term> 1686 <listitem> 1687 <para> 1688 the buffer size to allocate 1689 </para> 1690 </listitem> 1691 </varlistentry> 1692 <varlistentry> 1693 <term><parameter>dmab</parameter></term> 1694 <listitem> 1695 <para> 1696 buffer allocation record to store the allocated data 1697 </para> 1698 </listitem> 1699 </varlistentry> 1700 </variablelist> 1701</refsect1> 1702<refsect1> 1703<title>Description</title> 1704<para> 1705 Calls the memory-allocator function for the corresponding 1706 buffer type. When no space is left, this function reduces the size and 1707 tries to allocate again. The size actually allocated is stored in 1708 res_size argument. 1709</para> 1710</refsect1> 1711<refsect1> 1712<title>Return</title> 1713<para> 1714 Zero if the buffer with the given size is allocated successfully, 1715 otherwise a negative value on error. 1716</para> 1717</refsect1> 1718</refentry> 1719 1720<refentry id="API-snd-dma-free-pages"> 1721<refentryinfo> 1722 <title>LINUX</title> 1723 <productname>Kernel Hackers Manual</productname> 1724 <date>July 2017</date> 1725</refentryinfo> 1726<refmeta> 1727 <refentrytitle><phrase>snd_dma_free_pages</phrase></refentrytitle> 1728 <manvolnum>9</manvolnum> 1729 <refmiscinfo class="version">4.4.14</refmiscinfo> 1730</refmeta> 1731<refnamediv> 1732 <refname>snd_dma_free_pages</refname> 1733 <refpurpose> 1734 release the allocated buffer 1735 </refpurpose> 1736</refnamediv> 1737<refsynopsisdiv> 1738 <title>Synopsis</title> 1739 <funcsynopsis><funcprototype> 1740 <funcdef>void <function>snd_dma_free_pages </function></funcdef> 1741 <paramdef>struct snd_dma_buffer * <parameter>dmab</parameter></paramdef> 1742 </funcprototype></funcsynopsis> 1743</refsynopsisdiv> 1744<refsect1> 1745 <title>Arguments</title> 1746 <variablelist> 1747 <varlistentry> 1748 <term><parameter>dmab</parameter></term> 1749 <listitem> 1750 <para> 1751 the buffer allocation record to release 1752 </para> 1753 </listitem> 1754 </varlistentry> 1755 </variablelist> 1756</refsect1> 1757<refsect1> 1758<title>Description</title> 1759<para> 1760 Releases the allocated buffer via <function>snd_dma_alloc_pages</function>. 1761</para> 1762</refsect1> 1763</refentry> 1764 1765 </sect1> 1766 </chapter> 1767 <chapter><title>PCM API</title> 1768 <sect1><title>PCM Core</title> 1769<!-- sound/core/pcm.c --> 1770<refentry id="API-snd-pcm-format-name"> 1771<refentryinfo> 1772 <title>LINUX</title> 1773 <productname>Kernel Hackers Manual</productname> 1774 <date>July 2017</date> 1775</refentryinfo> 1776<refmeta> 1777 <refentrytitle><phrase>snd_pcm_format_name</phrase></refentrytitle> 1778 <manvolnum>9</manvolnum> 1779 <refmiscinfo class="version">4.4.14</refmiscinfo> 1780</refmeta> 1781<refnamediv> 1782 <refname>snd_pcm_format_name</refname> 1783 <refpurpose> 1784 Return a name string for the given PCM format 1785 </refpurpose> 1786</refnamediv> 1787<refsynopsisdiv> 1788 <title>Synopsis</title> 1789 <funcsynopsis><funcprototype> 1790 <funcdef>const char * <function>snd_pcm_format_name </function></funcdef> 1791 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 1792 </funcprototype></funcsynopsis> 1793</refsynopsisdiv> 1794<refsect1> 1795 <title>Arguments</title> 1796 <variablelist> 1797 <varlistentry> 1798 <term><parameter>format</parameter></term> 1799 <listitem> 1800 <para> 1801 PCM format 1802 </para> 1803 </listitem> 1804 </varlistentry> 1805 </variablelist> 1806</refsect1> 1807</refentry> 1808 1809<refentry id="API-snd-pcm-new-stream"> 1810<refentryinfo> 1811 <title>LINUX</title> 1812 <productname>Kernel Hackers Manual</productname> 1813 <date>July 2017</date> 1814</refentryinfo> 1815<refmeta> 1816 <refentrytitle><phrase>snd_pcm_new_stream</phrase></refentrytitle> 1817 <manvolnum>9</manvolnum> 1818 <refmiscinfo class="version">4.4.14</refmiscinfo> 1819</refmeta> 1820<refnamediv> 1821 <refname>snd_pcm_new_stream</refname> 1822 <refpurpose> 1823 create a new PCM stream 1824 </refpurpose> 1825</refnamediv> 1826<refsynopsisdiv> 1827 <title>Synopsis</title> 1828 <funcsynopsis><funcprototype> 1829 <funcdef>int <function>snd_pcm_new_stream </function></funcdef> 1830 <paramdef>struct snd_pcm * <parameter>pcm</parameter></paramdef> 1831 <paramdef>int <parameter>stream</parameter></paramdef> 1832 <paramdef>int <parameter>substream_count</parameter></paramdef> 1833 </funcprototype></funcsynopsis> 1834</refsynopsisdiv> 1835<refsect1> 1836 <title>Arguments</title> 1837 <variablelist> 1838 <varlistentry> 1839 <term><parameter>pcm</parameter></term> 1840 <listitem> 1841 <para> 1842 the pcm instance 1843 </para> 1844 </listitem> 1845 </varlistentry> 1846 <varlistentry> 1847 <term><parameter>stream</parameter></term> 1848 <listitem> 1849 <para> 1850 the stream direction, SNDRV_PCM_STREAM_XXX 1851 </para> 1852 </listitem> 1853 </varlistentry> 1854 <varlistentry> 1855 <term><parameter>substream_count</parameter></term> 1856 <listitem> 1857 <para> 1858 the number of substreams 1859 </para> 1860 </listitem> 1861 </varlistentry> 1862 </variablelist> 1863</refsect1> 1864<refsect1> 1865<title>Description</title> 1866<para> 1867 Creates a new stream for the pcm. 1868 The corresponding stream on the pcm must have been empty before 1869 calling this, i.e. zero must be given to the argument of 1870 <function>snd_pcm_new</function>. 1871</para> 1872</refsect1> 1873<refsect1> 1874<title>Return</title> 1875<para> 1876 Zero if successful, or a negative error code on failure. 1877</para> 1878</refsect1> 1879</refentry> 1880 1881<refentry id="API-snd-pcm-new"> 1882<refentryinfo> 1883 <title>LINUX</title> 1884 <productname>Kernel Hackers Manual</productname> 1885 <date>July 2017</date> 1886</refentryinfo> 1887<refmeta> 1888 <refentrytitle><phrase>snd_pcm_new</phrase></refentrytitle> 1889 <manvolnum>9</manvolnum> 1890 <refmiscinfo class="version">4.4.14</refmiscinfo> 1891</refmeta> 1892<refnamediv> 1893 <refname>snd_pcm_new</refname> 1894 <refpurpose> 1895 create a new PCM instance 1896 </refpurpose> 1897</refnamediv> 1898<refsynopsisdiv> 1899 <title>Synopsis</title> 1900 <funcsynopsis><funcprototype> 1901 <funcdef>int <function>snd_pcm_new </function></funcdef> 1902 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 1903 <paramdef>const char * <parameter>id</parameter></paramdef> 1904 <paramdef>int <parameter>device</parameter></paramdef> 1905 <paramdef>int <parameter>playback_count</parameter></paramdef> 1906 <paramdef>int <parameter>capture_count</parameter></paramdef> 1907 <paramdef>struct snd_pcm ** <parameter>rpcm</parameter></paramdef> 1908 </funcprototype></funcsynopsis> 1909</refsynopsisdiv> 1910<refsect1> 1911 <title>Arguments</title> 1912 <variablelist> 1913 <varlistentry> 1914 <term><parameter>card</parameter></term> 1915 <listitem> 1916 <para> 1917 the card instance 1918 </para> 1919 </listitem> 1920 </varlistentry> 1921 <varlistentry> 1922 <term><parameter>id</parameter></term> 1923 <listitem> 1924 <para> 1925 the id string 1926 </para> 1927 </listitem> 1928 </varlistentry> 1929 <varlistentry> 1930 <term><parameter>device</parameter></term> 1931 <listitem> 1932 <para> 1933 the device index (zero based) 1934 </para> 1935 </listitem> 1936 </varlistentry> 1937 <varlistentry> 1938 <term><parameter>playback_count</parameter></term> 1939 <listitem> 1940 <para> 1941 the number of substreams for playback 1942 </para> 1943 </listitem> 1944 </varlistentry> 1945 <varlistentry> 1946 <term><parameter>capture_count</parameter></term> 1947 <listitem> 1948 <para> 1949 the number of substreams for capture 1950 </para> 1951 </listitem> 1952 </varlistentry> 1953 <varlistentry> 1954 <term><parameter>rpcm</parameter></term> 1955 <listitem> 1956 <para> 1957 the pointer to store the new pcm instance 1958 </para> 1959 </listitem> 1960 </varlistentry> 1961 </variablelist> 1962</refsect1> 1963<refsect1> 1964<title>Description</title> 1965<para> 1966 Creates a new PCM instance. 1967 </para><para> 1968 1969 The pcm operators have to be set afterwards to the new instance 1970 via <function>snd_pcm_set_ops</function>. 1971</para> 1972</refsect1> 1973<refsect1> 1974<title>Return</title> 1975<para> 1976 Zero if successful, or a negative error code on failure. 1977</para> 1978</refsect1> 1979</refentry> 1980 1981<refentry id="API-snd-pcm-new-internal"> 1982<refentryinfo> 1983 <title>LINUX</title> 1984 <productname>Kernel Hackers Manual</productname> 1985 <date>July 2017</date> 1986</refentryinfo> 1987<refmeta> 1988 <refentrytitle><phrase>snd_pcm_new_internal</phrase></refentrytitle> 1989 <manvolnum>9</manvolnum> 1990 <refmiscinfo class="version">4.4.14</refmiscinfo> 1991</refmeta> 1992<refnamediv> 1993 <refname>snd_pcm_new_internal</refname> 1994 <refpurpose> 1995 create a new internal PCM instance 1996 </refpurpose> 1997</refnamediv> 1998<refsynopsisdiv> 1999 <title>Synopsis</title> 2000 <funcsynopsis><funcprototype> 2001 <funcdef>int <function>snd_pcm_new_internal </function></funcdef> 2002 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 2003 <paramdef>const char * <parameter>id</parameter></paramdef> 2004 <paramdef>int <parameter>device</parameter></paramdef> 2005 <paramdef>int <parameter>playback_count</parameter></paramdef> 2006 <paramdef>int <parameter>capture_count</parameter></paramdef> 2007 <paramdef>struct snd_pcm ** <parameter>rpcm</parameter></paramdef> 2008 </funcprototype></funcsynopsis> 2009</refsynopsisdiv> 2010<refsect1> 2011 <title>Arguments</title> 2012 <variablelist> 2013 <varlistentry> 2014 <term><parameter>card</parameter></term> 2015 <listitem> 2016 <para> 2017 the card instance 2018 </para> 2019 </listitem> 2020 </varlistentry> 2021 <varlistentry> 2022 <term><parameter>id</parameter></term> 2023 <listitem> 2024 <para> 2025 the id string 2026 </para> 2027 </listitem> 2028 </varlistentry> 2029 <varlistentry> 2030 <term><parameter>device</parameter></term> 2031 <listitem> 2032 <para> 2033 the device index (zero based - shared with normal PCMs) 2034 </para> 2035 </listitem> 2036 </varlistentry> 2037 <varlistentry> 2038 <term><parameter>playback_count</parameter></term> 2039 <listitem> 2040 <para> 2041 the number of substreams for playback 2042 </para> 2043 </listitem> 2044 </varlistentry> 2045 <varlistentry> 2046 <term><parameter>capture_count</parameter></term> 2047 <listitem> 2048 <para> 2049 the number of substreams for capture 2050 </para> 2051 </listitem> 2052 </varlistentry> 2053 <varlistentry> 2054 <term><parameter>rpcm</parameter></term> 2055 <listitem> 2056 <para> 2057 the pointer to store the new pcm instance 2058 </para> 2059 </listitem> 2060 </varlistentry> 2061 </variablelist> 2062</refsect1> 2063<refsect1> 2064<title>Description</title> 2065<para> 2066 Creates a new internal PCM instance with no userspace device or procfs 2067 entries. This is used by ASoC Back End PCMs in order to create a PCM that 2068 will only be used internally by kernel drivers. i.e. it cannot be opened 2069 by userspace. It provides existing ASoC components drivers with a substream 2070 and access to any private data. 2071 </para><para> 2072 2073 The pcm operators have to be set afterwards to the new instance 2074 via <function>snd_pcm_set_ops</function>. 2075</para> 2076</refsect1> 2077<refsect1> 2078<title>Return</title> 2079<para> 2080 Zero if successful, or a negative error code on failure. 2081</para> 2082</refsect1> 2083</refentry> 2084 2085<refentry id="API-snd-pcm-notify"> 2086<refentryinfo> 2087 <title>LINUX</title> 2088 <productname>Kernel Hackers Manual</productname> 2089 <date>July 2017</date> 2090</refentryinfo> 2091<refmeta> 2092 <refentrytitle><phrase>snd_pcm_notify</phrase></refentrytitle> 2093 <manvolnum>9</manvolnum> 2094 <refmiscinfo class="version">4.4.14</refmiscinfo> 2095</refmeta> 2096<refnamediv> 2097 <refname>snd_pcm_notify</refname> 2098 <refpurpose> 2099 Add/remove the notify list 2100 </refpurpose> 2101</refnamediv> 2102<refsynopsisdiv> 2103 <title>Synopsis</title> 2104 <funcsynopsis><funcprototype> 2105 <funcdef>int <function>snd_pcm_notify </function></funcdef> 2106 <paramdef>struct snd_pcm_notify * <parameter>notify</parameter></paramdef> 2107 <paramdef>int <parameter>nfree</parameter></paramdef> 2108 </funcprototype></funcsynopsis> 2109</refsynopsisdiv> 2110<refsect1> 2111 <title>Arguments</title> 2112 <variablelist> 2113 <varlistentry> 2114 <term><parameter>notify</parameter></term> 2115 <listitem> 2116 <para> 2117 PCM notify list 2118 </para> 2119 </listitem> 2120 </varlistentry> 2121 <varlistentry> 2122 <term><parameter>nfree</parameter></term> 2123 <listitem> 2124 <para> 2125 0 = register, 1 = unregister 2126 </para> 2127 </listitem> 2128 </varlistentry> 2129 </variablelist> 2130</refsect1> 2131<refsect1> 2132<title>Description</title> 2133<para> 2134 This adds the given notifier to the global list so that the callback is 2135 called for each registered PCM devices. This exists only for PCM OSS 2136 emulation, so far. 2137</para> 2138</refsect1> 2139</refentry> 2140 2141<!-- sound/core/pcm_lib.c --> 2142<refentry id="API-snd-pcm-set-ops"> 2143<refentryinfo> 2144 <title>LINUX</title> 2145 <productname>Kernel Hackers Manual</productname> 2146 <date>July 2017</date> 2147</refentryinfo> 2148<refmeta> 2149 <refentrytitle><phrase>snd_pcm_set_ops</phrase></refentrytitle> 2150 <manvolnum>9</manvolnum> 2151 <refmiscinfo class="version">4.4.14</refmiscinfo> 2152</refmeta> 2153<refnamediv> 2154 <refname>snd_pcm_set_ops</refname> 2155 <refpurpose> 2156 set the PCM operators 2157 </refpurpose> 2158</refnamediv> 2159<refsynopsisdiv> 2160 <title>Synopsis</title> 2161 <funcsynopsis><funcprototype> 2162 <funcdef>void <function>snd_pcm_set_ops </function></funcdef> 2163 <paramdef>struct snd_pcm * <parameter>pcm</parameter></paramdef> 2164 <paramdef>int <parameter>direction</parameter></paramdef> 2165 <paramdef>const struct snd_pcm_ops * <parameter>ops</parameter></paramdef> 2166 </funcprototype></funcsynopsis> 2167</refsynopsisdiv> 2168<refsect1> 2169 <title>Arguments</title> 2170 <variablelist> 2171 <varlistentry> 2172 <term><parameter>pcm</parameter></term> 2173 <listitem> 2174 <para> 2175 the pcm instance 2176 </para> 2177 </listitem> 2178 </varlistentry> 2179 <varlistentry> 2180 <term><parameter>direction</parameter></term> 2181 <listitem> 2182 <para> 2183 stream direction, SNDRV_PCM_STREAM_XXX 2184 </para> 2185 </listitem> 2186 </varlistentry> 2187 <varlistentry> 2188 <term><parameter>ops</parameter></term> 2189 <listitem> 2190 <para> 2191 the operator table 2192 </para> 2193 </listitem> 2194 </varlistentry> 2195 </variablelist> 2196</refsect1> 2197<refsect1> 2198<title>Description</title> 2199<para> 2200 Sets the given PCM operators to the pcm instance. 2201</para> 2202</refsect1> 2203</refentry> 2204 2205<refentry id="API-snd-pcm-set-sync"> 2206<refentryinfo> 2207 <title>LINUX</title> 2208 <productname>Kernel Hackers Manual</productname> 2209 <date>July 2017</date> 2210</refentryinfo> 2211<refmeta> 2212 <refentrytitle><phrase>snd_pcm_set_sync</phrase></refentrytitle> 2213 <manvolnum>9</manvolnum> 2214 <refmiscinfo class="version">4.4.14</refmiscinfo> 2215</refmeta> 2216<refnamediv> 2217 <refname>snd_pcm_set_sync</refname> 2218 <refpurpose> 2219 set the PCM sync id 2220 </refpurpose> 2221</refnamediv> 2222<refsynopsisdiv> 2223 <title>Synopsis</title> 2224 <funcsynopsis><funcprototype> 2225 <funcdef>void <function>snd_pcm_set_sync </function></funcdef> 2226 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 2227 </funcprototype></funcsynopsis> 2228</refsynopsisdiv> 2229<refsect1> 2230 <title>Arguments</title> 2231 <variablelist> 2232 <varlistentry> 2233 <term><parameter>substream</parameter></term> 2234 <listitem> 2235 <para> 2236 the pcm substream 2237 </para> 2238 </listitem> 2239 </varlistentry> 2240 </variablelist> 2241</refsect1> 2242<refsect1> 2243<title>Description</title> 2244<para> 2245 Sets the PCM sync identifier for the card. 2246</para> 2247</refsect1> 2248</refentry> 2249 2250<refentry id="API-snd-interval-refine"> 2251<refentryinfo> 2252 <title>LINUX</title> 2253 <productname>Kernel Hackers Manual</productname> 2254 <date>July 2017</date> 2255</refentryinfo> 2256<refmeta> 2257 <refentrytitle><phrase>snd_interval_refine</phrase></refentrytitle> 2258 <manvolnum>9</manvolnum> 2259 <refmiscinfo class="version">4.4.14</refmiscinfo> 2260</refmeta> 2261<refnamediv> 2262 <refname>snd_interval_refine</refname> 2263 <refpurpose> 2264 refine the interval value of configurator 2265 </refpurpose> 2266</refnamediv> 2267<refsynopsisdiv> 2268 <title>Synopsis</title> 2269 <funcsynopsis><funcprototype> 2270 <funcdef>int <function>snd_interval_refine </function></funcdef> 2271 <paramdef>struct snd_interval * <parameter>i</parameter></paramdef> 2272 <paramdef>const struct snd_interval * <parameter>v</parameter></paramdef> 2273 </funcprototype></funcsynopsis> 2274</refsynopsisdiv> 2275<refsect1> 2276 <title>Arguments</title> 2277 <variablelist> 2278 <varlistentry> 2279 <term><parameter>i</parameter></term> 2280 <listitem> 2281 <para> 2282 the interval value to refine 2283 </para> 2284 </listitem> 2285 </varlistentry> 2286 <varlistentry> 2287 <term><parameter>v</parameter></term> 2288 <listitem> 2289 <para> 2290 the interval value to refer to 2291 </para> 2292 </listitem> 2293 </varlistentry> 2294 </variablelist> 2295</refsect1> 2296<refsect1> 2297<title>Description</title> 2298<para> 2299 Refines the interval value with the reference value. 2300 The interval is changed to the range satisfying both intervals. 2301 The interval status (min, max, integer, etc.) are evaluated. 2302</para> 2303</refsect1> 2304<refsect1> 2305<title>Return</title> 2306<para> 2307 Positive if the value is changed, zero if it's not changed, or a 2308 negative error code. 2309</para> 2310</refsect1> 2311</refentry> 2312 2313<refentry id="API-snd-interval-ratnum"> 2314<refentryinfo> 2315 <title>LINUX</title> 2316 <productname>Kernel Hackers Manual</productname> 2317 <date>July 2017</date> 2318</refentryinfo> 2319<refmeta> 2320 <refentrytitle><phrase>snd_interval_ratnum</phrase></refentrytitle> 2321 <manvolnum>9</manvolnum> 2322 <refmiscinfo class="version">4.4.14</refmiscinfo> 2323</refmeta> 2324<refnamediv> 2325 <refname>snd_interval_ratnum</refname> 2326 <refpurpose> 2327 refine the interval value 2328 </refpurpose> 2329</refnamediv> 2330<refsynopsisdiv> 2331 <title>Synopsis</title> 2332 <funcsynopsis><funcprototype> 2333 <funcdef>int <function>snd_interval_ratnum </function></funcdef> 2334 <paramdef>struct snd_interval * <parameter>i</parameter></paramdef> 2335 <paramdef>unsigned int <parameter>rats_count</parameter></paramdef> 2336 <paramdef>const struct snd_ratnum * <parameter>rats</parameter></paramdef> 2337 <paramdef>unsigned int * <parameter>nump</parameter></paramdef> 2338 <paramdef>unsigned int * <parameter>denp</parameter></paramdef> 2339 </funcprototype></funcsynopsis> 2340</refsynopsisdiv> 2341<refsect1> 2342 <title>Arguments</title> 2343 <variablelist> 2344 <varlistentry> 2345 <term><parameter>i</parameter></term> 2346 <listitem> 2347 <para> 2348 interval to refine 2349 </para> 2350 </listitem> 2351 </varlistentry> 2352 <varlistentry> 2353 <term><parameter>rats_count</parameter></term> 2354 <listitem> 2355 <para> 2356 number of ratnum_t 2357 </para> 2358 </listitem> 2359 </varlistentry> 2360 <varlistentry> 2361 <term><parameter>rats</parameter></term> 2362 <listitem> 2363 <para> 2364 ratnum_t array 2365 </para> 2366 </listitem> 2367 </varlistentry> 2368 <varlistentry> 2369 <term><parameter>nump</parameter></term> 2370 <listitem> 2371 <para> 2372 pointer to store the resultant numerator 2373 </para> 2374 </listitem> 2375 </varlistentry> 2376 <varlistentry> 2377 <term><parameter>denp</parameter></term> 2378 <listitem> 2379 <para> 2380 pointer to store the resultant denominator 2381 </para> 2382 </listitem> 2383 </varlistentry> 2384 </variablelist> 2385</refsect1> 2386<refsect1> 2387<title>Return</title> 2388<para> 2389 Positive if the value is changed, zero if it's not changed, or a 2390 negative error code. 2391</para> 2392</refsect1> 2393</refentry> 2394 2395<refentry id="API-snd-interval-list"> 2396<refentryinfo> 2397 <title>LINUX</title> 2398 <productname>Kernel Hackers Manual</productname> 2399 <date>July 2017</date> 2400</refentryinfo> 2401<refmeta> 2402 <refentrytitle><phrase>snd_interval_list</phrase></refentrytitle> 2403 <manvolnum>9</manvolnum> 2404 <refmiscinfo class="version">4.4.14</refmiscinfo> 2405</refmeta> 2406<refnamediv> 2407 <refname>snd_interval_list</refname> 2408 <refpurpose> 2409 refine the interval value from the list 2410 </refpurpose> 2411</refnamediv> 2412<refsynopsisdiv> 2413 <title>Synopsis</title> 2414 <funcsynopsis><funcprototype> 2415 <funcdef>int <function>snd_interval_list </function></funcdef> 2416 <paramdef>struct snd_interval * <parameter>i</parameter></paramdef> 2417 <paramdef>unsigned int <parameter>count</parameter></paramdef> 2418 <paramdef>const unsigned int * <parameter>list</parameter></paramdef> 2419 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 2420 </funcprototype></funcsynopsis> 2421</refsynopsisdiv> 2422<refsect1> 2423 <title>Arguments</title> 2424 <variablelist> 2425 <varlistentry> 2426 <term><parameter>i</parameter></term> 2427 <listitem> 2428 <para> 2429 the interval value to refine 2430 </para> 2431 </listitem> 2432 </varlistentry> 2433 <varlistentry> 2434 <term><parameter>count</parameter></term> 2435 <listitem> 2436 <para> 2437 the number of elements in the list 2438 </para> 2439 </listitem> 2440 </varlistentry> 2441 <varlistentry> 2442 <term><parameter>list</parameter></term> 2443 <listitem> 2444 <para> 2445 the value list 2446 </para> 2447 </listitem> 2448 </varlistentry> 2449 <varlistentry> 2450 <term><parameter>mask</parameter></term> 2451 <listitem> 2452 <para> 2453 the bit-mask to evaluate 2454 </para> 2455 </listitem> 2456 </varlistentry> 2457 </variablelist> 2458</refsect1> 2459<refsect1> 2460<title>Description</title> 2461<para> 2462 Refines the interval value from the list. 2463 When mask is non-zero, only the elements corresponding to bit 1 are 2464 evaluated. 2465</para> 2466</refsect1> 2467<refsect1> 2468<title>Return</title> 2469<para> 2470 Positive if the value is changed, zero if it's not changed, or a 2471 negative error code. 2472</para> 2473</refsect1> 2474</refentry> 2475 2476<refentry id="API-snd-interval-ranges"> 2477<refentryinfo> 2478 <title>LINUX</title> 2479 <productname>Kernel Hackers Manual</productname> 2480 <date>July 2017</date> 2481</refentryinfo> 2482<refmeta> 2483 <refentrytitle><phrase>snd_interval_ranges</phrase></refentrytitle> 2484 <manvolnum>9</manvolnum> 2485 <refmiscinfo class="version">4.4.14</refmiscinfo> 2486</refmeta> 2487<refnamediv> 2488 <refname>snd_interval_ranges</refname> 2489 <refpurpose> 2490 refine the interval value from the list of ranges 2491 </refpurpose> 2492</refnamediv> 2493<refsynopsisdiv> 2494 <title>Synopsis</title> 2495 <funcsynopsis><funcprototype> 2496 <funcdef>int <function>snd_interval_ranges </function></funcdef> 2497 <paramdef>struct snd_interval * <parameter>i</parameter></paramdef> 2498 <paramdef>unsigned int <parameter>count</parameter></paramdef> 2499 <paramdef>const struct snd_interval * <parameter>ranges</parameter></paramdef> 2500 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 2501 </funcprototype></funcsynopsis> 2502</refsynopsisdiv> 2503<refsect1> 2504 <title>Arguments</title> 2505 <variablelist> 2506 <varlistentry> 2507 <term><parameter>i</parameter></term> 2508 <listitem> 2509 <para> 2510 the interval value to refine 2511 </para> 2512 </listitem> 2513 </varlistentry> 2514 <varlistentry> 2515 <term><parameter>count</parameter></term> 2516 <listitem> 2517 <para> 2518 the number of elements in the list of ranges 2519 </para> 2520 </listitem> 2521 </varlistentry> 2522 <varlistentry> 2523 <term><parameter>ranges</parameter></term> 2524 <listitem> 2525 <para> 2526 the ranges list 2527 </para> 2528 </listitem> 2529 </varlistentry> 2530 <varlistentry> 2531 <term><parameter>mask</parameter></term> 2532 <listitem> 2533 <para> 2534 the bit-mask to evaluate 2535 </para> 2536 </listitem> 2537 </varlistentry> 2538 </variablelist> 2539</refsect1> 2540<refsect1> 2541<title>Description</title> 2542<para> 2543 Refines the interval value from the list of ranges. 2544 When mask is non-zero, only the elements corresponding to bit 1 are 2545 evaluated. 2546</para> 2547</refsect1> 2548<refsect1> 2549<title>Return</title> 2550<para> 2551 Positive if the value is changed, zero if it's not changed, or a 2552 negative error code. 2553</para> 2554</refsect1> 2555</refentry> 2556 2557<refentry id="API-snd-pcm-hw-rule-add"> 2558<refentryinfo> 2559 <title>LINUX</title> 2560 <productname>Kernel Hackers Manual</productname> 2561 <date>July 2017</date> 2562</refentryinfo> 2563<refmeta> 2564 <refentrytitle><phrase>snd_pcm_hw_rule_add</phrase></refentrytitle> 2565 <manvolnum>9</manvolnum> 2566 <refmiscinfo class="version">4.4.14</refmiscinfo> 2567</refmeta> 2568<refnamediv> 2569 <refname>snd_pcm_hw_rule_add</refname> 2570 <refpurpose> 2571 add the hw-constraint rule 2572 </refpurpose> 2573</refnamediv> 2574<refsynopsisdiv> 2575 <title>Synopsis</title> 2576 <funcsynopsis><funcprototype> 2577 <funcdef>int <function>snd_pcm_hw_rule_add </function></funcdef> 2578 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 2579 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 2580 <paramdef>int <parameter>var</parameter></paramdef> 2581 <paramdef>snd_pcm_hw_rule_func_t <parameter>func</parameter></paramdef> 2582 <paramdef>void * <parameter>private</parameter></paramdef> 2583 <paramdef>int <parameter>dep</parameter></paramdef> 2584 <paramdef> <parameter>...</parameter></paramdef> 2585 </funcprototype></funcsynopsis> 2586</refsynopsisdiv> 2587<refsect1> 2588 <title>Arguments</title> 2589 <variablelist> 2590 <varlistentry> 2591 <term><parameter>runtime</parameter></term> 2592 <listitem> 2593 <para> 2594 the pcm runtime instance 2595 </para> 2596 </listitem> 2597 </varlistentry> 2598 <varlistentry> 2599 <term><parameter>cond</parameter></term> 2600 <listitem> 2601 <para> 2602 condition bits 2603 </para> 2604 </listitem> 2605 </varlistentry> 2606 <varlistentry> 2607 <term><parameter>var</parameter></term> 2608 <listitem> 2609 <para> 2610 the variable to evaluate 2611 </para> 2612 </listitem> 2613 </varlistentry> 2614 <varlistentry> 2615 <term><parameter>func</parameter></term> 2616 <listitem> 2617 <para> 2618 the evaluation function 2619 </para> 2620 </listitem> 2621 </varlistentry> 2622 <varlistentry> 2623 <term><parameter>private</parameter></term> 2624 <listitem> 2625 <para> 2626 the private data pointer passed to function 2627 </para> 2628 </listitem> 2629 </varlistentry> 2630 <varlistentry> 2631 <term><parameter>dep</parameter></term> 2632 <listitem> 2633 <para> 2634 the dependent variables 2635 </para> 2636 </listitem> 2637 </varlistentry> 2638 <varlistentry> 2639 <term><parameter>...</parameter></term> 2640 <listitem> 2641 <para> 2642 variable arguments 2643 </para> 2644 </listitem> 2645 </varlistentry> 2646 </variablelist> 2647</refsect1> 2648<refsect1> 2649<title>Return</title> 2650<para> 2651 Zero if successful, or a negative error code on failure. 2652</para> 2653</refsect1> 2654</refentry> 2655 2656<refentry id="API-snd-pcm-hw-constraint-mask64"> 2657<refentryinfo> 2658 <title>LINUX</title> 2659 <productname>Kernel Hackers Manual</productname> 2660 <date>July 2017</date> 2661</refentryinfo> 2662<refmeta> 2663 <refentrytitle><phrase>snd_pcm_hw_constraint_mask64</phrase></refentrytitle> 2664 <manvolnum>9</manvolnum> 2665 <refmiscinfo class="version">4.4.14</refmiscinfo> 2666</refmeta> 2667<refnamediv> 2668 <refname>snd_pcm_hw_constraint_mask64</refname> 2669 <refpurpose> 2670 apply the given bitmap mask constraint 2671 </refpurpose> 2672</refnamediv> 2673<refsynopsisdiv> 2674 <title>Synopsis</title> 2675 <funcsynopsis><funcprototype> 2676 <funcdef>int <function>snd_pcm_hw_constraint_mask64 </function></funcdef> 2677 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 2678 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 2679 <paramdef>u_int64_t <parameter>mask</parameter></paramdef> 2680 </funcprototype></funcsynopsis> 2681</refsynopsisdiv> 2682<refsect1> 2683 <title>Arguments</title> 2684 <variablelist> 2685 <varlistentry> 2686 <term><parameter>runtime</parameter></term> 2687 <listitem> 2688 <para> 2689 PCM runtime instance 2690 </para> 2691 </listitem> 2692 </varlistentry> 2693 <varlistentry> 2694 <term><parameter>var</parameter></term> 2695 <listitem> 2696 <para> 2697 hw_params variable to apply the mask 2698 </para> 2699 </listitem> 2700 </varlistentry> 2701 <varlistentry> 2702 <term><parameter>mask</parameter></term> 2703 <listitem> 2704 <para> 2705 the 64bit bitmap mask 2706 </para> 2707 </listitem> 2708 </varlistentry> 2709 </variablelist> 2710</refsect1> 2711<refsect1> 2712<title>Description</title> 2713<para> 2714 Apply the constraint of the given bitmap mask to a 64-bit mask parameter. 2715</para> 2716</refsect1> 2717<refsect1> 2718<title>Return</title> 2719<para> 2720 Zero if successful, or a negative error code on failure. 2721</para> 2722</refsect1> 2723</refentry> 2724 2725<refentry id="API-snd-pcm-hw-constraint-integer"> 2726<refentryinfo> 2727 <title>LINUX</title> 2728 <productname>Kernel Hackers Manual</productname> 2729 <date>July 2017</date> 2730</refentryinfo> 2731<refmeta> 2732 <refentrytitle><phrase>snd_pcm_hw_constraint_integer</phrase></refentrytitle> 2733 <manvolnum>9</manvolnum> 2734 <refmiscinfo class="version">4.4.14</refmiscinfo> 2735</refmeta> 2736<refnamediv> 2737 <refname>snd_pcm_hw_constraint_integer</refname> 2738 <refpurpose> 2739 apply an integer constraint to an interval 2740 </refpurpose> 2741</refnamediv> 2742<refsynopsisdiv> 2743 <title>Synopsis</title> 2744 <funcsynopsis><funcprototype> 2745 <funcdef>int <function>snd_pcm_hw_constraint_integer </function></funcdef> 2746 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 2747 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 2748 </funcprototype></funcsynopsis> 2749</refsynopsisdiv> 2750<refsect1> 2751 <title>Arguments</title> 2752 <variablelist> 2753 <varlistentry> 2754 <term><parameter>runtime</parameter></term> 2755 <listitem> 2756 <para> 2757 PCM runtime instance 2758 </para> 2759 </listitem> 2760 </varlistentry> 2761 <varlistentry> 2762 <term><parameter>var</parameter></term> 2763 <listitem> 2764 <para> 2765 hw_params variable to apply the integer constraint 2766 </para> 2767 </listitem> 2768 </varlistentry> 2769 </variablelist> 2770</refsect1> 2771<refsect1> 2772<title>Description</title> 2773<para> 2774 Apply the constraint of integer to an interval parameter. 2775</para> 2776</refsect1> 2777<refsect1> 2778<title>Return</title> 2779<para> 2780 Positive if the value is changed, zero if it's not changed, or a 2781 negative error code. 2782</para> 2783</refsect1> 2784</refentry> 2785 2786<refentry id="API-snd-pcm-hw-constraint-minmax"> 2787<refentryinfo> 2788 <title>LINUX</title> 2789 <productname>Kernel Hackers Manual</productname> 2790 <date>July 2017</date> 2791</refentryinfo> 2792<refmeta> 2793 <refentrytitle><phrase>snd_pcm_hw_constraint_minmax</phrase></refentrytitle> 2794 <manvolnum>9</manvolnum> 2795 <refmiscinfo class="version">4.4.14</refmiscinfo> 2796</refmeta> 2797<refnamediv> 2798 <refname>snd_pcm_hw_constraint_minmax</refname> 2799 <refpurpose> 2800 apply a min/max range constraint to an interval 2801 </refpurpose> 2802</refnamediv> 2803<refsynopsisdiv> 2804 <title>Synopsis</title> 2805 <funcsynopsis><funcprototype> 2806 <funcdef>int <function>snd_pcm_hw_constraint_minmax </function></funcdef> 2807 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 2808 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 2809 <paramdef>unsigned int <parameter>min</parameter></paramdef> 2810 <paramdef>unsigned int <parameter>max</parameter></paramdef> 2811 </funcprototype></funcsynopsis> 2812</refsynopsisdiv> 2813<refsect1> 2814 <title>Arguments</title> 2815 <variablelist> 2816 <varlistentry> 2817 <term><parameter>runtime</parameter></term> 2818 <listitem> 2819 <para> 2820 PCM runtime instance 2821 </para> 2822 </listitem> 2823 </varlistentry> 2824 <varlistentry> 2825 <term><parameter>var</parameter></term> 2826 <listitem> 2827 <para> 2828 hw_params variable to apply the range 2829 </para> 2830 </listitem> 2831 </varlistentry> 2832 <varlistentry> 2833 <term><parameter>min</parameter></term> 2834 <listitem> 2835 <para> 2836 the minimal value 2837 </para> 2838 </listitem> 2839 </varlistentry> 2840 <varlistentry> 2841 <term><parameter>max</parameter></term> 2842 <listitem> 2843 <para> 2844 the maximal value 2845 </para> 2846 </listitem> 2847 </varlistentry> 2848 </variablelist> 2849</refsect1> 2850<refsect1> 2851<title>Description</title> 2852<para> 2853 Apply the min/max range constraint to an interval parameter. 2854</para> 2855</refsect1> 2856<refsect1> 2857<title>Return</title> 2858<para> 2859 Positive if the value is changed, zero if it's not changed, or a 2860 negative error code. 2861</para> 2862</refsect1> 2863</refentry> 2864 2865<refentry id="API-snd-pcm-hw-constraint-list"> 2866<refentryinfo> 2867 <title>LINUX</title> 2868 <productname>Kernel Hackers Manual</productname> 2869 <date>July 2017</date> 2870</refentryinfo> 2871<refmeta> 2872 <refentrytitle><phrase>snd_pcm_hw_constraint_list</phrase></refentrytitle> 2873 <manvolnum>9</manvolnum> 2874 <refmiscinfo class="version">4.4.14</refmiscinfo> 2875</refmeta> 2876<refnamediv> 2877 <refname>snd_pcm_hw_constraint_list</refname> 2878 <refpurpose> 2879 apply a list of constraints to a parameter 2880 </refpurpose> 2881</refnamediv> 2882<refsynopsisdiv> 2883 <title>Synopsis</title> 2884 <funcsynopsis><funcprototype> 2885 <funcdef>int <function>snd_pcm_hw_constraint_list </function></funcdef> 2886 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 2887 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 2888 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 2889 <paramdef>const struct snd_pcm_hw_constraint_list * <parameter>l</parameter></paramdef> 2890 </funcprototype></funcsynopsis> 2891</refsynopsisdiv> 2892<refsect1> 2893 <title>Arguments</title> 2894 <variablelist> 2895 <varlistentry> 2896 <term><parameter>runtime</parameter></term> 2897 <listitem> 2898 <para> 2899 PCM runtime instance 2900 </para> 2901 </listitem> 2902 </varlistentry> 2903 <varlistentry> 2904 <term><parameter>cond</parameter></term> 2905 <listitem> 2906 <para> 2907 condition bits 2908 </para> 2909 </listitem> 2910 </varlistentry> 2911 <varlistentry> 2912 <term><parameter>var</parameter></term> 2913 <listitem> 2914 <para> 2915 hw_params variable to apply the list constraint 2916 </para> 2917 </listitem> 2918 </varlistentry> 2919 <varlistentry> 2920 <term><parameter>l</parameter></term> 2921 <listitem> 2922 <para> 2923 list 2924 </para> 2925 </listitem> 2926 </varlistentry> 2927 </variablelist> 2928</refsect1> 2929<refsect1> 2930<title>Description</title> 2931<para> 2932 Apply the list of constraints to an interval parameter. 2933</para> 2934</refsect1> 2935<refsect1> 2936<title>Return</title> 2937<para> 2938 Zero if successful, or a negative error code on failure. 2939</para> 2940</refsect1> 2941</refentry> 2942 2943<refentry id="API-snd-pcm-hw-constraint-ranges"> 2944<refentryinfo> 2945 <title>LINUX</title> 2946 <productname>Kernel Hackers Manual</productname> 2947 <date>July 2017</date> 2948</refentryinfo> 2949<refmeta> 2950 <refentrytitle><phrase>snd_pcm_hw_constraint_ranges</phrase></refentrytitle> 2951 <manvolnum>9</manvolnum> 2952 <refmiscinfo class="version">4.4.14</refmiscinfo> 2953</refmeta> 2954<refnamediv> 2955 <refname>snd_pcm_hw_constraint_ranges</refname> 2956 <refpurpose> 2957 apply list of range constraints to a parameter 2958 </refpurpose> 2959</refnamediv> 2960<refsynopsisdiv> 2961 <title>Synopsis</title> 2962 <funcsynopsis><funcprototype> 2963 <funcdef>int <function>snd_pcm_hw_constraint_ranges </function></funcdef> 2964 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 2965 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 2966 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 2967 <paramdef>const struct snd_pcm_hw_constraint_ranges * <parameter>r</parameter></paramdef> 2968 </funcprototype></funcsynopsis> 2969</refsynopsisdiv> 2970<refsect1> 2971 <title>Arguments</title> 2972 <variablelist> 2973 <varlistentry> 2974 <term><parameter>runtime</parameter></term> 2975 <listitem> 2976 <para> 2977 PCM runtime instance 2978 </para> 2979 </listitem> 2980 </varlistentry> 2981 <varlistentry> 2982 <term><parameter>cond</parameter></term> 2983 <listitem> 2984 <para> 2985 condition bits 2986 </para> 2987 </listitem> 2988 </varlistentry> 2989 <varlistentry> 2990 <term><parameter>var</parameter></term> 2991 <listitem> 2992 <para> 2993 hw_params variable to apply the list of range constraints 2994 </para> 2995 </listitem> 2996 </varlistentry> 2997 <varlistentry> 2998 <term><parameter>r</parameter></term> 2999 <listitem> 3000 <para> 3001 ranges 3002 </para> 3003 </listitem> 3004 </varlistentry> 3005 </variablelist> 3006</refsect1> 3007<refsect1> 3008<title>Description</title> 3009<para> 3010 Apply the list of range constraints to an interval parameter. 3011</para> 3012</refsect1> 3013<refsect1> 3014<title>Return</title> 3015<para> 3016 Zero if successful, or a negative error code on failure. 3017</para> 3018</refsect1> 3019</refentry> 3020 3021<refentry id="API-snd-pcm-hw-constraint-ratnums"> 3022<refentryinfo> 3023 <title>LINUX</title> 3024 <productname>Kernel Hackers Manual</productname> 3025 <date>July 2017</date> 3026</refentryinfo> 3027<refmeta> 3028 <refentrytitle><phrase>snd_pcm_hw_constraint_ratnums</phrase></refentrytitle> 3029 <manvolnum>9</manvolnum> 3030 <refmiscinfo class="version">4.4.14</refmiscinfo> 3031</refmeta> 3032<refnamediv> 3033 <refname>snd_pcm_hw_constraint_ratnums</refname> 3034 <refpurpose> 3035 apply ratnums constraint to a parameter 3036 </refpurpose> 3037</refnamediv> 3038<refsynopsisdiv> 3039 <title>Synopsis</title> 3040 <funcsynopsis><funcprototype> 3041 <funcdef>int <function>snd_pcm_hw_constraint_ratnums </function></funcdef> 3042 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 3043 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 3044 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3045 <paramdef>const struct snd_pcm_hw_constraint_ratnums * <parameter>r</parameter></paramdef> 3046 </funcprototype></funcsynopsis> 3047</refsynopsisdiv> 3048<refsect1> 3049 <title>Arguments</title> 3050 <variablelist> 3051 <varlistentry> 3052 <term><parameter>runtime</parameter></term> 3053 <listitem> 3054 <para> 3055 PCM runtime instance 3056 </para> 3057 </listitem> 3058 </varlistentry> 3059 <varlistentry> 3060 <term><parameter>cond</parameter></term> 3061 <listitem> 3062 <para> 3063 condition bits 3064 </para> 3065 </listitem> 3066 </varlistentry> 3067 <varlistentry> 3068 <term><parameter>var</parameter></term> 3069 <listitem> 3070 <para> 3071 hw_params variable to apply the ratnums constraint 3072 </para> 3073 </listitem> 3074 </varlistentry> 3075 <varlistentry> 3076 <term><parameter>r</parameter></term> 3077 <listitem> 3078 <para> 3079 struct snd_ratnums constriants 3080 </para> 3081 </listitem> 3082 </varlistentry> 3083 </variablelist> 3084</refsect1> 3085<refsect1> 3086<title>Return</title> 3087<para> 3088 Zero if successful, or a negative error code on failure. 3089</para> 3090</refsect1> 3091</refentry> 3092 3093<refentry id="API-snd-pcm-hw-constraint-ratdens"> 3094<refentryinfo> 3095 <title>LINUX</title> 3096 <productname>Kernel Hackers Manual</productname> 3097 <date>July 2017</date> 3098</refentryinfo> 3099<refmeta> 3100 <refentrytitle><phrase>snd_pcm_hw_constraint_ratdens</phrase></refentrytitle> 3101 <manvolnum>9</manvolnum> 3102 <refmiscinfo class="version">4.4.14</refmiscinfo> 3103</refmeta> 3104<refnamediv> 3105 <refname>snd_pcm_hw_constraint_ratdens</refname> 3106 <refpurpose> 3107 apply ratdens constraint to a parameter 3108 </refpurpose> 3109</refnamediv> 3110<refsynopsisdiv> 3111 <title>Synopsis</title> 3112 <funcsynopsis><funcprototype> 3113 <funcdef>int <function>snd_pcm_hw_constraint_ratdens </function></funcdef> 3114 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 3115 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 3116 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3117 <paramdef>const struct snd_pcm_hw_constraint_ratdens * <parameter>r</parameter></paramdef> 3118 </funcprototype></funcsynopsis> 3119</refsynopsisdiv> 3120<refsect1> 3121 <title>Arguments</title> 3122 <variablelist> 3123 <varlistentry> 3124 <term><parameter>runtime</parameter></term> 3125 <listitem> 3126 <para> 3127 PCM runtime instance 3128 </para> 3129 </listitem> 3130 </varlistentry> 3131 <varlistentry> 3132 <term><parameter>cond</parameter></term> 3133 <listitem> 3134 <para> 3135 condition bits 3136 </para> 3137 </listitem> 3138 </varlistentry> 3139 <varlistentry> 3140 <term><parameter>var</parameter></term> 3141 <listitem> 3142 <para> 3143 hw_params variable to apply the ratdens constraint 3144 </para> 3145 </listitem> 3146 </varlistentry> 3147 <varlistentry> 3148 <term><parameter>r</parameter></term> 3149 <listitem> 3150 <para> 3151 struct snd_ratdens constriants 3152 </para> 3153 </listitem> 3154 </varlistentry> 3155 </variablelist> 3156</refsect1> 3157<refsect1> 3158<title>Return</title> 3159<para> 3160 Zero if successful, or a negative error code on failure. 3161</para> 3162</refsect1> 3163</refentry> 3164 3165<refentry id="API-snd-pcm-hw-constraint-msbits"> 3166<refentryinfo> 3167 <title>LINUX</title> 3168 <productname>Kernel Hackers Manual</productname> 3169 <date>July 2017</date> 3170</refentryinfo> 3171<refmeta> 3172 <refentrytitle><phrase>snd_pcm_hw_constraint_msbits</phrase></refentrytitle> 3173 <manvolnum>9</manvolnum> 3174 <refmiscinfo class="version">4.4.14</refmiscinfo> 3175</refmeta> 3176<refnamediv> 3177 <refname>snd_pcm_hw_constraint_msbits</refname> 3178 <refpurpose> 3179 add a hw constraint msbits rule 3180 </refpurpose> 3181</refnamediv> 3182<refsynopsisdiv> 3183 <title>Synopsis</title> 3184 <funcsynopsis><funcprototype> 3185 <funcdef>int <function>snd_pcm_hw_constraint_msbits </function></funcdef> 3186 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 3187 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 3188 <paramdef>unsigned int <parameter>width</parameter></paramdef> 3189 <paramdef>unsigned int <parameter>msbits</parameter></paramdef> 3190 </funcprototype></funcsynopsis> 3191</refsynopsisdiv> 3192<refsect1> 3193 <title>Arguments</title> 3194 <variablelist> 3195 <varlistentry> 3196 <term><parameter>runtime</parameter></term> 3197 <listitem> 3198 <para> 3199 PCM runtime instance 3200 </para> 3201 </listitem> 3202 </varlistentry> 3203 <varlistentry> 3204 <term><parameter>cond</parameter></term> 3205 <listitem> 3206 <para> 3207 condition bits 3208 </para> 3209 </listitem> 3210 </varlistentry> 3211 <varlistentry> 3212 <term><parameter>width</parameter></term> 3213 <listitem> 3214 <para> 3215 sample bits width 3216 </para> 3217 </listitem> 3218 </varlistentry> 3219 <varlistentry> 3220 <term><parameter>msbits</parameter></term> 3221 <listitem> 3222 <para> 3223 msbits width 3224 </para> 3225 </listitem> 3226 </varlistentry> 3227 </variablelist> 3228</refsect1> 3229<refsect1> 3230<title>Description</title> 3231<para> 3232 This constraint will set the number of most significant bits (msbits) if a 3233 sample format with the specified width has been select. If width is set to 0 3234 the msbits will be set for any sample format with a width larger than the 3235 specified msbits. 3236</para> 3237</refsect1> 3238<refsect1> 3239<title>Return</title> 3240<para> 3241 Zero if successful, or a negative error code on failure. 3242</para> 3243</refsect1> 3244</refentry> 3245 3246<refentry id="API-snd-pcm-hw-constraint-step"> 3247<refentryinfo> 3248 <title>LINUX</title> 3249 <productname>Kernel Hackers Manual</productname> 3250 <date>July 2017</date> 3251</refentryinfo> 3252<refmeta> 3253 <refentrytitle><phrase>snd_pcm_hw_constraint_step</phrase></refentrytitle> 3254 <manvolnum>9</manvolnum> 3255 <refmiscinfo class="version">4.4.14</refmiscinfo> 3256</refmeta> 3257<refnamediv> 3258 <refname>snd_pcm_hw_constraint_step</refname> 3259 <refpurpose> 3260 add a hw constraint step rule 3261 </refpurpose> 3262</refnamediv> 3263<refsynopsisdiv> 3264 <title>Synopsis</title> 3265 <funcsynopsis><funcprototype> 3266 <funcdef>int <function>snd_pcm_hw_constraint_step </function></funcdef> 3267 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 3268 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 3269 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3270 <paramdef>unsigned long <parameter>step</parameter></paramdef> 3271 </funcprototype></funcsynopsis> 3272</refsynopsisdiv> 3273<refsect1> 3274 <title>Arguments</title> 3275 <variablelist> 3276 <varlistentry> 3277 <term><parameter>runtime</parameter></term> 3278 <listitem> 3279 <para> 3280 PCM runtime instance 3281 </para> 3282 </listitem> 3283 </varlistentry> 3284 <varlistentry> 3285 <term><parameter>cond</parameter></term> 3286 <listitem> 3287 <para> 3288 condition bits 3289 </para> 3290 </listitem> 3291 </varlistentry> 3292 <varlistentry> 3293 <term><parameter>var</parameter></term> 3294 <listitem> 3295 <para> 3296 hw_params variable to apply the step constraint 3297 </para> 3298 </listitem> 3299 </varlistentry> 3300 <varlistentry> 3301 <term><parameter>step</parameter></term> 3302 <listitem> 3303 <para> 3304 step size 3305 </para> 3306 </listitem> 3307 </varlistentry> 3308 </variablelist> 3309</refsect1> 3310<refsect1> 3311<title>Return</title> 3312<para> 3313 Zero if successful, or a negative error code on failure. 3314</para> 3315</refsect1> 3316</refentry> 3317 3318<refentry id="API-snd-pcm-hw-constraint-pow2"> 3319<refentryinfo> 3320 <title>LINUX</title> 3321 <productname>Kernel Hackers Manual</productname> 3322 <date>July 2017</date> 3323</refentryinfo> 3324<refmeta> 3325 <refentrytitle><phrase>snd_pcm_hw_constraint_pow2</phrase></refentrytitle> 3326 <manvolnum>9</manvolnum> 3327 <refmiscinfo class="version">4.4.14</refmiscinfo> 3328</refmeta> 3329<refnamediv> 3330 <refname>snd_pcm_hw_constraint_pow2</refname> 3331 <refpurpose> 3332 add a hw constraint power-of-2 rule 3333 </refpurpose> 3334</refnamediv> 3335<refsynopsisdiv> 3336 <title>Synopsis</title> 3337 <funcsynopsis><funcprototype> 3338 <funcdef>int <function>snd_pcm_hw_constraint_pow2 </function></funcdef> 3339 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 3340 <paramdef>unsigned int <parameter>cond</parameter></paramdef> 3341 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3342 </funcprototype></funcsynopsis> 3343</refsynopsisdiv> 3344<refsect1> 3345 <title>Arguments</title> 3346 <variablelist> 3347 <varlistentry> 3348 <term><parameter>runtime</parameter></term> 3349 <listitem> 3350 <para> 3351 PCM runtime instance 3352 </para> 3353 </listitem> 3354 </varlistentry> 3355 <varlistentry> 3356 <term><parameter>cond</parameter></term> 3357 <listitem> 3358 <para> 3359 condition bits 3360 </para> 3361 </listitem> 3362 </varlistentry> 3363 <varlistentry> 3364 <term><parameter>var</parameter></term> 3365 <listitem> 3366 <para> 3367 hw_params variable to apply the power-of-2 constraint 3368 </para> 3369 </listitem> 3370 </varlistentry> 3371 </variablelist> 3372</refsect1> 3373<refsect1> 3374<title>Return</title> 3375<para> 3376 Zero if successful, or a negative error code on failure. 3377</para> 3378</refsect1> 3379</refentry> 3380 3381<refentry id="API-snd-pcm-hw-rule-noresample"> 3382<refentryinfo> 3383 <title>LINUX</title> 3384 <productname>Kernel Hackers Manual</productname> 3385 <date>July 2017</date> 3386</refentryinfo> 3387<refmeta> 3388 <refentrytitle><phrase>snd_pcm_hw_rule_noresample</phrase></refentrytitle> 3389 <manvolnum>9</manvolnum> 3390 <refmiscinfo class="version">4.4.14</refmiscinfo> 3391</refmeta> 3392<refnamediv> 3393 <refname>snd_pcm_hw_rule_noresample</refname> 3394 <refpurpose> 3395 add a rule to allow disabling hw resampling 3396 </refpurpose> 3397</refnamediv> 3398<refsynopsisdiv> 3399 <title>Synopsis</title> 3400 <funcsynopsis><funcprototype> 3401 <funcdef>int <function>snd_pcm_hw_rule_noresample </function></funcdef> 3402 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 3403 <paramdef>unsigned int <parameter>base_rate</parameter></paramdef> 3404 </funcprototype></funcsynopsis> 3405</refsynopsisdiv> 3406<refsect1> 3407 <title>Arguments</title> 3408 <variablelist> 3409 <varlistentry> 3410 <term><parameter>runtime</parameter></term> 3411 <listitem> 3412 <para> 3413 PCM runtime instance 3414 </para> 3415 </listitem> 3416 </varlistentry> 3417 <varlistentry> 3418 <term><parameter>base_rate</parameter></term> 3419 <listitem> 3420 <para> 3421 the rate at which the hardware does not resample 3422 </para> 3423 </listitem> 3424 </varlistentry> 3425 </variablelist> 3426</refsect1> 3427<refsect1> 3428<title>Return</title> 3429<para> 3430 Zero if successful, or a negative error code on failure. 3431</para> 3432</refsect1> 3433</refentry> 3434 3435<refentry id="API-snd-pcm-hw-param-value"> 3436<refentryinfo> 3437 <title>LINUX</title> 3438 <productname>Kernel Hackers Manual</productname> 3439 <date>July 2017</date> 3440</refentryinfo> 3441<refmeta> 3442 <refentrytitle><phrase>snd_pcm_hw_param_value</phrase></refentrytitle> 3443 <manvolnum>9</manvolnum> 3444 <refmiscinfo class="version">4.4.14</refmiscinfo> 3445</refmeta> 3446<refnamediv> 3447 <refname>snd_pcm_hw_param_value</refname> 3448 <refpurpose> 3449 return <parameter>params</parameter> field <parameter>var</parameter> value 3450 </refpurpose> 3451</refnamediv> 3452<refsynopsisdiv> 3453 <title>Synopsis</title> 3454 <funcsynopsis><funcprototype> 3455 <funcdef>int <function>snd_pcm_hw_param_value </function></funcdef> 3456 <paramdef>const struct snd_pcm_hw_params * <parameter>params</parameter></paramdef> 3457 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3458 <paramdef>int * <parameter>dir</parameter></paramdef> 3459 </funcprototype></funcsynopsis> 3460</refsynopsisdiv> 3461<refsect1> 3462 <title>Arguments</title> 3463 <variablelist> 3464 <varlistentry> 3465 <term><parameter>params</parameter></term> 3466 <listitem> 3467 <para> 3468 the hw_params instance 3469 </para> 3470 </listitem> 3471 </varlistentry> 3472 <varlistentry> 3473 <term><parameter>var</parameter></term> 3474 <listitem> 3475 <para> 3476 parameter to retrieve 3477 </para> 3478 </listitem> 3479 </varlistentry> 3480 <varlistentry> 3481 <term><parameter>dir</parameter></term> 3482 <listitem> 3483 <para> 3484 pointer to the direction (-1,0,1) or <constant>NULL</constant> 3485 </para> 3486 </listitem> 3487 </varlistentry> 3488 </variablelist> 3489</refsect1> 3490<refsect1> 3491<title>Return</title> 3492<para> 3493 The value for field <parameter>var</parameter> if it's fixed in configuration space 3494 defined by <parameter>params</parameter>. -<constant>EINVAL</constant> otherwise. 3495</para> 3496</refsect1> 3497</refentry> 3498 3499<refentry id="API-snd-pcm-hw-param-first"> 3500<refentryinfo> 3501 <title>LINUX</title> 3502 <productname>Kernel Hackers Manual</productname> 3503 <date>July 2017</date> 3504</refentryinfo> 3505<refmeta> 3506 <refentrytitle><phrase>snd_pcm_hw_param_first</phrase></refentrytitle> 3507 <manvolnum>9</manvolnum> 3508 <refmiscinfo class="version">4.4.14</refmiscinfo> 3509</refmeta> 3510<refnamediv> 3511 <refname>snd_pcm_hw_param_first</refname> 3512 <refpurpose> 3513 refine config space and return minimum value 3514 </refpurpose> 3515</refnamediv> 3516<refsynopsisdiv> 3517 <title>Synopsis</title> 3518 <funcsynopsis><funcprototype> 3519 <funcdef>int <function>snd_pcm_hw_param_first </function></funcdef> 3520 <paramdef>struct snd_pcm_substream * <parameter>pcm</parameter></paramdef> 3521 <paramdef>struct snd_pcm_hw_params * <parameter>params</parameter></paramdef> 3522 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3523 <paramdef>int * <parameter>dir</parameter></paramdef> 3524 </funcprototype></funcsynopsis> 3525</refsynopsisdiv> 3526<refsect1> 3527 <title>Arguments</title> 3528 <variablelist> 3529 <varlistentry> 3530 <term><parameter>pcm</parameter></term> 3531 <listitem> 3532 <para> 3533 PCM instance 3534 </para> 3535 </listitem> 3536 </varlistentry> 3537 <varlistentry> 3538 <term><parameter>params</parameter></term> 3539 <listitem> 3540 <para> 3541 the hw_params instance 3542 </para> 3543 </listitem> 3544 </varlistentry> 3545 <varlistentry> 3546 <term><parameter>var</parameter></term> 3547 <listitem> 3548 <para> 3549 parameter to retrieve 3550 </para> 3551 </listitem> 3552 </varlistentry> 3553 <varlistentry> 3554 <term><parameter>dir</parameter></term> 3555 <listitem> 3556 <para> 3557 pointer to the direction (-1,0,1) or <constant>NULL</constant> 3558 </para> 3559 </listitem> 3560 </varlistentry> 3561 </variablelist> 3562</refsect1> 3563<refsect1> 3564<title>Description</title> 3565<para> 3566 Inside configuration space defined by <parameter>params</parameter> remove from <parameter>var</parameter> all 3567 values > minimum. Reduce configuration space accordingly. 3568</para> 3569</refsect1> 3570<refsect1> 3571<title>Return</title> 3572<para> 3573 The minimum, or a negative error code on failure. 3574</para> 3575</refsect1> 3576</refentry> 3577 3578<refentry id="API-snd-pcm-hw-param-last"> 3579<refentryinfo> 3580 <title>LINUX</title> 3581 <productname>Kernel Hackers Manual</productname> 3582 <date>July 2017</date> 3583</refentryinfo> 3584<refmeta> 3585 <refentrytitle><phrase>snd_pcm_hw_param_last</phrase></refentrytitle> 3586 <manvolnum>9</manvolnum> 3587 <refmiscinfo class="version">4.4.14</refmiscinfo> 3588</refmeta> 3589<refnamediv> 3590 <refname>snd_pcm_hw_param_last</refname> 3591 <refpurpose> 3592 refine config space and return maximum value 3593 </refpurpose> 3594</refnamediv> 3595<refsynopsisdiv> 3596 <title>Synopsis</title> 3597 <funcsynopsis><funcprototype> 3598 <funcdef>int <function>snd_pcm_hw_param_last </function></funcdef> 3599 <paramdef>struct snd_pcm_substream * <parameter>pcm</parameter></paramdef> 3600 <paramdef>struct snd_pcm_hw_params * <parameter>params</parameter></paramdef> 3601 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 3602 <paramdef>int * <parameter>dir</parameter></paramdef> 3603 </funcprototype></funcsynopsis> 3604</refsynopsisdiv> 3605<refsect1> 3606 <title>Arguments</title> 3607 <variablelist> 3608 <varlistentry> 3609 <term><parameter>pcm</parameter></term> 3610 <listitem> 3611 <para> 3612 PCM instance 3613 </para> 3614 </listitem> 3615 </varlistentry> 3616 <varlistentry> 3617 <term><parameter>params</parameter></term> 3618 <listitem> 3619 <para> 3620 the hw_params instance 3621 </para> 3622 </listitem> 3623 </varlistentry> 3624 <varlistentry> 3625 <term><parameter>var</parameter></term> 3626 <listitem> 3627 <para> 3628 parameter to retrieve 3629 </para> 3630 </listitem> 3631 </varlistentry> 3632 <varlistentry> 3633 <term><parameter>dir</parameter></term> 3634 <listitem> 3635 <para> 3636 pointer to the direction (-1,0,1) or <constant>NULL</constant> 3637 </para> 3638 </listitem> 3639 </varlistentry> 3640 </variablelist> 3641</refsect1> 3642<refsect1> 3643<title>Description</title> 3644<para> 3645 Inside configuration space defined by <parameter>params</parameter> remove from <parameter>var</parameter> all 3646 values < maximum. Reduce configuration space accordingly. 3647</para> 3648</refsect1> 3649<refsect1> 3650<title>Return</title> 3651<para> 3652 The maximum, or a negative error code on failure. 3653</para> 3654</refsect1> 3655</refentry> 3656 3657<refentry id="API-snd-pcm-lib-ioctl"> 3658<refentryinfo> 3659 <title>LINUX</title> 3660 <productname>Kernel Hackers Manual</productname> 3661 <date>July 2017</date> 3662</refentryinfo> 3663<refmeta> 3664 <refentrytitle><phrase>snd_pcm_lib_ioctl</phrase></refentrytitle> 3665 <manvolnum>9</manvolnum> 3666 <refmiscinfo class="version">4.4.14</refmiscinfo> 3667</refmeta> 3668<refnamediv> 3669 <refname>snd_pcm_lib_ioctl</refname> 3670 <refpurpose> 3671 a generic PCM ioctl callback 3672 </refpurpose> 3673</refnamediv> 3674<refsynopsisdiv> 3675 <title>Synopsis</title> 3676 <funcsynopsis><funcprototype> 3677 <funcdef>int <function>snd_pcm_lib_ioctl </function></funcdef> 3678 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 3679 <paramdef>unsigned int <parameter>cmd</parameter></paramdef> 3680 <paramdef>void * <parameter>arg</parameter></paramdef> 3681 </funcprototype></funcsynopsis> 3682</refsynopsisdiv> 3683<refsect1> 3684 <title>Arguments</title> 3685 <variablelist> 3686 <varlistentry> 3687 <term><parameter>substream</parameter></term> 3688 <listitem> 3689 <para> 3690 the pcm substream instance 3691 </para> 3692 </listitem> 3693 </varlistentry> 3694 <varlistentry> 3695 <term><parameter>cmd</parameter></term> 3696 <listitem> 3697 <para> 3698 ioctl command 3699 </para> 3700 </listitem> 3701 </varlistentry> 3702 <varlistentry> 3703 <term><parameter>arg</parameter></term> 3704 <listitem> 3705 <para> 3706 ioctl argument 3707 </para> 3708 </listitem> 3709 </varlistentry> 3710 </variablelist> 3711</refsect1> 3712<refsect1> 3713<title>Description</title> 3714<para> 3715 Processes the generic ioctl commands for PCM. 3716 Can be passed as the ioctl callback for PCM ops. 3717</para> 3718</refsect1> 3719<refsect1> 3720<title>Return</title> 3721<para> 3722 Zero if successful, or a negative error code on failure. 3723</para> 3724</refsect1> 3725</refentry> 3726 3727<refentry id="API-snd-pcm-period-elapsed"> 3728<refentryinfo> 3729 <title>LINUX</title> 3730 <productname>Kernel Hackers Manual</productname> 3731 <date>July 2017</date> 3732</refentryinfo> 3733<refmeta> 3734 <refentrytitle><phrase>snd_pcm_period_elapsed</phrase></refentrytitle> 3735 <manvolnum>9</manvolnum> 3736 <refmiscinfo class="version">4.4.14</refmiscinfo> 3737</refmeta> 3738<refnamediv> 3739 <refname>snd_pcm_period_elapsed</refname> 3740 <refpurpose> 3741 update the pcm status for the next period 3742 </refpurpose> 3743</refnamediv> 3744<refsynopsisdiv> 3745 <title>Synopsis</title> 3746 <funcsynopsis><funcprototype> 3747 <funcdef>void <function>snd_pcm_period_elapsed </function></funcdef> 3748 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 3749 </funcprototype></funcsynopsis> 3750</refsynopsisdiv> 3751<refsect1> 3752 <title>Arguments</title> 3753 <variablelist> 3754 <varlistentry> 3755 <term><parameter>substream</parameter></term> 3756 <listitem> 3757 <para> 3758 the pcm substream instance 3759 </para> 3760 </listitem> 3761 </varlistentry> 3762 </variablelist> 3763</refsect1> 3764<refsect1> 3765<title>Description</title> 3766<para> 3767 This function is called from the interrupt handler when the 3768 PCM has processed the period size. It will update the current 3769 pointer, wake up sleepers, etc. 3770 </para><para> 3771 3772 Even if more than one periods have elapsed since the last call, you 3773 have to call this only once. 3774</para> 3775</refsect1> 3776</refentry> 3777 3778<refentry id="API-snd-pcm-add-chmap-ctls"> 3779<refentryinfo> 3780 <title>LINUX</title> 3781 <productname>Kernel Hackers Manual</productname> 3782 <date>July 2017</date> 3783</refentryinfo> 3784<refmeta> 3785 <refentrytitle><phrase>snd_pcm_add_chmap_ctls</phrase></refentrytitle> 3786 <manvolnum>9</manvolnum> 3787 <refmiscinfo class="version">4.4.14</refmiscinfo> 3788</refmeta> 3789<refnamediv> 3790 <refname>snd_pcm_add_chmap_ctls</refname> 3791 <refpurpose> 3792 create channel-mapping control elements 3793 </refpurpose> 3794</refnamediv> 3795<refsynopsisdiv> 3796 <title>Synopsis</title> 3797 <funcsynopsis><funcprototype> 3798 <funcdef>int <function>snd_pcm_add_chmap_ctls </function></funcdef> 3799 <paramdef>struct snd_pcm * <parameter>pcm</parameter></paramdef> 3800 <paramdef>int <parameter>stream</parameter></paramdef> 3801 <paramdef>const struct snd_pcm_chmap_elem * <parameter>chmap</parameter></paramdef> 3802 <paramdef>int <parameter>max_channels</parameter></paramdef> 3803 <paramdef>unsigned long <parameter>private_value</parameter></paramdef> 3804 <paramdef>struct snd_pcm_chmap ** <parameter>info_ret</parameter></paramdef> 3805 </funcprototype></funcsynopsis> 3806</refsynopsisdiv> 3807<refsect1> 3808 <title>Arguments</title> 3809 <variablelist> 3810 <varlistentry> 3811 <term><parameter>pcm</parameter></term> 3812 <listitem> 3813 <para> 3814 the assigned PCM instance 3815 </para> 3816 </listitem> 3817 </varlistentry> 3818 <varlistentry> 3819 <term><parameter>stream</parameter></term> 3820 <listitem> 3821 <para> 3822 stream direction 3823 </para> 3824 </listitem> 3825 </varlistentry> 3826 <varlistentry> 3827 <term><parameter>chmap</parameter></term> 3828 <listitem> 3829 <para> 3830 channel map elements (for query) 3831 </para> 3832 </listitem> 3833 </varlistentry> 3834 <varlistentry> 3835 <term><parameter>max_channels</parameter></term> 3836 <listitem> 3837 <para> 3838 the max number of channels for the stream 3839 </para> 3840 </listitem> 3841 </varlistentry> 3842 <varlistentry> 3843 <term><parameter>private_value</parameter></term> 3844 <listitem> 3845 <para> 3846 the value passed to each kcontrol's private_value field 3847 </para> 3848 </listitem> 3849 </varlistentry> 3850 <varlistentry> 3851 <term><parameter>info_ret</parameter></term> 3852 <listitem> 3853 <para> 3854 store struct snd_pcm_chmap instance if non-NULL 3855 </para> 3856 </listitem> 3857 </varlistentry> 3858 </variablelist> 3859</refsect1> 3860<refsect1> 3861<title>Description</title> 3862<para> 3863 Create channel-mapping control elements assigned to the given PCM stream(s). 3864</para> 3865</refsect1> 3866<refsect1> 3867<title>Return</title> 3868<para> 3869 Zero if successful, or a negative error value. 3870</para> 3871</refsect1> 3872</refentry> 3873 3874<!-- sound/core/pcm_native.c --> 3875<refentry id="API-snd-pcm-stream-lock"> 3876<refentryinfo> 3877 <title>LINUX</title> 3878 <productname>Kernel Hackers Manual</productname> 3879 <date>July 2017</date> 3880</refentryinfo> 3881<refmeta> 3882 <refentrytitle><phrase>snd_pcm_stream_lock</phrase></refentrytitle> 3883 <manvolnum>9</manvolnum> 3884 <refmiscinfo class="version">4.4.14</refmiscinfo> 3885</refmeta> 3886<refnamediv> 3887 <refname>snd_pcm_stream_lock</refname> 3888 <refpurpose> 3889 Lock the PCM stream 3890 </refpurpose> 3891</refnamediv> 3892<refsynopsisdiv> 3893 <title>Synopsis</title> 3894 <funcsynopsis><funcprototype> 3895 <funcdef>void <function>snd_pcm_stream_lock </function></funcdef> 3896 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 3897 </funcprototype></funcsynopsis> 3898</refsynopsisdiv> 3899<refsect1> 3900 <title>Arguments</title> 3901 <variablelist> 3902 <varlistentry> 3903 <term><parameter>substream</parameter></term> 3904 <listitem> 3905 <para> 3906 PCM substream 3907 </para> 3908 </listitem> 3909 </varlistentry> 3910 </variablelist> 3911</refsect1> 3912<refsect1> 3913<title>Description</title> 3914<para> 3915 This locks the PCM stream's spinlock or mutex depending on the nonatomic 3916 flag of the given substream. This also takes the global link rw lock 3917 (or rw sem), too, for avoiding the race with linked streams. 3918</para> 3919</refsect1> 3920</refentry> 3921 3922<refentry id="API-snd-pcm-stream-unlock"> 3923<refentryinfo> 3924 <title>LINUX</title> 3925 <productname>Kernel Hackers Manual</productname> 3926 <date>July 2017</date> 3927</refentryinfo> 3928<refmeta> 3929 <refentrytitle><phrase>snd_pcm_stream_unlock</phrase></refentrytitle> 3930 <manvolnum>9</manvolnum> 3931 <refmiscinfo class="version">4.4.14</refmiscinfo> 3932</refmeta> 3933<refnamediv> 3934 <refname>snd_pcm_stream_unlock</refname> 3935 <refpurpose> 3936 Unlock the PCM stream 3937 </refpurpose> 3938</refnamediv> 3939<refsynopsisdiv> 3940 <title>Synopsis</title> 3941 <funcsynopsis><funcprototype> 3942 <funcdef>void <function>snd_pcm_stream_unlock </function></funcdef> 3943 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 3944 </funcprototype></funcsynopsis> 3945</refsynopsisdiv> 3946<refsect1> 3947 <title>Arguments</title> 3948 <variablelist> 3949 <varlistentry> 3950 <term><parameter>substream</parameter></term> 3951 <listitem> 3952 <para> 3953 PCM substream 3954 </para> 3955 </listitem> 3956 </varlistentry> 3957 </variablelist> 3958</refsect1> 3959<refsect1> 3960<title>Description</title> 3961<para> 3962 This unlocks the PCM stream that has been locked via <function>snd_pcm_stream_lock</function>. 3963</para> 3964</refsect1> 3965</refentry> 3966 3967<refentry id="API-snd-pcm-stream-lock-irq"> 3968<refentryinfo> 3969 <title>LINUX</title> 3970 <productname>Kernel Hackers Manual</productname> 3971 <date>July 2017</date> 3972</refentryinfo> 3973<refmeta> 3974 <refentrytitle><phrase>snd_pcm_stream_lock_irq</phrase></refentrytitle> 3975 <manvolnum>9</manvolnum> 3976 <refmiscinfo class="version">4.4.14</refmiscinfo> 3977</refmeta> 3978<refnamediv> 3979 <refname>snd_pcm_stream_lock_irq</refname> 3980 <refpurpose> 3981 Lock the PCM stream 3982 </refpurpose> 3983</refnamediv> 3984<refsynopsisdiv> 3985 <title>Synopsis</title> 3986 <funcsynopsis><funcprototype> 3987 <funcdef>void <function>snd_pcm_stream_lock_irq </function></funcdef> 3988 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 3989 </funcprototype></funcsynopsis> 3990</refsynopsisdiv> 3991<refsect1> 3992 <title>Arguments</title> 3993 <variablelist> 3994 <varlistentry> 3995 <term><parameter>substream</parameter></term> 3996 <listitem> 3997 <para> 3998 PCM substream 3999 </para> 4000 </listitem> 4001 </varlistentry> 4002 </variablelist> 4003</refsect1> 4004<refsect1> 4005<title>Description</title> 4006<para> 4007 This locks the PCM stream like <function>snd_pcm_stream_lock</function> and disables the local 4008 IRQ (only when nonatomic is false). In nonatomic case, this is identical 4009 as <function>snd_pcm_stream_lock</function>. 4010</para> 4011</refsect1> 4012</refentry> 4013 4014<refentry id="API-snd-pcm-stream-unlock-irq"> 4015<refentryinfo> 4016 <title>LINUX</title> 4017 <productname>Kernel Hackers Manual</productname> 4018 <date>July 2017</date> 4019</refentryinfo> 4020<refmeta> 4021 <refentrytitle><phrase>snd_pcm_stream_unlock_irq</phrase></refentrytitle> 4022 <manvolnum>9</manvolnum> 4023 <refmiscinfo class="version">4.4.14</refmiscinfo> 4024</refmeta> 4025<refnamediv> 4026 <refname>snd_pcm_stream_unlock_irq</refname> 4027 <refpurpose> 4028 Unlock the PCM stream 4029 </refpurpose> 4030</refnamediv> 4031<refsynopsisdiv> 4032 <title>Synopsis</title> 4033 <funcsynopsis><funcprototype> 4034 <funcdef>void <function>snd_pcm_stream_unlock_irq </function></funcdef> 4035 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4036 </funcprototype></funcsynopsis> 4037</refsynopsisdiv> 4038<refsect1> 4039 <title>Arguments</title> 4040 <variablelist> 4041 <varlistentry> 4042 <term><parameter>substream</parameter></term> 4043 <listitem> 4044 <para> 4045 PCM substream 4046 </para> 4047 </listitem> 4048 </varlistentry> 4049 </variablelist> 4050</refsect1> 4051<refsect1> 4052<title>Description</title> 4053<para> 4054 This is a counter-part of <function>snd_pcm_stream_lock_irq</function>. 4055</para> 4056</refsect1> 4057</refentry> 4058 4059<refentry id="API-snd-pcm-stream-unlock-irqrestore"> 4060<refentryinfo> 4061 <title>LINUX</title> 4062 <productname>Kernel Hackers Manual</productname> 4063 <date>July 2017</date> 4064</refentryinfo> 4065<refmeta> 4066 <refentrytitle><phrase>snd_pcm_stream_unlock_irqrestore</phrase></refentrytitle> 4067 <manvolnum>9</manvolnum> 4068 <refmiscinfo class="version">4.4.14</refmiscinfo> 4069</refmeta> 4070<refnamediv> 4071 <refname>snd_pcm_stream_unlock_irqrestore</refname> 4072 <refpurpose> 4073 Unlock the PCM stream 4074 </refpurpose> 4075</refnamediv> 4076<refsynopsisdiv> 4077 <title>Synopsis</title> 4078 <funcsynopsis><funcprototype> 4079 <funcdef>void <function>snd_pcm_stream_unlock_irqrestore </function></funcdef> 4080 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4081 <paramdef>unsigned long <parameter>flags</parameter></paramdef> 4082 </funcprototype></funcsynopsis> 4083</refsynopsisdiv> 4084<refsect1> 4085 <title>Arguments</title> 4086 <variablelist> 4087 <varlistentry> 4088 <term><parameter>substream</parameter></term> 4089 <listitem> 4090 <para> 4091 PCM substream 4092 </para> 4093 </listitem> 4094 </varlistentry> 4095 <varlistentry> 4096 <term><parameter>flags</parameter></term> 4097 <listitem> 4098 <para> 4099 irq flags 4100 </para> 4101 </listitem> 4102 </varlistentry> 4103 </variablelist> 4104</refsect1> 4105<refsect1> 4106<title>Description</title> 4107<para> 4108 This is a counter-part of <function>snd_pcm_stream_lock_irqsave</function>. 4109</para> 4110</refsect1> 4111</refentry> 4112 4113<refentry id="API-snd-pcm-stop"> 4114<refentryinfo> 4115 <title>LINUX</title> 4116 <productname>Kernel Hackers Manual</productname> 4117 <date>July 2017</date> 4118</refentryinfo> 4119<refmeta> 4120 <refentrytitle><phrase>snd_pcm_stop</phrase></refentrytitle> 4121 <manvolnum>9</manvolnum> 4122 <refmiscinfo class="version">4.4.14</refmiscinfo> 4123</refmeta> 4124<refnamediv> 4125 <refname>snd_pcm_stop</refname> 4126 <refpurpose> 4127 try to stop all running streams in the substream group 4128 </refpurpose> 4129</refnamediv> 4130<refsynopsisdiv> 4131 <title>Synopsis</title> 4132 <funcsynopsis><funcprototype> 4133 <funcdef>int <function>snd_pcm_stop </function></funcdef> 4134 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4135 <paramdef>snd_pcm_state_t <parameter>state</parameter></paramdef> 4136 </funcprototype></funcsynopsis> 4137</refsynopsisdiv> 4138<refsect1> 4139 <title>Arguments</title> 4140 <variablelist> 4141 <varlistentry> 4142 <term><parameter>substream</parameter></term> 4143 <listitem> 4144 <para> 4145 the PCM substream instance 4146 </para> 4147 </listitem> 4148 </varlistentry> 4149 <varlistentry> 4150 <term><parameter>state</parameter></term> 4151 <listitem> 4152 <para> 4153 PCM state after stopping the stream 4154 </para> 4155 </listitem> 4156 </varlistentry> 4157 </variablelist> 4158</refsect1> 4159<refsect1> 4160<title>Description</title> 4161<para> 4162 The state of each stream is then changed to the given state unconditionally. 4163</para> 4164</refsect1> 4165<refsect1> 4166<title>Return</title> 4167<para> 4168 Zero if successful, or a negative error code. 4169</para> 4170</refsect1> 4171</refentry> 4172 4173<refentry id="API-snd-pcm-stop-xrun"> 4174<refentryinfo> 4175 <title>LINUX</title> 4176 <productname>Kernel Hackers Manual</productname> 4177 <date>July 2017</date> 4178</refentryinfo> 4179<refmeta> 4180 <refentrytitle><phrase>snd_pcm_stop_xrun</phrase></refentrytitle> 4181 <manvolnum>9</manvolnum> 4182 <refmiscinfo class="version">4.4.14</refmiscinfo> 4183</refmeta> 4184<refnamediv> 4185 <refname>snd_pcm_stop_xrun</refname> 4186 <refpurpose> 4187 stop the running streams as XRUN 4188 </refpurpose> 4189</refnamediv> 4190<refsynopsisdiv> 4191 <title>Synopsis</title> 4192 <funcsynopsis><funcprototype> 4193 <funcdef>int <function>snd_pcm_stop_xrun </function></funcdef> 4194 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4195 </funcprototype></funcsynopsis> 4196</refsynopsisdiv> 4197<refsect1> 4198 <title>Arguments</title> 4199 <variablelist> 4200 <varlistentry> 4201 <term><parameter>substream</parameter></term> 4202 <listitem> 4203 <para> 4204 the PCM substream instance 4205 </para> 4206 </listitem> 4207 </varlistentry> 4208 </variablelist> 4209</refsect1> 4210<refsect1> 4211<title>Description</title> 4212<para> 4213 This stops the given running substream (and all linked substreams) as XRUN. 4214 Unlike <function>snd_pcm_stop</function>, this function takes the substream lock by itself. 4215</para> 4216</refsect1> 4217<refsect1> 4218<title>Return</title> 4219<para> 4220 Zero if successful, or a negative error code. 4221</para> 4222</refsect1> 4223</refentry> 4224 4225<refentry id="API-snd-pcm-suspend"> 4226<refentryinfo> 4227 <title>LINUX</title> 4228 <productname>Kernel Hackers Manual</productname> 4229 <date>July 2017</date> 4230</refentryinfo> 4231<refmeta> 4232 <refentrytitle><phrase>snd_pcm_suspend</phrase></refentrytitle> 4233 <manvolnum>9</manvolnum> 4234 <refmiscinfo class="version">4.4.14</refmiscinfo> 4235</refmeta> 4236<refnamediv> 4237 <refname>snd_pcm_suspend</refname> 4238 <refpurpose> 4239 trigger SUSPEND to all linked streams 4240 </refpurpose> 4241</refnamediv> 4242<refsynopsisdiv> 4243 <title>Synopsis</title> 4244 <funcsynopsis><funcprototype> 4245 <funcdef>int <function>snd_pcm_suspend </function></funcdef> 4246 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4247 </funcprototype></funcsynopsis> 4248</refsynopsisdiv> 4249<refsect1> 4250 <title>Arguments</title> 4251 <variablelist> 4252 <varlistentry> 4253 <term><parameter>substream</parameter></term> 4254 <listitem> 4255 <para> 4256 the PCM substream 4257 </para> 4258 </listitem> 4259 </varlistentry> 4260 </variablelist> 4261</refsect1> 4262<refsect1> 4263<title>Description</title> 4264<para> 4265 After this call, all streams are changed to SUSPENDED state. 4266</para> 4267</refsect1> 4268<refsect1> 4269<title>Return</title> 4270<para> 4271 Zero if successful (or <parameter>substream</parameter> is <constant>NULL</constant>), or a negative error 4272 code. 4273</para> 4274</refsect1> 4275</refentry> 4276 4277<refentry id="API-snd-pcm-suspend-all"> 4278<refentryinfo> 4279 <title>LINUX</title> 4280 <productname>Kernel Hackers Manual</productname> 4281 <date>July 2017</date> 4282</refentryinfo> 4283<refmeta> 4284 <refentrytitle><phrase>snd_pcm_suspend_all</phrase></refentrytitle> 4285 <manvolnum>9</manvolnum> 4286 <refmiscinfo class="version">4.4.14</refmiscinfo> 4287</refmeta> 4288<refnamediv> 4289 <refname>snd_pcm_suspend_all</refname> 4290 <refpurpose> 4291 trigger SUSPEND to all substreams in the given pcm 4292 </refpurpose> 4293</refnamediv> 4294<refsynopsisdiv> 4295 <title>Synopsis</title> 4296 <funcsynopsis><funcprototype> 4297 <funcdef>int <function>snd_pcm_suspend_all </function></funcdef> 4298 <paramdef>struct snd_pcm * <parameter>pcm</parameter></paramdef> 4299 </funcprototype></funcsynopsis> 4300</refsynopsisdiv> 4301<refsect1> 4302 <title>Arguments</title> 4303 <variablelist> 4304 <varlistentry> 4305 <term><parameter>pcm</parameter></term> 4306 <listitem> 4307 <para> 4308 the PCM instance 4309 </para> 4310 </listitem> 4311 </varlistentry> 4312 </variablelist> 4313</refsect1> 4314<refsect1> 4315<title>Description</title> 4316<para> 4317 After this call, all streams are changed to SUSPENDED state. 4318</para> 4319</refsect1> 4320<refsect1> 4321<title>Return</title> 4322<para> 4323 Zero if successful (or <parameter>pcm</parameter> is <constant>NULL</constant>), or a negative error code. 4324</para> 4325</refsect1> 4326</refentry> 4327 4328<refentry id="API-snd-pcm-lib-default-mmap"> 4329<refentryinfo> 4330 <title>LINUX</title> 4331 <productname>Kernel Hackers Manual</productname> 4332 <date>July 2017</date> 4333</refentryinfo> 4334<refmeta> 4335 <refentrytitle><phrase>snd_pcm_lib_default_mmap</phrase></refentrytitle> 4336 <manvolnum>9</manvolnum> 4337 <refmiscinfo class="version">4.4.14</refmiscinfo> 4338</refmeta> 4339<refnamediv> 4340 <refname>snd_pcm_lib_default_mmap</refname> 4341 <refpurpose> 4342 Default PCM data mmap function 4343 </refpurpose> 4344</refnamediv> 4345<refsynopsisdiv> 4346 <title>Synopsis</title> 4347 <funcsynopsis><funcprototype> 4348 <funcdef>int <function>snd_pcm_lib_default_mmap </function></funcdef> 4349 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4350 <paramdef>struct vm_area_struct * <parameter>area</parameter></paramdef> 4351 </funcprototype></funcsynopsis> 4352</refsynopsisdiv> 4353<refsect1> 4354 <title>Arguments</title> 4355 <variablelist> 4356 <varlistentry> 4357 <term><parameter>substream</parameter></term> 4358 <listitem> 4359 <para> 4360 PCM substream 4361 </para> 4362 </listitem> 4363 </varlistentry> 4364 <varlistentry> 4365 <term><parameter>area</parameter></term> 4366 <listitem> 4367 <para> 4368 VMA 4369 </para> 4370 </listitem> 4371 </varlistentry> 4372 </variablelist> 4373</refsect1> 4374<refsect1> 4375<title>Description</title> 4376<para> 4377 This is the default mmap handler for PCM data. When mmap pcm_ops is NULL, 4378 this function is invoked implicitly. 4379</para> 4380</refsect1> 4381</refentry> 4382 4383<refentry id="API-snd-pcm-lib-mmap-iomem"> 4384<refentryinfo> 4385 <title>LINUX</title> 4386 <productname>Kernel Hackers Manual</productname> 4387 <date>July 2017</date> 4388</refentryinfo> 4389<refmeta> 4390 <refentrytitle><phrase>snd_pcm_lib_mmap_iomem</phrase></refentrytitle> 4391 <manvolnum>9</manvolnum> 4392 <refmiscinfo class="version">4.4.14</refmiscinfo> 4393</refmeta> 4394<refnamediv> 4395 <refname>snd_pcm_lib_mmap_iomem</refname> 4396 <refpurpose> 4397 Default PCM data mmap function for I/O mem 4398 </refpurpose> 4399</refnamediv> 4400<refsynopsisdiv> 4401 <title>Synopsis</title> 4402 <funcsynopsis><funcprototype> 4403 <funcdef>int <function>snd_pcm_lib_mmap_iomem </function></funcdef> 4404 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4405 <paramdef>struct vm_area_struct * <parameter>area</parameter></paramdef> 4406 </funcprototype></funcsynopsis> 4407</refsynopsisdiv> 4408<refsect1> 4409 <title>Arguments</title> 4410 <variablelist> 4411 <varlistentry> 4412 <term><parameter>substream</parameter></term> 4413 <listitem> 4414 <para> 4415 PCM substream 4416 </para> 4417 </listitem> 4418 </varlistentry> 4419 <varlistentry> 4420 <term><parameter>area</parameter></term> 4421 <listitem> 4422 <para> 4423 VMA 4424 </para> 4425 </listitem> 4426 </varlistentry> 4427 </variablelist> 4428</refsect1> 4429<refsect1> 4430<title>Description</title> 4431<para> 4432 When your hardware uses the iomapped pages as the hardware buffer and 4433 wants to mmap it, pass this function as mmap pcm_ops. Note that this 4434 is supposed to work only on limited architectures. 4435</para> 4436</refsect1> 4437</refentry> 4438 4439<!-- include/sound/pcm.h --> 4440<refentry id="API-snd-pcm-stream-linked"> 4441<refentryinfo> 4442 <title>LINUX</title> 4443 <productname>Kernel Hackers Manual</productname> 4444 <date>July 2017</date> 4445</refentryinfo> 4446<refmeta> 4447 <refentrytitle><phrase>snd_pcm_stream_linked</phrase></refentrytitle> 4448 <manvolnum>9</manvolnum> 4449 <refmiscinfo class="version">4.4.14</refmiscinfo> 4450</refmeta> 4451<refnamediv> 4452 <refname>snd_pcm_stream_linked</refname> 4453 <refpurpose> 4454 Check whether the substream is linked with others 4455 </refpurpose> 4456</refnamediv> 4457<refsynopsisdiv> 4458 <title>Synopsis</title> 4459 <funcsynopsis><funcprototype> 4460 <funcdef>int <function>snd_pcm_stream_linked </function></funcdef> 4461 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4462 </funcprototype></funcsynopsis> 4463</refsynopsisdiv> 4464<refsect1> 4465 <title>Arguments</title> 4466 <variablelist> 4467 <varlistentry> 4468 <term><parameter>substream</parameter></term> 4469 <listitem> 4470 <para> 4471 substream to check 4472 </para> 4473 </listitem> 4474 </varlistentry> 4475 </variablelist> 4476</refsect1> 4477<refsect1> 4478<title>Description</title> 4479<para> 4480 Returns true if the given substream is being linked with others. 4481</para> 4482</refsect1> 4483</refentry> 4484 4485<refentry id="API-snd-pcm-stream-lock-irqsave"> 4486<refentryinfo> 4487 <title>LINUX</title> 4488 <productname>Kernel Hackers Manual</productname> 4489 <date>July 2017</date> 4490</refentryinfo> 4491<refmeta> 4492 <refentrytitle><phrase>snd_pcm_stream_lock_irqsave</phrase></refentrytitle> 4493 <manvolnum>9</manvolnum> 4494 <refmiscinfo class="version">4.4.14</refmiscinfo> 4495</refmeta> 4496<refnamediv> 4497 <refname>snd_pcm_stream_lock_irqsave</refname> 4498 <refpurpose> 4499 Lock the PCM stream 4500 </refpurpose> 4501</refnamediv> 4502<refsynopsisdiv> 4503 <title>Synopsis</title> 4504 <funcsynopsis><funcprototype> 4505 <funcdef> <function>snd_pcm_stream_lock_irqsave </function></funcdef> 4506 <paramdef> <parameter>substream</parameter></paramdef> 4507 <paramdef> <parameter>flags</parameter></paramdef> 4508 </funcprototype></funcsynopsis> 4509</refsynopsisdiv> 4510<refsect1> 4511 <title>Arguments</title> 4512 <variablelist> 4513 <varlistentry> 4514 <term><parameter>substream</parameter></term> 4515 <listitem> 4516 <para> 4517 PCM substream 4518 </para> 4519 </listitem> 4520 </varlistentry> 4521 <varlistentry> 4522 <term><parameter>flags</parameter></term> 4523 <listitem> 4524 <para> 4525 irq flags 4526 </para> 4527 </listitem> 4528 </varlistentry> 4529 </variablelist> 4530</refsect1> 4531<refsect1> 4532<title>Description</title> 4533<para> 4534 This locks the PCM stream like <function>snd_pcm_stream_lock</function> but with the local 4535 IRQ (only when nonatomic is false). In nonatomic case, this is identical 4536 as <function>snd_pcm_stream_lock</function>. 4537</para> 4538</refsect1> 4539</refentry> 4540 4541<refentry id="API-snd-pcm-group-for-each-entry"> 4542<refentryinfo> 4543 <title>LINUX</title> 4544 <productname>Kernel Hackers Manual</productname> 4545 <date>July 2017</date> 4546</refentryinfo> 4547<refmeta> 4548 <refentrytitle><phrase>snd_pcm_group_for_each_entry</phrase></refentrytitle> 4549 <manvolnum>9</manvolnum> 4550 <refmiscinfo class="version">4.4.14</refmiscinfo> 4551</refmeta> 4552<refnamediv> 4553 <refname>snd_pcm_group_for_each_entry</refname> 4554 <refpurpose> 4555 iterate over the linked substreams 4556 </refpurpose> 4557</refnamediv> 4558<refsynopsisdiv> 4559 <title>Synopsis</title> 4560 <funcsynopsis><funcprototype> 4561 <funcdef> <function>snd_pcm_group_for_each_entry </function></funcdef> 4562 <paramdef> <parameter>s</parameter></paramdef> 4563 <paramdef> <parameter>substream</parameter></paramdef> 4564 </funcprototype></funcsynopsis> 4565</refsynopsisdiv> 4566<refsect1> 4567 <title>Arguments</title> 4568 <variablelist> 4569 <varlistentry> 4570 <term><parameter>s</parameter></term> 4571 <listitem> 4572 <para> 4573 the iterator 4574 </para> 4575 </listitem> 4576 </varlistentry> 4577 <varlistentry> 4578 <term><parameter>substream</parameter></term> 4579 <listitem> 4580 <para> 4581 the substream 4582 </para> 4583 </listitem> 4584 </varlistentry> 4585 </variablelist> 4586</refsect1> 4587<refsect1> 4588<title>Description</title> 4589<para> 4590 Iterate over the all linked substreams to the given <parameter>substream</parameter>. 4591 When <parameter>substream</parameter> isn't linked with any others, this gives returns <parameter>substream</parameter> 4592 itself once. 4593</para> 4594</refsect1> 4595</refentry> 4596 4597<refentry id="API-snd-pcm-running"> 4598<refentryinfo> 4599 <title>LINUX</title> 4600 <productname>Kernel Hackers Manual</productname> 4601 <date>July 2017</date> 4602</refentryinfo> 4603<refmeta> 4604 <refentrytitle><phrase>snd_pcm_running</phrase></refentrytitle> 4605 <manvolnum>9</manvolnum> 4606 <refmiscinfo class="version">4.4.14</refmiscinfo> 4607</refmeta> 4608<refnamediv> 4609 <refname>snd_pcm_running</refname> 4610 <refpurpose> 4611 Check whether the substream is in a running state 4612 </refpurpose> 4613</refnamediv> 4614<refsynopsisdiv> 4615 <title>Synopsis</title> 4616 <funcsynopsis><funcprototype> 4617 <funcdef>int <function>snd_pcm_running </function></funcdef> 4618 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4619 </funcprototype></funcsynopsis> 4620</refsynopsisdiv> 4621<refsect1> 4622 <title>Arguments</title> 4623 <variablelist> 4624 <varlistentry> 4625 <term><parameter>substream</parameter></term> 4626 <listitem> 4627 <para> 4628 substream to check 4629 </para> 4630 </listitem> 4631 </varlistentry> 4632 </variablelist> 4633</refsect1> 4634<refsect1> 4635<title>Description</title> 4636<para> 4637 Returns true if the given substream is in the state RUNNING, or in the 4638 state DRAINING for playback. 4639</para> 4640</refsect1> 4641</refentry> 4642 4643<refentry id="API-bytes-to-samples"> 4644<refentryinfo> 4645 <title>LINUX</title> 4646 <productname>Kernel Hackers Manual</productname> 4647 <date>July 2017</date> 4648</refentryinfo> 4649<refmeta> 4650 <refentrytitle><phrase>bytes_to_samples</phrase></refentrytitle> 4651 <manvolnum>9</manvolnum> 4652 <refmiscinfo class="version">4.4.14</refmiscinfo> 4653</refmeta> 4654<refnamediv> 4655 <refname>bytes_to_samples</refname> 4656 <refpurpose> 4657 Unit conversion of the size from bytes to samples 4658 </refpurpose> 4659</refnamediv> 4660<refsynopsisdiv> 4661 <title>Synopsis</title> 4662 <funcsynopsis><funcprototype> 4663 <funcdef>ssize_t <function>bytes_to_samples </function></funcdef> 4664 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 4665 <paramdef>ssize_t <parameter>size</parameter></paramdef> 4666 </funcprototype></funcsynopsis> 4667</refsynopsisdiv> 4668<refsect1> 4669 <title>Arguments</title> 4670 <variablelist> 4671 <varlistentry> 4672 <term><parameter>runtime</parameter></term> 4673 <listitem> 4674 <para> 4675 PCM runtime instance 4676 </para> 4677 </listitem> 4678 </varlistentry> 4679 <varlistentry> 4680 <term><parameter>size</parameter></term> 4681 <listitem> 4682 <para> 4683 size in bytes 4684 </para> 4685 </listitem> 4686 </varlistentry> 4687 </variablelist> 4688</refsect1> 4689</refentry> 4690 4691<refentry id="API-bytes-to-frames"> 4692<refentryinfo> 4693 <title>LINUX</title> 4694 <productname>Kernel Hackers Manual</productname> 4695 <date>July 2017</date> 4696</refentryinfo> 4697<refmeta> 4698 <refentrytitle><phrase>bytes_to_frames</phrase></refentrytitle> 4699 <manvolnum>9</manvolnum> 4700 <refmiscinfo class="version">4.4.14</refmiscinfo> 4701</refmeta> 4702<refnamediv> 4703 <refname>bytes_to_frames</refname> 4704 <refpurpose> 4705 Unit conversion of the size from bytes to frames 4706 </refpurpose> 4707</refnamediv> 4708<refsynopsisdiv> 4709 <title>Synopsis</title> 4710 <funcsynopsis><funcprototype> 4711 <funcdef>snd_pcm_sframes_t <function>bytes_to_frames </function></funcdef> 4712 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 4713 <paramdef>ssize_t <parameter>size</parameter></paramdef> 4714 </funcprototype></funcsynopsis> 4715</refsynopsisdiv> 4716<refsect1> 4717 <title>Arguments</title> 4718 <variablelist> 4719 <varlistentry> 4720 <term><parameter>runtime</parameter></term> 4721 <listitem> 4722 <para> 4723 PCM runtime instance 4724 </para> 4725 </listitem> 4726 </varlistentry> 4727 <varlistentry> 4728 <term><parameter>size</parameter></term> 4729 <listitem> 4730 <para> 4731 size in bytes 4732 </para> 4733 </listitem> 4734 </varlistentry> 4735 </variablelist> 4736</refsect1> 4737</refentry> 4738 4739<refentry id="API-samples-to-bytes"> 4740<refentryinfo> 4741 <title>LINUX</title> 4742 <productname>Kernel Hackers Manual</productname> 4743 <date>July 2017</date> 4744</refentryinfo> 4745<refmeta> 4746 <refentrytitle><phrase>samples_to_bytes</phrase></refentrytitle> 4747 <manvolnum>9</manvolnum> 4748 <refmiscinfo class="version">4.4.14</refmiscinfo> 4749</refmeta> 4750<refnamediv> 4751 <refname>samples_to_bytes</refname> 4752 <refpurpose> 4753 Unit conversion of the size from samples to bytes 4754 </refpurpose> 4755</refnamediv> 4756<refsynopsisdiv> 4757 <title>Synopsis</title> 4758 <funcsynopsis><funcprototype> 4759 <funcdef>ssize_t <function>samples_to_bytes </function></funcdef> 4760 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 4761 <paramdef>ssize_t <parameter>size</parameter></paramdef> 4762 </funcprototype></funcsynopsis> 4763</refsynopsisdiv> 4764<refsect1> 4765 <title>Arguments</title> 4766 <variablelist> 4767 <varlistentry> 4768 <term><parameter>runtime</parameter></term> 4769 <listitem> 4770 <para> 4771 PCM runtime instance 4772 </para> 4773 </listitem> 4774 </varlistentry> 4775 <varlistentry> 4776 <term><parameter>size</parameter></term> 4777 <listitem> 4778 <para> 4779 size in samples 4780 </para> 4781 </listitem> 4782 </varlistentry> 4783 </variablelist> 4784</refsect1> 4785</refentry> 4786 4787<refentry id="API-frames-to-bytes"> 4788<refentryinfo> 4789 <title>LINUX</title> 4790 <productname>Kernel Hackers Manual</productname> 4791 <date>July 2017</date> 4792</refentryinfo> 4793<refmeta> 4794 <refentrytitle><phrase>frames_to_bytes</phrase></refentrytitle> 4795 <manvolnum>9</manvolnum> 4796 <refmiscinfo class="version">4.4.14</refmiscinfo> 4797</refmeta> 4798<refnamediv> 4799 <refname>frames_to_bytes</refname> 4800 <refpurpose> 4801 Unit conversion of the size from frames to bytes 4802 </refpurpose> 4803</refnamediv> 4804<refsynopsisdiv> 4805 <title>Synopsis</title> 4806 <funcsynopsis><funcprototype> 4807 <funcdef>ssize_t <function>frames_to_bytes </function></funcdef> 4808 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 4809 <paramdef>snd_pcm_sframes_t <parameter>size</parameter></paramdef> 4810 </funcprototype></funcsynopsis> 4811</refsynopsisdiv> 4812<refsect1> 4813 <title>Arguments</title> 4814 <variablelist> 4815 <varlistentry> 4816 <term><parameter>runtime</parameter></term> 4817 <listitem> 4818 <para> 4819 PCM runtime instance 4820 </para> 4821 </listitem> 4822 </varlistentry> 4823 <varlistentry> 4824 <term><parameter>size</parameter></term> 4825 <listitem> 4826 <para> 4827 size in frames 4828 </para> 4829 </listitem> 4830 </varlistentry> 4831 </variablelist> 4832</refsect1> 4833</refentry> 4834 4835<refentry id="API-frame-aligned"> 4836<refentryinfo> 4837 <title>LINUX</title> 4838 <productname>Kernel Hackers Manual</productname> 4839 <date>July 2017</date> 4840</refentryinfo> 4841<refmeta> 4842 <refentrytitle><phrase>frame_aligned</phrase></refentrytitle> 4843 <manvolnum>9</manvolnum> 4844 <refmiscinfo class="version">4.4.14</refmiscinfo> 4845</refmeta> 4846<refnamediv> 4847 <refname>frame_aligned</refname> 4848 <refpurpose> 4849 Check whether the byte size is aligned to frames 4850 </refpurpose> 4851</refnamediv> 4852<refsynopsisdiv> 4853 <title>Synopsis</title> 4854 <funcsynopsis><funcprototype> 4855 <funcdef>int <function>frame_aligned </function></funcdef> 4856 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 4857 <paramdef>ssize_t <parameter>bytes</parameter></paramdef> 4858 </funcprototype></funcsynopsis> 4859</refsynopsisdiv> 4860<refsect1> 4861 <title>Arguments</title> 4862 <variablelist> 4863 <varlistentry> 4864 <term><parameter>runtime</parameter></term> 4865 <listitem> 4866 <para> 4867 PCM runtime instance 4868 </para> 4869 </listitem> 4870 </varlistentry> 4871 <varlistentry> 4872 <term><parameter>bytes</parameter></term> 4873 <listitem> 4874 <para> 4875 size in bytes 4876 </para> 4877 </listitem> 4878 </varlistentry> 4879 </variablelist> 4880</refsect1> 4881</refentry> 4882 4883<refentry id="API-snd-pcm-lib-buffer-bytes"> 4884<refentryinfo> 4885 <title>LINUX</title> 4886 <productname>Kernel Hackers Manual</productname> 4887 <date>July 2017</date> 4888</refentryinfo> 4889<refmeta> 4890 <refentrytitle><phrase>snd_pcm_lib_buffer_bytes</phrase></refentrytitle> 4891 <manvolnum>9</manvolnum> 4892 <refmiscinfo class="version">4.4.14</refmiscinfo> 4893</refmeta> 4894<refnamediv> 4895 <refname>snd_pcm_lib_buffer_bytes</refname> 4896 <refpurpose> 4897 Get the buffer size of the current PCM in bytes 4898 </refpurpose> 4899</refnamediv> 4900<refsynopsisdiv> 4901 <title>Synopsis</title> 4902 <funcsynopsis><funcprototype> 4903 <funcdef>size_t <function>snd_pcm_lib_buffer_bytes </function></funcdef> 4904 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4905 </funcprototype></funcsynopsis> 4906</refsynopsisdiv> 4907<refsect1> 4908 <title>Arguments</title> 4909 <variablelist> 4910 <varlistentry> 4911 <term><parameter>substream</parameter></term> 4912 <listitem> 4913 <para> 4914 PCM substream 4915 </para> 4916 </listitem> 4917 </varlistentry> 4918 </variablelist> 4919</refsect1> 4920</refentry> 4921 4922<refentry id="API-snd-pcm-lib-period-bytes"> 4923<refentryinfo> 4924 <title>LINUX</title> 4925 <productname>Kernel Hackers Manual</productname> 4926 <date>July 2017</date> 4927</refentryinfo> 4928<refmeta> 4929 <refentrytitle><phrase>snd_pcm_lib_period_bytes</phrase></refentrytitle> 4930 <manvolnum>9</manvolnum> 4931 <refmiscinfo class="version">4.4.14</refmiscinfo> 4932</refmeta> 4933<refnamediv> 4934 <refname>snd_pcm_lib_period_bytes</refname> 4935 <refpurpose> 4936 Get the period size of the current PCM in bytes 4937 </refpurpose> 4938</refnamediv> 4939<refsynopsisdiv> 4940 <title>Synopsis</title> 4941 <funcsynopsis><funcprototype> 4942 <funcdef>size_t <function>snd_pcm_lib_period_bytes </function></funcdef> 4943 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 4944 </funcprototype></funcsynopsis> 4945</refsynopsisdiv> 4946<refsect1> 4947 <title>Arguments</title> 4948 <variablelist> 4949 <varlistentry> 4950 <term><parameter>substream</parameter></term> 4951 <listitem> 4952 <para> 4953 PCM substream 4954 </para> 4955 </listitem> 4956 </varlistentry> 4957 </variablelist> 4958</refsect1> 4959</refentry> 4960 4961<refentry id="API-snd-pcm-playback-avail"> 4962<refentryinfo> 4963 <title>LINUX</title> 4964 <productname>Kernel Hackers Manual</productname> 4965 <date>July 2017</date> 4966</refentryinfo> 4967<refmeta> 4968 <refentrytitle><phrase>snd_pcm_playback_avail</phrase></refentrytitle> 4969 <manvolnum>9</manvolnum> 4970 <refmiscinfo class="version">4.4.14</refmiscinfo> 4971</refmeta> 4972<refnamediv> 4973 <refname>snd_pcm_playback_avail</refname> 4974 <refpurpose> 4975 Get the available (writable) space for playback 4976 </refpurpose> 4977</refnamediv> 4978<refsynopsisdiv> 4979 <title>Synopsis</title> 4980 <funcsynopsis><funcprototype> 4981 <funcdef>snd_pcm_uframes_t <function>snd_pcm_playback_avail </function></funcdef> 4982 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 4983 </funcprototype></funcsynopsis> 4984</refsynopsisdiv> 4985<refsect1> 4986 <title>Arguments</title> 4987 <variablelist> 4988 <varlistentry> 4989 <term><parameter>runtime</parameter></term> 4990 <listitem> 4991 <para> 4992 PCM runtime instance 4993 </para> 4994 </listitem> 4995 </varlistentry> 4996 </variablelist> 4997</refsect1> 4998<refsect1> 4999<title>Description</title> 5000<para> 5001 Result is between 0 ... (boundary - 1) 5002</para> 5003</refsect1> 5004</refentry> 5005 5006<refentry id="API-snd-pcm-capture-avail"> 5007<refentryinfo> 5008 <title>LINUX</title> 5009 <productname>Kernel Hackers Manual</productname> 5010 <date>July 2017</date> 5011</refentryinfo> 5012<refmeta> 5013 <refentrytitle><phrase>snd_pcm_capture_avail</phrase></refentrytitle> 5014 <manvolnum>9</manvolnum> 5015 <refmiscinfo class="version">4.4.14</refmiscinfo> 5016</refmeta> 5017<refnamediv> 5018 <refname>snd_pcm_capture_avail</refname> 5019 <refpurpose> 5020 Get the available (readable) space for capture 5021 </refpurpose> 5022</refnamediv> 5023<refsynopsisdiv> 5024 <title>Synopsis</title> 5025 <funcsynopsis><funcprototype> 5026 <funcdef>snd_pcm_uframes_t <function>snd_pcm_capture_avail </function></funcdef> 5027 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 5028 </funcprototype></funcsynopsis> 5029</refsynopsisdiv> 5030<refsect1> 5031 <title>Arguments</title> 5032 <variablelist> 5033 <varlistentry> 5034 <term><parameter>runtime</parameter></term> 5035 <listitem> 5036 <para> 5037 PCM runtime instance 5038 </para> 5039 </listitem> 5040 </varlistentry> 5041 </variablelist> 5042</refsect1> 5043<refsect1> 5044<title>Description</title> 5045<para> 5046 Result is between 0 ... (boundary - 1) 5047</para> 5048</refsect1> 5049</refentry> 5050 5051<refentry id="API-snd-pcm-playback-hw-avail"> 5052<refentryinfo> 5053 <title>LINUX</title> 5054 <productname>Kernel Hackers Manual</productname> 5055 <date>July 2017</date> 5056</refentryinfo> 5057<refmeta> 5058 <refentrytitle><phrase>snd_pcm_playback_hw_avail</phrase></refentrytitle> 5059 <manvolnum>9</manvolnum> 5060 <refmiscinfo class="version">4.4.14</refmiscinfo> 5061</refmeta> 5062<refnamediv> 5063 <refname>snd_pcm_playback_hw_avail</refname> 5064 <refpurpose> 5065 Get the queued space for playback 5066 </refpurpose> 5067</refnamediv> 5068<refsynopsisdiv> 5069 <title>Synopsis</title> 5070 <funcsynopsis><funcprototype> 5071 <funcdef>snd_pcm_sframes_t <function>snd_pcm_playback_hw_avail </function></funcdef> 5072 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 5073 </funcprototype></funcsynopsis> 5074</refsynopsisdiv> 5075<refsect1> 5076 <title>Arguments</title> 5077 <variablelist> 5078 <varlistentry> 5079 <term><parameter>runtime</parameter></term> 5080 <listitem> 5081 <para> 5082 PCM runtime instance 5083 </para> 5084 </listitem> 5085 </varlistentry> 5086 </variablelist> 5087</refsect1> 5088</refentry> 5089 5090<refentry id="API-snd-pcm-capture-hw-avail"> 5091<refentryinfo> 5092 <title>LINUX</title> 5093 <productname>Kernel Hackers Manual</productname> 5094 <date>July 2017</date> 5095</refentryinfo> 5096<refmeta> 5097 <refentrytitle><phrase>snd_pcm_capture_hw_avail</phrase></refentrytitle> 5098 <manvolnum>9</manvolnum> 5099 <refmiscinfo class="version">4.4.14</refmiscinfo> 5100</refmeta> 5101<refnamediv> 5102 <refname>snd_pcm_capture_hw_avail</refname> 5103 <refpurpose> 5104 Get the free space for capture 5105 </refpurpose> 5106</refnamediv> 5107<refsynopsisdiv> 5108 <title>Synopsis</title> 5109 <funcsynopsis><funcprototype> 5110 <funcdef>snd_pcm_sframes_t <function>snd_pcm_capture_hw_avail </function></funcdef> 5111 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 5112 </funcprototype></funcsynopsis> 5113</refsynopsisdiv> 5114<refsect1> 5115 <title>Arguments</title> 5116 <variablelist> 5117 <varlistentry> 5118 <term><parameter>runtime</parameter></term> 5119 <listitem> 5120 <para> 5121 PCM runtime instance 5122 </para> 5123 </listitem> 5124 </varlistentry> 5125 </variablelist> 5126</refsect1> 5127</refentry> 5128 5129<refentry id="API-snd-pcm-playback-ready"> 5130<refentryinfo> 5131 <title>LINUX</title> 5132 <productname>Kernel Hackers Manual</productname> 5133 <date>July 2017</date> 5134</refentryinfo> 5135<refmeta> 5136 <refentrytitle><phrase>snd_pcm_playback_ready</phrase></refentrytitle> 5137 <manvolnum>9</manvolnum> 5138 <refmiscinfo class="version">4.4.14</refmiscinfo> 5139</refmeta> 5140<refnamediv> 5141 <refname>snd_pcm_playback_ready</refname> 5142 <refpurpose> 5143 check whether the playback buffer is available 5144 </refpurpose> 5145</refnamediv> 5146<refsynopsisdiv> 5147 <title>Synopsis</title> 5148 <funcsynopsis><funcprototype> 5149 <funcdef>int <function>snd_pcm_playback_ready </function></funcdef> 5150 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5151 </funcprototype></funcsynopsis> 5152</refsynopsisdiv> 5153<refsect1> 5154 <title>Arguments</title> 5155 <variablelist> 5156 <varlistentry> 5157 <term><parameter>substream</parameter></term> 5158 <listitem> 5159 <para> 5160 the pcm substream instance 5161 </para> 5162 </listitem> 5163 </varlistentry> 5164 </variablelist> 5165</refsect1> 5166<refsect1> 5167<title>Description</title> 5168<para> 5169 Checks whether enough free space is available on the playback buffer. 5170</para> 5171</refsect1> 5172<refsect1> 5173<title>Return</title> 5174<para> 5175 Non-zero if available, or zero if not. 5176</para> 5177</refsect1> 5178</refentry> 5179 5180<refentry id="API-snd-pcm-capture-ready"> 5181<refentryinfo> 5182 <title>LINUX</title> 5183 <productname>Kernel Hackers Manual</productname> 5184 <date>July 2017</date> 5185</refentryinfo> 5186<refmeta> 5187 <refentrytitle><phrase>snd_pcm_capture_ready</phrase></refentrytitle> 5188 <manvolnum>9</manvolnum> 5189 <refmiscinfo class="version">4.4.14</refmiscinfo> 5190</refmeta> 5191<refnamediv> 5192 <refname>snd_pcm_capture_ready</refname> 5193 <refpurpose> 5194 check whether the capture buffer is available 5195 </refpurpose> 5196</refnamediv> 5197<refsynopsisdiv> 5198 <title>Synopsis</title> 5199 <funcsynopsis><funcprototype> 5200 <funcdef>int <function>snd_pcm_capture_ready </function></funcdef> 5201 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5202 </funcprototype></funcsynopsis> 5203</refsynopsisdiv> 5204<refsect1> 5205 <title>Arguments</title> 5206 <variablelist> 5207 <varlistentry> 5208 <term><parameter>substream</parameter></term> 5209 <listitem> 5210 <para> 5211 the pcm substream instance 5212 </para> 5213 </listitem> 5214 </varlistentry> 5215 </variablelist> 5216</refsect1> 5217<refsect1> 5218<title>Description</title> 5219<para> 5220 Checks whether enough capture data is available on the capture buffer. 5221</para> 5222</refsect1> 5223<refsect1> 5224<title>Return</title> 5225<para> 5226 Non-zero if available, or zero if not. 5227</para> 5228</refsect1> 5229</refentry> 5230 5231<refentry id="API-snd-pcm-playback-data"> 5232<refentryinfo> 5233 <title>LINUX</title> 5234 <productname>Kernel Hackers Manual</productname> 5235 <date>July 2017</date> 5236</refentryinfo> 5237<refmeta> 5238 <refentrytitle><phrase>snd_pcm_playback_data</phrase></refentrytitle> 5239 <manvolnum>9</manvolnum> 5240 <refmiscinfo class="version">4.4.14</refmiscinfo> 5241</refmeta> 5242<refnamediv> 5243 <refname>snd_pcm_playback_data</refname> 5244 <refpurpose> 5245 check whether any data exists on the playback buffer 5246 </refpurpose> 5247</refnamediv> 5248<refsynopsisdiv> 5249 <title>Synopsis</title> 5250 <funcsynopsis><funcprototype> 5251 <funcdef>int <function>snd_pcm_playback_data </function></funcdef> 5252 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5253 </funcprototype></funcsynopsis> 5254</refsynopsisdiv> 5255<refsect1> 5256 <title>Arguments</title> 5257 <variablelist> 5258 <varlistentry> 5259 <term><parameter>substream</parameter></term> 5260 <listitem> 5261 <para> 5262 the pcm substream instance 5263 </para> 5264 </listitem> 5265 </varlistentry> 5266 </variablelist> 5267</refsect1> 5268<refsect1> 5269<title>Description</title> 5270<para> 5271 Checks whether any data exists on the playback buffer. 5272</para> 5273</refsect1> 5274<refsect1> 5275<title>Return</title> 5276<para> 5277 Non-zero if any data exists, or zero if not. If stop_threshold 5278 is bigger or equal to boundary, then this function returns always non-zero. 5279</para> 5280</refsect1> 5281</refentry> 5282 5283<refentry id="API-snd-pcm-playback-empty"> 5284<refentryinfo> 5285 <title>LINUX</title> 5286 <productname>Kernel Hackers Manual</productname> 5287 <date>July 2017</date> 5288</refentryinfo> 5289<refmeta> 5290 <refentrytitle><phrase>snd_pcm_playback_empty</phrase></refentrytitle> 5291 <manvolnum>9</manvolnum> 5292 <refmiscinfo class="version">4.4.14</refmiscinfo> 5293</refmeta> 5294<refnamediv> 5295 <refname>snd_pcm_playback_empty</refname> 5296 <refpurpose> 5297 check whether the playback buffer is empty 5298 </refpurpose> 5299</refnamediv> 5300<refsynopsisdiv> 5301 <title>Synopsis</title> 5302 <funcsynopsis><funcprototype> 5303 <funcdef>int <function>snd_pcm_playback_empty </function></funcdef> 5304 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5305 </funcprototype></funcsynopsis> 5306</refsynopsisdiv> 5307<refsect1> 5308 <title>Arguments</title> 5309 <variablelist> 5310 <varlistentry> 5311 <term><parameter>substream</parameter></term> 5312 <listitem> 5313 <para> 5314 the pcm substream instance 5315 </para> 5316 </listitem> 5317 </varlistentry> 5318 </variablelist> 5319</refsect1> 5320<refsect1> 5321<title>Description</title> 5322<para> 5323 Checks whether the playback buffer is empty. 5324</para> 5325</refsect1> 5326<refsect1> 5327<title>Return</title> 5328<para> 5329 Non-zero if empty, or zero if not. 5330</para> 5331</refsect1> 5332</refentry> 5333 5334<refentry id="API-snd-pcm-capture-empty"> 5335<refentryinfo> 5336 <title>LINUX</title> 5337 <productname>Kernel Hackers Manual</productname> 5338 <date>July 2017</date> 5339</refentryinfo> 5340<refmeta> 5341 <refentrytitle><phrase>snd_pcm_capture_empty</phrase></refentrytitle> 5342 <manvolnum>9</manvolnum> 5343 <refmiscinfo class="version">4.4.14</refmiscinfo> 5344</refmeta> 5345<refnamediv> 5346 <refname>snd_pcm_capture_empty</refname> 5347 <refpurpose> 5348 check whether the capture buffer is empty 5349 </refpurpose> 5350</refnamediv> 5351<refsynopsisdiv> 5352 <title>Synopsis</title> 5353 <funcsynopsis><funcprototype> 5354 <funcdef>int <function>snd_pcm_capture_empty </function></funcdef> 5355 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5356 </funcprototype></funcsynopsis> 5357</refsynopsisdiv> 5358<refsect1> 5359 <title>Arguments</title> 5360 <variablelist> 5361 <varlistentry> 5362 <term><parameter>substream</parameter></term> 5363 <listitem> 5364 <para> 5365 the pcm substream instance 5366 </para> 5367 </listitem> 5368 </varlistentry> 5369 </variablelist> 5370</refsect1> 5371<refsect1> 5372<title>Description</title> 5373<para> 5374 Checks whether the capture buffer is empty. 5375</para> 5376</refsect1> 5377<refsect1> 5378<title>Return</title> 5379<para> 5380 Non-zero if empty, or zero if not. 5381</para> 5382</refsect1> 5383</refentry> 5384 5385<refentry id="API-snd-pcm-trigger-done"> 5386<refentryinfo> 5387 <title>LINUX</title> 5388 <productname>Kernel Hackers Manual</productname> 5389 <date>July 2017</date> 5390</refentryinfo> 5391<refmeta> 5392 <refentrytitle><phrase>snd_pcm_trigger_done</phrase></refentrytitle> 5393 <manvolnum>9</manvolnum> 5394 <refmiscinfo class="version">4.4.14</refmiscinfo> 5395</refmeta> 5396<refnamediv> 5397 <refname>snd_pcm_trigger_done</refname> 5398 <refpurpose> 5399 Mark the master substream 5400 </refpurpose> 5401</refnamediv> 5402<refsynopsisdiv> 5403 <title>Synopsis</title> 5404 <funcsynopsis><funcprototype> 5405 <funcdef>void <function>snd_pcm_trigger_done </function></funcdef> 5406 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5407 <paramdef>struct snd_pcm_substream * <parameter>master</parameter></paramdef> 5408 </funcprototype></funcsynopsis> 5409</refsynopsisdiv> 5410<refsect1> 5411 <title>Arguments</title> 5412 <variablelist> 5413 <varlistentry> 5414 <term><parameter>substream</parameter></term> 5415 <listitem> 5416 <para> 5417 the pcm substream instance 5418 </para> 5419 </listitem> 5420 </varlistentry> 5421 <varlistentry> 5422 <term><parameter>master</parameter></term> 5423 <listitem> 5424 <para> 5425 the linked master substream 5426 </para> 5427 </listitem> 5428 </varlistentry> 5429 </variablelist> 5430</refsect1> 5431<refsect1> 5432<title>Description</title> 5433<para> 5434 When multiple substreams of the same card are linked and the hardware 5435 supports the single-shot operation, the driver calls this in the loop 5436 in <function>snd_pcm_group_for_each_entry</function> for marking the substream as <quote>done</quote>. 5437 Then most of trigger operations are performed only to the given master 5438 substream. 5439 </para><para> 5440 5441 The trigger_master mark is cleared at timestamp updates at the end 5442 of trigger operations. 5443</para> 5444</refsect1> 5445</refentry> 5446 5447<refentry id="API-params-channels"> 5448<refentryinfo> 5449 <title>LINUX</title> 5450 <productname>Kernel Hackers Manual</productname> 5451 <date>July 2017</date> 5452</refentryinfo> 5453<refmeta> 5454 <refentrytitle><phrase>params_channels</phrase></refentrytitle> 5455 <manvolnum>9</manvolnum> 5456 <refmiscinfo class="version">4.4.14</refmiscinfo> 5457</refmeta> 5458<refnamediv> 5459 <refname>params_channels</refname> 5460 <refpurpose> 5461 Get the number of channels from the hw params 5462 </refpurpose> 5463</refnamediv> 5464<refsynopsisdiv> 5465 <title>Synopsis</title> 5466 <funcsynopsis><funcprototype> 5467 <funcdef>unsigned int <function>params_channels </function></funcdef> 5468 <paramdef>const struct snd_pcm_hw_params * <parameter>p</parameter></paramdef> 5469 </funcprototype></funcsynopsis> 5470</refsynopsisdiv> 5471<refsect1> 5472 <title>Arguments</title> 5473 <variablelist> 5474 <varlistentry> 5475 <term><parameter>p</parameter></term> 5476 <listitem> 5477 <para> 5478 hw params 5479 </para> 5480 </listitem> 5481 </varlistentry> 5482 </variablelist> 5483</refsect1> 5484</refentry> 5485 5486<refentry id="API-params-rate"> 5487<refentryinfo> 5488 <title>LINUX</title> 5489 <productname>Kernel Hackers Manual</productname> 5490 <date>July 2017</date> 5491</refentryinfo> 5492<refmeta> 5493 <refentrytitle><phrase>params_rate</phrase></refentrytitle> 5494 <manvolnum>9</manvolnum> 5495 <refmiscinfo class="version">4.4.14</refmiscinfo> 5496</refmeta> 5497<refnamediv> 5498 <refname>params_rate</refname> 5499 <refpurpose> 5500 Get the sample rate from the hw params 5501 </refpurpose> 5502</refnamediv> 5503<refsynopsisdiv> 5504 <title>Synopsis</title> 5505 <funcsynopsis><funcprototype> 5506 <funcdef>unsigned int <function>params_rate </function></funcdef> 5507 <paramdef>const struct snd_pcm_hw_params * <parameter>p</parameter></paramdef> 5508 </funcprototype></funcsynopsis> 5509</refsynopsisdiv> 5510<refsect1> 5511 <title>Arguments</title> 5512 <variablelist> 5513 <varlistentry> 5514 <term><parameter>p</parameter></term> 5515 <listitem> 5516 <para> 5517 hw params 5518 </para> 5519 </listitem> 5520 </varlistentry> 5521 </variablelist> 5522</refsect1> 5523</refentry> 5524 5525<refentry id="API-params-period-size"> 5526<refentryinfo> 5527 <title>LINUX</title> 5528 <productname>Kernel Hackers Manual</productname> 5529 <date>July 2017</date> 5530</refentryinfo> 5531<refmeta> 5532 <refentrytitle><phrase>params_period_size</phrase></refentrytitle> 5533 <manvolnum>9</manvolnum> 5534 <refmiscinfo class="version">4.4.14</refmiscinfo> 5535</refmeta> 5536<refnamediv> 5537 <refname>params_period_size</refname> 5538 <refpurpose> 5539 Get the period size (in frames) from the hw params 5540 </refpurpose> 5541</refnamediv> 5542<refsynopsisdiv> 5543 <title>Synopsis</title> 5544 <funcsynopsis><funcprototype> 5545 <funcdef>unsigned int <function>params_period_size </function></funcdef> 5546 <paramdef>const struct snd_pcm_hw_params * <parameter>p</parameter></paramdef> 5547 </funcprototype></funcsynopsis> 5548</refsynopsisdiv> 5549<refsect1> 5550 <title>Arguments</title> 5551 <variablelist> 5552 <varlistentry> 5553 <term><parameter>p</parameter></term> 5554 <listitem> 5555 <para> 5556 hw params 5557 </para> 5558 </listitem> 5559 </varlistentry> 5560 </variablelist> 5561</refsect1> 5562</refentry> 5563 5564<refentry id="API-params-periods"> 5565<refentryinfo> 5566 <title>LINUX</title> 5567 <productname>Kernel Hackers Manual</productname> 5568 <date>July 2017</date> 5569</refentryinfo> 5570<refmeta> 5571 <refentrytitle><phrase>params_periods</phrase></refentrytitle> 5572 <manvolnum>9</manvolnum> 5573 <refmiscinfo class="version">4.4.14</refmiscinfo> 5574</refmeta> 5575<refnamediv> 5576 <refname>params_periods</refname> 5577 <refpurpose> 5578 Get the number of periods from the hw params 5579 </refpurpose> 5580</refnamediv> 5581<refsynopsisdiv> 5582 <title>Synopsis</title> 5583 <funcsynopsis><funcprototype> 5584 <funcdef>unsigned int <function>params_periods </function></funcdef> 5585 <paramdef>const struct snd_pcm_hw_params * <parameter>p</parameter></paramdef> 5586 </funcprototype></funcsynopsis> 5587</refsynopsisdiv> 5588<refsect1> 5589 <title>Arguments</title> 5590 <variablelist> 5591 <varlistentry> 5592 <term><parameter>p</parameter></term> 5593 <listitem> 5594 <para> 5595 hw params 5596 </para> 5597 </listitem> 5598 </varlistentry> 5599 </variablelist> 5600</refsect1> 5601</refentry> 5602 5603<refentry id="API-params-buffer-size"> 5604<refentryinfo> 5605 <title>LINUX</title> 5606 <productname>Kernel Hackers Manual</productname> 5607 <date>July 2017</date> 5608</refentryinfo> 5609<refmeta> 5610 <refentrytitle><phrase>params_buffer_size</phrase></refentrytitle> 5611 <manvolnum>9</manvolnum> 5612 <refmiscinfo class="version">4.4.14</refmiscinfo> 5613</refmeta> 5614<refnamediv> 5615 <refname>params_buffer_size</refname> 5616 <refpurpose> 5617 Get the buffer size (in frames) from the hw params 5618 </refpurpose> 5619</refnamediv> 5620<refsynopsisdiv> 5621 <title>Synopsis</title> 5622 <funcsynopsis><funcprototype> 5623 <funcdef>unsigned int <function>params_buffer_size </function></funcdef> 5624 <paramdef>const struct snd_pcm_hw_params * <parameter>p</parameter></paramdef> 5625 </funcprototype></funcsynopsis> 5626</refsynopsisdiv> 5627<refsect1> 5628 <title>Arguments</title> 5629 <variablelist> 5630 <varlistentry> 5631 <term><parameter>p</parameter></term> 5632 <listitem> 5633 <para> 5634 hw params 5635 </para> 5636 </listitem> 5637 </varlistentry> 5638 </variablelist> 5639</refsect1> 5640</refentry> 5641 5642<refentry id="API-params-buffer-bytes"> 5643<refentryinfo> 5644 <title>LINUX</title> 5645 <productname>Kernel Hackers Manual</productname> 5646 <date>July 2017</date> 5647</refentryinfo> 5648<refmeta> 5649 <refentrytitle><phrase>params_buffer_bytes</phrase></refentrytitle> 5650 <manvolnum>9</manvolnum> 5651 <refmiscinfo class="version">4.4.14</refmiscinfo> 5652</refmeta> 5653<refnamediv> 5654 <refname>params_buffer_bytes</refname> 5655 <refpurpose> 5656 Get the buffer size (in bytes) from the hw params 5657 </refpurpose> 5658</refnamediv> 5659<refsynopsisdiv> 5660 <title>Synopsis</title> 5661 <funcsynopsis><funcprototype> 5662 <funcdef>unsigned int <function>params_buffer_bytes </function></funcdef> 5663 <paramdef>const struct snd_pcm_hw_params * <parameter>p</parameter></paramdef> 5664 </funcprototype></funcsynopsis> 5665</refsynopsisdiv> 5666<refsect1> 5667 <title>Arguments</title> 5668 <variablelist> 5669 <varlistentry> 5670 <term><parameter>p</parameter></term> 5671 <listitem> 5672 <para> 5673 hw params 5674 </para> 5675 </listitem> 5676 </varlistentry> 5677 </variablelist> 5678</refsect1> 5679</refentry> 5680 5681<refentry id="API-snd-pcm-hw-constraint-single"> 5682<refentryinfo> 5683 <title>LINUX</title> 5684 <productname>Kernel Hackers Manual</productname> 5685 <date>July 2017</date> 5686</refentryinfo> 5687<refmeta> 5688 <refentrytitle><phrase>snd_pcm_hw_constraint_single</phrase></refentrytitle> 5689 <manvolnum>9</manvolnum> 5690 <refmiscinfo class="version">4.4.14</refmiscinfo> 5691</refmeta> 5692<refnamediv> 5693 <refname>snd_pcm_hw_constraint_single</refname> 5694 <refpurpose> 5695 Constrain parameter to a single value 5696 </refpurpose> 5697</refnamediv> 5698<refsynopsisdiv> 5699 <title>Synopsis</title> 5700 <funcsynopsis><funcprototype> 5701 <funcdef>int <function>snd_pcm_hw_constraint_single </function></funcdef> 5702 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 5703 <paramdef>snd_pcm_hw_param_t <parameter>var</parameter></paramdef> 5704 <paramdef>unsigned int <parameter>val</parameter></paramdef> 5705 </funcprototype></funcsynopsis> 5706</refsynopsisdiv> 5707<refsect1> 5708 <title>Arguments</title> 5709 <variablelist> 5710 <varlistentry> 5711 <term><parameter>runtime</parameter></term> 5712 <listitem> 5713 <para> 5714 PCM runtime instance 5715 </para> 5716 </listitem> 5717 </varlistentry> 5718 <varlistentry> 5719 <term><parameter>var</parameter></term> 5720 <listitem> 5721 <para> 5722 The hw_params variable to constrain 5723 </para> 5724 </listitem> 5725 </varlistentry> 5726 <varlistentry> 5727 <term><parameter>val</parameter></term> 5728 <listitem> 5729 <para> 5730 The value to constrain to 5731 </para> 5732 </listitem> 5733 </varlistentry> 5734 </variablelist> 5735</refsect1> 5736<refsect1> 5737<title>Return</title> 5738<para> 5739 Positive if the value is changed, zero if it's not changed, or a 5740 negative error code. 5741</para> 5742</refsect1> 5743</refentry> 5744 5745<refentry id="API-snd-pcm-format-cpu-endian"> 5746<refentryinfo> 5747 <title>LINUX</title> 5748 <productname>Kernel Hackers Manual</productname> 5749 <date>July 2017</date> 5750</refentryinfo> 5751<refmeta> 5752 <refentrytitle><phrase>snd_pcm_format_cpu_endian</phrase></refentrytitle> 5753 <manvolnum>9</manvolnum> 5754 <refmiscinfo class="version">4.4.14</refmiscinfo> 5755</refmeta> 5756<refnamediv> 5757 <refname>snd_pcm_format_cpu_endian</refname> 5758 <refpurpose> 5759 Check the PCM format is CPU-endian 5760 </refpurpose> 5761</refnamediv> 5762<refsynopsisdiv> 5763 <title>Synopsis</title> 5764 <funcsynopsis><funcprototype> 5765 <funcdef>int <function>snd_pcm_format_cpu_endian </function></funcdef> 5766 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 5767 </funcprototype></funcsynopsis> 5768</refsynopsisdiv> 5769<refsect1> 5770 <title>Arguments</title> 5771 <variablelist> 5772 <varlistentry> 5773 <term><parameter>format</parameter></term> 5774 <listitem> 5775 <para> 5776 the format to check 5777 </para> 5778 </listitem> 5779 </varlistentry> 5780 </variablelist> 5781</refsect1> 5782<refsect1> 5783<title>Return</title> 5784<para> 5785 1 if the given PCM format is CPU-endian, 0 if 5786 opposite, or a negative error code if endian not specified. 5787</para> 5788</refsect1> 5789</refentry> 5790 5791<refentry id="API-snd-pcm-set-runtime-buffer"> 5792<refentryinfo> 5793 <title>LINUX</title> 5794 <productname>Kernel Hackers Manual</productname> 5795 <date>July 2017</date> 5796</refentryinfo> 5797<refmeta> 5798 <refentrytitle><phrase>snd_pcm_set_runtime_buffer</phrase></refentrytitle> 5799 <manvolnum>9</manvolnum> 5800 <refmiscinfo class="version">4.4.14</refmiscinfo> 5801</refmeta> 5802<refnamediv> 5803 <refname>snd_pcm_set_runtime_buffer</refname> 5804 <refpurpose> 5805 Set the PCM runtime buffer 5806 </refpurpose> 5807</refnamediv> 5808<refsynopsisdiv> 5809 <title>Synopsis</title> 5810 <funcsynopsis><funcprototype> 5811 <funcdef>void <function>snd_pcm_set_runtime_buffer </function></funcdef> 5812 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5813 <paramdef>struct snd_dma_buffer * <parameter>bufp</parameter></paramdef> 5814 </funcprototype></funcsynopsis> 5815</refsynopsisdiv> 5816<refsect1> 5817 <title>Arguments</title> 5818 <variablelist> 5819 <varlistentry> 5820 <term><parameter>substream</parameter></term> 5821 <listitem> 5822 <para> 5823 PCM substream to set 5824 </para> 5825 </listitem> 5826 </varlistentry> 5827 <varlistentry> 5828 <term><parameter>bufp</parameter></term> 5829 <listitem> 5830 <para> 5831 the buffer information, NULL to clear 5832 </para> 5833 </listitem> 5834 </varlistentry> 5835 </variablelist> 5836</refsect1> 5837<refsect1> 5838<title>Description</title> 5839<para> 5840 Copy the buffer information to runtime->dma_buffer when <parameter>bufp</parameter> is non-NULL. 5841 Otherwise it clears the current buffer information. 5842</para> 5843</refsect1> 5844</refentry> 5845 5846<refentry id="API-snd-pcm-gettime"> 5847<refentryinfo> 5848 <title>LINUX</title> 5849 <productname>Kernel Hackers Manual</productname> 5850 <date>July 2017</date> 5851</refentryinfo> 5852<refmeta> 5853 <refentrytitle><phrase>snd_pcm_gettime</phrase></refentrytitle> 5854 <manvolnum>9</manvolnum> 5855 <refmiscinfo class="version">4.4.14</refmiscinfo> 5856</refmeta> 5857<refnamediv> 5858 <refname>snd_pcm_gettime</refname> 5859 <refpurpose> 5860 Fill the timespec depending on the timestamp mode 5861 </refpurpose> 5862</refnamediv> 5863<refsynopsisdiv> 5864 <title>Synopsis</title> 5865 <funcsynopsis><funcprototype> 5866 <funcdef>void <function>snd_pcm_gettime </function></funcdef> 5867 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 5868 <paramdef>struct timespec * <parameter>tv</parameter></paramdef> 5869 </funcprototype></funcsynopsis> 5870</refsynopsisdiv> 5871<refsect1> 5872 <title>Arguments</title> 5873 <variablelist> 5874 <varlistentry> 5875 <term><parameter>runtime</parameter></term> 5876 <listitem> 5877 <para> 5878 PCM runtime instance 5879 </para> 5880 </listitem> 5881 </varlistentry> 5882 <varlistentry> 5883 <term><parameter>tv</parameter></term> 5884 <listitem> 5885 <para> 5886 timespec to fill 5887 </para> 5888 </listitem> 5889 </varlistentry> 5890 </variablelist> 5891</refsect1> 5892</refentry> 5893 5894<refentry id="API-snd-pcm-lib-alloc-vmalloc-buffer"> 5895<refentryinfo> 5896 <title>LINUX</title> 5897 <productname>Kernel Hackers Manual</productname> 5898 <date>July 2017</date> 5899</refentryinfo> 5900<refmeta> 5901 <refentrytitle><phrase>snd_pcm_lib_alloc_vmalloc_buffer</phrase></refentrytitle> 5902 <manvolnum>9</manvolnum> 5903 <refmiscinfo class="version">4.4.14</refmiscinfo> 5904</refmeta> 5905<refnamediv> 5906 <refname>snd_pcm_lib_alloc_vmalloc_buffer</refname> 5907 <refpurpose> 5908 allocate virtual DMA buffer 5909 </refpurpose> 5910</refnamediv> 5911<refsynopsisdiv> 5912 <title>Synopsis</title> 5913 <funcsynopsis><funcprototype> 5914 <funcdef>int <function>snd_pcm_lib_alloc_vmalloc_buffer </function></funcdef> 5915 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5916 <paramdef>size_t <parameter>size</parameter></paramdef> 5917 </funcprototype></funcsynopsis> 5918</refsynopsisdiv> 5919<refsect1> 5920 <title>Arguments</title> 5921 <variablelist> 5922 <varlistentry> 5923 <term><parameter>substream</parameter></term> 5924 <listitem> 5925 <para> 5926 the substream to allocate the buffer to 5927 </para> 5928 </listitem> 5929 </varlistentry> 5930 <varlistentry> 5931 <term><parameter>size</parameter></term> 5932 <listitem> 5933 <para> 5934 the requested buffer size, in bytes 5935 </para> 5936 </listitem> 5937 </varlistentry> 5938 </variablelist> 5939</refsect1> 5940<refsect1> 5941<title>Description</title> 5942<para> 5943 Allocates the PCM substream buffer using <function>vmalloc</function>, i.e., the memory is 5944 contiguous in kernel virtual space, but not in physical memory. Use this 5945 if the buffer is accessed by kernel code but not by device DMA. 5946</para> 5947</refsect1> 5948<refsect1> 5949<title>Return</title> 5950<para> 5951 1 if the buffer was changed, 0 if not changed, or a negative error 5952 code. 5953</para> 5954</refsect1> 5955</refentry> 5956 5957<refentry id="API-snd-pcm-lib-alloc-vmalloc-32-buffer"> 5958<refentryinfo> 5959 <title>LINUX</title> 5960 <productname>Kernel Hackers Manual</productname> 5961 <date>July 2017</date> 5962</refentryinfo> 5963<refmeta> 5964 <refentrytitle><phrase>snd_pcm_lib_alloc_vmalloc_32_buffer</phrase></refentrytitle> 5965 <manvolnum>9</manvolnum> 5966 <refmiscinfo class="version">4.4.14</refmiscinfo> 5967</refmeta> 5968<refnamediv> 5969 <refname>snd_pcm_lib_alloc_vmalloc_32_buffer</refname> 5970 <refpurpose> 5971 allocate 32-bit-addressable buffer 5972 </refpurpose> 5973</refnamediv> 5974<refsynopsisdiv> 5975 <title>Synopsis</title> 5976 <funcsynopsis><funcprototype> 5977 <funcdef>int <function>snd_pcm_lib_alloc_vmalloc_32_buffer </function></funcdef> 5978 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 5979 <paramdef>size_t <parameter>size</parameter></paramdef> 5980 </funcprototype></funcsynopsis> 5981</refsynopsisdiv> 5982<refsect1> 5983 <title>Arguments</title> 5984 <variablelist> 5985 <varlistentry> 5986 <term><parameter>substream</parameter></term> 5987 <listitem> 5988 <para> 5989 the substream to allocate the buffer to 5990 </para> 5991 </listitem> 5992 </varlistentry> 5993 <varlistentry> 5994 <term><parameter>size</parameter></term> 5995 <listitem> 5996 <para> 5997 the requested buffer size, in bytes 5998 </para> 5999 </listitem> 6000 </varlistentry> 6001 </variablelist> 6002</refsect1> 6003<refsect1> 6004<title>Description</title> 6005<para> 6006 This function works like <function>snd_pcm_lib_alloc_vmalloc_buffer</function>, but uses 6007 <function>vmalloc_32</function>, i.e., the pages are allocated from 32-bit-addressable memory. 6008</para> 6009</refsect1> 6010<refsect1> 6011<title>Return</title> 6012<para> 6013 1 if the buffer was changed, 0 if not changed, or a negative error 6014 code. 6015</para> 6016</refsect1> 6017</refentry> 6018 6019<refentry id="API-snd-pcm-sgbuf-get-addr"> 6020<refentryinfo> 6021 <title>LINUX</title> 6022 <productname>Kernel Hackers Manual</productname> 6023 <date>July 2017</date> 6024</refentryinfo> 6025<refmeta> 6026 <refentrytitle><phrase>snd_pcm_sgbuf_get_addr</phrase></refentrytitle> 6027 <manvolnum>9</manvolnum> 6028 <refmiscinfo class="version">4.4.14</refmiscinfo> 6029</refmeta> 6030<refnamediv> 6031 <refname>snd_pcm_sgbuf_get_addr</refname> 6032 <refpurpose> 6033 Get the DMA address at the corresponding offset 6034 </refpurpose> 6035</refnamediv> 6036<refsynopsisdiv> 6037 <title>Synopsis</title> 6038 <funcsynopsis><funcprototype> 6039 <funcdef>dma_addr_t <function>snd_pcm_sgbuf_get_addr </function></funcdef> 6040 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 6041 <paramdef>unsigned int <parameter>ofs</parameter></paramdef> 6042 </funcprototype></funcsynopsis> 6043</refsynopsisdiv> 6044<refsect1> 6045 <title>Arguments</title> 6046 <variablelist> 6047 <varlistentry> 6048 <term><parameter>substream</parameter></term> 6049 <listitem> 6050 <para> 6051 PCM substream 6052 </para> 6053 </listitem> 6054 </varlistentry> 6055 <varlistentry> 6056 <term><parameter>ofs</parameter></term> 6057 <listitem> 6058 <para> 6059 byte offset 6060 </para> 6061 </listitem> 6062 </varlistentry> 6063 </variablelist> 6064</refsect1> 6065</refentry> 6066 6067<refentry id="API-snd-pcm-sgbuf-get-ptr"> 6068<refentryinfo> 6069 <title>LINUX</title> 6070 <productname>Kernel Hackers Manual</productname> 6071 <date>July 2017</date> 6072</refentryinfo> 6073<refmeta> 6074 <refentrytitle><phrase>snd_pcm_sgbuf_get_ptr</phrase></refentrytitle> 6075 <manvolnum>9</manvolnum> 6076 <refmiscinfo class="version">4.4.14</refmiscinfo> 6077</refmeta> 6078<refnamediv> 6079 <refname>snd_pcm_sgbuf_get_ptr</refname> 6080 <refpurpose> 6081 Get the virtual address at the corresponding offset 6082 </refpurpose> 6083</refnamediv> 6084<refsynopsisdiv> 6085 <title>Synopsis</title> 6086 <funcsynopsis><funcprototype> 6087 <funcdef>void * <function>snd_pcm_sgbuf_get_ptr </function></funcdef> 6088 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 6089 <paramdef>unsigned int <parameter>ofs</parameter></paramdef> 6090 </funcprototype></funcsynopsis> 6091</refsynopsisdiv> 6092<refsect1> 6093 <title>Arguments</title> 6094 <variablelist> 6095 <varlistentry> 6096 <term><parameter>substream</parameter></term> 6097 <listitem> 6098 <para> 6099 PCM substream 6100 </para> 6101 </listitem> 6102 </varlistentry> 6103 <varlistentry> 6104 <term><parameter>ofs</parameter></term> 6105 <listitem> 6106 <para> 6107 byte offset 6108 </para> 6109 </listitem> 6110 </varlistentry> 6111 </variablelist> 6112</refsect1> 6113</refentry> 6114 6115<refentry id="API-snd-pcm-sgbuf-get-chunk-size"> 6116<refentryinfo> 6117 <title>LINUX</title> 6118 <productname>Kernel Hackers Manual</productname> 6119 <date>July 2017</date> 6120</refentryinfo> 6121<refmeta> 6122 <refentrytitle><phrase>snd_pcm_sgbuf_get_chunk_size</phrase></refentrytitle> 6123 <manvolnum>9</manvolnum> 6124 <refmiscinfo class="version">4.4.14</refmiscinfo> 6125</refmeta> 6126<refnamediv> 6127 <refname>snd_pcm_sgbuf_get_chunk_size</refname> 6128 <refpurpose> 6129 Compute the max size that fits within the contig. page from the given size 6130 </refpurpose> 6131</refnamediv> 6132<refsynopsisdiv> 6133 <title>Synopsis</title> 6134 <funcsynopsis><funcprototype> 6135 <funcdef>unsigned int <function>snd_pcm_sgbuf_get_chunk_size </function></funcdef> 6136 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 6137 <paramdef>unsigned int <parameter>ofs</parameter></paramdef> 6138 <paramdef>unsigned int <parameter>size</parameter></paramdef> 6139 </funcprototype></funcsynopsis> 6140</refsynopsisdiv> 6141<refsect1> 6142 <title>Arguments</title> 6143 <variablelist> 6144 <varlistentry> 6145 <term><parameter>substream</parameter></term> 6146 <listitem> 6147 <para> 6148 PCM substream 6149 </para> 6150 </listitem> 6151 </varlistentry> 6152 <varlistentry> 6153 <term><parameter>ofs</parameter></term> 6154 <listitem> 6155 <para> 6156 byte offset 6157 </para> 6158 </listitem> 6159 </varlistentry> 6160 <varlistentry> 6161 <term><parameter>size</parameter></term> 6162 <listitem> 6163 <para> 6164 byte size to examine 6165 </para> 6166 </listitem> 6167 </varlistentry> 6168 </variablelist> 6169</refsect1> 6170</refentry> 6171 6172<refentry id="API-snd-pcm-mmap-data-open"> 6173<refentryinfo> 6174 <title>LINUX</title> 6175 <productname>Kernel Hackers Manual</productname> 6176 <date>July 2017</date> 6177</refentryinfo> 6178<refmeta> 6179 <refentrytitle><phrase>snd_pcm_mmap_data_open</phrase></refentrytitle> 6180 <manvolnum>9</manvolnum> 6181 <refmiscinfo class="version">4.4.14</refmiscinfo> 6182</refmeta> 6183<refnamediv> 6184 <refname>snd_pcm_mmap_data_open</refname> 6185 <refpurpose> 6186 increase the mmap counter 6187 </refpurpose> 6188</refnamediv> 6189<refsynopsisdiv> 6190 <title>Synopsis</title> 6191 <funcsynopsis><funcprototype> 6192 <funcdef>void <function>snd_pcm_mmap_data_open </function></funcdef> 6193 <paramdef>struct vm_area_struct * <parameter>area</parameter></paramdef> 6194 </funcprototype></funcsynopsis> 6195</refsynopsisdiv> 6196<refsect1> 6197 <title>Arguments</title> 6198 <variablelist> 6199 <varlistentry> 6200 <term><parameter>area</parameter></term> 6201 <listitem> 6202 <para> 6203 VMA 6204 </para> 6205 </listitem> 6206 </varlistentry> 6207 </variablelist> 6208</refsect1> 6209<refsect1> 6210<title>Description</title> 6211<para> 6212 PCM mmap callback should handle this counter properly 6213</para> 6214</refsect1> 6215</refentry> 6216 6217<refentry id="API-snd-pcm-mmap-data-close"> 6218<refentryinfo> 6219 <title>LINUX</title> 6220 <productname>Kernel Hackers Manual</productname> 6221 <date>July 2017</date> 6222</refentryinfo> 6223<refmeta> 6224 <refentrytitle><phrase>snd_pcm_mmap_data_close</phrase></refentrytitle> 6225 <manvolnum>9</manvolnum> 6226 <refmiscinfo class="version">4.4.14</refmiscinfo> 6227</refmeta> 6228<refnamediv> 6229 <refname>snd_pcm_mmap_data_close</refname> 6230 <refpurpose> 6231 decrease the mmap counter 6232 </refpurpose> 6233</refnamediv> 6234<refsynopsisdiv> 6235 <title>Synopsis</title> 6236 <funcsynopsis><funcprototype> 6237 <funcdef>void <function>snd_pcm_mmap_data_close </function></funcdef> 6238 <paramdef>struct vm_area_struct * <parameter>area</parameter></paramdef> 6239 </funcprototype></funcsynopsis> 6240</refsynopsisdiv> 6241<refsect1> 6242 <title>Arguments</title> 6243 <variablelist> 6244 <varlistentry> 6245 <term><parameter>area</parameter></term> 6246 <listitem> 6247 <para> 6248 VMA 6249 </para> 6250 </listitem> 6251 </varlistentry> 6252 </variablelist> 6253</refsect1> 6254<refsect1> 6255<title>Description</title> 6256<para> 6257 PCM mmap callback should handle this counter properly 6258</para> 6259</refsect1> 6260</refentry> 6261 6262<refentry id="API-snd-pcm-limit-isa-dma-size"> 6263<refentryinfo> 6264 <title>LINUX</title> 6265 <productname>Kernel Hackers Manual</productname> 6266 <date>July 2017</date> 6267</refentryinfo> 6268<refmeta> 6269 <refentrytitle><phrase>snd_pcm_limit_isa_dma_size</phrase></refentrytitle> 6270 <manvolnum>9</manvolnum> 6271 <refmiscinfo class="version">4.4.14</refmiscinfo> 6272</refmeta> 6273<refnamediv> 6274 <refname>snd_pcm_limit_isa_dma_size</refname> 6275 <refpurpose> 6276 Get the max size fitting with ISA DMA transfer 6277 </refpurpose> 6278</refnamediv> 6279<refsynopsisdiv> 6280 <title>Synopsis</title> 6281 <funcsynopsis><funcprototype> 6282 <funcdef>void <function>snd_pcm_limit_isa_dma_size </function></funcdef> 6283 <paramdef>int <parameter>dma</parameter></paramdef> 6284 <paramdef>size_t * <parameter>max</parameter></paramdef> 6285 </funcprototype></funcsynopsis> 6286</refsynopsisdiv> 6287<refsect1> 6288 <title>Arguments</title> 6289 <variablelist> 6290 <varlistentry> 6291 <term><parameter>dma</parameter></term> 6292 <listitem> 6293 <para> 6294 DMA number 6295 </para> 6296 </listitem> 6297 </varlistentry> 6298 <varlistentry> 6299 <term><parameter>max</parameter></term> 6300 <listitem> 6301 <para> 6302 pointer to store the max size 6303 </para> 6304 </listitem> 6305 </varlistentry> 6306 </variablelist> 6307</refsect1> 6308</refentry> 6309 6310<refentry id="API-snd-pcm-stream-str"> 6311<refentryinfo> 6312 <title>LINUX</title> 6313 <productname>Kernel Hackers Manual</productname> 6314 <date>July 2017</date> 6315</refentryinfo> 6316<refmeta> 6317 <refentrytitle><phrase>snd_pcm_stream_str</phrase></refentrytitle> 6318 <manvolnum>9</manvolnum> 6319 <refmiscinfo class="version">4.4.14</refmiscinfo> 6320</refmeta> 6321<refnamediv> 6322 <refname>snd_pcm_stream_str</refname> 6323 <refpurpose> 6324 Get a string naming the direction of a stream 6325 </refpurpose> 6326</refnamediv> 6327<refsynopsisdiv> 6328 <title>Synopsis</title> 6329 <funcsynopsis><funcprototype> 6330 <funcdef>const char * <function>snd_pcm_stream_str </function></funcdef> 6331 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 6332 </funcprototype></funcsynopsis> 6333</refsynopsisdiv> 6334<refsect1> 6335 <title>Arguments</title> 6336 <variablelist> 6337 <varlistentry> 6338 <term><parameter>substream</parameter></term> 6339 <listitem> 6340 <para> 6341 the pcm substream instance 6342 </para> 6343 </listitem> 6344 </varlistentry> 6345 </variablelist> 6346</refsect1> 6347<refsect1> 6348<title>Return</title> 6349<para> 6350 A string naming the direction of the stream. 6351</para> 6352</refsect1> 6353</refentry> 6354 6355<refentry id="API-snd-pcm-chmap-substream"> 6356<refentryinfo> 6357 <title>LINUX</title> 6358 <productname>Kernel Hackers Manual</productname> 6359 <date>July 2017</date> 6360</refentryinfo> 6361<refmeta> 6362 <refentrytitle><phrase>snd_pcm_chmap_substream</phrase></refentrytitle> 6363 <manvolnum>9</manvolnum> 6364 <refmiscinfo class="version">4.4.14</refmiscinfo> 6365</refmeta> 6366<refnamediv> 6367 <refname>snd_pcm_chmap_substream</refname> 6368 <refpurpose> 6369 get the PCM substream assigned to the given chmap info 6370 </refpurpose> 6371</refnamediv> 6372<refsynopsisdiv> 6373 <title>Synopsis</title> 6374 <funcsynopsis><funcprototype> 6375 <funcdef>struct snd_pcm_substream * <function>snd_pcm_chmap_substream </function></funcdef> 6376 <paramdef>struct snd_pcm_chmap * <parameter>info</parameter></paramdef> 6377 <paramdef>unsigned int <parameter>idx</parameter></paramdef> 6378 </funcprototype></funcsynopsis> 6379</refsynopsisdiv> 6380<refsect1> 6381 <title>Arguments</title> 6382 <variablelist> 6383 <varlistentry> 6384 <term><parameter>info</parameter></term> 6385 <listitem> 6386 <para> 6387 chmap information 6388 </para> 6389 </listitem> 6390 </varlistentry> 6391 <varlistentry> 6392 <term><parameter>idx</parameter></term> 6393 <listitem> 6394 <para> 6395 the substream number index 6396 </para> 6397 </listitem> 6398 </varlistentry> 6399 </variablelist> 6400</refsect1> 6401</refentry> 6402 6403<refentry id="API-pcm-format-to-bits"> 6404<refentryinfo> 6405 <title>LINUX</title> 6406 <productname>Kernel Hackers Manual</productname> 6407 <date>July 2017</date> 6408</refentryinfo> 6409<refmeta> 6410 <refentrytitle><phrase>pcm_format_to_bits</phrase></refentrytitle> 6411 <manvolnum>9</manvolnum> 6412 <refmiscinfo class="version">4.4.14</refmiscinfo> 6413</refmeta> 6414<refnamediv> 6415 <refname>pcm_format_to_bits</refname> 6416 <refpurpose> 6417 Strong-typed conversion of pcm_format to bitwise 6418 </refpurpose> 6419</refnamediv> 6420<refsynopsisdiv> 6421 <title>Synopsis</title> 6422 <funcsynopsis><funcprototype> 6423 <funcdef>u64 <function>pcm_format_to_bits </function></funcdef> 6424 <paramdef>snd_pcm_format_t <parameter>pcm_format</parameter></paramdef> 6425 </funcprototype></funcsynopsis> 6426</refsynopsisdiv> 6427<refsect1> 6428 <title>Arguments</title> 6429 <variablelist> 6430 <varlistentry> 6431 <term><parameter>pcm_format</parameter></term> 6432 <listitem> 6433 <para> 6434 PCM format 6435 </para> 6436 </listitem> 6437 </varlistentry> 6438 </variablelist> 6439</refsect1> 6440</refentry> 6441 6442 </sect1> 6443 <sect1><title>PCM Format Helpers</title> 6444<!-- sound/core/pcm_misc.c --> 6445<refentry id="API-snd-pcm-format-signed"> 6446<refentryinfo> 6447 <title>LINUX</title> 6448 <productname>Kernel Hackers Manual</productname> 6449 <date>July 2017</date> 6450</refentryinfo> 6451<refmeta> 6452 <refentrytitle><phrase>snd_pcm_format_signed</phrase></refentrytitle> 6453 <manvolnum>9</manvolnum> 6454 <refmiscinfo class="version">4.4.14</refmiscinfo> 6455</refmeta> 6456<refnamediv> 6457 <refname>snd_pcm_format_signed</refname> 6458 <refpurpose> 6459 Check the PCM format is signed linear 6460 </refpurpose> 6461</refnamediv> 6462<refsynopsisdiv> 6463 <title>Synopsis</title> 6464 <funcsynopsis><funcprototype> 6465 <funcdef>int <function>snd_pcm_format_signed </function></funcdef> 6466 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6467 </funcprototype></funcsynopsis> 6468</refsynopsisdiv> 6469<refsect1> 6470 <title>Arguments</title> 6471 <variablelist> 6472 <varlistentry> 6473 <term><parameter>format</parameter></term> 6474 <listitem> 6475 <para> 6476 the format to check 6477 </para> 6478 </listitem> 6479 </varlistentry> 6480 </variablelist> 6481</refsect1> 6482<refsect1> 6483<title>Return</title> 6484<para> 6485 1 if the given PCM format is signed linear, 0 if unsigned 6486 linear, and a negative error code for non-linear formats. 6487</para> 6488</refsect1> 6489</refentry> 6490 6491<refentry id="API-snd-pcm-format-unsigned"> 6492<refentryinfo> 6493 <title>LINUX</title> 6494 <productname>Kernel Hackers Manual</productname> 6495 <date>July 2017</date> 6496</refentryinfo> 6497<refmeta> 6498 <refentrytitle><phrase>snd_pcm_format_unsigned</phrase></refentrytitle> 6499 <manvolnum>9</manvolnum> 6500 <refmiscinfo class="version">4.4.14</refmiscinfo> 6501</refmeta> 6502<refnamediv> 6503 <refname>snd_pcm_format_unsigned</refname> 6504 <refpurpose> 6505 Check the PCM format is unsigned linear 6506 </refpurpose> 6507</refnamediv> 6508<refsynopsisdiv> 6509 <title>Synopsis</title> 6510 <funcsynopsis><funcprototype> 6511 <funcdef>int <function>snd_pcm_format_unsigned </function></funcdef> 6512 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6513 </funcprototype></funcsynopsis> 6514</refsynopsisdiv> 6515<refsect1> 6516 <title>Arguments</title> 6517 <variablelist> 6518 <varlistentry> 6519 <term><parameter>format</parameter></term> 6520 <listitem> 6521 <para> 6522 the format to check 6523 </para> 6524 </listitem> 6525 </varlistentry> 6526 </variablelist> 6527</refsect1> 6528<refsect1> 6529<title>Return</title> 6530<para> 6531 1 if the given PCM format is unsigned linear, 0 if signed 6532 linear, and a negative error code for non-linear formats. 6533</para> 6534</refsect1> 6535</refentry> 6536 6537<refentry id="API-snd-pcm-format-linear"> 6538<refentryinfo> 6539 <title>LINUX</title> 6540 <productname>Kernel Hackers Manual</productname> 6541 <date>July 2017</date> 6542</refentryinfo> 6543<refmeta> 6544 <refentrytitle><phrase>snd_pcm_format_linear</phrase></refentrytitle> 6545 <manvolnum>9</manvolnum> 6546 <refmiscinfo class="version">4.4.14</refmiscinfo> 6547</refmeta> 6548<refnamediv> 6549 <refname>snd_pcm_format_linear</refname> 6550 <refpurpose> 6551 Check the PCM format is linear 6552 </refpurpose> 6553</refnamediv> 6554<refsynopsisdiv> 6555 <title>Synopsis</title> 6556 <funcsynopsis><funcprototype> 6557 <funcdef>int <function>snd_pcm_format_linear </function></funcdef> 6558 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6559 </funcprototype></funcsynopsis> 6560</refsynopsisdiv> 6561<refsect1> 6562 <title>Arguments</title> 6563 <variablelist> 6564 <varlistentry> 6565 <term><parameter>format</parameter></term> 6566 <listitem> 6567 <para> 6568 the format to check 6569 </para> 6570 </listitem> 6571 </varlistentry> 6572 </variablelist> 6573</refsect1> 6574<refsect1> 6575<title>Return</title> 6576<para> 6577 1 if the given PCM format is linear, 0 if not. 6578</para> 6579</refsect1> 6580</refentry> 6581 6582<refentry id="API-snd-pcm-format-little-endian"> 6583<refentryinfo> 6584 <title>LINUX</title> 6585 <productname>Kernel Hackers Manual</productname> 6586 <date>July 2017</date> 6587</refentryinfo> 6588<refmeta> 6589 <refentrytitle><phrase>snd_pcm_format_little_endian</phrase></refentrytitle> 6590 <manvolnum>9</manvolnum> 6591 <refmiscinfo class="version">4.4.14</refmiscinfo> 6592</refmeta> 6593<refnamediv> 6594 <refname>snd_pcm_format_little_endian</refname> 6595 <refpurpose> 6596 Check the PCM format is little-endian 6597 </refpurpose> 6598</refnamediv> 6599<refsynopsisdiv> 6600 <title>Synopsis</title> 6601 <funcsynopsis><funcprototype> 6602 <funcdef>int <function>snd_pcm_format_little_endian </function></funcdef> 6603 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6604 </funcprototype></funcsynopsis> 6605</refsynopsisdiv> 6606<refsect1> 6607 <title>Arguments</title> 6608 <variablelist> 6609 <varlistentry> 6610 <term><parameter>format</parameter></term> 6611 <listitem> 6612 <para> 6613 the format to check 6614 </para> 6615 </listitem> 6616 </varlistentry> 6617 </variablelist> 6618</refsect1> 6619<refsect1> 6620<title>Return</title> 6621<para> 6622 1 if the given PCM format is little-endian, 0 if 6623 big-endian, or a negative error code if endian not specified. 6624</para> 6625</refsect1> 6626</refentry> 6627 6628<refentry id="API-snd-pcm-format-big-endian"> 6629<refentryinfo> 6630 <title>LINUX</title> 6631 <productname>Kernel Hackers Manual</productname> 6632 <date>July 2017</date> 6633</refentryinfo> 6634<refmeta> 6635 <refentrytitle><phrase>snd_pcm_format_big_endian</phrase></refentrytitle> 6636 <manvolnum>9</manvolnum> 6637 <refmiscinfo class="version">4.4.14</refmiscinfo> 6638</refmeta> 6639<refnamediv> 6640 <refname>snd_pcm_format_big_endian</refname> 6641 <refpurpose> 6642 Check the PCM format is big-endian 6643 </refpurpose> 6644</refnamediv> 6645<refsynopsisdiv> 6646 <title>Synopsis</title> 6647 <funcsynopsis><funcprototype> 6648 <funcdef>int <function>snd_pcm_format_big_endian </function></funcdef> 6649 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6650 </funcprototype></funcsynopsis> 6651</refsynopsisdiv> 6652<refsect1> 6653 <title>Arguments</title> 6654 <variablelist> 6655 <varlistentry> 6656 <term><parameter>format</parameter></term> 6657 <listitem> 6658 <para> 6659 the format to check 6660 </para> 6661 </listitem> 6662 </varlistentry> 6663 </variablelist> 6664</refsect1> 6665<refsect1> 6666<title>Return</title> 6667<para> 6668 1 if the given PCM format is big-endian, 0 if 6669 little-endian, or a negative error code if endian not specified. 6670</para> 6671</refsect1> 6672</refentry> 6673 6674<refentry id="API-snd-pcm-format-width"> 6675<refentryinfo> 6676 <title>LINUX</title> 6677 <productname>Kernel Hackers Manual</productname> 6678 <date>July 2017</date> 6679</refentryinfo> 6680<refmeta> 6681 <refentrytitle><phrase>snd_pcm_format_width</phrase></refentrytitle> 6682 <manvolnum>9</manvolnum> 6683 <refmiscinfo class="version">4.4.14</refmiscinfo> 6684</refmeta> 6685<refnamediv> 6686 <refname>snd_pcm_format_width</refname> 6687 <refpurpose> 6688 return the bit-width of the format 6689 </refpurpose> 6690</refnamediv> 6691<refsynopsisdiv> 6692 <title>Synopsis</title> 6693 <funcsynopsis><funcprototype> 6694 <funcdef>int <function>snd_pcm_format_width </function></funcdef> 6695 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6696 </funcprototype></funcsynopsis> 6697</refsynopsisdiv> 6698<refsect1> 6699 <title>Arguments</title> 6700 <variablelist> 6701 <varlistentry> 6702 <term><parameter>format</parameter></term> 6703 <listitem> 6704 <para> 6705 the format to check 6706 </para> 6707 </listitem> 6708 </varlistentry> 6709 </variablelist> 6710</refsect1> 6711<refsect1> 6712<title>Return</title> 6713<para> 6714 The bit-width of the format, or a negative error code 6715 if unknown format. 6716</para> 6717</refsect1> 6718</refentry> 6719 6720<refentry id="API-snd-pcm-format-physical-width"> 6721<refentryinfo> 6722 <title>LINUX</title> 6723 <productname>Kernel Hackers Manual</productname> 6724 <date>July 2017</date> 6725</refentryinfo> 6726<refmeta> 6727 <refentrytitle><phrase>snd_pcm_format_physical_width</phrase></refentrytitle> 6728 <manvolnum>9</manvolnum> 6729 <refmiscinfo class="version">4.4.14</refmiscinfo> 6730</refmeta> 6731<refnamediv> 6732 <refname>snd_pcm_format_physical_width</refname> 6733 <refpurpose> 6734 return the physical bit-width of the format 6735 </refpurpose> 6736</refnamediv> 6737<refsynopsisdiv> 6738 <title>Synopsis</title> 6739 <funcsynopsis><funcprototype> 6740 <funcdef>int <function>snd_pcm_format_physical_width </function></funcdef> 6741 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6742 </funcprototype></funcsynopsis> 6743</refsynopsisdiv> 6744<refsect1> 6745 <title>Arguments</title> 6746 <variablelist> 6747 <varlistentry> 6748 <term><parameter>format</parameter></term> 6749 <listitem> 6750 <para> 6751 the format to check 6752 </para> 6753 </listitem> 6754 </varlistentry> 6755 </variablelist> 6756</refsect1> 6757<refsect1> 6758<title>Return</title> 6759<para> 6760 The physical bit-width of the format, or a negative error code 6761 if unknown format. 6762</para> 6763</refsect1> 6764</refentry> 6765 6766<refentry id="API-snd-pcm-format-size"> 6767<refentryinfo> 6768 <title>LINUX</title> 6769 <productname>Kernel Hackers Manual</productname> 6770 <date>July 2017</date> 6771</refentryinfo> 6772<refmeta> 6773 <refentrytitle><phrase>snd_pcm_format_size</phrase></refentrytitle> 6774 <manvolnum>9</manvolnum> 6775 <refmiscinfo class="version">4.4.14</refmiscinfo> 6776</refmeta> 6777<refnamediv> 6778 <refname>snd_pcm_format_size</refname> 6779 <refpurpose> 6780 return the byte size of samples on the given format 6781 </refpurpose> 6782</refnamediv> 6783<refsynopsisdiv> 6784 <title>Synopsis</title> 6785 <funcsynopsis><funcprototype> 6786 <funcdef>ssize_t <function>snd_pcm_format_size </function></funcdef> 6787 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6788 <paramdef>size_t <parameter>samples</parameter></paramdef> 6789 </funcprototype></funcsynopsis> 6790</refsynopsisdiv> 6791<refsect1> 6792 <title>Arguments</title> 6793 <variablelist> 6794 <varlistentry> 6795 <term><parameter>format</parameter></term> 6796 <listitem> 6797 <para> 6798 the format to check 6799 </para> 6800 </listitem> 6801 </varlistentry> 6802 <varlistentry> 6803 <term><parameter>samples</parameter></term> 6804 <listitem> 6805 <para> 6806 sampling rate 6807 </para> 6808 </listitem> 6809 </varlistentry> 6810 </variablelist> 6811</refsect1> 6812<refsect1> 6813<title>Return</title> 6814<para> 6815 The byte size of the given samples for the format, or a 6816 negative error code if unknown format. 6817</para> 6818</refsect1> 6819</refentry> 6820 6821<refentry id="API-snd-pcm-format-silence-64"> 6822<refentryinfo> 6823 <title>LINUX</title> 6824 <productname>Kernel Hackers Manual</productname> 6825 <date>July 2017</date> 6826</refentryinfo> 6827<refmeta> 6828 <refentrytitle><phrase>snd_pcm_format_silence_64</phrase></refentrytitle> 6829 <manvolnum>9</manvolnum> 6830 <refmiscinfo class="version">4.4.14</refmiscinfo> 6831</refmeta> 6832<refnamediv> 6833 <refname>snd_pcm_format_silence_64</refname> 6834 <refpurpose> 6835 return the silent data in 8 bytes array 6836 </refpurpose> 6837</refnamediv> 6838<refsynopsisdiv> 6839 <title>Synopsis</title> 6840 <funcsynopsis><funcprototype> 6841 <funcdef>const unsigned char * <function>snd_pcm_format_silence_64 </function></funcdef> 6842 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6843 </funcprototype></funcsynopsis> 6844</refsynopsisdiv> 6845<refsect1> 6846 <title>Arguments</title> 6847 <variablelist> 6848 <varlistentry> 6849 <term><parameter>format</parameter></term> 6850 <listitem> 6851 <para> 6852 the format to check 6853 </para> 6854 </listitem> 6855 </varlistentry> 6856 </variablelist> 6857</refsect1> 6858<refsect1> 6859<title>Return</title> 6860<para> 6861 The format pattern to fill or <constant>NULL</constant> if error. 6862</para> 6863</refsect1> 6864</refentry> 6865 6866<refentry id="API-snd-pcm-format-set-silence"> 6867<refentryinfo> 6868 <title>LINUX</title> 6869 <productname>Kernel Hackers Manual</productname> 6870 <date>July 2017</date> 6871</refentryinfo> 6872<refmeta> 6873 <refentrytitle><phrase>snd_pcm_format_set_silence</phrase></refentrytitle> 6874 <manvolnum>9</manvolnum> 6875 <refmiscinfo class="version">4.4.14</refmiscinfo> 6876</refmeta> 6877<refnamediv> 6878 <refname>snd_pcm_format_set_silence</refname> 6879 <refpurpose> 6880 set the silence data on the buffer 6881 </refpurpose> 6882</refnamediv> 6883<refsynopsisdiv> 6884 <title>Synopsis</title> 6885 <funcsynopsis><funcprototype> 6886 <funcdef>int <function>snd_pcm_format_set_silence </function></funcdef> 6887 <paramdef>snd_pcm_format_t <parameter>format</parameter></paramdef> 6888 <paramdef>void * <parameter>data</parameter></paramdef> 6889 <paramdef>unsigned int <parameter>samples</parameter></paramdef> 6890 </funcprototype></funcsynopsis> 6891</refsynopsisdiv> 6892<refsect1> 6893 <title>Arguments</title> 6894 <variablelist> 6895 <varlistentry> 6896 <term><parameter>format</parameter></term> 6897 <listitem> 6898 <para> 6899 the PCM format 6900 </para> 6901 </listitem> 6902 </varlistentry> 6903 <varlistentry> 6904 <term><parameter>data</parameter></term> 6905 <listitem> 6906 <para> 6907 the buffer pointer 6908 </para> 6909 </listitem> 6910 </varlistentry> 6911 <varlistentry> 6912 <term><parameter>samples</parameter></term> 6913 <listitem> 6914 <para> 6915 the number of samples to set silence 6916 </para> 6917 </listitem> 6918 </varlistentry> 6919 </variablelist> 6920</refsect1> 6921<refsect1> 6922<title>Description</title> 6923<para> 6924 Sets the silence data on the buffer for the given samples. 6925</para> 6926</refsect1> 6927<refsect1> 6928<title>Return</title> 6929<para> 6930 Zero if successful, or a negative error code on failure. 6931</para> 6932</refsect1> 6933</refentry> 6934 6935<refentry id="API-snd-pcm-limit-hw-rates"> 6936<refentryinfo> 6937 <title>LINUX</title> 6938 <productname>Kernel Hackers Manual</productname> 6939 <date>July 2017</date> 6940</refentryinfo> 6941<refmeta> 6942 <refentrytitle><phrase>snd_pcm_limit_hw_rates</phrase></refentrytitle> 6943 <manvolnum>9</manvolnum> 6944 <refmiscinfo class="version">4.4.14</refmiscinfo> 6945</refmeta> 6946<refnamediv> 6947 <refname>snd_pcm_limit_hw_rates</refname> 6948 <refpurpose> 6949 determine rate_min/rate_max fields 6950 </refpurpose> 6951</refnamediv> 6952<refsynopsisdiv> 6953 <title>Synopsis</title> 6954 <funcsynopsis><funcprototype> 6955 <funcdef>int <function>snd_pcm_limit_hw_rates </function></funcdef> 6956 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 6957 </funcprototype></funcsynopsis> 6958</refsynopsisdiv> 6959<refsect1> 6960 <title>Arguments</title> 6961 <variablelist> 6962 <varlistentry> 6963 <term><parameter>runtime</parameter></term> 6964 <listitem> 6965 <para> 6966 the runtime instance 6967 </para> 6968 </listitem> 6969 </varlistentry> 6970 </variablelist> 6971</refsect1> 6972<refsect1> 6973<title>Description</title> 6974<para> 6975 Determines the rate_min and rate_max fields from the rates bits of 6976 the given runtime->hw. 6977</para> 6978</refsect1> 6979<refsect1> 6980<title>Return</title> 6981<para> 6982 Zero if successful. 6983</para> 6984</refsect1> 6985</refentry> 6986 6987<refentry id="API-snd-pcm-rate-to-rate-bit"> 6988<refentryinfo> 6989 <title>LINUX</title> 6990 <productname>Kernel Hackers Manual</productname> 6991 <date>July 2017</date> 6992</refentryinfo> 6993<refmeta> 6994 <refentrytitle><phrase>snd_pcm_rate_to_rate_bit</phrase></refentrytitle> 6995 <manvolnum>9</manvolnum> 6996 <refmiscinfo class="version">4.4.14</refmiscinfo> 6997</refmeta> 6998<refnamediv> 6999 <refname>snd_pcm_rate_to_rate_bit</refname> 7000 <refpurpose> 7001 converts sample rate to SNDRV_PCM_RATE_xxx bit 7002 </refpurpose> 7003</refnamediv> 7004<refsynopsisdiv> 7005 <title>Synopsis</title> 7006 <funcsynopsis><funcprototype> 7007 <funcdef>unsigned int <function>snd_pcm_rate_to_rate_bit </function></funcdef> 7008 <paramdef>unsigned int <parameter>rate</parameter></paramdef> 7009 </funcprototype></funcsynopsis> 7010</refsynopsisdiv> 7011<refsect1> 7012 <title>Arguments</title> 7013 <variablelist> 7014 <varlistentry> 7015 <term><parameter>rate</parameter></term> 7016 <listitem> 7017 <para> 7018 the sample rate to convert 7019 </para> 7020 </listitem> 7021 </varlistentry> 7022 </variablelist> 7023</refsect1> 7024<refsect1> 7025<title>Return</title> 7026<para> 7027 The SNDRV_PCM_RATE_xxx flag that corresponds to the given rate, or 7028 SNDRV_PCM_RATE_KNOT for an unknown rate. 7029</para> 7030</refsect1> 7031</refentry> 7032 7033<refentry id="API-snd-pcm-rate-bit-to-rate"> 7034<refentryinfo> 7035 <title>LINUX</title> 7036 <productname>Kernel Hackers Manual</productname> 7037 <date>July 2017</date> 7038</refentryinfo> 7039<refmeta> 7040 <refentrytitle><phrase>snd_pcm_rate_bit_to_rate</phrase></refentrytitle> 7041 <manvolnum>9</manvolnum> 7042 <refmiscinfo class="version">4.4.14</refmiscinfo> 7043</refmeta> 7044<refnamediv> 7045 <refname>snd_pcm_rate_bit_to_rate</refname> 7046 <refpurpose> 7047 converts SNDRV_PCM_RATE_xxx bit to sample rate 7048 </refpurpose> 7049</refnamediv> 7050<refsynopsisdiv> 7051 <title>Synopsis</title> 7052 <funcsynopsis><funcprototype> 7053 <funcdef>unsigned int <function>snd_pcm_rate_bit_to_rate </function></funcdef> 7054 <paramdef>unsigned int <parameter>rate_bit</parameter></paramdef> 7055 </funcprototype></funcsynopsis> 7056</refsynopsisdiv> 7057<refsect1> 7058 <title>Arguments</title> 7059 <variablelist> 7060 <varlistentry> 7061 <term><parameter>rate_bit</parameter></term> 7062 <listitem> 7063 <para> 7064 the rate bit to convert 7065 </para> 7066 </listitem> 7067 </varlistentry> 7068 </variablelist> 7069</refsect1> 7070<refsect1> 7071<title>Return</title> 7072<para> 7073 The sample rate that corresponds to the given SNDRV_PCM_RATE_xxx flag 7074 or 0 for an unknown rate bit. 7075</para> 7076</refsect1> 7077</refentry> 7078 7079<refentry id="API-snd-pcm-rate-mask-intersect"> 7080<refentryinfo> 7081 <title>LINUX</title> 7082 <productname>Kernel Hackers Manual</productname> 7083 <date>July 2017</date> 7084</refentryinfo> 7085<refmeta> 7086 <refentrytitle><phrase>snd_pcm_rate_mask_intersect</phrase></refentrytitle> 7087 <manvolnum>9</manvolnum> 7088 <refmiscinfo class="version">4.4.14</refmiscinfo> 7089</refmeta> 7090<refnamediv> 7091 <refname>snd_pcm_rate_mask_intersect</refname> 7092 <refpurpose> 7093 computes the intersection between two rate masks 7094 </refpurpose> 7095</refnamediv> 7096<refsynopsisdiv> 7097 <title>Synopsis</title> 7098 <funcsynopsis><funcprototype> 7099 <funcdef>unsigned int <function>snd_pcm_rate_mask_intersect </function></funcdef> 7100 <paramdef>unsigned int <parameter>rates_a</parameter></paramdef> 7101 <paramdef>unsigned int <parameter>rates_b</parameter></paramdef> 7102 </funcprototype></funcsynopsis> 7103</refsynopsisdiv> 7104<refsect1> 7105 <title>Arguments</title> 7106 <variablelist> 7107 <varlistentry> 7108 <term><parameter>rates_a</parameter></term> 7109 <listitem> 7110 <para> 7111 The first rate mask 7112 </para> 7113 </listitem> 7114 </varlistentry> 7115 <varlistentry> 7116 <term><parameter>rates_b</parameter></term> 7117 <listitem> 7118 <para> 7119 The second rate mask 7120 </para> 7121 </listitem> 7122 </varlistentry> 7123 </variablelist> 7124</refsect1> 7125<refsect1> 7126<title>Description</title> 7127<para> 7128 This function computes the rates that are supported by both rate masks passed 7129 to the function. It will take care of the special handling of 7130 SNDRV_PCM_RATE_CONTINUOUS and SNDRV_PCM_RATE_KNOT. 7131</para> 7132</refsect1> 7133<refsect1> 7134<title>Return</title> 7135<para> 7136 A rate mask containing the rates that are supported by both rates_a 7137 and rates_b. 7138</para> 7139</refsect1> 7140</refentry> 7141 7142 </sect1> 7143 <sect1><title>PCM Memory Management</title> 7144<!-- sound/core/pcm_memory.c --> 7145<refentry id="API-snd-pcm-lib-preallocate-free-for-all"> 7146<refentryinfo> 7147 <title>LINUX</title> 7148 <productname>Kernel Hackers Manual</productname> 7149 <date>July 2017</date> 7150</refentryinfo> 7151<refmeta> 7152 <refentrytitle><phrase>snd_pcm_lib_preallocate_free_for_all</phrase></refentrytitle> 7153 <manvolnum>9</manvolnum> 7154 <refmiscinfo class="version">4.4.14</refmiscinfo> 7155</refmeta> 7156<refnamediv> 7157 <refname>snd_pcm_lib_preallocate_free_for_all</refname> 7158 <refpurpose> 7159 release all pre-allocated buffers on the pcm 7160 </refpurpose> 7161</refnamediv> 7162<refsynopsisdiv> 7163 <title>Synopsis</title> 7164 <funcsynopsis><funcprototype> 7165 <funcdef>int <function>snd_pcm_lib_preallocate_free_for_all </function></funcdef> 7166 <paramdef>struct snd_pcm * <parameter>pcm</parameter></paramdef> 7167 </funcprototype></funcsynopsis> 7168</refsynopsisdiv> 7169<refsect1> 7170 <title>Arguments</title> 7171 <variablelist> 7172 <varlistentry> 7173 <term><parameter>pcm</parameter></term> 7174 <listitem> 7175 <para> 7176 the pcm instance 7177 </para> 7178 </listitem> 7179 </varlistentry> 7180 </variablelist> 7181</refsect1> 7182<refsect1> 7183<title>Description</title> 7184<para> 7185 Releases all the pre-allocated buffers on the given pcm. 7186</para> 7187</refsect1> 7188<refsect1> 7189<title>Return</title> 7190<para> 7191 Zero if successful, or a negative error code on failure. 7192</para> 7193</refsect1> 7194</refentry> 7195 7196<refentry id="API-snd-pcm-lib-preallocate-pages"> 7197<refentryinfo> 7198 <title>LINUX</title> 7199 <productname>Kernel Hackers Manual</productname> 7200 <date>July 2017</date> 7201</refentryinfo> 7202<refmeta> 7203 <refentrytitle><phrase>snd_pcm_lib_preallocate_pages</phrase></refentrytitle> 7204 <manvolnum>9</manvolnum> 7205 <refmiscinfo class="version">4.4.14</refmiscinfo> 7206</refmeta> 7207<refnamediv> 7208 <refname>snd_pcm_lib_preallocate_pages</refname> 7209 <refpurpose> 7210 pre-allocation for the given DMA type 7211 </refpurpose> 7212</refnamediv> 7213<refsynopsisdiv> 7214 <title>Synopsis</title> 7215 <funcsynopsis><funcprototype> 7216 <funcdef>int <function>snd_pcm_lib_preallocate_pages </function></funcdef> 7217 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7218 <paramdef>int <parameter>type</parameter></paramdef> 7219 <paramdef>struct device * <parameter>data</parameter></paramdef> 7220 <paramdef>size_t <parameter>size</parameter></paramdef> 7221 <paramdef>size_t <parameter>max</parameter></paramdef> 7222 </funcprototype></funcsynopsis> 7223</refsynopsisdiv> 7224<refsect1> 7225 <title>Arguments</title> 7226 <variablelist> 7227 <varlistentry> 7228 <term><parameter>substream</parameter></term> 7229 <listitem> 7230 <para> 7231 the pcm substream instance 7232 </para> 7233 </listitem> 7234 </varlistentry> 7235 <varlistentry> 7236 <term><parameter>type</parameter></term> 7237 <listitem> 7238 <para> 7239 DMA type (SNDRV_DMA_TYPE_*) 7240 </para> 7241 </listitem> 7242 </varlistentry> 7243 <varlistentry> 7244 <term><parameter>data</parameter></term> 7245 <listitem> 7246 <para> 7247 DMA type dependent data 7248 </para> 7249 </listitem> 7250 </varlistentry> 7251 <varlistentry> 7252 <term><parameter>size</parameter></term> 7253 <listitem> 7254 <para> 7255 the requested pre-allocation size in bytes 7256 </para> 7257 </listitem> 7258 </varlistentry> 7259 <varlistentry> 7260 <term><parameter>max</parameter></term> 7261 <listitem> 7262 <para> 7263 the max. allowed pre-allocation size 7264 </para> 7265 </listitem> 7266 </varlistentry> 7267 </variablelist> 7268</refsect1> 7269<refsect1> 7270<title>Description</title> 7271<para> 7272 Do pre-allocation for the given DMA buffer type. 7273</para> 7274</refsect1> 7275<refsect1> 7276<title>Return</title> 7277<para> 7278 Zero if successful, or a negative error code on failure. 7279</para> 7280</refsect1> 7281</refentry> 7282 7283<refentry id="API-snd-pcm-lib-preallocate-pages-for-all"> 7284<refentryinfo> 7285 <title>LINUX</title> 7286 <productname>Kernel Hackers Manual</productname> 7287 <date>July 2017</date> 7288</refentryinfo> 7289<refmeta> 7290 <refentrytitle><phrase>snd_pcm_lib_preallocate_pages_for_all</phrase></refentrytitle> 7291 <manvolnum>9</manvolnum> 7292 <refmiscinfo class="version">4.4.14</refmiscinfo> 7293</refmeta> 7294<refnamediv> 7295 <refname>snd_pcm_lib_preallocate_pages_for_all</refname> 7296 <refpurpose> 7297 pre-allocation for continuous memory type (all substreams) 7298 </refpurpose> 7299</refnamediv> 7300<refsynopsisdiv> 7301 <title>Synopsis</title> 7302 <funcsynopsis><funcprototype> 7303 <funcdef>int <function>snd_pcm_lib_preallocate_pages_for_all </function></funcdef> 7304 <paramdef>struct snd_pcm * <parameter>pcm</parameter></paramdef> 7305 <paramdef>int <parameter>type</parameter></paramdef> 7306 <paramdef>void * <parameter>data</parameter></paramdef> 7307 <paramdef>size_t <parameter>size</parameter></paramdef> 7308 <paramdef>size_t <parameter>max</parameter></paramdef> 7309 </funcprototype></funcsynopsis> 7310</refsynopsisdiv> 7311<refsect1> 7312 <title>Arguments</title> 7313 <variablelist> 7314 <varlistentry> 7315 <term><parameter>pcm</parameter></term> 7316 <listitem> 7317 <para> 7318 the pcm instance 7319 </para> 7320 </listitem> 7321 </varlistentry> 7322 <varlistentry> 7323 <term><parameter>type</parameter></term> 7324 <listitem> 7325 <para> 7326 DMA type (SNDRV_DMA_TYPE_*) 7327 </para> 7328 </listitem> 7329 </varlistentry> 7330 <varlistentry> 7331 <term><parameter>data</parameter></term> 7332 <listitem> 7333 <para> 7334 DMA type dependent data 7335 </para> 7336 </listitem> 7337 </varlistentry> 7338 <varlistentry> 7339 <term><parameter>size</parameter></term> 7340 <listitem> 7341 <para> 7342 the requested pre-allocation size in bytes 7343 </para> 7344 </listitem> 7345 </varlistentry> 7346 <varlistentry> 7347 <term><parameter>max</parameter></term> 7348 <listitem> 7349 <para> 7350 the max. allowed pre-allocation size 7351 </para> 7352 </listitem> 7353 </varlistentry> 7354 </variablelist> 7355</refsect1> 7356<refsect1> 7357<title>Description</title> 7358<para> 7359 Do pre-allocation to all substreams of the given pcm for the 7360 specified DMA type. 7361</para> 7362</refsect1> 7363<refsect1> 7364<title>Return</title> 7365<para> 7366 Zero if successful, or a negative error code on failure. 7367</para> 7368</refsect1> 7369</refentry> 7370 7371<refentry id="API-snd-pcm-sgbuf-ops-page"> 7372<refentryinfo> 7373 <title>LINUX</title> 7374 <productname>Kernel Hackers Manual</productname> 7375 <date>July 2017</date> 7376</refentryinfo> 7377<refmeta> 7378 <refentrytitle><phrase>snd_pcm_sgbuf_ops_page</phrase></refentrytitle> 7379 <manvolnum>9</manvolnum> 7380 <refmiscinfo class="version">4.4.14</refmiscinfo> 7381</refmeta> 7382<refnamediv> 7383 <refname>snd_pcm_sgbuf_ops_page</refname> 7384 <refpurpose> 7385 get the page struct at the given offset 7386 </refpurpose> 7387</refnamediv> 7388<refsynopsisdiv> 7389 <title>Synopsis</title> 7390 <funcsynopsis><funcprototype> 7391 <funcdef>struct page * <function>snd_pcm_sgbuf_ops_page </function></funcdef> 7392 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7393 <paramdef>unsigned long <parameter>offset</parameter></paramdef> 7394 </funcprototype></funcsynopsis> 7395</refsynopsisdiv> 7396<refsect1> 7397 <title>Arguments</title> 7398 <variablelist> 7399 <varlistentry> 7400 <term><parameter>substream</parameter></term> 7401 <listitem> 7402 <para> 7403 the pcm substream instance 7404 </para> 7405 </listitem> 7406 </varlistentry> 7407 <varlistentry> 7408 <term><parameter>offset</parameter></term> 7409 <listitem> 7410 <para> 7411 the buffer offset 7412 </para> 7413 </listitem> 7414 </varlistentry> 7415 </variablelist> 7416</refsect1> 7417<refsect1> 7418<title>Description</title> 7419<para> 7420 Used as the page callback of PCM ops. 7421</para> 7422</refsect1> 7423<refsect1> 7424<title>Return</title> 7425<para> 7426 The page struct at the given buffer offset. <constant>NULL</constant> on failure. 7427</para> 7428</refsect1> 7429</refentry> 7430 7431<refentry id="API-snd-pcm-lib-malloc-pages"> 7432<refentryinfo> 7433 <title>LINUX</title> 7434 <productname>Kernel Hackers Manual</productname> 7435 <date>July 2017</date> 7436</refentryinfo> 7437<refmeta> 7438 <refentrytitle><phrase>snd_pcm_lib_malloc_pages</phrase></refentrytitle> 7439 <manvolnum>9</manvolnum> 7440 <refmiscinfo class="version">4.4.14</refmiscinfo> 7441</refmeta> 7442<refnamediv> 7443 <refname>snd_pcm_lib_malloc_pages</refname> 7444 <refpurpose> 7445 allocate the DMA buffer 7446 </refpurpose> 7447</refnamediv> 7448<refsynopsisdiv> 7449 <title>Synopsis</title> 7450 <funcsynopsis><funcprototype> 7451 <funcdef>int <function>snd_pcm_lib_malloc_pages </function></funcdef> 7452 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7453 <paramdef>size_t <parameter>size</parameter></paramdef> 7454 </funcprototype></funcsynopsis> 7455</refsynopsisdiv> 7456<refsect1> 7457 <title>Arguments</title> 7458 <variablelist> 7459 <varlistentry> 7460 <term><parameter>substream</parameter></term> 7461 <listitem> 7462 <para> 7463 the substream to allocate the DMA buffer to 7464 </para> 7465 </listitem> 7466 </varlistentry> 7467 <varlistentry> 7468 <term><parameter>size</parameter></term> 7469 <listitem> 7470 <para> 7471 the requested buffer size in bytes 7472 </para> 7473 </listitem> 7474 </varlistentry> 7475 </variablelist> 7476</refsect1> 7477<refsect1> 7478<title>Description</title> 7479<para> 7480 Allocates the DMA buffer on the BUS type given earlier to 7481 <function>snd_pcm_lib_preallocate_xxx_pages</function>. 7482</para> 7483</refsect1> 7484<refsect1> 7485<title>Return</title> 7486<para> 7487 1 if the buffer is changed, 0 if not changed, or a negative 7488 code on failure. 7489</para> 7490</refsect1> 7491</refentry> 7492 7493<refentry id="API-snd-pcm-lib-free-pages"> 7494<refentryinfo> 7495 <title>LINUX</title> 7496 <productname>Kernel Hackers Manual</productname> 7497 <date>July 2017</date> 7498</refentryinfo> 7499<refmeta> 7500 <refentrytitle><phrase>snd_pcm_lib_free_pages</phrase></refentrytitle> 7501 <manvolnum>9</manvolnum> 7502 <refmiscinfo class="version">4.4.14</refmiscinfo> 7503</refmeta> 7504<refnamediv> 7505 <refname>snd_pcm_lib_free_pages</refname> 7506 <refpurpose> 7507 release the allocated DMA buffer. 7508 </refpurpose> 7509</refnamediv> 7510<refsynopsisdiv> 7511 <title>Synopsis</title> 7512 <funcsynopsis><funcprototype> 7513 <funcdef>int <function>snd_pcm_lib_free_pages </function></funcdef> 7514 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7515 </funcprototype></funcsynopsis> 7516</refsynopsisdiv> 7517<refsect1> 7518 <title>Arguments</title> 7519 <variablelist> 7520 <varlistentry> 7521 <term><parameter>substream</parameter></term> 7522 <listitem> 7523 <para> 7524 the substream to release the DMA buffer 7525 </para> 7526 </listitem> 7527 </varlistentry> 7528 </variablelist> 7529</refsect1> 7530<refsect1> 7531<title>Description</title> 7532<para> 7533 Releases the DMA buffer allocated via <function>snd_pcm_lib_malloc_pages</function>. 7534</para> 7535</refsect1> 7536<refsect1> 7537<title>Return</title> 7538<para> 7539 Zero if successful, or a negative error code on failure. 7540</para> 7541</refsect1> 7542</refentry> 7543 7544<refentry id="API-snd-pcm-lib-free-vmalloc-buffer"> 7545<refentryinfo> 7546 <title>LINUX</title> 7547 <productname>Kernel Hackers Manual</productname> 7548 <date>July 2017</date> 7549</refentryinfo> 7550<refmeta> 7551 <refentrytitle><phrase>snd_pcm_lib_free_vmalloc_buffer</phrase></refentrytitle> 7552 <manvolnum>9</manvolnum> 7553 <refmiscinfo class="version">4.4.14</refmiscinfo> 7554</refmeta> 7555<refnamediv> 7556 <refname>snd_pcm_lib_free_vmalloc_buffer</refname> 7557 <refpurpose> 7558 free vmalloc buffer 7559 </refpurpose> 7560</refnamediv> 7561<refsynopsisdiv> 7562 <title>Synopsis</title> 7563 <funcsynopsis><funcprototype> 7564 <funcdef>int <function>snd_pcm_lib_free_vmalloc_buffer </function></funcdef> 7565 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7566 </funcprototype></funcsynopsis> 7567</refsynopsisdiv> 7568<refsect1> 7569 <title>Arguments</title> 7570 <variablelist> 7571 <varlistentry> 7572 <term><parameter>substream</parameter></term> 7573 <listitem> 7574 <para> 7575 the substream with a buffer allocated by 7576 <function>snd_pcm_lib_alloc_vmalloc_buffer</function> 7577 </para> 7578 </listitem> 7579 </varlistentry> 7580 </variablelist> 7581</refsect1> 7582<refsect1> 7583<title>Return</title> 7584<para> 7585 Zero if successful, or a negative error code on failure. 7586</para> 7587</refsect1> 7588</refentry> 7589 7590<refentry id="API-snd-pcm-lib-get-vmalloc-page"> 7591<refentryinfo> 7592 <title>LINUX</title> 7593 <productname>Kernel Hackers Manual</productname> 7594 <date>July 2017</date> 7595</refentryinfo> 7596<refmeta> 7597 <refentrytitle><phrase>snd_pcm_lib_get_vmalloc_page</phrase></refentrytitle> 7598 <manvolnum>9</manvolnum> 7599 <refmiscinfo class="version">4.4.14</refmiscinfo> 7600</refmeta> 7601<refnamediv> 7602 <refname>snd_pcm_lib_get_vmalloc_page</refname> 7603 <refpurpose> 7604 map vmalloc buffer offset to page struct 7605 </refpurpose> 7606</refnamediv> 7607<refsynopsisdiv> 7608 <title>Synopsis</title> 7609 <funcsynopsis><funcprototype> 7610 <funcdef>struct page * <function>snd_pcm_lib_get_vmalloc_page </function></funcdef> 7611 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7612 <paramdef>unsigned long <parameter>offset</parameter></paramdef> 7613 </funcprototype></funcsynopsis> 7614</refsynopsisdiv> 7615<refsect1> 7616 <title>Arguments</title> 7617 <variablelist> 7618 <varlistentry> 7619 <term><parameter>substream</parameter></term> 7620 <listitem> 7621 <para> 7622 the substream with a buffer allocated by 7623 <function>snd_pcm_lib_alloc_vmalloc_buffer</function> 7624 </para> 7625 </listitem> 7626 </varlistentry> 7627 <varlistentry> 7628 <term><parameter>offset</parameter></term> 7629 <listitem> 7630 <para> 7631 offset in the buffer 7632 </para> 7633 </listitem> 7634 </varlistentry> 7635 </variablelist> 7636</refsect1> 7637<refsect1> 7638<title>Description</title> 7639<para> 7640 This function is to be used as the page callback in the PCM ops. 7641</para> 7642</refsect1> 7643<refsect1> 7644<title>Return</title> 7645<para> 7646 The page struct, or <constant>NULL</constant> on failure. 7647</para> 7648</refsect1> 7649</refentry> 7650 7651 </sect1> 7652 <sect1><title>PCM DMA Engine API</title> 7653<!-- sound/core/pcm_dmaengine.c --> 7654<refentry id="API-snd-hwparams-to-dma-slave-config"> 7655<refentryinfo> 7656 <title>LINUX</title> 7657 <productname>Kernel Hackers Manual</productname> 7658 <date>July 2017</date> 7659</refentryinfo> 7660<refmeta> 7661 <refentrytitle><phrase>snd_hwparams_to_dma_slave_config</phrase></refentrytitle> 7662 <manvolnum>9</manvolnum> 7663 <refmiscinfo class="version">4.4.14</refmiscinfo> 7664</refmeta> 7665<refnamediv> 7666 <refname>snd_hwparams_to_dma_slave_config</refname> 7667 <refpurpose> 7668 Convert hw_params to dma_slave_config 7669 </refpurpose> 7670</refnamediv> 7671<refsynopsisdiv> 7672 <title>Synopsis</title> 7673 <funcsynopsis><funcprototype> 7674 <funcdef>int <function>snd_hwparams_to_dma_slave_config </function></funcdef> 7675 <paramdef>const struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7676 <paramdef>const struct snd_pcm_hw_params * <parameter>params</parameter></paramdef> 7677 <paramdef>struct dma_slave_config * <parameter>slave_config</parameter></paramdef> 7678 </funcprototype></funcsynopsis> 7679</refsynopsisdiv> 7680<refsect1> 7681 <title>Arguments</title> 7682 <variablelist> 7683 <varlistentry> 7684 <term><parameter>substream</parameter></term> 7685 <listitem> 7686 <para> 7687 PCM substream 7688 </para> 7689 </listitem> 7690 </varlistentry> 7691 <varlistentry> 7692 <term><parameter>params</parameter></term> 7693 <listitem> 7694 <para> 7695 hw_params 7696 </para> 7697 </listitem> 7698 </varlistentry> 7699 <varlistentry> 7700 <term><parameter>slave_config</parameter></term> 7701 <listitem> 7702 <para> 7703 DMA slave config 7704 </para> 7705 </listitem> 7706 </varlistentry> 7707 </variablelist> 7708</refsect1> 7709<refsect1> 7710<title>Description</title> 7711<para> 7712 This function can be used to initialize a dma_slave_config from a substream 7713 and hw_params in a dmaengine based PCM driver implementation. 7714</para> 7715</refsect1> 7716</refentry> 7717 7718<refentry id="API-snd-dmaengine-pcm-set-config-from-dai-data"> 7719<refentryinfo> 7720 <title>LINUX</title> 7721 <productname>Kernel Hackers Manual</productname> 7722 <date>July 2017</date> 7723</refentryinfo> 7724<refmeta> 7725 <refentrytitle><phrase>snd_dmaengine_pcm_set_config_from_dai_data</phrase></refentrytitle> 7726 <manvolnum>9</manvolnum> 7727 <refmiscinfo class="version">4.4.14</refmiscinfo> 7728</refmeta> 7729<refnamediv> 7730 <refname>snd_dmaengine_pcm_set_config_from_dai_data</refname> 7731 <refpurpose> 7732 Initializes a dma slave config using DAI DMA data. 7733 </refpurpose> 7734</refnamediv> 7735<refsynopsisdiv> 7736 <title>Synopsis</title> 7737 <funcsynopsis><funcprototype> 7738 <funcdef>void <function>snd_dmaengine_pcm_set_config_from_dai_data </function></funcdef> 7739 <paramdef>const struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7740 <paramdef>const struct snd_dmaengine_dai_dma_data * <parameter>dma_data</parameter></paramdef> 7741 <paramdef>struct dma_slave_config * <parameter>slave_config</parameter></paramdef> 7742 </funcprototype></funcsynopsis> 7743</refsynopsisdiv> 7744<refsect1> 7745 <title>Arguments</title> 7746 <variablelist> 7747 <varlistentry> 7748 <term><parameter>substream</parameter></term> 7749 <listitem> 7750 <para> 7751 PCM substream 7752 </para> 7753 </listitem> 7754 </varlistentry> 7755 <varlistentry> 7756 <term><parameter>dma_data</parameter></term> 7757 <listitem> 7758 <para> 7759 DAI DMA data 7760 </para> 7761 </listitem> 7762 </varlistentry> 7763 <varlistentry> 7764 <term><parameter>slave_config</parameter></term> 7765 <listitem> 7766 <para> 7767 DMA slave configuration 7768 </para> 7769 </listitem> 7770 </varlistentry> 7771 </variablelist> 7772</refsect1> 7773<refsect1> 7774<title>Description</title> 7775<para> 7776 Initializes the {dst,src}_addr, {dst,src}_maxburst, {dst,src}_addr_width and 7777 slave_id fields of the DMA slave config from the same fields of the DAI DMA 7778 data struct. The src and dst fields will be initialized depending on the 7779 direction of the substream. If the substream is a playback stream the dst 7780 fields will be initialized, if it is a capture stream the src fields will be 7781 initialized. The {dst,src}_addr_width field will only be initialized if the 7782 addr_width field of the DAI DMA data struct is not equal to 7783 DMA_SLAVE_BUSWIDTH_UNDEFINED. 7784</para> 7785</refsect1> 7786</refentry> 7787 7788<refentry id="API-snd-dmaengine-pcm-trigger"> 7789<refentryinfo> 7790 <title>LINUX</title> 7791 <productname>Kernel Hackers Manual</productname> 7792 <date>July 2017</date> 7793</refentryinfo> 7794<refmeta> 7795 <refentrytitle><phrase>snd_dmaengine_pcm_trigger</phrase></refentrytitle> 7796 <manvolnum>9</manvolnum> 7797 <refmiscinfo class="version">4.4.14</refmiscinfo> 7798</refmeta> 7799<refnamediv> 7800 <refname>snd_dmaengine_pcm_trigger</refname> 7801 <refpurpose> 7802 dmaengine based PCM trigger implementation 7803 </refpurpose> 7804</refnamediv> 7805<refsynopsisdiv> 7806 <title>Synopsis</title> 7807 <funcsynopsis><funcprototype> 7808 <funcdef>int <function>snd_dmaengine_pcm_trigger </function></funcdef> 7809 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7810 <paramdef>int <parameter>cmd</parameter></paramdef> 7811 </funcprototype></funcsynopsis> 7812</refsynopsisdiv> 7813<refsect1> 7814 <title>Arguments</title> 7815 <variablelist> 7816 <varlistentry> 7817 <term><parameter>substream</parameter></term> 7818 <listitem> 7819 <para> 7820 PCM substream 7821 </para> 7822 </listitem> 7823 </varlistentry> 7824 <varlistentry> 7825 <term><parameter>cmd</parameter></term> 7826 <listitem> 7827 <para> 7828 Trigger command 7829 </para> 7830 </listitem> 7831 </varlistentry> 7832 </variablelist> 7833</refsect1> 7834<refsect1> 7835<title>Description</title> 7836<para> 7837 Returns 0 on success, a negative error code otherwise. 7838 </para><para> 7839 7840 This function can be used as the PCM trigger callback for dmaengine based PCM 7841 driver implementations. 7842</para> 7843</refsect1> 7844</refentry> 7845 7846<refentry id="API-snd-dmaengine-pcm-pointer-no-residue"> 7847<refentryinfo> 7848 <title>LINUX</title> 7849 <productname>Kernel Hackers Manual</productname> 7850 <date>July 2017</date> 7851</refentryinfo> 7852<refmeta> 7853 <refentrytitle><phrase>snd_dmaengine_pcm_pointer_no_residue</phrase></refentrytitle> 7854 <manvolnum>9</manvolnum> 7855 <refmiscinfo class="version">4.4.14</refmiscinfo> 7856</refmeta> 7857<refnamediv> 7858 <refname>snd_dmaengine_pcm_pointer_no_residue</refname> 7859 <refpurpose> 7860 dmaengine based PCM pointer implementation 7861 </refpurpose> 7862</refnamediv> 7863<refsynopsisdiv> 7864 <title>Synopsis</title> 7865 <funcsynopsis><funcprototype> 7866 <funcdef>snd_pcm_uframes_t <function>snd_dmaengine_pcm_pointer_no_residue </function></funcdef> 7867 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7868 </funcprototype></funcsynopsis> 7869</refsynopsisdiv> 7870<refsect1> 7871 <title>Arguments</title> 7872 <variablelist> 7873 <varlistentry> 7874 <term><parameter>substream</parameter></term> 7875 <listitem> 7876 <para> 7877 PCM substream 7878 </para> 7879 </listitem> 7880 </varlistentry> 7881 </variablelist> 7882</refsect1> 7883<refsect1> 7884<title>Description</title> 7885<para> 7886 This function is deprecated and should not be used by new drivers, as its 7887 results may be unreliable. 7888</para> 7889</refsect1> 7890</refentry> 7891 7892<refentry id="API-snd-dmaengine-pcm-pointer"> 7893<refentryinfo> 7894 <title>LINUX</title> 7895 <productname>Kernel Hackers Manual</productname> 7896 <date>July 2017</date> 7897</refentryinfo> 7898<refmeta> 7899 <refentrytitle><phrase>snd_dmaengine_pcm_pointer</phrase></refentrytitle> 7900 <manvolnum>9</manvolnum> 7901 <refmiscinfo class="version">4.4.14</refmiscinfo> 7902</refmeta> 7903<refnamediv> 7904 <refname>snd_dmaengine_pcm_pointer</refname> 7905 <refpurpose> 7906 dmaengine based PCM pointer implementation 7907 </refpurpose> 7908</refnamediv> 7909<refsynopsisdiv> 7910 <title>Synopsis</title> 7911 <funcsynopsis><funcprototype> 7912 <funcdef>snd_pcm_uframes_t <function>snd_dmaengine_pcm_pointer </function></funcdef> 7913 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 7914 </funcprototype></funcsynopsis> 7915</refsynopsisdiv> 7916<refsect1> 7917 <title>Arguments</title> 7918 <variablelist> 7919 <varlistentry> 7920 <term><parameter>substream</parameter></term> 7921 <listitem> 7922 <para> 7923 PCM substream 7924 </para> 7925 </listitem> 7926 </varlistentry> 7927 </variablelist> 7928</refsect1> 7929<refsect1> 7930<title>Description</title> 7931<para> 7932 This function can be used as the PCM pointer callback for dmaengine based PCM 7933 driver implementations. 7934</para> 7935</refsect1> 7936</refentry> 7937 7938<refentry id="API-snd-dmaengine-pcm-request-channel"> 7939<refentryinfo> 7940 <title>LINUX</title> 7941 <productname>Kernel Hackers Manual</productname> 7942 <date>July 2017</date> 7943</refentryinfo> 7944<refmeta> 7945 <refentrytitle><phrase>snd_dmaengine_pcm_request_channel</phrase></refentrytitle> 7946 <manvolnum>9</manvolnum> 7947 <refmiscinfo class="version">4.4.14</refmiscinfo> 7948</refmeta> 7949<refnamediv> 7950 <refname>snd_dmaengine_pcm_request_channel</refname> 7951 <refpurpose> 7952 Request channel for the dmaengine PCM 7953 </refpurpose> 7954</refnamediv> 7955<refsynopsisdiv> 7956 <title>Synopsis</title> 7957 <funcsynopsis><funcprototype> 7958 <funcdef>struct dma_chan * <function>snd_dmaengine_pcm_request_channel </function></funcdef> 7959 <paramdef>dma_filter_fn <parameter>filter_fn</parameter></paramdef> 7960 <paramdef>void * <parameter>filter_data</parameter></paramdef> 7961 </funcprototype></funcsynopsis> 7962</refsynopsisdiv> 7963<refsect1> 7964 <title>Arguments</title> 7965 <variablelist> 7966 <varlistentry> 7967 <term><parameter>filter_fn</parameter></term> 7968 <listitem> 7969 <para> 7970 Filter function used to request the DMA channel 7971 </para> 7972 </listitem> 7973 </varlistentry> 7974 <varlistentry> 7975 <term><parameter>filter_data</parameter></term> 7976 <listitem> 7977 <para> 7978 Data passed to the DMA filter function 7979 </para> 7980 </listitem> 7981 </varlistentry> 7982 </variablelist> 7983</refsect1> 7984<refsect1> 7985<title>Description</title> 7986<para> 7987 Returns NULL or the requested DMA channel. 7988 </para><para> 7989 7990 This function request a DMA channel for usage with dmaengine PCM. 7991</para> 7992</refsect1> 7993</refentry> 7994 7995<refentry id="API-snd-dmaengine-pcm-open"> 7996<refentryinfo> 7997 <title>LINUX</title> 7998 <productname>Kernel Hackers Manual</productname> 7999 <date>July 2017</date> 8000</refentryinfo> 8001<refmeta> 8002 <refentrytitle><phrase>snd_dmaengine_pcm_open</phrase></refentrytitle> 8003 <manvolnum>9</manvolnum> 8004 <refmiscinfo class="version">4.4.14</refmiscinfo> 8005</refmeta> 8006<refnamediv> 8007 <refname>snd_dmaengine_pcm_open</refname> 8008 <refpurpose> 8009 Open a dmaengine based PCM substream 8010 </refpurpose> 8011</refnamediv> 8012<refsynopsisdiv> 8013 <title>Synopsis</title> 8014 <funcsynopsis><funcprototype> 8015 <funcdef>int <function>snd_dmaengine_pcm_open </function></funcdef> 8016 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 8017 <paramdef>struct dma_chan * <parameter>chan</parameter></paramdef> 8018 </funcprototype></funcsynopsis> 8019</refsynopsisdiv> 8020<refsect1> 8021 <title>Arguments</title> 8022 <variablelist> 8023 <varlistentry> 8024 <term><parameter>substream</parameter></term> 8025 <listitem> 8026 <para> 8027 PCM substream 8028 </para> 8029 </listitem> 8030 </varlistentry> 8031 <varlistentry> 8032 <term><parameter>chan</parameter></term> 8033 <listitem> 8034 <para> 8035 DMA channel to use for data transfers 8036 </para> 8037 </listitem> 8038 </varlistentry> 8039 </variablelist> 8040</refsect1> 8041<refsect1> 8042<title>Description</title> 8043<para> 8044 Returns 0 on success, a negative error code otherwise. 8045 </para><para> 8046 8047 The function should usually be called from the pcm open callback. Note that 8048 this function will use private_data field of the substream's runtime. So it 8049 is not available to your pcm driver implementation. 8050</para> 8051</refsect1> 8052</refentry> 8053 8054<refentry id="API-snd-dmaengine-pcm-open-request-chan"> 8055<refentryinfo> 8056 <title>LINUX</title> 8057 <productname>Kernel Hackers Manual</productname> 8058 <date>July 2017</date> 8059</refentryinfo> 8060<refmeta> 8061 <refentrytitle><phrase>snd_dmaengine_pcm_open_request_chan</phrase></refentrytitle> 8062 <manvolnum>9</manvolnum> 8063 <refmiscinfo class="version">4.4.14</refmiscinfo> 8064</refmeta> 8065<refnamediv> 8066 <refname>snd_dmaengine_pcm_open_request_chan</refname> 8067 <refpurpose> 8068 Open a dmaengine based PCM substream and request channel 8069 </refpurpose> 8070</refnamediv> 8071<refsynopsisdiv> 8072 <title>Synopsis</title> 8073 <funcsynopsis><funcprototype> 8074 <funcdef>int <function>snd_dmaengine_pcm_open_request_chan </function></funcdef> 8075 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 8076 <paramdef>dma_filter_fn <parameter>filter_fn</parameter></paramdef> 8077 <paramdef>void * <parameter>filter_data</parameter></paramdef> 8078 </funcprototype></funcsynopsis> 8079</refsynopsisdiv> 8080<refsect1> 8081 <title>Arguments</title> 8082 <variablelist> 8083 <varlistentry> 8084 <term><parameter>substream</parameter></term> 8085 <listitem> 8086 <para> 8087 PCM substream 8088 </para> 8089 </listitem> 8090 </varlistentry> 8091 <varlistentry> 8092 <term><parameter>filter_fn</parameter></term> 8093 <listitem> 8094 <para> 8095 Filter function used to request the DMA channel 8096 </para> 8097 </listitem> 8098 </varlistentry> 8099 <varlistentry> 8100 <term><parameter>filter_data</parameter></term> 8101 <listitem> 8102 <para> 8103 Data passed to the DMA filter function 8104 </para> 8105 </listitem> 8106 </varlistentry> 8107 </variablelist> 8108</refsect1> 8109<refsect1> 8110<title>Description</title> 8111<para> 8112 Returns 0 on success, a negative error code otherwise. 8113 </para><para> 8114 8115 This function will request a DMA channel using the passed filter function and 8116 data. The function should usually be called from the pcm open callback. Note 8117 that this function will use private_data field of the substream's runtime. So 8118 it is not available to your pcm driver implementation. 8119</para> 8120</refsect1> 8121</refentry> 8122 8123<refentry id="API-snd-dmaengine-pcm-close"> 8124<refentryinfo> 8125 <title>LINUX</title> 8126 <productname>Kernel Hackers Manual</productname> 8127 <date>July 2017</date> 8128</refentryinfo> 8129<refmeta> 8130 <refentrytitle><phrase>snd_dmaengine_pcm_close</phrase></refentrytitle> 8131 <manvolnum>9</manvolnum> 8132 <refmiscinfo class="version">4.4.14</refmiscinfo> 8133</refmeta> 8134<refnamediv> 8135 <refname>snd_dmaengine_pcm_close</refname> 8136 <refpurpose> 8137 Close a dmaengine based PCM substream 8138 </refpurpose> 8139</refnamediv> 8140<refsynopsisdiv> 8141 <title>Synopsis</title> 8142 <funcsynopsis><funcprototype> 8143 <funcdef>int <function>snd_dmaengine_pcm_close </function></funcdef> 8144 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 8145 </funcprototype></funcsynopsis> 8146</refsynopsisdiv> 8147<refsect1> 8148 <title>Arguments</title> 8149 <variablelist> 8150 <varlistentry> 8151 <term><parameter>substream</parameter></term> 8152 <listitem> 8153 <para> 8154 PCM substream 8155 </para> 8156 </listitem> 8157 </varlistentry> 8158 </variablelist> 8159</refsect1> 8160</refentry> 8161 8162<refentry id="API-snd-dmaengine-pcm-close-release-chan"> 8163<refentryinfo> 8164 <title>LINUX</title> 8165 <productname>Kernel Hackers Manual</productname> 8166 <date>July 2017</date> 8167</refentryinfo> 8168<refmeta> 8169 <refentrytitle><phrase>snd_dmaengine_pcm_close_release_chan</phrase></refentrytitle> 8170 <manvolnum>9</manvolnum> 8171 <refmiscinfo class="version">4.4.14</refmiscinfo> 8172</refmeta> 8173<refnamediv> 8174 <refname>snd_dmaengine_pcm_close_release_chan</refname> 8175 <refpurpose> 8176 Close a dmaengine based PCM substream and release channel 8177 </refpurpose> 8178</refnamediv> 8179<refsynopsisdiv> 8180 <title>Synopsis</title> 8181 <funcsynopsis><funcprototype> 8182 <funcdef>int <function>snd_dmaengine_pcm_close_release_chan </function></funcdef> 8183 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 8184 </funcprototype></funcsynopsis> 8185</refsynopsisdiv> 8186<refsect1> 8187 <title>Arguments</title> 8188 <variablelist> 8189 <varlistentry> 8190 <term><parameter>substream</parameter></term> 8191 <listitem> 8192 <para> 8193 PCM substream 8194 </para> 8195 </listitem> 8196 </varlistentry> 8197 </variablelist> 8198</refsect1> 8199<refsect1> 8200<title>Description</title> 8201<para> 8202 Releases the DMA channel associated with the PCM substream. 8203</para> 8204</refsect1> 8205</refentry> 8206 8207<!-- include/sound/dmaengine_pcm.h --> 8208<refentry id="API-snd-pcm-substream-to-dma-direction"> 8209<refentryinfo> 8210 <title>LINUX</title> 8211 <productname>Kernel Hackers Manual</productname> 8212 <date>July 2017</date> 8213</refentryinfo> 8214<refmeta> 8215 <refentrytitle><phrase>snd_pcm_substream_to_dma_direction</phrase></refentrytitle> 8216 <manvolnum>9</manvolnum> 8217 <refmiscinfo class="version">4.4.14</refmiscinfo> 8218</refmeta> 8219<refnamediv> 8220 <refname>snd_pcm_substream_to_dma_direction</refname> 8221 <refpurpose> 8222 Get dma_transfer_direction for a PCM substream 8223 </refpurpose> 8224</refnamediv> 8225<refsynopsisdiv> 8226 <title>Synopsis</title> 8227 <funcsynopsis><funcprototype> 8228 <funcdef>enum dma_transfer_direction <function>snd_pcm_substream_to_dma_direction </function></funcdef> 8229 <paramdef>const struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 8230 </funcprototype></funcsynopsis> 8231</refsynopsisdiv> 8232<refsect1> 8233 <title>Arguments</title> 8234 <variablelist> 8235 <varlistentry> 8236 <term><parameter>substream</parameter></term> 8237 <listitem> 8238 <para> 8239 PCM substream 8240 </para> 8241 </listitem> 8242 </varlistentry> 8243 </variablelist> 8244</refsect1> 8245</refentry> 8246 8247<refentry id="API-struct-snd-dmaengine-dai-dma-data"> 8248<refentryinfo> 8249 <title>LINUX</title> 8250 <productname>Kernel Hackers Manual</productname> 8251 <date>July 2017</date> 8252</refentryinfo> 8253<refmeta> 8254 <refentrytitle><phrase>struct snd_dmaengine_dai_dma_data</phrase></refentrytitle> 8255 <manvolnum>9</manvolnum> 8256 <refmiscinfo class="version">4.4.14</refmiscinfo> 8257</refmeta> 8258<refnamediv> 8259 <refname>struct snd_dmaengine_dai_dma_data</refname> 8260 <refpurpose> 8261 DAI DMA configuration data 8262 </refpurpose> 8263</refnamediv> 8264<refsynopsisdiv> 8265 <title>Synopsis</title> 8266 <programlisting> 8267struct snd_dmaengine_dai_dma_data { 8268 dma_addr_t addr; 8269 enum dma_slave_buswidth addr_width; 8270 u32 maxburst; 8271 unsigned int slave_id; 8272 void * filter_data; 8273 const char * chan_name; 8274 unsigned int fifo_size; 8275}; </programlisting> 8276</refsynopsisdiv> 8277 <refsect1> 8278 <title>Members</title> 8279 <variablelist> 8280 <varlistentry> <term>addr</term> 8281 <listitem><para> 8282 Address of the DAI data source or destination register. 8283 </para></listitem> 8284 </varlistentry> 8285 <varlistentry> <term>addr_width</term> 8286 <listitem><para> 8287 Width of the DAI data source or destination register. 8288 </para></listitem> 8289 </varlistentry> 8290 <varlistentry> <term>maxburst</term> 8291 <listitem><para> 8292 Maximum number of words(note: words, as in units of the 8293 src_addr_width member, not bytes) that can be send to or received from the 8294 DAI in one burst. 8295 </para></listitem> 8296 </varlistentry> 8297 <varlistentry> <term>slave_id</term> 8298 <listitem><para> 8299 Slave requester id for the DMA channel. 8300 </para></listitem> 8301 </varlistentry> 8302 <varlistentry> <term>filter_data</term> 8303 <listitem><para> 8304 Custom DMA channel filter data, this will usually be used when 8305 requesting the DMA channel. 8306 </para></listitem> 8307 </varlistentry> 8308 <varlistentry> <term>chan_name</term> 8309 <listitem><para> 8310 Custom channel name to use when requesting DMA channel. 8311 </para></listitem> 8312 </varlistentry> 8313 <varlistentry> <term>fifo_size</term> 8314 <listitem><para> 8315 FIFO size of the DAI controller in bytes 8316 </para></listitem> 8317 </varlistentry> 8318 </variablelist> 8319 </refsect1> 8320</refentry> 8321 8322<refentry id="API-struct-snd-dmaengine-pcm-config"> 8323<refentryinfo> 8324 <title>LINUX</title> 8325 <productname>Kernel Hackers Manual</productname> 8326 <date>July 2017</date> 8327</refentryinfo> 8328<refmeta> 8329 <refentrytitle><phrase>struct snd_dmaengine_pcm_config</phrase></refentrytitle> 8330 <manvolnum>9</manvolnum> 8331 <refmiscinfo class="version">4.4.14</refmiscinfo> 8332</refmeta> 8333<refnamediv> 8334 <refname>struct snd_dmaengine_pcm_config</refname> 8335 <refpurpose> 8336 Configuration data for dmaengine based PCM 8337 </refpurpose> 8338</refnamediv> 8339<refsynopsisdiv> 8340 <title>Synopsis</title> 8341 <programlisting> 8342struct snd_dmaengine_pcm_config { 8343 int (* prepare_slave_config) (struct snd_pcm_substream *substream,struct snd_pcm_hw_params *params,struct dma_slave_config *slave_config); 8344 struct dma_chan *(* compat_request_channel) (struct snd_soc_pcm_runtime *rtd,struct snd_pcm_substream *substream); 8345 dma_filter_fn compat_filter_fn; 8346 struct device * dma_dev; 8347 const char * chan_names[SNDRV_PCM_STREAM_LAST + 1]; 8348 const struct snd_pcm_hardware * pcm_hardware; 8349 unsigned int prealloc_buffer_size; 8350}; </programlisting> 8351</refsynopsisdiv> 8352 <refsect1> 8353 <title>Members</title> 8354 <variablelist> 8355 <varlistentry> <term>prepare_slave_config</term> 8356 <listitem><para> 8357 Callback used to fill in the DMA slave_config for a 8358 PCM substream. Will be called from the PCM drivers hwparams callback. 8359 </para></listitem> 8360 </varlistentry> 8361 <varlistentry> <term>compat_request_channel</term> 8362 <listitem><para> 8363 Callback to request a DMA channel for platforms 8364 which do not use devicetree. 8365 </para></listitem> 8366 </varlistentry> 8367 <varlistentry> <term>compat_filter_fn</term> 8368 <listitem><para> 8369 Will be used as the filter function when requesting a 8370 channel for platforms which do not use devicetree. The filter parameter 8371 will be the DAI's DMA data. 8372 </para></listitem> 8373 </varlistentry> 8374 <varlistentry> <term>dma_dev</term> 8375 <listitem><para> 8376 If set, request DMA channel on this device rather than the DAI 8377 device. 8378 </para></listitem> 8379 </varlistentry> 8380 <varlistentry> <term>chan_names[SNDRV_PCM_STREAM_LAST + 1]</term> 8381 <listitem><para> 8382 If set, these custom DMA channel names will be requested at 8383 registration time. 8384 </para></listitem> 8385 </varlistentry> 8386 <varlistentry> <term>pcm_hardware</term> 8387 <listitem><para> 8388 snd_pcm_hardware struct to be used for the PCM. 8389 </para></listitem> 8390 </varlistentry> 8391 <varlistentry> <term>prealloc_buffer_size</term> 8392 <listitem><para> 8393 Size of the preallocated audio buffer. 8394 </para></listitem> 8395 </varlistentry> 8396 </variablelist> 8397 </refsect1> 8398<refsect1> 8399<title>Note</title> 8400<para> 8401 If both compat_request_channel and compat_filter_fn are set 8402 compat_request_channel will be used to request the channel and 8403 compat_filter_fn will be ignored. Otherwise the channel will be requested 8404 using dma_request_channel with compat_filter_fn as the filter function. 8405</para> 8406</refsect1> 8407</refentry> 8408 8409 </sect1> 8410 </chapter> 8411 <chapter><title>Control/Mixer API</title> 8412 <sect1><title>General Control Interface</title> 8413<!-- sound/core/control.c --> 8414<refentry id="API-snd-ctl-notify"> 8415<refentryinfo> 8416 <title>LINUX</title> 8417 <productname>Kernel Hackers Manual</productname> 8418 <date>July 2017</date> 8419</refentryinfo> 8420<refmeta> 8421 <refentrytitle><phrase>snd_ctl_notify</phrase></refentrytitle> 8422 <manvolnum>9</manvolnum> 8423 <refmiscinfo class="version">4.4.14</refmiscinfo> 8424</refmeta> 8425<refnamediv> 8426 <refname>snd_ctl_notify</refname> 8427 <refpurpose> 8428 Send notification to user-space for a control change 8429 </refpurpose> 8430</refnamediv> 8431<refsynopsisdiv> 8432 <title>Synopsis</title> 8433 <funcsynopsis><funcprototype> 8434 <funcdef>void <function>snd_ctl_notify </function></funcdef> 8435 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8436 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 8437 <paramdef>struct snd_ctl_elem_id * <parameter>id</parameter></paramdef> 8438 </funcprototype></funcsynopsis> 8439</refsynopsisdiv> 8440<refsect1> 8441 <title>Arguments</title> 8442 <variablelist> 8443 <varlistentry> 8444 <term><parameter>card</parameter></term> 8445 <listitem> 8446 <para> 8447 the card to send notification 8448 </para> 8449 </listitem> 8450 </varlistentry> 8451 <varlistentry> 8452 <term><parameter>mask</parameter></term> 8453 <listitem> 8454 <para> 8455 the event mask, SNDRV_CTL_EVENT_* 8456 </para> 8457 </listitem> 8458 </varlistentry> 8459 <varlistentry> 8460 <term><parameter>id</parameter></term> 8461 <listitem> 8462 <para> 8463 the ctl element id to send notification 8464 </para> 8465 </listitem> 8466 </varlistentry> 8467 </variablelist> 8468</refsect1> 8469<refsect1> 8470<title>Description</title> 8471<para> 8472 This function adds an event record with the given id and mask, appends 8473 to the list and wakes up the user-space for notification. This can be 8474 called in the atomic context. 8475</para> 8476</refsect1> 8477</refentry> 8478 8479<refentry id="API-snd-ctl-new1"> 8480<refentryinfo> 8481 <title>LINUX</title> 8482 <productname>Kernel Hackers Manual</productname> 8483 <date>July 2017</date> 8484</refentryinfo> 8485<refmeta> 8486 <refentrytitle><phrase>snd_ctl_new1</phrase></refentrytitle> 8487 <manvolnum>9</manvolnum> 8488 <refmiscinfo class="version">4.4.14</refmiscinfo> 8489</refmeta> 8490<refnamediv> 8491 <refname>snd_ctl_new1</refname> 8492 <refpurpose> 8493 create a control instance from the template 8494 </refpurpose> 8495</refnamediv> 8496<refsynopsisdiv> 8497 <title>Synopsis</title> 8498 <funcsynopsis><funcprototype> 8499 <funcdef>struct snd_kcontrol * <function>snd_ctl_new1 </function></funcdef> 8500 <paramdef>const struct snd_kcontrol_new * <parameter>ncontrol</parameter></paramdef> 8501 <paramdef>void * <parameter>private_data</parameter></paramdef> 8502 </funcprototype></funcsynopsis> 8503</refsynopsisdiv> 8504<refsect1> 8505 <title>Arguments</title> 8506 <variablelist> 8507 <varlistentry> 8508 <term><parameter>ncontrol</parameter></term> 8509 <listitem> 8510 <para> 8511 the initialization record 8512 </para> 8513 </listitem> 8514 </varlistentry> 8515 <varlistentry> 8516 <term><parameter>private_data</parameter></term> 8517 <listitem> 8518 <para> 8519 the private data to set 8520 </para> 8521 </listitem> 8522 </varlistentry> 8523 </variablelist> 8524</refsect1> 8525<refsect1> 8526<title>Description</title> 8527<para> 8528 Allocates a new struct snd_kcontrol instance and initialize from the given 8529 template. When the access field of ncontrol is 0, it's assumed as 8530 READWRITE access. When the count field is 0, it's assumes as one. 8531</para> 8532</refsect1> 8533<refsect1> 8534<title>Return</title> 8535<para> 8536 The pointer of the newly generated instance, or <constant>NULL</constant> on failure. 8537</para> 8538</refsect1> 8539</refentry> 8540 8541<refentry id="API-snd-ctl-free-one"> 8542<refentryinfo> 8543 <title>LINUX</title> 8544 <productname>Kernel Hackers Manual</productname> 8545 <date>July 2017</date> 8546</refentryinfo> 8547<refmeta> 8548 <refentrytitle><phrase>snd_ctl_free_one</phrase></refentrytitle> 8549 <manvolnum>9</manvolnum> 8550 <refmiscinfo class="version">4.4.14</refmiscinfo> 8551</refmeta> 8552<refnamediv> 8553 <refname>snd_ctl_free_one</refname> 8554 <refpurpose> 8555 release the control instance 8556 </refpurpose> 8557</refnamediv> 8558<refsynopsisdiv> 8559 <title>Synopsis</title> 8560 <funcsynopsis><funcprototype> 8561 <funcdef>void <function>snd_ctl_free_one </function></funcdef> 8562 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 8563 </funcprototype></funcsynopsis> 8564</refsynopsisdiv> 8565<refsect1> 8566 <title>Arguments</title> 8567 <variablelist> 8568 <varlistentry> 8569 <term><parameter>kcontrol</parameter></term> 8570 <listitem> 8571 <para> 8572 the control instance 8573 </para> 8574 </listitem> 8575 </varlistentry> 8576 </variablelist> 8577</refsect1> 8578<refsect1> 8579<title>Description</title> 8580<para> 8581 Releases the control instance created via <function>snd_ctl_new</function> 8582 or <function>snd_ctl_new1</function>. 8583 Don't call this after the control was added to the card. 8584</para> 8585</refsect1> 8586</refentry> 8587 8588<refentry id="API-snd-ctl-add"> 8589<refentryinfo> 8590 <title>LINUX</title> 8591 <productname>Kernel Hackers Manual</productname> 8592 <date>July 2017</date> 8593</refentryinfo> 8594<refmeta> 8595 <refentrytitle><phrase>snd_ctl_add</phrase></refentrytitle> 8596 <manvolnum>9</manvolnum> 8597 <refmiscinfo class="version">4.4.14</refmiscinfo> 8598</refmeta> 8599<refnamediv> 8600 <refname>snd_ctl_add</refname> 8601 <refpurpose> 8602 add the control instance to the card 8603 </refpurpose> 8604</refnamediv> 8605<refsynopsisdiv> 8606 <title>Synopsis</title> 8607 <funcsynopsis><funcprototype> 8608 <funcdef>int <function>snd_ctl_add </function></funcdef> 8609 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8610 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 8611 </funcprototype></funcsynopsis> 8612</refsynopsisdiv> 8613<refsect1> 8614 <title>Arguments</title> 8615 <variablelist> 8616 <varlistentry> 8617 <term><parameter>card</parameter></term> 8618 <listitem> 8619 <para> 8620 the card instance 8621 </para> 8622 </listitem> 8623 </varlistentry> 8624 <varlistentry> 8625 <term><parameter>kcontrol</parameter></term> 8626 <listitem> 8627 <para> 8628 the control instance to add 8629 </para> 8630 </listitem> 8631 </varlistentry> 8632 </variablelist> 8633</refsect1> 8634<refsect1> 8635<title>Description</title> 8636<para> 8637 Adds the control instance created via <function>snd_ctl_new</function> or 8638 <function>snd_ctl_new1</function> to the given card. Assigns also an unique 8639 numid used for fast search. 8640 </para><para> 8641 8642 It frees automatically the control which cannot be added. 8643</para> 8644</refsect1> 8645<refsect1> 8646<title>Return</title> 8647<para> 8648 Zero if successful, or a negative error code on failure. 8649</para> 8650</refsect1> 8651</refentry> 8652 8653<refentry id="API-snd-ctl-replace"> 8654<refentryinfo> 8655 <title>LINUX</title> 8656 <productname>Kernel Hackers Manual</productname> 8657 <date>July 2017</date> 8658</refentryinfo> 8659<refmeta> 8660 <refentrytitle><phrase>snd_ctl_replace</phrase></refentrytitle> 8661 <manvolnum>9</manvolnum> 8662 <refmiscinfo class="version">4.4.14</refmiscinfo> 8663</refmeta> 8664<refnamediv> 8665 <refname>snd_ctl_replace</refname> 8666 <refpurpose> 8667 replace the control instance of the card 8668 </refpurpose> 8669</refnamediv> 8670<refsynopsisdiv> 8671 <title>Synopsis</title> 8672 <funcsynopsis><funcprototype> 8673 <funcdef>int <function>snd_ctl_replace </function></funcdef> 8674 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8675 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 8676 <paramdef>bool <parameter>add_on_replace</parameter></paramdef> 8677 </funcprototype></funcsynopsis> 8678</refsynopsisdiv> 8679<refsect1> 8680 <title>Arguments</title> 8681 <variablelist> 8682 <varlistentry> 8683 <term><parameter>card</parameter></term> 8684 <listitem> 8685 <para> 8686 the card instance 8687 </para> 8688 </listitem> 8689 </varlistentry> 8690 <varlistentry> 8691 <term><parameter>kcontrol</parameter></term> 8692 <listitem> 8693 <para> 8694 the control instance to replace 8695 </para> 8696 </listitem> 8697 </varlistentry> 8698 <varlistentry> 8699 <term><parameter>add_on_replace</parameter></term> 8700 <listitem> 8701 <para> 8702 add the control if not already added 8703 </para> 8704 </listitem> 8705 </varlistentry> 8706 </variablelist> 8707</refsect1> 8708<refsect1> 8709<title>Description</title> 8710<para> 8711 Replaces the given control. If the given control does not exist 8712 and the add_on_replace flag is set, the control is added. If the 8713 control exists, it is destroyed first. 8714 </para><para> 8715 8716 It frees automatically the control which cannot be added or replaced. 8717</para> 8718</refsect1> 8719<refsect1> 8720<title>Return</title> 8721<para> 8722 Zero if successful, or a negative error code on failure. 8723</para> 8724</refsect1> 8725</refentry> 8726 8727<refentry id="API-snd-ctl-remove"> 8728<refentryinfo> 8729 <title>LINUX</title> 8730 <productname>Kernel Hackers Manual</productname> 8731 <date>July 2017</date> 8732</refentryinfo> 8733<refmeta> 8734 <refentrytitle><phrase>snd_ctl_remove</phrase></refentrytitle> 8735 <manvolnum>9</manvolnum> 8736 <refmiscinfo class="version">4.4.14</refmiscinfo> 8737</refmeta> 8738<refnamediv> 8739 <refname>snd_ctl_remove</refname> 8740 <refpurpose> 8741 remove the control from the card and release it 8742 </refpurpose> 8743</refnamediv> 8744<refsynopsisdiv> 8745 <title>Synopsis</title> 8746 <funcsynopsis><funcprototype> 8747 <funcdef>int <function>snd_ctl_remove </function></funcdef> 8748 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8749 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 8750 </funcprototype></funcsynopsis> 8751</refsynopsisdiv> 8752<refsect1> 8753 <title>Arguments</title> 8754 <variablelist> 8755 <varlistentry> 8756 <term><parameter>card</parameter></term> 8757 <listitem> 8758 <para> 8759 the card instance 8760 </para> 8761 </listitem> 8762 </varlistentry> 8763 <varlistentry> 8764 <term><parameter>kcontrol</parameter></term> 8765 <listitem> 8766 <para> 8767 the control instance to remove 8768 </para> 8769 </listitem> 8770 </varlistentry> 8771 </variablelist> 8772</refsect1> 8773<refsect1> 8774<title>Description</title> 8775<para> 8776 Removes the control from the card and then releases the instance. 8777 You don't need to call <function>snd_ctl_free_one</function>. You must be in 8778 the write lock - down_write(<structname>card</structname>->controls_rwsem). 8779</para> 8780</refsect1> 8781<refsect1> 8782<title>Return</title> 8783<para> 8784 0 if successful, or a negative error code on failure. 8785</para> 8786</refsect1> 8787</refentry> 8788 8789<refentry id="API-snd-ctl-remove-id"> 8790<refentryinfo> 8791 <title>LINUX</title> 8792 <productname>Kernel Hackers Manual</productname> 8793 <date>July 2017</date> 8794</refentryinfo> 8795<refmeta> 8796 <refentrytitle><phrase>snd_ctl_remove_id</phrase></refentrytitle> 8797 <manvolnum>9</manvolnum> 8798 <refmiscinfo class="version">4.4.14</refmiscinfo> 8799</refmeta> 8800<refnamediv> 8801 <refname>snd_ctl_remove_id</refname> 8802 <refpurpose> 8803 remove the control of the given id and release it 8804 </refpurpose> 8805</refnamediv> 8806<refsynopsisdiv> 8807 <title>Synopsis</title> 8808 <funcsynopsis><funcprototype> 8809 <funcdef>int <function>snd_ctl_remove_id </function></funcdef> 8810 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8811 <paramdef>struct snd_ctl_elem_id * <parameter>id</parameter></paramdef> 8812 </funcprototype></funcsynopsis> 8813</refsynopsisdiv> 8814<refsect1> 8815 <title>Arguments</title> 8816 <variablelist> 8817 <varlistentry> 8818 <term><parameter>card</parameter></term> 8819 <listitem> 8820 <para> 8821 the card instance 8822 </para> 8823 </listitem> 8824 </varlistentry> 8825 <varlistentry> 8826 <term><parameter>id</parameter></term> 8827 <listitem> 8828 <para> 8829 the control id to remove 8830 </para> 8831 </listitem> 8832 </varlistentry> 8833 </variablelist> 8834</refsect1> 8835<refsect1> 8836<title>Description</title> 8837<para> 8838 Finds the control instance with the given id, removes it from the 8839 card list and releases it. 8840</para> 8841</refsect1> 8842<refsect1> 8843<title>Return</title> 8844<para> 8845 0 if successful, or a negative error code on failure. 8846</para> 8847</refsect1> 8848</refentry> 8849 8850<refentry id="API-snd-ctl-activate-id"> 8851<refentryinfo> 8852 <title>LINUX</title> 8853 <productname>Kernel Hackers Manual</productname> 8854 <date>July 2017</date> 8855</refentryinfo> 8856<refmeta> 8857 <refentrytitle><phrase>snd_ctl_activate_id</phrase></refentrytitle> 8858 <manvolnum>9</manvolnum> 8859 <refmiscinfo class="version">4.4.14</refmiscinfo> 8860</refmeta> 8861<refnamediv> 8862 <refname>snd_ctl_activate_id</refname> 8863 <refpurpose> 8864 activate/inactivate the control of the given id 8865 </refpurpose> 8866</refnamediv> 8867<refsynopsisdiv> 8868 <title>Synopsis</title> 8869 <funcsynopsis><funcprototype> 8870 <funcdef>int <function>snd_ctl_activate_id </function></funcdef> 8871 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8872 <paramdef>struct snd_ctl_elem_id * <parameter>id</parameter></paramdef> 8873 <paramdef>int <parameter>active</parameter></paramdef> 8874 </funcprototype></funcsynopsis> 8875</refsynopsisdiv> 8876<refsect1> 8877 <title>Arguments</title> 8878 <variablelist> 8879 <varlistentry> 8880 <term><parameter>card</parameter></term> 8881 <listitem> 8882 <para> 8883 the card instance 8884 </para> 8885 </listitem> 8886 </varlistentry> 8887 <varlistentry> 8888 <term><parameter>id</parameter></term> 8889 <listitem> 8890 <para> 8891 the control id to activate/inactivate 8892 </para> 8893 </listitem> 8894 </varlistentry> 8895 <varlistentry> 8896 <term><parameter>active</parameter></term> 8897 <listitem> 8898 <para> 8899 non-zero to activate 8900 </para> 8901 </listitem> 8902 </varlistentry> 8903 </variablelist> 8904</refsect1> 8905<refsect1> 8906<title>Description</title> 8907<para> 8908 Finds the control instance with the given id, and activate or 8909 inactivate the control together with notification, if changed. 8910 The given ID data is filled with full information. 8911</para> 8912</refsect1> 8913<refsect1> 8914<title>Return</title> 8915<para> 8916 0 if unchanged, 1 if changed, or a negative error code on failure. 8917</para> 8918</refsect1> 8919</refentry> 8920 8921<refentry id="API-snd-ctl-rename-id"> 8922<refentryinfo> 8923 <title>LINUX</title> 8924 <productname>Kernel Hackers Manual</productname> 8925 <date>July 2017</date> 8926</refentryinfo> 8927<refmeta> 8928 <refentrytitle><phrase>snd_ctl_rename_id</phrase></refentrytitle> 8929 <manvolnum>9</manvolnum> 8930 <refmiscinfo class="version">4.4.14</refmiscinfo> 8931</refmeta> 8932<refnamediv> 8933 <refname>snd_ctl_rename_id</refname> 8934 <refpurpose> 8935 replace the id of a control on the card 8936 </refpurpose> 8937</refnamediv> 8938<refsynopsisdiv> 8939 <title>Synopsis</title> 8940 <funcsynopsis><funcprototype> 8941 <funcdef>int <function>snd_ctl_rename_id </function></funcdef> 8942 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 8943 <paramdef>struct snd_ctl_elem_id * <parameter>src_id</parameter></paramdef> 8944 <paramdef>struct snd_ctl_elem_id * <parameter>dst_id</parameter></paramdef> 8945 </funcprototype></funcsynopsis> 8946</refsynopsisdiv> 8947<refsect1> 8948 <title>Arguments</title> 8949 <variablelist> 8950 <varlistentry> 8951 <term><parameter>card</parameter></term> 8952 <listitem> 8953 <para> 8954 the card instance 8955 </para> 8956 </listitem> 8957 </varlistentry> 8958 <varlistentry> 8959 <term><parameter>src_id</parameter></term> 8960 <listitem> 8961 <para> 8962 the old id 8963 </para> 8964 </listitem> 8965 </varlistentry> 8966 <varlistentry> 8967 <term><parameter>dst_id</parameter></term> 8968 <listitem> 8969 <para> 8970 the new id 8971 </para> 8972 </listitem> 8973 </varlistentry> 8974 </variablelist> 8975</refsect1> 8976<refsect1> 8977<title>Description</title> 8978<para> 8979 Finds the control with the old id from the card, and replaces the 8980 id with the new one. 8981</para> 8982</refsect1> 8983<refsect1> 8984<title>Return</title> 8985<para> 8986 Zero if successful, or a negative error code on failure. 8987</para> 8988</refsect1> 8989</refentry> 8990 8991<refentry id="API-snd-ctl-find-numid"> 8992<refentryinfo> 8993 <title>LINUX</title> 8994 <productname>Kernel Hackers Manual</productname> 8995 <date>July 2017</date> 8996</refentryinfo> 8997<refmeta> 8998 <refentrytitle><phrase>snd_ctl_find_numid</phrase></refentrytitle> 8999 <manvolnum>9</manvolnum> 9000 <refmiscinfo class="version">4.4.14</refmiscinfo> 9001</refmeta> 9002<refnamediv> 9003 <refname>snd_ctl_find_numid</refname> 9004 <refpurpose> 9005 find the control instance with the given number-id 9006 </refpurpose> 9007</refnamediv> 9008<refsynopsisdiv> 9009 <title>Synopsis</title> 9010 <funcsynopsis><funcprototype> 9011 <funcdef>struct snd_kcontrol * <function>snd_ctl_find_numid </function></funcdef> 9012 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 9013 <paramdef>unsigned int <parameter>numid</parameter></paramdef> 9014 </funcprototype></funcsynopsis> 9015</refsynopsisdiv> 9016<refsect1> 9017 <title>Arguments</title> 9018 <variablelist> 9019 <varlistentry> 9020 <term><parameter>card</parameter></term> 9021 <listitem> 9022 <para> 9023 the card instance 9024 </para> 9025 </listitem> 9026 </varlistentry> 9027 <varlistentry> 9028 <term><parameter>numid</parameter></term> 9029 <listitem> 9030 <para> 9031 the number-id to search 9032 </para> 9033 </listitem> 9034 </varlistentry> 9035 </variablelist> 9036</refsect1> 9037<refsect1> 9038<title>Description</title> 9039<para> 9040 Finds the control instance with the given number-id from the card. 9041 </para><para> 9042 9043 The caller must down card->controls_rwsem before calling this function 9044 (if the race condition can happen). 9045</para> 9046</refsect1> 9047<refsect1> 9048<title>Return</title> 9049<para> 9050 The pointer of the instance if found, or <constant>NULL</constant> if not. 9051</para> 9052</refsect1> 9053</refentry> 9054 9055<refentry id="API-snd-ctl-find-id"> 9056<refentryinfo> 9057 <title>LINUX</title> 9058 <productname>Kernel Hackers Manual</productname> 9059 <date>July 2017</date> 9060</refentryinfo> 9061<refmeta> 9062 <refentrytitle><phrase>snd_ctl_find_id</phrase></refentrytitle> 9063 <manvolnum>9</manvolnum> 9064 <refmiscinfo class="version">4.4.14</refmiscinfo> 9065</refmeta> 9066<refnamediv> 9067 <refname>snd_ctl_find_id</refname> 9068 <refpurpose> 9069 find the control instance with the given id 9070 </refpurpose> 9071</refnamediv> 9072<refsynopsisdiv> 9073 <title>Synopsis</title> 9074 <funcsynopsis><funcprototype> 9075 <funcdef>struct snd_kcontrol * <function>snd_ctl_find_id </function></funcdef> 9076 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 9077 <paramdef>struct snd_ctl_elem_id * <parameter>id</parameter></paramdef> 9078 </funcprototype></funcsynopsis> 9079</refsynopsisdiv> 9080<refsect1> 9081 <title>Arguments</title> 9082 <variablelist> 9083 <varlistentry> 9084 <term><parameter>card</parameter></term> 9085 <listitem> 9086 <para> 9087 the card instance 9088 </para> 9089 </listitem> 9090 </varlistentry> 9091 <varlistentry> 9092 <term><parameter>id</parameter></term> 9093 <listitem> 9094 <para> 9095 the id to search 9096 </para> 9097 </listitem> 9098 </varlistentry> 9099 </variablelist> 9100</refsect1> 9101<refsect1> 9102<title>Description</title> 9103<para> 9104 Finds the control instance with the given id from the card. 9105 </para><para> 9106 9107 The caller must down card->controls_rwsem before calling this function 9108 (if the race condition can happen). 9109</para> 9110</refsect1> 9111<refsect1> 9112<title>Return</title> 9113<para> 9114 The pointer of the instance if found, or <constant>NULL</constant> if not. 9115</para> 9116</refsect1> 9117</refentry> 9118 9119<refentry id="API-snd-ctl-register-ioctl"> 9120<refentryinfo> 9121 <title>LINUX</title> 9122 <productname>Kernel Hackers Manual</productname> 9123 <date>July 2017</date> 9124</refentryinfo> 9125<refmeta> 9126 <refentrytitle><phrase>snd_ctl_register_ioctl</phrase></refentrytitle> 9127 <manvolnum>9</manvolnum> 9128 <refmiscinfo class="version">4.4.14</refmiscinfo> 9129</refmeta> 9130<refnamediv> 9131 <refname>snd_ctl_register_ioctl</refname> 9132 <refpurpose> 9133 register the device-specific control-ioctls 9134 </refpurpose> 9135</refnamediv> 9136<refsynopsisdiv> 9137 <title>Synopsis</title> 9138 <funcsynopsis><funcprototype> 9139 <funcdef>int <function>snd_ctl_register_ioctl </function></funcdef> 9140 <paramdef>snd_kctl_ioctl_func_t <parameter>fcn</parameter></paramdef> 9141 </funcprototype></funcsynopsis> 9142</refsynopsisdiv> 9143<refsect1> 9144 <title>Arguments</title> 9145 <variablelist> 9146 <varlistentry> 9147 <term><parameter>fcn</parameter></term> 9148 <listitem> 9149 <para> 9150 ioctl callback function 9151 </para> 9152 </listitem> 9153 </varlistentry> 9154 </variablelist> 9155</refsect1> 9156<refsect1> 9157<title>Description</title> 9158<para> 9159 called from each device manager like pcm.c, hwdep.c, etc. 9160</para> 9161</refsect1> 9162</refentry> 9163 9164<refentry id="API-snd-ctl-register-ioctl-compat"> 9165<refentryinfo> 9166 <title>LINUX</title> 9167 <productname>Kernel Hackers Manual</productname> 9168 <date>July 2017</date> 9169</refentryinfo> 9170<refmeta> 9171 <refentrytitle><phrase>snd_ctl_register_ioctl_compat</phrase></refentrytitle> 9172 <manvolnum>9</manvolnum> 9173 <refmiscinfo class="version">4.4.14</refmiscinfo> 9174</refmeta> 9175<refnamediv> 9176 <refname>snd_ctl_register_ioctl_compat</refname> 9177 <refpurpose> 9178 register the device-specific 32bit compat control-ioctls 9179 </refpurpose> 9180</refnamediv> 9181<refsynopsisdiv> 9182 <title>Synopsis</title> 9183 <funcsynopsis><funcprototype> 9184 <funcdef>int <function>snd_ctl_register_ioctl_compat </function></funcdef> 9185 <paramdef>snd_kctl_ioctl_func_t <parameter>fcn</parameter></paramdef> 9186 </funcprototype></funcsynopsis> 9187</refsynopsisdiv> 9188<refsect1> 9189 <title>Arguments</title> 9190 <variablelist> 9191 <varlistentry> 9192 <term><parameter>fcn</parameter></term> 9193 <listitem> 9194 <para> 9195 ioctl callback function 9196 </para> 9197 </listitem> 9198 </varlistentry> 9199 </variablelist> 9200</refsect1> 9201</refentry> 9202 9203<refentry id="API-snd-ctl-unregister-ioctl"> 9204<refentryinfo> 9205 <title>LINUX</title> 9206 <productname>Kernel Hackers Manual</productname> 9207 <date>July 2017</date> 9208</refentryinfo> 9209<refmeta> 9210 <refentrytitle><phrase>snd_ctl_unregister_ioctl</phrase></refentrytitle> 9211 <manvolnum>9</manvolnum> 9212 <refmiscinfo class="version">4.4.14</refmiscinfo> 9213</refmeta> 9214<refnamediv> 9215 <refname>snd_ctl_unregister_ioctl</refname> 9216 <refpurpose> 9217 de-register the device-specific control-ioctls 9218 </refpurpose> 9219</refnamediv> 9220<refsynopsisdiv> 9221 <title>Synopsis</title> 9222 <funcsynopsis><funcprototype> 9223 <funcdef>int <function>snd_ctl_unregister_ioctl </function></funcdef> 9224 <paramdef>snd_kctl_ioctl_func_t <parameter>fcn</parameter></paramdef> 9225 </funcprototype></funcsynopsis> 9226</refsynopsisdiv> 9227<refsect1> 9228 <title>Arguments</title> 9229 <variablelist> 9230 <varlistentry> 9231 <term><parameter>fcn</parameter></term> 9232 <listitem> 9233 <para> 9234 ioctl callback function to unregister 9235 </para> 9236 </listitem> 9237 </varlistentry> 9238 </variablelist> 9239</refsect1> 9240</refentry> 9241 9242<refentry id="API-snd-ctl-unregister-ioctl-compat"> 9243<refentryinfo> 9244 <title>LINUX</title> 9245 <productname>Kernel Hackers Manual</productname> 9246 <date>July 2017</date> 9247</refentryinfo> 9248<refmeta> 9249 <refentrytitle><phrase>snd_ctl_unregister_ioctl_compat</phrase></refentrytitle> 9250 <manvolnum>9</manvolnum> 9251 <refmiscinfo class="version">4.4.14</refmiscinfo> 9252</refmeta> 9253<refnamediv> 9254 <refname>snd_ctl_unregister_ioctl_compat</refname> 9255 <refpurpose> 9256 de-register the device-specific compat 32bit control-ioctls 9257 </refpurpose> 9258</refnamediv> 9259<refsynopsisdiv> 9260 <title>Synopsis</title> 9261 <funcsynopsis><funcprototype> 9262 <funcdef>int <function>snd_ctl_unregister_ioctl_compat </function></funcdef> 9263 <paramdef>snd_kctl_ioctl_func_t <parameter>fcn</parameter></paramdef> 9264 </funcprototype></funcsynopsis> 9265</refsynopsisdiv> 9266<refsect1> 9267 <title>Arguments</title> 9268 <variablelist> 9269 <varlistentry> 9270 <term><parameter>fcn</parameter></term> 9271 <listitem> 9272 <para> 9273 ioctl callback function to unregister 9274 </para> 9275 </listitem> 9276 </varlistentry> 9277 </variablelist> 9278</refsect1> 9279</refentry> 9280 9281<refentry id="API-snd-ctl-boolean-mono-info"> 9282<refentryinfo> 9283 <title>LINUX</title> 9284 <productname>Kernel Hackers Manual</productname> 9285 <date>July 2017</date> 9286</refentryinfo> 9287<refmeta> 9288 <refentrytitle><phrase>snd_ctl_boolean_mono_info</phrase></refentrytitle> 9289 <manvolnum>9</manvolnum> 9290 <refmiscinfo class="version">4.4.14</refmiscinfo> 9291</refmeta> 9292<refnamediv> 9293 <refname>snd_ctl_boolean_mono_info</refname> 9294 <refpurpose> 9295 Helper function for a standard boolean info callback with a mono channel 9296 </refpurpose> 9297</refnamediv> 9298<refsynopsisdiv> 9299 <title>Synopsis</title> 9300 <funcsynopsis><funcprototype> 9301 <funcdef>int <function>snd_ctl_boolean_mono_info </function></funcdef> 9302 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 9303 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 9304 </funcprototype></funcsynopsis> 9305</refsynopsisdiv> 9306<refsect1> 9307 <title>Arguments</title> 9308 <variablelist> 9309 <varlistentry> 9310 <term><parameter>kcontrol</parameter></term> 9311 <listitem> 9312 <para> 9313 the kcontrol instance 9314 </para> 9315 </listitem> 9316 </varlistentry> 9317 <varlistentry> 9318 <term><parameter>uinfo</parameter></term> 9319 <listitem> 9320 <para> 9321 info to store 9322 </para> 9323 </listitem> 9324 </varlistentry> 9325 </variablelist> 9326</refsect1> 9327<refsect1> 9328<title>Description</title> 9329<para> 9330 This is a function that can be used as info callback for a standard 9331 boolean control with a single mono channel. 9332</para> 9333</refsect1> 9334</refentry> 9335 9336<refentry id="API-snd-ctl-boolean-stereo-info"> 9337<refentryinfo> 9338 <title>LINUX</title> 9339 <productname>Kernel Hackers Manual</productname> 9340 <date>July 2017</date> 9341</refentryinfo> 9342<refmeta> 9343 <refentrytitle><phrase>snd_ctl_boolean_stereo_info</phrase></refentrytitle> 9344 <manvolnum>9</manvolnum> 9345 <refmiscinfo class="version">4.4.14</refmiscinfo> 9346</refmeta> 9347<refnamediv> 9348 <refname>snd_ctl_boolean_stereo_info</refname> 9349 <refpurpose> 9350 Helper function for a standard boolean info callback with stereo two channels 9351 </refpurpose> 9352</refnamediv> 9353<refsynopsisdiv> 9354 <title>Synopsis</title> 9355 <funcsynopsis><funcprototype> 9356 <funcdef>int <function>snd_ctl_boolean_stereo_info </function></funcdef> 9357 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 9358 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 9359 </funcprototype></funcsynopsis> 9360</refsynopsisdiv> 9361<refsect1> 9362 <title>Arguments</title> 9363 <variablelist> 9364 <varlistentry> 9365 <term><parameter>kcontrol</parameter></term> 9366 <listitem> 9367 <para> 9368 the kcontrol instance 9369 </para> 9370 </listitem> 9371 </varlistentry> 9372 <varlistentry> 9373 <term><parameter>uinfo</parameter></term> 9374 <listitem> 9375 <para> 9376 info to store 9377 </para> 9378 </listitem> 9379 </varlistentry> 9380 </variablelist> 9381</refsect1> 9382<refsect1> 9383<title>Description</title> 9384<para> 9385 This is a function that can be used as info callback for a standard 9386 boolean control with stereo two channels. 9387</para> 9388</refsect1> 9389</refentry> 9390 9391<refentry id="API-snd-ctl-enum-info"> 9392<refentryinfo> 9393 <title>LINUX</title> 9394 <productname>Kernel Hackers Manual</productname> 9395 <date>July 2017</date> 9396</refentryinfo> 9397<refmeta> 9398 <refentrytitle><phrase>snd_ctl_enum_info</phrase></refentrytitle> 9399 <manvolnum>9</manvolnum> 9400 <refmiscinfo class="version">4.4.14</refmiscinfo> 9401</refmeta> 9402<refnamediv> 9403 <refname>snd_ctl_enum_info</refname> 9404 <refpurpose> 9405 fills the info structure for an enumerated control 9406 </refpurpose> 9407</refnamediv> 9408<refsynopsisdiv> 9409 <title>Synopsis</title> 9410 <funcsynopsis><funcprototype> 9411 <funcdef>int <function>snd_ctl_enum_info </function></funcdef> 9412 <paramdef>struct snd_ctl_elem_info * <parameter>info</parameter></paramdef> 9413 <paramdef>unsigned int <parameter>channels</parameter></paramdef> 9414 <paramdef>unsigned int <parameter>items</parameter></paramdef> 9415 <paramdef>const char *const <parameter>names[]</parameter></paramdef> 9416 </funcprototype></funcsynopsis> 9417</refsynopsisdiv> 9418<refsect1> 9419 <title>Arguments</title> 9420 <variablelist> 9421 <varlistentry> 9422 <term><parameter>info</parameter></term> 9423 <listitem> 9424 <para> 9425 the structure to be filled 9426 </para> 9427 </listitem> 9428 </varlistentry> 9429 <varlistentry> 9430 <term><parameter>channels</parameter></term> 9431 <listitem> 9432 <para> 9433 the number of the control's channels; often one 9434 </para> 9435 </listitem> 9436 </varlistentry> 9437 <varlistentry> 9438 <term><parameter>items</parameter></term> 9439 <listitem> 9440 <para> 9441 the number of control values; also the size of <parameter>names</parameter> 9442 </para> 9443 </listitem> 9444 </varlistentry> 9445 <varlistentry> 9446 <term><parameter>names[]</parameter></term> 9447 <listitem> 9448 <para> 9449 an array containing the names of all control values 9450 </para> 9451 </listitem> 9452 </varlistentry> 9453 </variablelist> 9454</refsect1> 9455<refsect1> 9456<title>Description</title> 9457<para> 9458 Sets all required fields in <parameter>info</parameter> to their appropriate values. 9459 If the control's accessibility is not the default (readable and writable), 9460 the caller has to fill <parameter>info</parameter>->access. 9461</para> 9462</refsect1> 9463<refsect1> 9464<title>Return</title> 9465<para> 9466 Zero. 9467</para> 9468</refsect1> 9469</refentry> 9470 9471 </sect1> 9472 <sect1><title>AC97 Codec API</title> 9473<!-- sound/pci/ac97/ac97_codec.c --> 9474<refentry id="API-snd-ac97-write"> 9475<refentryinfo> 9476 <title>LINUX</title> 9477 <productname>Kernel Hackers Manual</productname> 9478 <date>July 2017</date> 9479</refentryinfo> 9480<refmeta> 9481 <refentrytitle><phrase>snd_ac97_write</phrase></refentrytitle> 9482 <manvolnum>9</manvolnum> 9483 <refmiscinfo class="version">4.4.14</refmiscinfo> 9484</refmeta> 9485<refnamediv> 9486 <refname>snd_ac97_write</refname> 9487 <refpurpose> 9488 write a value on the given register 9489 </refpurpose> 9490</refnamediv> 9491<refsynopsisdiv> 9492 <title>Synopsis</title> 9493 <funcsynopsis><funcprototype> 9494 <funcdef>void <function>snd_ac97_write </function></funcdef> 9495 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 9496 <paramdef>unsigned short <parameter>reg</parameter></paramdef> 9497 <paramdef>unsigned short <parameter>value</parameter></paramdef> 9498 </funcprototype></funcsynopsis> 9499</refsynopsisdiv> 9500<refsect1> 9501 <title>Arguments</title> 9502 <variablelist> 9503 <varlistentry> 9504 <term><parameter>ac97</parameter></term> 9505 <listitem> 9506 <para> 9507 the ac97 instance 9508 </para> 9509 </listitem> 9510 </varlistentry> 9511 <varlistentry> 9512 <term><parameter>reg</parameter></term> 9513 <listitem> 9514 <para> 9515 the register to change 9516 </para> 9517 </listitem> 9518 </varlistentry> 9519 <varlistentry> 9520 <term><parameter>value</parameter></term> 9521 <listitem> 9522 <para> 9523 the value to set 9524 </para> 9525 </listitem> 9526 </varlistentry> 9527 </variablelist> 9528</refsect1> 9529<refsect1> 9530<title>Description</title> 9531<para> 9532 Writes a value on the given register. This will invoke the write 9533 callback directly after the register check. 9534 This function doesn't change the register cache unlike 9535 #<function>snd_ca97_write_cache</function>, so use this only when you don't want to 9536 reflect the change to the suspend/resume state. 9537</para> 9538</refsect1> 9539</refentry> 9540 9541<refentry id="API-snd-ac97-read"> 9542<refentryinfo> 9543 <title>LINUX</title> 9544 <productname>Kernel Hackers Manual</productname> 9545 <date>July 2017</date> 9546</refentryinfo> 9547<refmeta> 9548 <refentrytitle><phrase>snd_ac97_read</phrase></refentrytitle> 9549 <manvolnum>9</manvolnum> 9550 <refmiscinfo class="version">4.4.14</refmiscinfo> 9551</refmeta> 9552<refnamediv> 9553 <refname>snd_ac97_read</refname> 9554 <refpurpose> 9555 read a value from the given register 9556 </refpurpose> 9557</refnamediv> 9558<refsynopsisdiv> 9559 <title>Synopsis</title> 9560 <funcsynopsis><funcprototype> 9561 <funcdef>unsigned short <function>snd_ac97_read </function></funcdef> 9562 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 9563 <paramdef>unsigned short <parameter>reg</parameter></paramdef> 9564 </funcprototype></funcsynopsis> 9565</refsynopsisdiv> 9566<refsect1> 9567 <title>Arguments</title> 9568 <variablelist> 9569 <varlistentry> 9570 <term><parameter>ac97</parameter></term> 9571 <listitem> 9572 <para> 9573 the ac97 instance 9574 </para> 9575 </listitem> 9576 </varlistentry> 9577 <varlistentry> 9578 <term><parameter>reg</parameter></term> 9579 <listitem> 9580 <para> 9581 the register to read 9582 </para> 9583 </listitem> 9584 </varlistentry> 9585 </variablelist> 9586</refsect1> 9587<refsect1> 9588<title>Description</title> 9589<para> 9590 Reads a value from the given register. This will invoke the read 9591 callback directly after the register check. 9592</para> 9593</refsect1> 9594<refsect1> 9595<title>Return</title> 9596<para> 9597 The read value. 9598</para> 9599</refsect1> 9600</refentry> 9601 9602<refentry id="API-snd-ac97-write-cache"> 9603<refentryinfo> 9604 <title>LINUX</title> 9605 <productname>Kernel Hackers Manual</productname> 9606 <date>July 2017</date> 9607</refentryinfo> 9608<refmeta> 9609 <refentrytitle><phrase>snd_ac97_write_cache</phrase></refentrytitle> 9610 <manvolnum>9</manvolnum> 9611 <refmiscinfo class="version">4.4.14</refmiscinfo> 9612</refmeta> 9613<refnamediv> 9614 <refname>snd_ac97_write_cache</refname> 9615 <refpurpose> 9616 write a value on the given register and update the cache 9617 </refpurpose> 9618</refnamediv> 9619<refsynopsisdiv> 9620 <title>Synopsis</title> 9621 <funcsynopsis><funcprototype> 9622 <funcdef>void <function>snd_ac97_write_cache </function></funcdef> 9623 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 9624 <paramdef>unsigned short <parameter>reg</parameter></paramdef> 9625 <paramdef>unsigned short <parameter>value</parameter></paramdef> 9626 </funcprototype></funcsynopsis> 9627</refsynopsisdiv> 9628<refsect1> 9629 <title>Arguments</title> 9630 <variablelist> 9631 <varlistentry> 9632 <term><parameter>ac97</parameter></term> 9633 <listitem> 9634 <para> 9635 the ac97 instance 9636 </para> 9637 </listitem> 9638 </varlistentry> 9639 <varlistentry> 9640 <term><parameter>reg</parameter></term> 9641 <listitem> 9642 <para> 9643 the register to change 9644 </para> 9645 </listitem> 9646 </varlistentry> 9647 <varlistentry> 9648 <term><parameter>value</parameter></term> 9649 <listitem> 9650 <para> 9651 the value to set 9652 </para> 9653 </listitem> 9654 </varlistentry> 9655 </variablelist> 9656</refsect1> 9657<refsect1> 9658<title>Description</title> 9659<para> 9660 Writes a value on the given register and updates the register 9661 cache. The cached values are used for the cached-read and the 9662 suspend/resume. 9663</para> 9664</refsect1> 9665</refentry> 9666 9667<refentry id="API-snd-ac97-update"> 9668<refentryinfo> 9669 <title>LINUX</title> 9670 <productname>Kernel Hackers Manual</productname> 9671 <date>July 2017</date> 9672</refentryinfo> 9673<refmeta> 9674 <refentrytitle><phrase>snd_ac97_update</phrase></refentrytitle> 9675 <manvolnum>9</manvolnum> 9676 <refmiscinfo class="version">4.4.14</refmiscinfo> 9677</refmeta> 9678<refnamediv> 9679 <refname>snd_ac97_update</refname> 9680 <refpurpose> 9681 update the value on the given register 9682 </refpurpose> 9683</refnamediv> 9684<refsynopsisdiv> 9685 <title>Synopsis</title> 9686 <funcsynopsis><funcprototype> 9687 <funcdef>int <function>snd_ac97_update </function></funcdef> 9688 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 9689 <paramdef>unsigned short <parameter>reg</parameter></paramdef> 9690 <paramdef>unsigned short <parameter>value</parameter></paramdef> 9691 </funcprototype></funcsynopsis> 9692</refsynopsisdiv> 9693<refsect1> 9694 <title>Arguments</title> 9695 <variablelist> 9696 <varlistentry> 9697 <term><parameter>ac97</parameter></term> 9698 <listitem> 9699 <para> 9700 the ac97 instance 9701 </para> 9702 </listitem> 9703 </varlistentry> 9704 <varlistentry> 9705 <term><parameter>reg</parameter></term> 9706 <listitem> 9707 <para> 9708 the register to change 9709 </para> 9710 </listitem> 9711 </varlistentry> 9712 <varlistentry> 9713 <term><parameter>value</parameter></term> 9714 <listitem> 9715 <para> 9716 the value to set 9717 </para> 9718 </listitem> 9719 </varlistentry> 9720 </variablelist> 9721</refsect1> 9722<refsect1> 9723<title>Description</title> 9724<para> 9725 Compares the value with the register cache and updates the value 9726 only when the value is changed. 9727</para> 9728</refsect1> 9729<refsect1> 9730<title>Return</title> 9731<para> 9732 1 if the value is changed, 0 if no change, or a negative 9733 code on failure. 9734</para> 9735</refsect1> 9736</refentry> 9737 9738<refentry id="API-snd-ac97-update-bits"> 9739<refentryinfo> 9740 <title>LINUX</title> 9741 <productname>Kernel Hackers Manual</productname> 9742 <date>July 2017</date> 9743</refentryinfo> 9744<refmeta> 9745 <refentrytitle><phrase>snd_ac97_update_bits</phrase></refentrytitle> 9746 <manvolnum>9</manvolnum> 9747 <refmiscinfo class="version">4.4.14</refmiscinfo> 9748</refmeta> 9749<refnamediv> 9750 <refname>snd_ac97_update_bits</refname> 9751 <refpurpose> 9752 update the bits on the given register 9753 </refpurpose> 9754</refnamediv> 9755<refsynopsisdiv> 9756 <title>Synopsis</title> 9757 <funcsynopsis><funcprototype> 9758 <funcdef>int <function>snd_ac97_update_bits </function></funcdef> 9759 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 9760 <paramdef>unsigned short <parameter>reg</parameter></paramdef> 9761 <paramdef>unsigned short <parameter>mask</parameter></paramdef> 9762 <paramdef>unsigned short <parameter>value</parameter></paramdef> 9763 </funcprototype></funcsynopsis> 9764</refsynopsisdiv> 9765<refsect1> 9766 <title>Arguments</title> 9767 <variablelist> 9768 <varlistentry> 9769 <term><parameter>ac97</parameter></term> 9770 <listitem> 9771 <para> 9772 the ac97 instance 9773 </para> 9774 </listitem> 9775 </varlistentry> 9776 <varlistentry> 9777 <term><parameter>reg</parameter></term> 9778 <listitem> 9779 <para> 9780 the register to change 9781 </para> 9782 </listitem> 9783 </varlistentry> 9784 <varlistentry> 9785 <term><parameter>mask</parameter></term> 9786 <listitem> 9787 <para> 9788 the bit-mask to change 9789 </para> 9790 </listitem> 9791 </varlistentry> 9792 <varlistentry> 9793 <term><parameter>value</parameter></term> 9794 <listitem> 9795 <para> 9796 the value to set 9797 </para> 9798 </listitem> 9799 </varlistentry> 9800 </variablelist> 9801</refsect1> 9802<refsect1> 9803<title>Description</title> 9804<para> 9805 Updates the masked-bits on the given register only when the value 9806 is changed. 9807</para> 9808</refsect1> 9809<refsect1> 9810<title>Return</title> 9811<para> 9812 1 if the bits are changed, 0 if no change, or a negative 9813 code on failure. 9814</para> 9815</refsect1> 9816</refentry> 9817 9818<refentry id="API-snd-ac97-get-short-name"> 9819<refentryinfo> 9820 <title>LINUX</title> 9821 <productname>Kernel Hackers Manual</productname> 9822 <date>July 2017</date> 9823</refentryinfo> 9824<refmeta> 9825 <refentrytitle><phrase>snd_ac97_get_short_name</phrase></refentrytitle> 9826 <manvolnum>9</manvolnum> 9827 <refmiscinfo class="version">4.4.14</refmiscinfo> 9828</refmeta> 9829<refnamediv> 9830 <refname>snd_ac97_get_short_name</refname> 9831 <refpurpose> 9832 retrieve codec name 9833 </refpurpose> 9834</refnamediv> 9835<refsynopsisdiv> 9836 <title>Synopsis</title> 9837 <funcsynopsis><funcprototype> 9838 <funcdef>const char * <function>snd_ac97_get_short_name </function></funcdef> 9839 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 9840 </funcprototype></funcsynopsis> 9841</refsynopsisdiv> 9842<refsect1> 9843 <title>Arguments</title> 9844 <variablelist> 9845 <varlistentry> 9846 <term><parameter>ac97</parameter></term> 9847 <listitem> 9848 <para> 9849 the codec instance 9850 </para> 9851 </listitem> 9852 </varlistentry> 9853 </variablelist> 9854</refsect1> 9855<refsect1> 9856<title>Return</title> 9857<para> 9858 The short identifying name of the codec. 9859</para> 9860</refsect1> 9861</refentry> 9862 9863<refentry id="API-snd-ac97-bus"> 9864<refentryinfo> 9865 <title>LINUX</title> 9866 <productname>Kernel Hackers Manual</productname> 9867 <date>July 2017</date> 9868</refentryinfo> 9869<refmeta> 9870 <refentrytitle><phrase>snd_ac97_bus</phrase></refentrytitle> 9871 <manvolnum>9</manvolnum> 9872 <refmiscinfo class="version">4.4.14</refmiscinfo> 9873</refmeta> 9874<refnamediv> 9875 <refname>snd_ac97_bus</refname> 9876 <refpurpose> 9877 create an AC97 bus component 9878 </refpurpose> 9879</refnamediv> 9880<refsynopsisdiv> 9881 <title>Synopsis</title> 9882 <funcsynopsis><funcprototype> 9883 <funcdef>int <function>snd_ac97_bus </function></funcdef> 9884 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 9885 <paramdef>int <parameter>num</parameter></paramdef> 9886 <paramdef>struct snd_ac97_bus_ops * <parameter>ops</parameter></paramdef> 9887 <paramdef>void * <parameter>private_data</parameter></paramdef> 9888 <paramdef>struct snd_ac97_bus ** <parameter>rbus</parameter></paramdef> 9889 </funcprototype></funcsynopsis> 9890</refsynopsisdiv> 9891<refsect1> 9892 <title>Arguments</title> 9893 <variablelist> 9894 <varlistentry> 9895 <term><parameter>card</parameter></term> 9896 <listitem> 9897 <para> 9898 the card instance 9899 </para> 9900 </listitem> 9901 </varlistentry> 9902 <varlistentry> 9903 <term><parameter>num</parameter></term> 9904 <listitem> 9905 <para> 9906 the bus number 9907 </para> 9908 </listitem> 9909 </varlistentry> 9910 <varlistentry> 9911 <term><parameter>ops</parameter></term> 9912 <listitem> 9913 <para> 9914 the bus callbacks table 9915 </para> 9916 </listitem> 9917 </varlistentry> 9918 <varlistentry> 9919 <term><parameter>private_data</parameter></term> 9920 <listitem> 9921 <para> 9922 private data pointer for the new instance 9923 </para> 9924 </listitem> 9925 </varlistentry> 9926 <varlistentry> 9927 <term><parameter>rbus</parameter></term> 9928 <listitem> 9929 <para> 9930 the pointer to store the new AC97 bus instance. 9931 </para> 9932 </listitem> 9933 </varlistentry> 9934 </variablelist> 9935</refsect1> 9936<refsect1> 9937<title>Description</title> 9938<para> 9939 Creates an AC97 bus component. An struct snd_ac97_bus instance is newly 9940 allocated and initialized. 9941 </para><para> 9942 9943 The ops table must include valid callbacks (at least read and 9944 write). The other callbacks, wait and reset, are not mandatory. 9945 </para><para> 9946 9947 The clock is set to 48000. If another clock is needed, set 9948 (*rbus)->clock manually. 9949 </para><para> 9950 9951 The AC97 bus instance is registered as a low-level device, so you don't 9952 have to release it manually. 9953</para> 9954</refsect1> 9955<refsect1> 9956<title>Return</title> 9957<para> 9958 Zero if successful, or a negative error code on failure. 9959</para> 9960</refsect1> 9961</refentry> 9962 9963<refentry id="API-snd-ac97-mixer"> 9964<refentryinfo> 9965 <title>LINUX</title> 9966 <productname>Kernel Hackers Manual</productname> 9967 <date>July 2017</date> 9968</refentryinfo> 9969<refmeta> 9970 <refentrytitle><phrase>snd_ac97_mixer</phrase></refentrytitle> 9971 <manvolnum>9</manvolnum> 9972 <refmiscinfo class="version">4.4.14</refmiscinfo> 9973</refmeta> 9974<refnamediv> 9975 <refname>snd_ac97_mixer</refname> 9976 <refpurpose> 9977 create an Codec97 component 9978 </refpurpose> 9979</refnamediv> 9980<refsynopsisdiv> 9981 <title>Synopsis</title> 9982 <funcsynopsis><funcprototype> 9983 <funcdef>int <function>snd_ac97_mixer </function></funcdef> 9984 <paramdef>struct snd_ac97_bus * <parameter>bus</parameter></paramdef> 9985 <paramdef>struct snd_ac97_template * <parameter>template</parameter></paramdef> 9986 <paramdef>struct snd_ac97 ** <parameter>rac97</parameter></paramdef> 9987 </funcprototype></funcsynopsis> 9988</refsynopsisdiv> 9989<refsect1> 9990 <title>Arguments</title> 9991 <variablelist> 9992 <varlistentry> 9993 <term><parameter>bus</parameter></term> 9994 <listitem> 9995 <para> 9996 the AC97 bus which codec is attached to 9997 </para> 9998 </listitem> 9999 </varlistentry> 10000 <varlistentry> 10001 <term><parameter>template</parameter></term> 10002 <listitem> 10003 <para> 10004 the template of ac97, including index, callbacks and 10005 the private data. 10006 </para> 10007 </listitem> 10008 </varlistentry> 10009 <varlistentry> 10010 <term><parameter>rac97</parameter></term> 10011 <listitem> 10012 <para> 10013 the pointer to store the new ac97 instance. 10014 </para> 10015 </listitem> 10016 </varlistentry> 10017 </variablelist> 10018</refsect1> 10019<refsect1> 10020<title>Description</title> 10021<para> 10022 Creates an Codec97 component. An struct snd_ac97 instance is newly 10023 allocated and initialized from the template. The codec 10024 is then initialized by the standard procedure. 10025 </para><para> 10026 10027 The template must include the codec number (num) and address (addr), 10028 and the private data (private_data). 10029 </para><para> 10030 10031 The ac97 instance is registered as a low-level device, so you don't 10032 have to release it manually. 10033</para> 10034</refsect1> 10035<refsect1> 10036<title>Return</title> 10037<para> 10038 Zero if successful, or a negative error code on failure. 10039</para> 10040</refsect1> 10041</refentry> 10042 10043<refentry id="API-snd-ac97-update-power"> 10044<refentryinfo> 10045 <title>LINUX</title> 10046 <productname>Kernel Hackers Manual</productname> 10047 <date>July 2017</date> 10048</refentryinfo> 10049<refmeta> 10050 <refentrytitle><phrase>snd_ac97_update_power</phrase></refentrytitle> 10051 <manvolnum>9</manvolnum> 10052 <refmiscinfo class="version">4.4.14</refmiscinfo> 10053</refmeta> 10054<refnamediv> 10055 <refname>snd_ac97_update_power</refname> 10056 <refpurpose> 10057 update the powerdown register 10058 </refpurpose> 10059</refnamediv> 10060<refsynopsisdiv> 10061 <title>Synopsis</title> 10062 <funcsynopsis><funcprototype> 10063 <funcdef>int <function>snd_ac97_update_power </function></funcdef> 10064 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 10065 <paramdef>int <parameter>reg</parameter></paramdef> 10066 <paramdef>int <parameter>powerup</parameter></paramdef> 10067 </funcprototype></funcsynopsis> 10068</refsynopsisdiv> 10069<refsect1> 10070 <title>Arguments</title> 10071 <variablelist> 10072 <varlistentry> 10073 <term><parameter>ac97</parameter></term> 10074 <listitem> 10075 <para> 10076 the codec instance 10077 </para> 10078 </listitem> 10079 </varlistentry> 10080 <varlistentry> 10081 <term><parameter>reg</parameter></term> 10082 <listitem> 10083 <para> 10084 the rate register, e.g. AC97_PCM_FRONT_DAC_RATE 10085 </para> 10086 </listitem> 10087 </varlistentry> 10088 <varlistentry> 10089 <term><parameter>powerup</parameter></term> 10090 <listitem> 10091 <para> 10092 non-zero when power up the part 10093 </para> 10094 </listitem> 10095 </varlistentry> 10096 </variablelist> 10097</refsect1> 10098<refsect1> 10099<title>Description</title> 10100<para> 10101 Update the AC97 powerdown register bits of the given part. 10102</para> 10103</refsect1> 10104<refsect1> 10105<title>Return</title> 10106<para> 10107 Zero. 10108</para> 10109</refsect1> 10110</refentry> 10111 10112<refentry id="API-snd-ac97-suspend"> 10113<refentryinfo> 10114 <title>LINUX</title> 10115 <productname>Kernel Hackers Manual</productname> 10116 <date>July 2017</date> 10117</refentryinfo> 10118<refmeta> 10119 <refentrytitle><phrase>snd_ac97_suspend</phrase></refentrytitle> 10120 <manvolnum>9</manvolnum> 10121 <refmiscinfo class="version">4.4.14</refmiscinfo> 10122</refmeta> 10123<refnamediv> 10124 <refname>snd_ac97_suspend</refname> 10125 <refpurpose> 10126 General suspend function for AC97 codec 10127 </refpurpose> 10128</refnamediv> 10129<refsynopsisdiv> 10130 <title>Synopsis</title> 10131 <funcsynopsis><funcprototype> 10132 <funcdef>void <function>snd_ac97_suspend </function></funcdef> 10133 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 10134 </funcprototype></funcsynopsis> 10135</refsynopsisdiv> 10136<refsect1> 10137 <title>Arguments</title> 10138 <variablelist> 10139 <varlistentry> 10140 <term><parameter>ac97</parameter></term> 10141 <listitem> 10142 <para> 10143 the ac97 instance 10144 </para> 10145 </listitem> 10146 </varlistentry> 10147 </variablelist> 10148</refsect1> 10149<refsect1> 10150<title>Description</title> 10151<para> 10152 Suspends the codec, power down the chip. 10153</para> 10154</refsect1> 10155</refentry> 10156 10157<refentry id="API-snd-ac97-resume"> 10158<refentryinfo> 10159 <title>LINUX</title> 10160 <productname>Kernel Hackers Manual</productname> 10161 <date>July 2017</date> 10162</refentryinfo> 10163<refmeta> 10164 <refentrytitle><phrase>snd_ac97_resume</phrase></refentrytitle> 10165 <manvolnum>9</manvolnum> 10166 <refmiscinfo class="version">4.4.14</refmiscinfo> 10167</refmeta> 10168<refnamediv> 10169 <refname>snd_ac97_resume</refname> 10170 <refpurpose> 10171 General resume function for AC97 codec 10172 </refpurpose> 10173</refnamediv> 10174<refsynopsisdiv> 10175 <title>Synopsis</title> 10176 <funcsynopsis><funcprototype> 10177 <funcdef>void <function>snd_ac97_resume </function></funcdef> 10178 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 10179 </funcprototype></funcsynopsis> 10180</refsynopsisdiv> 10181<refsect1> 10182 <title>Arguments</title> 10183 <variablelist> 10184 <varlistentry> 10185 <term><parameter>ac97</parameter></term> 10186 <listitem> 10187 <para> 10188 the ac97 instance 10189 </para> 10190 </listitem> 10191 </varlistentry> 10192 </variablelist> 10193</refsect1> 10194<refsect1> 10195<title>Description</title> 10196<para> 10197 Do the standard resume procedure, power up and restoring the 10198 old register values. 10199</para> 10200</refsect1> 10201</refentry> 10202 10203<refentry id="API-snd-ac97-tune-hardware"> 10204<refentryinfo> 10205 <title>LINUX</title> 10206 <productname>Kernel Hackers Manual</productname> 10207 <date>July 2017</date> 10208</refentryinfo> 10209<refmeta> 10210 <refentrytitle><phrase>snd_ac97_tune_hardware</phrase></refentrytitle> 10211 <manvolnum>9</manvolnum> 10212 <refmiscinfo class="version">4.4.14</refmiscinfo> 10213</refmeta> 10214<refnamediv> 10215 <refname>snd_ac97_tune_hardware</refname> 10216 <refpurpose> 10217 tune up the hardware 10218 </refpurpose> 10219</refnamediv> 10220<refsynopsisdiv> 10221 <title>Synopsis</title> 10222 <funcsynopsis><funcprototype> 10223 <funcdef>int <function>snd_ac97_tune_hardware </function></funcdef> 10224 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 10225 <paramdef>const struct ac97_quirk * <parameter>quirk</parameter></paramdef> 10226 <paramdef>const char * <parameter>override</parameter></paramdef> 10227 </funcprototype></funcsynopsis> 10228</refsynopsisdiv> 10229<refsect1> 10230 <title>Arguments</title> 10231 <variablelist> 10232 <varlistentry> 10233 <term><parameter>ac97</parameter></term> 10234 <listitem> 10235 <para> 10236 the ac97 instance 10237 </para> 10238 </listitem> 10239 </varlistentry> 10240 <varlistentry> 10241 <term><parameter>quirk</parameter></term> 10242 <listitem> 10243 <para> 10244 quirk list 10245 </para> 10246 </listitem> 10247 </varlistentry> 10248 <varlistentry> 10249 <term><parameter>override</parameter></term> 10250 <listitem> 10251 <para> 10252 explicit quirk value (overrides the list if non-NULL) 10253 </para> 10254 </listitem> 10255 </varlistentry> 10256 </variablelist> 10257</refsect1> 10258<refsect1> 10259<title>Description</title> 10260<para> 10261 Do some workaround for each pci device, such as renaming of the 10262 headphone (true line-out) control as <quote>Master</quote>. 10263 The quirk-list must be terminated with a zero-filled entry. 10264</para> 10265</refsect1> 10266<refsect1> 10267<title>Return</title> 10268<para> 10269 Zero if successful, or a negative error code on failure. 10270</para> 10271</refsect1> 10272</refentry> 10273 10274<!-- sound/pci/ac97/ac97_pcm.c --> 10275<refentry id="API-snd-ac97-set-rate"> 10276<refentryinfo> 10277 <title>LINUX</title> 10278 <productname>Kernel Hackers Manual</productname> 10279 <date>July 2017</date> 10280</refentryinfo> 10281<refmeta> 10282 <refentrytitle><phrase>snd_ac97_set_rate</phrase></refentrytitle> 10283 <manvolnum>9</manvolnum> 10284 <refmiscinfo class="version">4.4.14</refmiscinfo> 10285</refmeta> 10286<refnamediv> 10287 <refname>snd_ac97_set_rate</refname> 10288 <refpurpose> 10289 change the rate of the given input/output. 10290 </refpurpose> 10291</refnamediv> 10292<refsynopsisdiv> 10293 <title>Synopsis</title> 10294 <funcsynopsis><funcprototype> 10295 <funcdef>int <function>snd_ac97_set_rate </function></funcdef> 10296 <paramdef>struct snd_ac97 * <parameter>ac97</parameter></paramdef> 10297 <paramdef>int <parameter>reg</parameter></paramdef> 10298 <paramdef>unsigned int <parameter>rate</parameter></paramdef> 10299 </funcprototype></funcsynopsis> 10300</refsynopsisdiv> 10301<refsect1> 10302 <title>Arguments</title> 10303 <variablelist> 10304 <varlistentry> 10305 <term><parameter>ac97</parameter></term> 10306 <listitem> 10307 <para> 10308 the ac97 instance 10309 </para> 10310 </listitem> 10311 </varlistentry> 10312 <varlistentry> 10313 <term><parameter>reg</parameter></term> 10314 <listitem> 10315 <para> 10316 the register to change 10317 </para> 10318 </listitem> 10319 </varlistentry> 10320 <varlistentry> 10321 <term><parameter>rate</parameter></term> 10322 <listitem> 10323 <para> 10324 the sample rate to set 10325 </para> 10326 </listitem> 10327 </varlistentry> 10328 </variablelist> 10329</refsect1> 10330<refsect1> 10331<title>Description</title> 10332<para> 10333 Changes the rate of the given input/output on the codec. 10334 If the codec doesn't support VAR, the rate must be 48000 (except 10335 for SPDIF). 10336 </para><para> 10337 10338 The valid registers are AC97_PMC_MIC_ADC_RATE, 10339 AC97_PCM_FRONT_DAC_RATE, AC97_PCM_LR_ADC_RATE. 10340 AC97_PCM_SURR_DAC_RATE and AC97_PCM_LFE_DAC_RATE are accepted 10341 if the codec supports them. 10342 AC97_SPDIF is accepted as a pseudo register to modify the SPDIF 10343 status bits. 10344</para> 10345</refsect1> 10346<refsect1> 10347<title>Return</title> 10348<para> 10349 Zero if successful, or a negative error code on failure. 10350</para> 10351</refsect1> 10352</refentry> 10353 10354<refentry id="API-snd-ac97-pcm-assign"> 10355<refentryinfo> 10356 <title>LINUX</title> 10357 <productname>Kernel Hackers Manual</productname> 10358 <date>July 2017</date> 10359</refentryinfo> 10360<refmeta> 10361 <refentrytitle><phrase>snd_ac97_pcm_assign</phrase></refentrytitle> 10362 <manvolnum>9</manvolnum> 10363 <refmiscinfo class="version">4.4.14</refmiscinfo> 10364</refmeta> 10365<refnamediv> 10366 <refname>snd_ac97_pcm_assign</refname> 10367 <refpurpose> 10368 assign AC97 slots to given PCM streams 10369 </refpurpose> 10370</refnamediv> 10371<refsynopsisdiv> 10372 <title>Synopsis</title> 10373 <funcsynopsis><funcprototype> 10374 <funcdef>int <function>snd_ac97_pcm_assign </function></funcdef> 10375 <paramdef>struct snd_ac97_bus * <parameter>bus</parameter></paramdef> 10376 <paramdef>unsigned short <parameter>pcms_count</parameter></paramdef> 10377 <paramdef>const struct ac97_pcm * <parameter>pcms</parameter></paramdef> 10378 </funcprototype></funcsynopsis> 10379</refsynopsisdiv> 10380<refsect1> 10381 <title>Arguments</title> 10382 <variablelist> 10383 <varlistentry> 10384 <term><parameter>bus</parameter></term> 10385 <listitem> 10386 <para> 10387 the ac97 bus instance 10388 </para> 10389 </listitem> 10390 </varlistentry> 10391 <varlistentry> 10392 <term><parameter>pcms_count</parameter></term> 10393 <listitem> 10394 <para> 10395 count of PCMs to be assigned 10396 </para> 10397 </listitem> 10398 </varlistentry> 10399 <varlistentry> 10400 <term><parameter>pcms</parameter></term> 10401 <listitem> 10402 <para> 10403 PCMs to be assigned 10404 </para> 10405 </listitem> 10406 </varlistentry> 10407 </variablelist> 10408</refsect1> 10409<refsect1> 10410<title>Description</title> 10411<para> 10412 It assigns available AC97 slots for given PCMs. If none or only 10413 some slots are available, pcm->xxx.slots and pcm->xxx.rslots[] members 10414 are reduced and might be zero. 10415</para> 10416</refsect1> 10417<refsect1> 10418<title>Return</title> 10419<para> 10420 Zero if successful, or a negative error code on failure. 10421</para> 10422</refsect1> 10423</refentry> 10424 10425<refentry id="API-snd-ac97-pcm-open"> 10426<refentryinfo> 10427 <title>LINUX</title> 10428 <productname>Kernel Hackers Manual</productname> 10429 <date>July 2017</date> 10430</refentryinfo> 10431<refmeta> 10432 <refentrytitle><phrase>snd_ac97_pcm_open</phrase></refentrytitle> 10433 <manvolnum>9</manvolnum> 10434 <refmiscinfo class="version">4.4.14</refmiscinfo> 10435</refmeta> 10436<refnamediv> 10437 <refname>snd_ac97_pcm_open</refname> 10438 <refpurpose> 10439 opens the given AC97 pcm 10440 </refpurpose> 10441</refnamediv> 10442<refsynopsisdiv> 10443 <title>Synopsis</title> 10444 <funcsynopsis><funcprototype> 10445 <funcdef>int <function>snd_ac97_pcm_open </function></funcdef> 10446 <paramdef>struct ac97_pcm * <parameter>pcm</parameter></paramdef> 10447 <paramdef>unsigned int <parameter>rate</parameter></paramdef> 10448 <paramdef>enum ac97_pcm_cfg <parameter>cfg</parameter></paramdef> 10449 <paramdef>unsigned short <parameter>slots</parameter></paramdef> 10450 </funcprototype></funcsynopsis> 10451</refsynopsisdiv> 10452<refsect1> 10453 <title>Arguments</title> 10454 <variablelist> 10455 <varlistentry> 10456 <term><parameter>pcm</parameter></term> 10457 <listitem> 10458 <para> 10459 the ac97 pcm instance 10460 </para> 10461 </listitem> 10462 </varlistentry> 10463 <varlistentry> 10464 <term><parameter>rate</parameter></term> 10465 <listitem> 10466 <para> 10467 rate in Hz, if codec does not support VRA, this value must be 48000Hz 10468 </para> 10469 </listitem> 10470 </varlistentry> 10471 <varlistentry> 10472 <term><parameter>cfg</parameter></term> 10473 <listitem> 10474 <para> 10475 output stream characteristics 10476 </para> 10477 </listitem> 10478 </varlistentry> 10479 <varlistentry> 10480 <term><parameter>slots</parameter></term> 10481 <listitem> 10482 <para> 10483 a subset of allocated slots (snd_ac97_pcm_assign) for this pcm 10484 </para> 10485 </listitem> 10486 </varlistentry> 10487 </variablelist> 10488</refsect1> 10489<refsect1> 10490<title>Description</title> 10491<para> 10492 It locks the specified slots and sets the given rate to AC97 registers. 10493</para> 10494</refsect1> 10495<refsect1> 10496<title>Return</title> 10497<para> 10498 Zero if successful, or a negative error code on failure. 10499</para> 10500</refsect1> 10501</refentry> 10502 10503<refentry id="API-snd-ac97-pcm-close"> 10504<refentryinfo> 10505 <title>LINUX</title> 10506 <productname>Kernel Hackers Manual</productname> 10507 <date>July 2017</date> 10508</refentryinfo> 10509<refmeta> 10510 <refentrytitle><phrase>snd_ac97_pcm_close</phrase></refentrytitle> 10511 <manvolnum>9</manvolnum> 10512 <refmiscinfo class="version">4.4.14</refmiscinfo> 10513</refmeta> 10514<refnamediv> 10515 <refname>snd_ac97_pcm_close</refname> 10516 <refpurpose> 10517 closes the given AC97 pcm 10518 </refpurpose> 10519</refnamediv> 10520<refsynopsisdiv> 10521 <title>Synopsis</title> 10522 <funcsynopsis><funcprototype> 10523 <funcdef>int <function>snd_ac97_pcm_close </function></funcdef> 10524 <paramdef>struct ac97_pcm * <parameter>pcm</parameter></paramdef> 10525 </funcprototype></funcsynopsis> 10526</refsynopsisdiv> 10527<refsect1> 10528 <title>Arguments</title> 10529 <variablelist> 10530 <varlistentry> 10531 <term><parameter>pcm</parameter></term> 10532 <listitem> 10533 <para> 10534 the ac97 pcm instance 10535 </para> 10536 </listitem> 10537 </varlistentry> 10538 </variablelist> 10539</refsect1> 10540<refsect1> 10541<title>Description</title> 10542<para> 10543 It frees the locked AC97 slots. 10544</para> 10545</refsect1> 10546<refsect1> 10547<title>Return</title> 10548<para> 10549 Zero. 10550</para> 10551</refsect1> 10552</refentry> 10553 10554<refentry id="API-snd-ac97-pcm-double-rate-rules"> 10555<refentryinfo> 10556 <title>LINUX</title> 10557 <productname>Kernel Hackers Manual</productname> 10558 <date>July 2017</date> 10559</refentryinfo> 10560<refmeta> 10561 <refentrytitle><phrase>snd_ac97_pcm_double_rate_rules</phrase></refentrytitle> 10562 <manvolnum>9</manvolnum> 10563 <refmiscinfo class="version">4.4.14</refmiscinfo> 10564</refmeta> 10565<refnamediv> 10566 <refname>snd_ac97_pcm_double_rate_rules</refname> 10567 <refpurpose> 10568 set double rate constraints 10569 </refpurpose> 10570</refnamediv> 10571<refsynopsisdiv> 10572 <title>Synopsis</title> 10573 <funcsynopsis><funcprototype> 10574 <funcdef>int <function>snd_ac97_pcm_double_rate_rules </function></funcdef> 10575 <paramdef>struct snd_pcm_runtime * <parameter>runtime</parameter></paramdef> 10576 </funcprototype></funcsynopsis> 10577</refsynopsisdiv> 10578<refsect1> 10579 <title>Arguments</title> 10580 <variablelist> 10581 <varlistentry> 10582 <term><parameter>runtime</parameter></term> 10583 <listitem> 10584 <para> 10585 the runtime of the ac97 front playback pcm 10586 </para> 10587 </listitem> 10588 </varlistentry> 10589 </variablelist> 10590</refsect1> 10591<refsect1> 10592<title>Description</title> 10593<para> 10594 Installs the hardware constraint rules to prevent using double rates and 10595 more than two channels at the same time. 10596</para> 10597</refsect1> 10598<refsect1> 10599<title>Return</title> 10600<para> 10601 Zero if successful, or a negative error code on failure. 10602</para> 10603</refsect1> 10604</refentry> 10605 10606 </sect1> 10607 <sect1><title>Virtual Master Control API</title> 10608<!-- sound/core/vmaster.c --> 10609<refentry id="API-snd-ctl-make-virtual-master"> 10610<refentryinfo> 10611 <title>LINUX</title> 10612 <productname>Kernel Hackers Manual</productname> 10613 <date>July 2017</date> 10614</refentryinfo> 10615<refmeta> 10616 <refentrytitle><phrase>snd_ctl_make_virtual_master</phrase></refentrytitle> 10617 <manvolnum>9</manvolnum> 10618 <refmiscinfo class="version">4.4.14</refmiscinfo> 10619</refmeta> 10620<refnamediv> 10621 <refname>snd_ctl_make_virtual_master</refname> 10622 <refpurpose> 10623 Create a virtual master control 10624 </refpurpose> 10625</refnamediv> 10626<refsynopsisdiv> 10627 <title>Synopsis</title> 10628 <funcsynopsis><funcprototype> 10629 <funcdef>struct snd_kcontrol * <function>snd_ctl_make_virtual_master </function></funcdef> 10630 <paramdef>char * <parameter>name</parameter></paramdef> 10631 <paramdef>const unsigned int * <parameter>tlv</parameter></paramdef> 10632 </funcprototype></funcsynopsis> 10633</refsynopsisdiv> 10634<refsect1> 10635 <title>Arguments</title> 10636 <variablelist> 10637 <varlistentry> 10638 <term><parameter>name</parameter></term> 10639 <listitem> 10640 <para> 10641 name string of the control element to create 10642 </para> 10643 </listitem> 10644 </varlistentry> 10645 <varlistentry> 10646 <term><parameter>tlv</parameter></term> 10647 <listitem> 10648 <para> 10649 optional TLV int array for dB information 10650 </para> 10651 </listitem> 10652 </varlistentry> 10653 </variablelist> 10654</refsect1> 10655<refsect1> 10656<title>Description</title> 10657<para> 10658 Creates a virtual master control with the given name string. 10659 </para><para> 10660 10661 After creating a vmaster element, you can add the slave controls 10662 via <function>snd_ctl_add_slave</function> or <function>snd_ctl_add_slave_uncached</function>. 10663 </para><para> 10664 10665 The optional argument <parameter>tlv</parameter> can be used to specify the TLV information 10666 for dB scale of the master control. It should be a single element 10667 with #SNDRV_CTL_TLVT_DB_SCALE, #SNDRV_CTL_TLV_DB_MINMAX or 10668 #SNDRV_CTL_TLVT_DB_MINMAX_MUTE type, and should be the max 0dB. 10669</para> 10670</refsect1> 10671<refsect1> 10672<title>Return</title> 10673<para> 10674 The created control element, or <constant>NULL</constant> for errors (ENOMEM). 10675</para> 10676</refsect1> 10677</refentry> 10678 10679<refentry id="API-snd-ctl-add-vmaster-hook"> 10680<refentryinfo> 10681 <title>LINUX</title> 10682 <productname>Kernel Hackers Manual</productname> 10683 <date>July 2017</date> 10684</refentryinfo> 10685<refmeta> 10686 <refentrytitle><phrase>snd_ctl_add_vmaster_hook</phrase></refentrytitle> 10687 <manvolnum>9</manvolnum> 10688 <refmiscinfo class="version">4.4.14</refmiscinfo> 10689</refmeta> 10690<refnamediv> 10691 <refname>snd_ctl_add_vmaster_hook</refname> 10692 <refpurpose> 10693 Add a hook to a vmaster control 10694 </refpurpose> 10695</refnamediv> 10696<refsynopsisdiv> 10697 <title>Synopsis</title> 10698 <funcsynopsis><funcprototype> 10699 <funcdef>int <function>snd_ctl_add_vmaster_hook </function></funcdef> 10700 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 10701 <paramdef>void (*<parameter>hook</parameter>) 10702 <funcparams>void *private_data, int</funcparams></paramdef> 10703 <paramdef>void * <parameter>private_data</parameter></paramdef> 10704 </funcprototype></funcsynopsis> 10705</refsynopsisdiv> 10706<refsect1> 10707 <title>Arguments</title> 10708 <variablelist> 10709 <varlistentry> 10710 <term><parameter>kcontrol</parameter></term> 10711 <listitem> 10712 <para> 10713 vmaster kctl element 10714 </para> 10715 </listitem> 10716 </varlistentry> 10717 <varlistentry> 10718 <term><parameter>hook</parameter></term> 10719 <listitem> 10720 <para> 10721 the hook function 10722 </para> 10723 </listitem> 10724 </varlistentry> 10725 <varlistentry> 10726 <term><parameter>private_data</parameter></term> 10727 <listitem> 10728 <para> 10729 the private_data pointer to be saved 10730 </para> 10731 </listitem> 10732 </varlistentry> 10733 </variablelist> 10734</refsect1> 10735<refsect1> 10736<title>Description</title> 10737<para> 10738 Adds the given hook to the vmaster control element so that it's called 10739 at each time when the value is changed. 10740</para> 10741</refsect1> 10742<refsect1> 10743<title>Return</title> 10744<para> 10745 Zero. 10746</para> 10747</refsect1> 10748</refentry> 10749 10750<refentry id="API-snd-ctl-sync-vmaster"> 10751<refentryinfo> 10752 <title>LINUX</title> 10753 <productname>Kernel Hackers Manual</productname> 10754 <date>July 2017</date> 10755</refentryinfo> 10756<refmeta> 10757 <refentrytitle><phrase>snd_ctl_sync_vmaster</phrase></refentrytitle> 10758 <manvolnum>9</manvolnum> 10759 <refmiscinfo class="version">4.4.14</refmiscinfo> 10760</refmeta> 10761<refnamediv> 10762 <refname>snd_ctl_sync_vmaster</refname> 10763 <refpurpose> 10764 Sync the vmaster slaves and hook 10765 </refpurpose> 10766</refnamediv> 10767<refsynopsisdiv> 10768 <title>Synopsis</title> 10769 <funcsynopsis><funcprototype> 10770 <funcdef>void <function>snd_ctl_sync_vmaster </function></funcdef> 10771 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 10772 <paramdef>bool <parameter>hook_only</parameter></paramdef> 10773 </funcprototype></funcsynopsis> 10774</refsynopsisdiv> 10775<refsect1> 10776 <title>Arguments</title> 10777 <variablelist> 10778 <varlistentry> 10779 <term><parameter>kcontrol</parameter></term> 10780 <listitem> 10781 <para> 10782 vmaster kctl element 10783 </para> 10784 </listitem> 10785 </varlistentry> 10786 <varlistentry> 10787 <term><parameter>hook_only</parameter></term> 10788 <listitem> 10789 <para> 10790 sync only the hook 10791 </para> 10792 </listitem> 10793 </varlistentry> 10794 </variablelist> 10795</refsect1> 10796<refsect1> 10797<title>Description</title> 10798<para> 10799 Forcibly call the put callback of each slave and call the hook function 10800 to synchronize with the current value of the given vmaster element. 10801 NOP when NULL is passed to <parameter>kcontrol</parameter>. 10802</para> 10803</refsect1> 10804</refentry> 10805 10806<!-- include/sound/control.h --> 10807<refentry id="API-snd-ctl-add-slave"> 10808<refentryinfo> 10809 <title>LINUX</title> 10810 <productname>Kernel Hackers Manual</productname> 10811 <date>July 2017</date> 10812</refentryinfo> 10813<refmeta> 10814 <refentrytitle><phrase>snd_ctl_add_slave</phrase></refentrytitle> 10815 <manvolnum>9</manvolnum> 10816 <refmiscinfo class="version">4.4.14</refmiscinfo> 10817</refmeta> 10818<refnamediv> 10819 <refname>snd_ctl_add_slave</refname> 10820 <refpurpose> 10821 Add a virtual slave control 10822 </refpurpose> 10823</refnamediv> 10824<refsynopsisdiv> 10825 <title>Synopsis</title> 10826 <funcsynopsis><funcprototype> 10827 <funcdef>int <function>snd_ctl_add_slave </function></funcdef> 10828 <paramdef>struct snd_kcontrol * <parameter>master</parameter></paramdef> 10829 <paramdef>struct snd_kcontrol * <parameter>slave</parameter></paramdef> 10830 </funcprototype></funcsynopsis> 10831</refsynopsisdiv> 10832<refsect1> 10833 <title>Arguments</title> 10834 <variablelist> 10835 <varlistentry> 10836 <term><parameter>master</parameter></term> 10837 <listitem> 10838 <para> 10839 vmaster element 10840 </para> 10841 </listitem> 10842 </varlistentry> 10843 <varlistentry> 10844 <term><parameter>slave</parameter></term> 10845 <listitem> 10846 <para> 10847 slave element to add 10848 </para> 10849 </listitem> 10850 </varlistentry> 10851 </variablelist> 10852</refsect1> 10853<refsect1> 10854<title>Description</title> 10855<para> 10856 Add a virtual slave control to the given master element created via 10857 <function>snd_ctl_create_virtual_master</function> beforehand. 10858 </para><para> 10859 10860 All slaves must be the same type (returning the same information 10861 via info callback). The function doesn't check it, so it's your 10862 responsibility. 10863 </para><para> 10864 10865 Also, some additional limitations: 10866 at most two channels, 10867 logarithmic volume control (dB level) thus no linear volume, 10868 master can only attenuate the volume without gain 10869</para> 10870</refsect1> 10871<refsect1> 10872<title>Return</title> 10873<para> 10874 Zero if successful or a negative error code. 10875</para> 10876</refsect1> 10877</refentry> 10878 10879<refentry id="API-snd-ctl-add-slave-uncached"> 10880<refentryinfo> 10881 <title>LINUX</title> 10882 <productname>Kernel Hackers Manual</productname> 10883 <date>July 2017</date> 10884</refentryinfo> 10885<refmeta> 10886 <refentrytitle><phrase>snd_ctl_add_slave_uncached</phrase></refentrytitle> 10887 <manvolnum>9</manvolnum> 10888 <refmiscinfo class="version">4.4.14</refmiscinfo> 10889</refmeta> 10890<refnamediv> 10891 <refname>snd_ctl_add_slave_uncached</refname> 10892 <refpurpose> 10893 Add a virtual slave control 10894 </refpurpose> 10895</refnamediv> 10896<refsynopsisdiv> 10897 <title>Synopsis</title> 10898 <funcsynopsis><funcprototype> 10899 <funcdef>int <function>snd_ctl_add_slave_uncached </function></funcdef> 10900 <paramdef>struct snd_kcontrol * <parameter>master</parameter></paramdef> 10901 <paramdef>struct snd_kcontrol * <parameter>slave</parameter></paramdef> 10902 </funcprototype></funcsynopsis> 10903</refsynopsisdiv> 10904<refsect1> 10905 <title>Arguments</title> 10906 <variablelist> 10907 <varlistentry> 10908 <term><parameter>master</parameter></term> 10909 <listitem> 10910 <para> 10911 vmaster element 10912 </para> 10913 </listitem> 10914 </varlistentry> 10915 <varlistentry> 10916 <term><parameter>slave</parameter></term> 10917 <listitem> 10918 <para> 10919 slave element to add 10920 </para> 10921 </listitem> 10922 </varlistentry> 10923 </variablelist> 10924</refsect1> 10925<refsect1> 10926<title>Description</title> 10927<para> 10928 Add a virtual slave control to the given master. 10929 Unlike <function>snd_ctl_add_slave</function>, the element added via this function 10930 is supposed to have volatile values, and get callback is called 10931 at each time queried from the master. 10932 </para><para> 10933 10934 When the control peeks the hardware values directly and the value 10935 can be changed by other means than the put callback of the element, 10936 this function should be used to keep the value always up-to-date. 10937</para> 10938</refsect1> 10939<refsect1> 10940<title>Return</title> 10941<para> 10942 Zero if successful or a negative error code. 10943</para> 10944</refsect1> 10945</refentry> 10946 10947 </sect1> 10948 </chapter> 10949 <chapter><title>MIDI API</title> 10950 <sect1><title>Raw MIDI API</title> 10951<!-- sound/core/rawmidi.c --> 10952<refentry id="API-snd-rawmidi-receive"> 10953<refentryinfo> 10954 <title>LINUX</title> 10955 <productname>Kernel Hackers Manual</productname> 10956 <date>July 2017</date> 10957</refentryinfo> 10958<refmeta> 10959 <refentrytitle><phrase>snd_rawmidi_receive</phrase></refentrytitle> 10960 <manvolnum>9</manvolnum> 10961 <refmiscinfo class="version">4.4.14</refmiscinfo> 10962</refmeta> 10963<refnamediv> 10964 <refname>snd_rawmidi_receive</refname> 10965 <refpurpose> 10966 receive the input data from the device 10967 </refpurpose> 10968</refnamediv> 10969<refsynopsisdiv> 10970 <title>Synopsis</title> 10971 <funcsynopsis><funcprototype> 10972 <funcdef>int <function>snd_rawmidi_receive </function></funcdef> 10973 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 10974 <paramdef>const unsigned char * <parameter>buffer</parameter></paramdef> 10975 <paramdef>int <parameter>count</parameter></paramdef> 10976 </funcprototype></funcsynopsis> 10977</refsynopsisdiv> 10978<refsect1> 10979 <title>Arguments</title> 10980 <variablelist> 10981 <varlistentry> 10982 <term><parameter>substream</parameter></term> 10983 <listitem> 10984 <para> 10985 the rawmidi substream 10986 </para> 10987 </listitem> 10988 </varlistentry> 10989 <varlistentry> 10990 <term><parameter>buffer</parameter></term> 10991 <listitem> 10992 <para> 10993 the buffer pointer 10994 </para> 10995 </listitem> 10996 </varlistentry> 10997 <varlistentry> 10998 <term><parameter>count</parameter></term> 10999 <listitem> 11000 <para> 11001 the data size to read 11002 </para> 11003 </listitem> 11004 </varlistentry> 11005 </variablelist> 11006</refsect1> 11007<refsect1> 11008<title>Description</title> 11009<para> 11010 Reads the data from the internal buffer. 11011</para> 11012</refsect1> 11013<refsect1> 11014<title>Return</title> 11015<para> 11016 The size of read data, or a negative error code on failure. 11017</para> 11018</refsect1> 11019</refentry> 11020 11021<refentry id="API-snd-rawmidi-transmit-empty"> 11022<refentryinfo> 11023 <title>LINUX</title> 11024 <productname>Kernel Hackers Manual</productname> 11025 <date>July 2017</date> 11026</refentryinfo> 11027<refmeta> 11028 <refentrytitle><phrase>snd_rawmidi_transmit_empty</phrase></refentrytitle> 11029 <manvolnum>9</manvolnum> 11030 <refmiscinfo class="version">4.4.14</refmiscinfo> 11031</refmeta> 11032<refnamediv> 11033 <refname>snd_rawmidi_transmit_empty</refname> 11034 <refpurpose> 11035 check whether the output buffer is empty 11036 </refpurpose> 11037</refnamediv> 11038<refsynopsisdiv> 11039 <title>Synopsis</title> 11040 <funcsynopsis><funcprototype> 11041 <funcdef>int <function>snd_rawmidi_transmit_empty </function></funcdef> 11042 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 11043 </funcprototype></funcsynopsis> 11044</refsynopsisdiv> 11045<refsect1> 11046 <title>Arguments</title> 11047 <variablelist> 11048 <varlistentry> 11049 <term><parameter>substream</parameter></term> 11050 <listitem> 11051 <para> 11052 the rawmidi substream 11053 </para> 11054 </listitem> 11055 </varlistentry> 11056 </variablelist> 11057</refsect1> 11058<refsect1> 11059<title>Return</title> 11060<para> 11061 1 if the internal output buffer is empty, 0 if not. 11062</para> 11063</refsect1> 11064</refentry> 11065 11066<refentry id="API---snd-rawmidi-transmit-peek"> 11067<refentryinfo> 11068 <title>LINUX</title> 11069 <productname>Kernel Hackers Manual</productname> 11070 <date>July 2017</date> 11071</refentryinfo> 11072<refmeta> 11073 <refentrytitle><phrase>__snd_rawmidi_transmit_peek</phrase></refentrytitle> 11074 <manvolnum>9</manvolnum> 11075 <refmiscinfo class="version">4.4.14</refmiscinfo> 11076</refmeta> 11077<refnamediv> 11078 <refname>__snd_rawmidi_transmit_peek</refname> 11079 <refpurpose> 11080 copy data from the internal buffer 11081 </refpurpose> 11082</refnamediv> 11083<refsynopsisdiv> 11084 <title>Synopsis</title> 11085 <funcsynopsis><funcprototype> 11086 <funcdef>int <function>__snd_rawmidi_transmit_peek </function></funcdef> 11087 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 11088 <paramdef>unsigned char * <parameter>buffer</parameter></paramdef> 11089 <paramdef>int <parameter>count</parameter></paramdef> 11090 </funcprototype></funcsynopsis> 11091</refsynopsisdiv> 11092<refsect1> 11093 <title>Arguments</title> 11094 <variablelist> 11095 <varlistentry> 11096 <term><parameter>substream</parameter></term> 11097 <listitem> 11098 <para> 11099 the rawmidi substream 11100 </para> 11101 </listitem> 11102 </varlistentry> 11103 <varlistentry> 11104 <term><parameter>buffer</parameter></term> 11105 <listitem> 11106 <para> 11107 the buffer pointer 11108 </para> 11109 </listitem> 11110 </varlistentry> 11111 <varlistentry> 11112 <term><parameter>count</parameter></term> 11113 <listitem> 11114 <para> 11115 data size to transfer 11116 </para> 11117 </listitem> 11118 </varlistentry> 11119 </variablelist> 11120</refsect1> 11121<refsect1> 11122<title>Description</title> 11123<para> 11124 This is a variant of <function>snd_rawmidi_transmit_peek</function> without spinlock. 11125</para> 11126</refsect1> 11127</refentry> 11128 11129<refentry id="API-snd-rawmidi-transmit-peek"> 11130<refentryinfo> 11131 <title>LINUX</title> 11132 <productname>Kernel Hackers Manual</productname> 11133 <date>July 2017</date> 11134</refentryinfo> 11135<refmeta> 11136 <refentrytitle><phrase>snd_rawmidi_transmit_peek</phrase></refentrytitle> 11137 <manvolnum>9</manvolnum> 11138 <refmiscinfo class="version">4.4.14</refmiscinfo> 11139</refmeta> 11140<refnamediv> 11141 <refname>snd_rawmidi_transmit_peek</refname> 11142 <refpurpose> 11143 copy data from the internal buffer 11144 </refpurpose> 11145</refnamediv> 11146<refsynopsisdiv> 11147 <title>Synopsis</title> 11148 <funcsynopsis><funcprototype> 11149 <funcdef>int <function>snd_rawmidi_transmit_peek </function></funcdef> 11150 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 11151 <paramdef>unsigned char * <parameter>buffer</parameter></paramdef> 11152 <paramdef>int <parameter>count</parameter></paramdef> 11153 </funcprototype></funcsynopsis> 11154</refsynopsisdiv> 11155<refsect1> 11156 <title>Arguments</title> 11157 <variablelist> 11158 <varlistentry> 11159 <term><parameter>substream</parameter></term> 11160 <listitem> 11161 <para> 11162 the rawmidi substream 11163 </para> 11164 </listitem> 11165 </varlistentry> 11166 <varlistentry> 11167 <term><parameter>buffer</parameter></term> 11168 <listitem> 11169 <para> 11170 the buffer pointer 11171 </para> 11172 </listitem> 11173 </varlistentry> 11174 <varlistentry> 11175 <term><parameter>count</parameter></term> 11176 <listitem> 11177 <para> 11178 data size to transfer 11179 </para> 11180 </listitem> 11181 </varlistentry> 11182 </variablelist> 11183</refsect1> 11184<refsect1> 11185<title>Description</title> 11186<para> 11187 Copies data from the internal output buffer to the given buffer. 11188 </para><para> 11189 11190 Call this in the interrupt handler when the midi output is ready, 11191 and call <function>snd_rawmidi_transmit_ack</function> after the transmission is 11192 finished. 11193</para> 11194</refsect1> 11195<refsect1> 11196<title>Return</title> 11197<para> 11198 The size of copied data, or a negative error code on failure. 11199</para> 11200</refsect1> 11201</refentry> 11202 11203<refentry id="API---snd-rawmidi-transmit-ack"> 11204<refentryinfo> 11205 <title>LINUX</title> 11206 <productname>Kernel Hackers Manual</productname> 11207 <date>July 2017</date> 11208</refentryinfo> 11209<refmeta> 11210 <refentrytitle><phrase>__snd_rawmidi_transmit_ack</phrase></refentrytitle> 11211 <manvolnum>9</manvolnum> 11212 <refmiscinfo class="version">4.4.14</refmiscinfo> 11213</refmeta> 11214<refnamediv> 11215 <refname>__snd_rawmidi_transmit_ack</refname> 11216 <refpurpose> 11217 acknowledge the transmission 11218 </refpurpose> 11219</refnamediv> 11220<refsynopsisdiv> 11221 <title>Synopsis</title> 11222 <funcsynopsis><funcprototype> 11223 <funcdef>int <function>__snd_rawmidi_transmit_ack </function></funcdef> 11224 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 11225 <paramdef>int <parameter>count</parameter></paramdef> 11226 </funcprototype></funcsynopsis> 11227</refsynopsisdiv> 11228<refsect1> 11229 <title>Arguments</title> 11230 <variablelist> 11231 <varlistentry> 11232 <term><parameter>substream</parameter></term> 11233 <listitem> 11234 <para> 11235 the rawmidi substream 11236 </para> 11237 </listitem> 11238 </varlistentry> 11239 <varlistentry> 11240 <term><parameter>count</parameter></term> 11241 <listitem> 11242 <para> 11243 the transferred count 11244 </para> 11245 </listitem> 11246 </varlistentry> 11247 </variablelist> 11248</refsect1> 11249<refsect1> 11250<title>Description</title> 11251<para> 11252 This is a variant of <function>__snd_rawmidi_transmit_ack</function> without spinlock. 11253</para> 11254</refsect1> 11255</refentry> 11256 11257<refentry id="API-snd-rawmidi-transmit-ack"> 11258<refentryinfo> 11259 <title>LINUX</title> 11260 <productname>Kernel Hackers Manual</productname> 11261 <date>July 2017</date> 11262</refentryinfo> 11263<refmeta> 11264 <refentrytitle><phrase>snd_rawmidi_transmit_ack</phrase></refentrytitle> 11265 <manvolnum>9</manvolnum> 11266 <refmiscinfo class="version">4.4.14</refmiscinfo> 11267</refmeta> 11268<refnamediv> 11269 <refname>snd_rawmidi_transmit_ack</refname> 11270 <refpurpose> 11271 acknowledge the transmission 11272 </refpurpose> 11273</refnamediv> 11274<refsynopsisdiv> 11275 <title>Synopsis</title> 11276 <funcsynopsis><funcprototype> 11277 <funcdef>int <function>snd_rawmidi_transmit_ack </function></funcdef> 11278 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 11279 <paramdef>int <parameter>count</parameter></paramdef> 11280 </funcprototype></funcsynopsis> 11281</refsynopsisdiv> 11282<refsect1> 11283 <title>Arguments</title> 11284 <variablelist> 11285 <varlistentry> 11286 <term><parameter>substream</parameter></term> 11287 <listitem> 11288 <para> 11289 the rawmidi substream 11290 </para> 11291 </listitem> 11292 </varlistentry> 11293 <varlistentry> 11294 <term><parameter>count</parameter></term> 11295 <listitem> 11296 <para> 11297 the transferred count 11298 </para> 11299 </listitem> 11300 </varlistentry> 11301 </variablelist> 11302</refsect1> 11303<refsect1> 11304<title>Description</title> 11305<para> 11306 Advances the hardware pointer for the internal output buffer with 11307 the given size and updates the condition. 11308 Call after the transmission is finished. 11309</para> 11310</refsect1> 11311<refsect1> 11312<title>Return</title> 11313<para> 11314 The advanced size if successful, or a negative error code on failure. 11315</para> 11316</refsect1> 11317</refentry> 11318 11319<refentry id="API-snd-rawmidi-transmit"> 11320<refentryinfo> 11321 <title>LINUX</title> 11322 <productname>Kernel Hackers Manual</productname> 11323 <date>July 2017</date> 11324</refentryinfo> 11325<refmeta> 11326 <refentrytitle><phrase>snd_rawmidi_transmit</phrase></refentrytitle> 11327 <manvolnum>9</manvolnum> 11328 <refmiscinfo class="version">4.4.14</refmiscinfo> 11329</refmeta> 11330<refnamediv> 11331 <refname>snd_rawmidi_transmit</refname> 11332 <refpurpose> 11333 copy from the buffer to the device 11334 </refpurpose> 11335</refnamediv> 11336<refsynopsisdiv> 11337 <title>Synopsis</title> 11338 <funcsynopsis><funcprototype> 11339 <funcdef>int <function>snd_rawmidi_transmit </function></funcdef> 11340 <paramdef>struct snd_rawmidi_substream * <parameter>substream</parameter></paramdef> 11341 <paramdef>unsigned char * <parameter>buffer</parameter></paramdef> 11342 <paramdef>int <parameter>count</parameter></paramdef> 11343 </funcprototype></funcsynopsis> 11344</refsynopsisdiv> 11345<refsect1> 11346 <title>Arguments</title> 11347 <variablelist> 11348 <varlistentry> 11349 <term><parameter>substream</parameter></term> 11350 <listitem> 11351 <para> 11352 the rawmidi substream 11353 </para> 11354 </listitem> 11355 </varlistentry> 11356 <varlistentry> 11357 <term><parameter>buffer</parameter></term> 11358 <listitem> 11359 <para> 11360 the buffer pointer 11361 </para> 11362 </listitem> 11363 </varlistentry> 11364 <varlistentry> 11365 <term><parameter>count</parameter></term> 11366 <listitem> 11367 <para> 11368 the data size to transfer 11369 </para> 11370 </listitem> 11371 </varlistentry> 11372 </variablelist> 11373</refsect1> 11374<refsect1> 11375<title>Description</title> 11376<para> 11377 Copies data from the buffer to the device and advances the pointer. 11378</para> 11379</refsect1> 11380<refsect1> 11381<title>Return</title> 11382<para> 11383 The copied size if successful, or a negative error code on failure. 11384</para> 11385</refsect1> 11386</refentry> 11387 11388<refentry id="API-snd-rawmidi-new"> 11389<refentryinfo> 11390 <title>LINUX</title> 11391 <productname>Kernel Hackers Manual</productname> 11392 <date>July 2017</date> 11393</refentryinfo> 11394<refmeta> 11395 <refentrytitle><phrase>snd_rawmidi_new</phrase></refentrytitle> 11396 <manvolnum>9</manvolnum> 11397 <refmiscinfo class="version">4.4.14</refmiscinfo> 11398</refmeta> 11399<refnamediv> 11400 <refname>snd_rawmidi_new</refname> 11401 <refpurpose> 11402 create a rawmidi instance 11403 </refpurpose> 11404</refnamediv> 11405<refsynopsisdiv> 11406 <title>Synopsis</title> 11407 <funcsynopsis><funcprototype> 11408 <funcdef>int <function>snd_rawmidi_new </function></funcdef> 11409 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 11410 <paramdef>char * <parameter>id</parameter></paramdef> 11411 <paramdef>int <parameter>device</parameter></paramdef> 11412 <paramdef>int <parameter>output_count</parameter></paramdef> 11413 <paramdef>int <parameter>input_count</parameter></paramdef> 11414 <paramdef>struct snd_rawmidi ** <parameter>rrawmidi</parameter></paramdef> 11415 </funcprototype></funcsynopsis> 11416</refsynopsisdiv> 11417<refsect1> 11418 <title>Arguments</title> 11419 <variablelist> 11420 <varlistentry> 11421 <term><parameter>card</parameter></term> 11422 <listitem> 11423 <para> 11424 the card instance 11425 </para> 11426 </listitem> 11427 </varlistentry> 11428 <varlistentry> 11429 <term><parameter>id</parameter></term> 11430 <listitem> 11431 <para> 11432 the id string 11433 </para> 11434 </listitem> 11435 </varlistentry> 11436 <varlistentry> 11437 <term><parameter>device</parameter></term> 11438 <listitem> 11439 <para> 11440 the device index 11441 </para> 11442 </listitem> 11443 </varlistentry> 11444 <varlistentry> 11445 <term><parameter>output_count</parameter></term> 11446 <listitem> 11447 <para> 11448 the number of output streams 11449 </para> 11450 </listitem> 11451 </varlistentry> 11452 <varlistentry> 11453 <term><parameter>input_count</parameter></term> 11454 <listitem> 11455 <para> 11456 the number of input streams 11457 </para> 11458 </listitem> 11459 </varlistentry> 11460 <varlistentry> 11461 <term><parameter>rrawmidi</parameter></term> 11462 <listitem> 11463 <para> 11464 the pointer to store the new rawmidi instance 11465 </para> 11466 </listitem> 11467 </varlistentry> 11468 </variablelist> 11469</refsect1> 11470<refsect1> 11471<title>Description</title> 11472<para> 11473 Creates a new rawmidi instance. 11474 Use <function>snd_rawmidi_set_ops</function> to set the operators to the new instance. 11475</para> 11476</refsect1> 11477<refsect1> 11478<title>Return</title> 11479<para> 11480 Zero if successful, or a negative error code on failure. 11481</para> 11482</refsect1> 11483</refentry> 11484 11485<refentry id="API-snd-rawmidi-set-ops"> 11486<refentryinfo> 11487 <title>LINUX</title> 11488 <productname>Kernel Hackers Manual</productname> 11489 <date>July 2017</date> 11490</refentryinfo> 11491<refmeta> 11492 <refentrytitle><phrase>snd_rawmidi_set_ops</phrase></refentrytitle> 11493 <manvolnum>9</manvolnum> 11494 <refmiscinfo class="version">4.4.14</refmiscinfo> 11495</refmeta> 11496<refnamediv> 11497 <refname>snd_rawmidi_set_ops</refname> 11498 <refpurpose> 11499 set the rawmidi operators 11500 </refpurpose> 11501</refnamediv> 11502<refsynopsisdiv> 11503 <title>Synopsis</title> 11504 <funcsynopsis><funcprototype> 11505 <funcdef>void <function>snd_rawmidi_set_ops </function></funcdef> 11506 <paramdef>struct snd_rawmidi * <parameter>rmidi</parameter></paramdef> 11507 <paramdef>int <parameter>stream</parameter></paramdef> 11508 <paramdef>struct snd_rawmidi_ops * <parameter>ops</parameter></paramdef> 11509 </funcprototype></funcsynopsis> 11510</refsynopsisdiv> 11511<refsect1> 11512 <title>Arguments</title> 11513 <variablelist> 11514 <varlistentry> 11515 <term><parameter>rmidi</parameter></term> 11516 <listitem> 11517 <para> 11518 the rawmidi instance 11519 </para> 11520 </listitem> 11521 </varlistentry> 11522 <varlistentry> 11523 <term><parameter>stream</parameter></term> 11524 <listitem> 11525 <para> 11526 the stream direction, SNDRV_RAWMIDI_STREAM_XXX 11527 </para> 11528 </listitem> 11529 </varlistentry> 11530 <varlistentry> 11531 <term><parameter>ops</parameter></term> 11532 <listitem> 11533 <para> 11534 the operator table 11535 </para> 11536 </listitem> 11537 </varlistentry> 11538 </variablelist> 11539</refsect1> 11540<refsect1> 11541<title>Description</title> 11542<para> 11543 Sets the rawmidi operators for the given stream direction. 11544</para> 11545</refsect1> 11546</refentry> 11547 11548 </sect1> 11549 <sect1><title>MPU401-UART API</title> 11550<!-- sound/drivers/mpu401/mpu401_uart.c --> 11551<refentry id="API-snd-mpu401-uart-interrupt"> 11552<refentryinfo> 11553 <title>LINUX</title> 11554 <productname>Kernel Hackers Manual</productname> 11555 <date>July 2017</date> 11556</refentryinfo> 11557<refmeta> 11558 <refentrytitle><phrase>snd_mpu401_uart_interrupt</phrase></refentrytitle> 11559 <manvolnum>9</manvolnum> 11560 <refmiscinfo class="version">4.4.14</refmiscinfo> 11561</refmeta> 11562<refnamediv> 11563 <refname>snd_mpu401_uart_interrupt</refname> 11564 <refpurpose> 11565 generic MPU401-UART interrupt handler 11566 </refpurpose> 11567</refnamediv> 11568<refsynopsisdiv> 11569 <title>Synopsis</title> 11570 <funcsynopsis><funcprototype> 11571 <funcdef>irqreturn_t <function>snd_mpu401_uart_interrupt </function></funcdef> 11572 <paramdef>int <parameter>irq</parameter></paramdef> 11573 <paramdef>void * <parameter>dev_id</parameter></paramdef> 11574 </funcprototype></funcsynopsis> 11575</refsynopsisdiv> 11576<refsect1> 11577 <title>Arguments</title> 11578 <variablelist> 11579 <varlistentry> 11580 <term><parameter>irq</parameter></term> 11581 <listitem> 11582 <para> 11583 the irq number 11584 </para> 11585 </listitem> 11586 </varlistentry> 11587 <varlistentry> 11588 <term><parameter>dev_id</parameter></term> 11589 <listitem> 11590 <para> 11591 mpu401 instance 11592 </para> 11593 </listitem> 11594 </varlistentry> 11595 </variablelist> 11596</refsect1> 11597<refsect1> 11598<title>Description</title> 11599<para> 11600 Processes the interrupt for MPU401-UART i/o. 11601</para> 11602</refsect1> 11603<refsect1> 11604<title>Return</title> 11605<para> 11606 <constant>IRQ_HANDLED</constant> if the interrupt was handled. <constant>IRQ_NONE</constant> otherwise. 11607</para> 11608</refsect1> 11609</refentry> 11610 11611<refentry id="API-snd-mpu401-uart-interrupt-tx"> 11612<refentryinfo> 11613 <title>LINUX</title> 11614 <productname>Kernel Hackers Manual</productname> 11615 <date>July 2017</date> 11616</refentryinfo> 11617<refmeta> 11618 <refentrytitle><phrase>snd_mpu401_uart_interrupt_tx</phrase></refentrytitle> 11619 <manvolnum>9</manvolnum> 11620 <refmiscinfo class="version">4.4.14</refmiscinfo> 11621</refmeta> 11622<refnamediv> 11623 <refname>snd_mpu401_uart_interrupt_tx</refname> 11624 <refpurpose> 11625 generic MPU401-UART transmit irq handler 11626 </refpurpose> 11627</refnamediv> 11628<refsynopsisdiv> 11629 <title>Synopsis</title> 11630 <funcsynopsis><funcprototype> 11631 <funcdef>irqreturn_t <function>snd_mpu401_uart_interrupt_tx </function></funcdef> 11632 <paramdef>int <parameter>irq</parameter></paramdef> 11633 <paramdef>void * <parameter>dev_id</parameter></paramdef> 11634 </funcprototype></funcsynopsis> 11635</refsynopsisdiv> 11636<refsect1> 11637 <title>Arguments</title> 11638 <variablelist> 11639 <varlistentry> 11640 <term><parameter>irq</parameter></term> 11641 <listitem> 11642 <para> 11643 the irq number 11644 </para> 11645 </listitem> 11646 </varlistentry> 11647 <varlistentry> 11648 <term><parameter>dev_id</parameter></term> 11649 <listitem> 11650 <para> 11651 mpu401 instance 11652 </para> 11653 </listitem> 11654 </varlistentry> 11655 </variablelist> 11656</refsect1> 11657<refsect1> 11658<title>Description</title> 11659<para> 11660 Processes the interrupt for MPU401-UART output. 11661</para> 11662</refsect1> 11663<refsect1> 11664<title>Return</title> 11665<para> 11666 <constant>IRQ_HANDLED</constant> if the interrupt was handled. <constant>IRQ_NONE</constant> otherwise. 11667</para> 11668</refsect1> 11669</refentry> 11670 11671<refentry id="API-snd-mpu401-uart-new"> 11672<refentryinfo> 11673 <title>LINUX</title> 11674 <productname>Kernel Hackers Manual</productname> 11675 <date>July 2017</date> 11676</refentryinfo> 11677<refmeta> 11678 <refentrytitle><phrase>snd_mpu401_uart_new</phrase></refentrytitle> 11679 <manvolnum>9</manvolnum> 11680 <refmiscinfo class="version">4.4.14</refmiscinfo> 11681</refmeta> 11682<refnamediv> 11683 <refname>snd_mpu401_uart_new</refname> 11684 <refpurpose> 11685 create an MPU401-UART instance 11686 </refpurpose> 11687</refnamediv> 11688<refsynopsisdiv> 11689 <title>Synopsis</title> 11690 <funcsynopsis><funcprototype> 11691 <funcdef>int <function>snd_mpu401_uart_new </function></funcdef> 11692 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 11693 <paramdef>int <parameter>device</parameter></paramdef> 11694 <paramdef>unsigned short <parameter>hardware</parameter></paramdef> 11695 <paramdef>unsigned long <parameter>port</parameter></paramdef> 11696 <paramdef>unsigned int <parameter>info_flags</parameter></paramdef> 11697 <paramdef>int <parameter>irq</parameter></paramdef> 11698 <paramdef>struct snd_rawmidi ** <parameter>rrawmidi</parameter></paramdef> 11699 </funcprototype></funcsynopsis> 11700</refsynopsisdiv> 11701<refsect1> 11702 <title>Arguments</title> 11703 <variablelist> 11704 <varlistentry> 11705 <term><parameter>card</parameter></term> 11706 <listitem> 11707 <para> 11708 the card instance 11709 </para> 11710 </listitem> 11711 </varlistentry> 11712 <varlistentry> 11713 <term><parameter>device</parameter></term> 11714 <listitem> 11715 <para> 11716 the device index, zero-based 11717 </para> 11718 </listitem> 11719 </varlistentry> 11720 <varlistentry> 11721 <term><parameter>hardware</parameter></term> 11722 <listitem> 11723 <para> 11724 the hardware type, MPU401_HW_XXXX 11725 </para> 11726 </listitem> 11727 </varlistentry> 11728 <varlistentry> 11729 <term><parameter>port</parameter></term> 11730 <listitem> 11731 <para> 11732 the base address of MPU401 port 11733 </para> 11734 </listitem> 11735 </varlistentry> 11736 <varlistentry> 11737 <term><parameter>info_flags</parameter></term> 11738 <listitem> 11739 <para> 11740 bitflags MPU401_INFO_XXX 11741 </para> 11742 </listitem> 11743 </varlistentry> 11744 <varlistentry> 11745 <term><parameter>irq</parameter></term> 11746 <listitem> 11747 <para> 11748 the ISA irq number, -1 if not to be allocated 11749 </para> 11750 </listitem> 11751 </varlistentry> 11752 <varlistentry> 11753 <term><parameter>rrawmidi</parameter></term> 11754 <listitem> 11755 <para> 11756 the pointer to store the new rawmidi instance 11757 </para> 11758 </listitem> 11759 </varlistentry> 11760 </variablelist> 11761</refsect1> 11762<refsect1> 11763<title>Description</title> 11764<para> 11765 Creates a new MPU-401 instance. 11766 </para><para> 11767 11768 Note that the rawmidi instance is returned on the rrawmidi argument, 11769 not the mpu401 instance itself. To access to the mpu401 instance, 11770 cast from rawmidi->private_data (with struct snd_mpu401 magic-cast). 11771</para> 11772</refsect1> 11773<refsect1> 11774<title>Return</title> 11775<para> 11776 Zero if successful, or a negative error code. 11777</para> 11778</refsect1> 11779</refentry> 11780 11781 </sect1> 11782 </chapter> 11783 <chapter><title>Proc Info API</title> 11784 <sect1><title>Proc Info Interface</title> 11785<!-- sound/core/info.c --> 11786<refentry id="API-snd-info-get-line"> 11787<refentryinfo> 11788 <title>LINUX</title> 11789 <productname>Kernel Hackers Manual</productname> 11790 <date>July 2017</date> 11791</refentryinfo> 11792<refmeta> 11793 <refentrytitle><phrase>snd_info_get_line</phrase></refentrytitle> 11794 <manvolnum>9</manvolnum> 11795 <refmiscinfo class="version">4.4.14</refmiscinfo> 11796</refmeta> 11797<refnamediv> 11798 <refname>snd_info_get_line</refname> 11799 <refpurpose> 11800 read one line from the procfs buffer 11801 </refpurpose> 11802</refnamediv> 11803<refsynopsisdiv> 11804 <title>Synopsis</title> 11805 <funcsynopsis><funcprototype> 11806 <funcdef>int <function>snd_info_get_line </function></funcdef> 11807 <paramdef>struct snd_info_buffer * <parameter>buffer</parameter></paramdef> 11808 <paramdef>char * <parameter>line</parameter></paramdef> 11809 <paramdef>int <parameter>len</parameter></paramdef> 11810 </funcprototype></funcsynopsis> 11811</refsynopsisdiv> 11812<refsect1> 11813 <title>Arguments</title> 11814 <variablelist> 11815 <varlistentry> 11816 <term><parameter>buffer</parameter></term> 11817 <listitem> 11818 <para> 11819 the procfs buffer 11820 </para> 11821 </listitem> 11822 </varlistentry> 11823 <varlistentry> 11824 <term><parameter>line</parameter></term> 11825 <listitem> 11826 <para> 11827 the buffer to store 11828 </para> 11829 </listitem> 11830 </varlistentry> 11831 <varlistentry> 11832 <term><parameter>len</parameter></term> 11833 <listitem> 11834 <para> 11835 the max. buffer size 11836 </para> 11837 </listitem> 11838 </varlistentry> 11839 </variablelist> 11840</refsect1> 11841<refsect1> 11842<title>Description</title> 11843<para> 11844 Reads one line from the buffer and stores the string. 11845</para> 11846</refsect1> 11847<refsect1> 11848<title>Return</title> 11849<para> 11850 Zero if successful, or 1 if error or EOF. 11851</para> 11852</refsect1> 11853</refentry> 11854 11855<refentry id="API-snd-info-get-str"> 11856<refentryinfo> 11857 <title>LINUX</title> 11858 <productname>Kernel Hackers Manual</productname> 11859 <date>July 2017</date> 11860</refentryinfo> 11861<refmeta> 11862 <refentrytitle><phrase>snd_info_get_str</phrase></refentrytitle> 11863 <manvolnum>9</manvolnum> 11864 <refmiscinfo class="version">4.4.14</refmiscinfo> 11865</refmeta> 11866<refnamediv> 11867 <refname>snd_info_get_str</refname> 11868 <refpurpose> 11869 parse a string token 11870 </refpurpose> 11871</refnamediv> 11872<refsynopsisdiv> 11873 <title>Synopsis</title> 11874 <funcsynopsis><funcprototype> 11875 <funcdef>const char * <function>snd_info_get_str </function></funcdef> 11876 <paramdef>char * <parameter>dest</parameter></paramdef> 11877 <paramdef>const char * <parameter>src</parameter></paramdef> 11878 <paramdef>int <parameter>len</parameter></paramdef> 11879 </funcprototype></funcsynopsis> 11880</refsynopsisdiv> 11881<refsect1> 11882 <title>Arguments</title> 11883 <variablelist> 11884 <varlistentry> 11885 <term><parameter>dest</parameter></term> 11886 <listitem> 11887 <para> 11888 the buffer to store the string token 11889 </para> 11890 </listitem> 11891 </varlistentry> 11892 <varlistentry> 11893 <term><parameter>src</parameter></term> 11894 <listitem> 11895 <para> 11896 the original string 11897 </para> 11898 </listitem> 11899 </varlistentry> 11900 <varlistentry> 11901 <term><parameter>len</parameter></term> 11902 <listitem> 11903 <para> 11904 the max. length of token - 1 11905 </para> 11906 </listitem> 11907 </varlistentry> 11908 </variablelist> 11909</refsect1> 11910<refsect1> 11911<title>Description</title> 11912<para> 11913 Parses the original string and copy a token to the given 11914 string buffer. 11915</para> 11916</refsect1> 11917<refsect1> 11918<title>Return</title> 11919<para> 11920 The updated pointer of the original string so that 11921 it can be used for the next call. 11922</para> 11923</refsect1> 11924</refentry> 11925 11926<refentry id="API-snd-info-create-module-entry"> 11927<refentryinfo> 11928 <title>LINUX</title> 11929 <productname>Kernel Hackers Manual</productname> 11930 <date>July 2017</date> 11931</refentryinfo> 11932<refmeta> 11933 <refentrytitle><phrase>snd_info_create_module_entry</phrase></refentrytitle> 11934 <manvolnum>9</manvolnum> 11935 <refmiscinfo class="version">4.4.14</refmiscinfo> 11936</refmeta> 11937<refnamediv> 11938 <refname>snd_info_create_module_entry</refname> 11939 <refpurpose> 11940 create an info entry for the given module 11941 </refpurpose> 11942</refnamediv> 11943<refsynopsisdiv> 11944 <title>Synopsis</title> 11945 <funcsynopsis><funcprototype> 11946 <funcdef>struct snd_info_entry * <function>snd_info_create_module_entry </function></funcdef> 11947 <paramdef>struct module * <parameter>module</parameter></paramdef> 11948 <paramdef>const char * <parameter>name</parameter></paramdef> 11949 <paramdef>struct snd_info_entry * <parameter>parent</parameter></paramdef> 11950 </funcprototype></funcsynopsis> 11951</refsynopsisdiv> 11952<refsect1> 11953 <title>Arguments</title> 11954 <variablelist> 11955 <varlistentry> 11956 <term><parameter>module</parameter></term> 11957 <listitem> 11958 <para> 11959 the module pointer 11960 </para> 11961 </listitem> 11962 </varlistentry> 11963 <varlistentry> 11964 <term><parameter>name</parameter></term> 11965 <listitem> 11966 <para> 11967 the file name 11968 </para> 11969 </listitem> 11970 </varlistentry> 11971 <varlistentry> 11972 <term><parameter>parent</parameter></term> 11973 <listitem> 11974 <para> 11975 the parent directory 11976 </para> 11977 </listitem> 11978 </varlistentry> 11979 </variablelist> 11980</refsect1> 11981<refsect1> 11982<title>Description</title> 11983<para> 11984 Creates a new info entry and assigns it to the given module. 11985</para> 11986</refsect1> 11987<refsect1> 11988<title>Return</title> 11989<para> 11990 The pointer of the new instance, or <constant>NULL</constant> on failure. 11991</para> 11992</refsect1> 11993</refentry> 11994 11995<refentry id="API-snd-info-create-card-entry"> 11996<refentryinfo> 11997 <title>LINUX</title> 11998 <productname>Kernel Hackers Manual</productname> 11999 <date>July 2017</date> 12000</refentryinfo> 12001<refmeta> 12002 <refentrytitle><phrase>snd_info_create_card_entry</phrase></refentrytitle> 12003 <manvolnum>9</manvolnum> 12004 <refmiscinfo class="version">4.4.14</refmiscinfo> 12005</refmeta> 12006<refnamediv> 12007 <refname>snd_info_create_card_entry</refname> 12008 <refpurpose> 12009 create an info entry for the given card 12010 </refpurpose> 12011</refnamediv> 12012<refsynopsisdiv> 12013 <title>Synopsis</title> 12014 <funcsynopsis><funcprototype> 12015 <funcdef>struct snd_info_entry * <function>snd_info_create_card_entry </function></funcdef> 12016 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 12017 <paramdef>const char * <parameter>name</parameter></paramdef> 12018 <paramdef>struct snd_info_entry * <parameter>parent</parameter></paramdef> 12019 </funcprototype></funcsynopsis> 12020</refsynopsisdiv> 12021<refsect1> 12022 <title>Arguments</title> 12023 <variablelist> 12024 <varlistentry> 12025 <term><parameter>card</parameter></term> 12026 <listitem> 12027 <para> 12028 the card instance 12029 </para> 12030 </listitem> 12031 </varlistentry> 12032 <varlistentry> 12033 <term><parameter>name</parameter></term> 12034 <listitem> 12035 <para> 12036 the file name 12037 </para> 12038 </listitem> 12039 </varlistentry> 12040 <varlistentry> 12041 <term><parameter>parent</parameter></term> 12042 <listitem> 12043 <para> 12044 the parent directory 12045 </para> 12046 </listitem> 12047 </varlistentry> 12048 </variablelist> 12049</refsect1> 12050<refsect1> 12051<title>Description</title> 12052<para> 12053 Creates a new info entry and assigns it to the given card. 12054</para> 12055</refsect1> 12056<refsect1> 12057<title>Return</title> 12058<para> 12059 The pointer of the new instance, or <constant>NULL</constant> on failure. 12060</para> 12061</refsect1> 12062</refentry> 12063 12064<refentry id="API-snd-info-free-entry"> 12065<refentryinfo> 12066 <title>LINUX</title> 12067 <productname>Kernel Hackers Manual</productname> 12068 <date>July 2017</date> 12069</refentryinfo> 12070<refmeta> 12071 <refentrytitle><phrase>snd_info_free_entry</phrase></refentrytitle> 12072 <manvolnum>9</manvolnum> 12073 <refmiscinfo class="version">4.4.14</refmiscinfo> 12074</refmeta> 12075<refnamediv> 12076 <refname>snd_info_free_entry</refname> 12077 <refpurpose> 12078 release the info entry 12079 </refpurpose> 12080</refnamediv> 12081<refsynopsisdiv> 12082 <title>Synopsis</title> 12083 <funcsynopsis><funcprototype> 12084 <funcdef>void <function>snd_info_free_entry </function></funcdef> 12085 <paramdef>struct snd_info_entry * <parameter>entry</parameter></paramdef> 12086 </funcprototype></funcsynopsis> 12087</refsynopsisdiv> 12088<refsect1> 12089 <title>Arguments</title> 12090 <variablelist> 12091 <varlistentry> 12092 <term><parameter>entry</parameter></term> 12093 <listitem> 12094 <para> 12095 the info entry 12096 </para> 12097 </listitem> 12098 </varlistentry> 12099 </variablelist> 12100</refsect1> 12101<refsect1> 12102<title>Description</title> 12103<para> 12104 Releases the info entry. 12105</para> 12106</refsect1> 12107</refentry> 12108 12109<refentry id="API-snd-info-register"> 12110<refentryinfo> 12111 <title>LINUX</title> 12112 <productname>Kernel Hackers Manual</productname> 12113 <date>July 2017</date> 12114</refentryinfo> 12115<refmeta> 12116 <refentrytitle><phrase>snd_info_register</phrase></refentrytitle> 12117 <manvolnum>9</manvolnum> 12118 <refmiscinfo class="version">4.4.14</refmiscinfo> 12119</refmeta> 12120<refnamediv> 12121 <refname>snd_info_register</refname> 12122 <refpurpose> 12123 register the info entry 12124 </refpurpose> 12125</refnamediv> 12126<refsynopsisdiv> 12127 <title>Synopsis</title> 12128 <funcsynopsis><funcprototype> 12129 <funcdef>int <function>snd_info_register </function></funcdef> 12130 <paramdef>struct snd_info_entry * <parameter>entry</parameter></paramdef> 12131 </funcprototype></funcsynopsis> 12132</refsynopsisdiv> 12133<refsect1> 12134 <title>Arguments</title> 12135 <variablelist> 12136 <varlistentry> 12137 <term><parameter>entry</parameter></term> 12138 <listitem> 12139 <para> 12140 the info entry 12141 </para> 12142 </listitem> 12143 </varlistentry> 12144 </variablelist> 12145</refsect1> 12146<refsect1> 12147<title>Description</title> 12148<para> 12149 Registers the proc info entry. 12150</para> 12151</refsect1> 12152<refsect1> 12153<title>Return</title> 12154<para> 12155 Zero if successful, or a negative error code on failure. 12156</para> 12157</refsect1> 12158</refentry> 12159 12160 </sect1> 12161 </chapter> 12162 <chapter><title>Compress Offload</title> 12163 <sect1><title>Compress Offload API</title> 12164<!-- sound/core/compress_offload.c --> 12165<refentry id="API-snd-compress-register"> 12166<refentryinfo> 12167 <title>LINUX</title> 12168 <productname>Kernel Hackers Manual</productname> 12169 <date>July 2017</date> 12170</refentryinfo> 12171<refmeta> 12172 <refentrytitle><phrase>snd_compress_register</phrase></refentrytitle> 12173 <manvolnum>9</manvolnum> 12174 <refmiscinfo class="version">4.4.14</refmiscinfo> 12175</refmeta> 12176<refnamediv> 12177 <refname>snd_compress_register</refname> 12178 <refpurpose> 12179 register compressed device 12180 </refpurpose> 12181</refnamediv> 12182<refsynopsisdiv> 12183 <title>Synopsis</title> 12184 <funcsynopsis><funcprototype> 12185 <funcdef>int <function>snd_compress_register </function></funcdef> 12186 <paramdef>struct snd_compr * <parameter>device</parameter></paramdef> 12187 </funcprototype></funcsynopsis> 12188</refsynopsisdiv> 12189<refsect1> 12190 <title>Arguments</title> 12191 <variablelist> 12192 <varlistentry> 12193 <term><parameter>device</parameter></term> 12194 <listitem> 12195 <para> 12196 compressed device to register 12197 </para> 12198 </listitem> 12199 </varlistentry> 12200 </variablelist> 12201</refsect1> 12202</refentry> 12203 12204<!-- include/uapi/sound/compress_offload.h --> 12205<refentry id="API-struct-snd-compressed-buffer"> 12206<refentryinfo> 12207 <title>LINUX</title> 12208 <productname>Kernel Hackers Manual</productname> 12209 <date>July 2017</date> 12210</refentryinfo> 12211<refmeta> 12212 <refentrytitle><phrase>struct snd_compressed_buffer</phrase></refentrytitle> 12213 <manvolnum>9</manvolnum> 12214 <refmiscinfo class="version">4.4.14</refmiscinfo> 12215</refmeta> 12216<refnamediv> 12217 <refname>struct snd_compressed_buffer</refname> 12218 <refpurpose> 12219 compressed buffer 12220 </refpurpose> 12221</refnamediv> 12222<refsynopsisdiv> 12223 <title>Synopsis</title> 12224 <programlisting> 12225struct snd_compressed_buffer { 12226 __u32 fragment_size; 12227 __u32 fragments; 12228}; </programlisting> 12229</refsynopsisdiv> 12230 <refsect1> 12231 <title>Members</title> 12232 <variablelist> 12233 <varlistentry> <term>fragment_size</term> 12234 <listitem><para> 12235size of buffer fragment in bytes 12236 </para></listitem> 12237 </varlistentry> 12238 <varlistentry> <term>fragments</term> 12239 <listitem><para> 12240number of such fragments 12241 </para></listitem> 12242 </varlistentry> 12243 </variablelist> 12244 </refsect1> 12245</refentry> 12246 12247<refentry id="API-struct-snd-compr-params"> 12248<refentryinfo> 12249 <title>LINUX</title> 12250 <productname>Kernel Hackers Manual</productname> 12251 <date>July 2017</date> 12252</refentryinfo> 12253<refmeta> 12254 <refentrytitle><phrase>struct snd_compr_params</phrase></refentrytitle> 12255 <manvolnum>9</manvolnum> 12256 <refmiscinfo class="version">4.4.14</refmiscinfo> 12257</refmeta> 12258<refnamediv> 12259 <refname>struct snd_compr_params</refname> 12260 <refpurpose> 12261 compressed stream params 12262 </refpurpose> 12263</refnamediv> 12264<refsynopsisdiv> 12265 <title>Synopsis</title> 12266 <programlisting> 12267struct snd_compr_params { 12268 struct snd_compressed_buffer buffer; 12269 struct snd_codec codec; 12270 __u8 no_wake_mode; 12271}; </programlisting> 12272</refsynopsisdiv> 12273 <refsect1> 12274 <title>Members</title> 12275 <variablelist> 12276 <varlistentry> <term>buffer</term> 12277 <listitem><para> 12278 buffer description 12279 </para></listitem> 12280 </varlistentry> 12281 <varlistentry> <term>codec</term> 12282 <listitem><para> 12283 codec parameters 12284 </para></listitem> 12285 </varlistentry> 12286 <varlistentry> <term>no_wake_mode</term> 12287 <listitem><para> 12288 dont wake on fragment elapsed 12289 </para></listitem> 12290 </varlistentry> 12291 </variablelist> 12292 </refsect1> 12293</refentry> 12294 12295<refentry id="API-struct-snd-compr-tstamp"> 12296<refentryinfo> 12297 <title>LINUX</title> 12298 <productname>Kernel Hackers Manual</productname> 12299 <date>July 2017</date> 12300</refentryinfo> 12301<refmeta> 12302 <refentrytitle><phrase>struct snd_compr_tstamp</phrase></refentrytitle> 12303 <manvolnum>9</manvolnum> 12304 <refmiscinfo class="version">4.4.14</refmiscinfo> 12305</refmeta> 12306<refnamediv> 12307 <refname>struct snd_compr_tstamp</refname> 12308 <refpurpose> 12309 timestamp descriptor 12310 </refpurpose> 12311</refnamediv> 12312<refsynopsisdiv> 12313 <title>Synopsis</title> 12314 <programlisting> 12315struct snd_compr_tstamp { 12316 __u32 byte_offset; 12317 __u32 copied_total; 12318 __u32 pcm_frames; 12319 __u32 pcm_io_frames; 12320 __u32 sampling_rate; 12321}; </programlisting> 12322</refsynopsisdiv> 12323 <refsect1> 12324 <title>Members</title> 12325 <variablelist> 12326 <varlistentry> <term>byte_offset</term> 12327 <listitem><para> 12328 Byte offset in ring buffer to DSP 12329 </para></listitem> 12330 </varlistentry> 12331 <varlistentry> <term>copied_total</term> 12332 <listitem><para> 12333 Total number of bytes copied from/to ring buffer to/by DSP 12334 </para></listitem> 12335 </varlistentry> 12336 <varlistentry> <term>pcm_frames</term> 12337 <listitem><para> 12338 Frames decoded or encoded by DSP. This field will evolve by 12339 large steps and should only be used to monitor encoding/decoding 12340 progress. It shall not be used for timing estimates. 12341 </para></listitem> 12342 </varlistentry> 12343 <varlistentry> <term>pcm_io_frames</term> 12344 <listitem><para> 12345 Frames rendered or received by DSP into a mixer or an audio 12346 output/input. This field should be used for A/V sync or time estimates. 12347 </para></listitem> 12348 </varlistentry> 12349 <varlistentry> <term>sampling_rate</term> 12350 <listitem><para> 12351 sampling rate of audio 12352 </para></listitem> 12353 </varlistentry> 12354 </variablelist> 12355 </refsect1> 12356</refentry> 12357 12358<refentry id="API-struct-snd-compr-avail"> 12359<refentryinfo> 12360 <title>LINUX</title> 12361 <productname>Kernel Hackers Manual</productname> 12362 <date>July 2017</date> 12363</refentryinfo> 12364<refmeta> 12365 <refentrytitle><phrase>struct snd_compr_avail</phrase></refentrytitle> 12366 <manvolnum>9</manvolnum> 12367 <refmiscinfo class="version">4.4.14</refmiscinfo> 12368</refmeta> 12369<refnamediv> 12370 <refname>struct snd_compr_avail</refname> 12371 <refpurpose> 12372 avail descriptor 12373 </refpurpose> 12374</refnamediv> 12375<refsynopsisdiv> 12376 <title>Synopsis</title> 12377 <programlisting> 12378struct snd_compr_avail { 12379 __u64 avail; 12380 struct snd_compr_tstamp tstamp; 12381}; </programlisting> 12382</refsynopsisdiv> 12383 <refsect1> 12384 <title>Members</title> 12385 <variablelist> 12386 <varlistentry> <term>avail</term> 12387 <listitem><para> 12388 Number of bytes available in ring buffer for writing/reading 12389 </para></listitem> 12390 </varlistentry> 12391 <varlistentry> <term>tstamp</term> 12392 <listitem><para> 12393 timestamp information 12394 </para></listitem> 12395 </varlistentry> 12396 </variablelist> 12397 </refsect1> 12398</refentry> 12399 12400<refentry id="API-struct-snd-compr-caps"> 12401<refentryinfo> 12402 <title>LINUX</title> 12403 <productname>Kernel Hackers Manual</productname> 12404 <date>July 2017</date> 12405</refentryinfo> 12406<refmeta> 12407 <refentrytitle><phrase>struct snd_compr_caps</phrase></refentrytitle> 12408 <manvolnum>9</manvolnum> 12409 <refmiscinfo class="version">4.4.14</refmiscinfo> 12410</refmeta> 12411<refnamediv> 12412 <refname>struct snd_compr_caps</refname> 12413 <refpurpose> 12414 caps descriptor 12415 </refpurpose> 12416</refnamediv> 12417<refsynopsisdiv> 12418 <title>Synopsis</title> 12419 <programlisting> 12420struct snd_compr_caps { 12421 __u32 num_codecs; 12422 __u32 direction; 12423 __u32 min_fragment_size; 12424 __u32 max_fragment_size; 12425 __u32 min_fragments; 12426 __u32 max_fragments; 12427 __u32 codecs[MAX_NUM_CODECS]; 12428 __u32 reserved[11]; 12429}; </programlisting> 12430</refsynopsisdiv> 12431 <refsect1> 12432 <title>Members</title> 12433 <variablelist> 12434 <varlistentry> <term>num_codecs</term> 12435 <listitem><para> 12436 number of codecs supported 12437 </para></listitem> 12438 </varlistentry> 12439 <varlistentry> <term>direction</term> 12440 <listitem><para> 12441 direction supported. Of type snd_compr_direction 12442 </para></listitem> 12443 </varlistentry> 12444 <varlistentry> <term>min_fragment_size</term> 12445 <listitem><para> 12446 minimum fragment supported by DSP 12447 </para></listitem> 12448 </varlistentry> 12449 <varlistentry> <term>max_fragment_size</term> 12450 <listitem><para> 12451 maximum fragment supported by DSP 12452 </para></listitem> 12453 </varlistentry> 12454 <varlistentry> <term>min_fragments</term> 12455 <listitem><para> 12456 min fragments supported by DSP 12457 </para></listitem> 12458 </varlistentry> 12459 <varlistentry> <term>max_fragments</term> 12460 <listitem><para> 12461 max fragments supported by DSP 12462 </para></listitem> 12463 </varlistentry> 12464 <varlistentry> <term>codecs[MAX_NUM_CODECS]</term> 12465 <listitem><para> 12466 pointer to array of codecs 12467 </para></listitem> 12468 </varlistentry> 12469 <varlistentry> <term>reserved[11]</term> 12470 <listitem><para> 12471 reserved field 12472 </para></listitem> 12473 </varlistentry> 12474 </variablelist> 12475 </refsect1> 12476</refentry> 12477 12478<refentry id="API-struct-snd-compr-codec-caps"> 12479<refentryinfo> 12480 <title>LINUX</title> 12481 <productname>Kernel Hackers Manual</productname> 12482 <date>July 2017</date> 12483</refentryinfo> 12484<refmeta> 12485 <refentrytitle><phrase>struct snd_compr_codec_caps</phrase></refentrytitle> 12486 <manvolnum>9</manvolnum> 12487 <refmiscinfo class="version">4.4.14</refmiscinfo> 12488</refmeta> 12489<refnamediv> 12490 <refname>struct snd_compr_codec_caps</refname> 12491 <refpurpose> 12492 query capability of codec 12493 </refpurpose> 12494</refnamediv> 12495<refsynopsisdiv> 12496 <title>Synopsis</title> 12497 <programlisting> 12498struct snd_compr_codec_caps { 12499 __u32 codec; 12500 __u32 num_descriptors; 12501 struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS]; 12502}; </programlisting> 12503</refsynopsisdiv> 12504 <refsect1> 12505 <title>Members</title> 12506 <variablelist> 12507 <varlistentry> <term>codec</term> 12508 <listitem><para> 12509 codec for which capability is queried 12510 </para></listitem> 12511 </varlistentry> 12512 <varlistentry> <term>num_descriptors</term> 12513 <listitem><para> 12514 number of codec descriptors 12515 </para></listitem> 12516 </varlistentry> 12517 <varlistentry> <term>descriptor[MAX_NUM_CODEC_DESCRIPTORS]</term> 12518 <listitem><para> 12519 array of codec capability descriptor 12520 </para></listitem> 12521 </varlistentry> 12522 </variablelist> 12523 </refsect1> 12524</refentry> 12525 12526<refentry id="API-enum-sndrv-compress-encoder"> 12527<refentryinfo> 12528 <title>LINUX</title> 12529 <productname>Kernel Hackers Manual</productname> 12530 <date>July 2017</date> 12531</refentryinfo> 12532<refmeta> 12533 <refentrytitle><phrase>enum sndrv_compress_encoder</phrase></refentrytitle> 12534 <manvolnum>9</manvolnum> 12535 <refmiscinfo class="version">4.4.14</refmiscinfo> 12536</refmeta> 12537<refnamediv> 12538 <refname>enum sndrv_compress_encoder</refname> 12539 <refpurpose> 12540 </refpurpose> 12541</refnamediv> 12542<refsynopsisdiv> 12543 <title>Synopsis</title> 12544 <programlisting> 12545enum sndrv_compress_encoder { 12546 SNDRV_COMPRESS_ENCODER_PADDING, 12547 SNDRV_COMPRESS_ENCODER_DELAY 12548}; </programlisting> 12549</refsynopsisdiv> 12550<refsect1> 12551 <title>Constants</title> 12552 <variablelist> 12553 <varlistentry> <term>SNDRV_COMPRESS_ENCODER_PADDING</term> 12554 <listitem><para> 12555 no of samples appended by the encoder at the 12556 end of the track 12557 </para></listitem> 12558 </varlistentry> 12559 <varlistentry> <term>SNDRV_COMPRESS_ENCODER_DELAY</term> 12560 <listitem><para> 12561 no of samples inserted by the encoder at the 12562 beginning of the track 12563 </para></listitem> 12564 </varlistentry> 12565 </variablelist> 12566</refsect1> 12567</refentry> 12568 12569<refentry id="API-struct-snd-compr-metadata"> 12570<refentryinfo> 12571 <title>LINUX</title> 12572 <productname>Kernel Hackers Manual</productname> 12573 <date>July 2017</date> 12574</refentryinfo> 12575<refmeta> 12576 <refentrytitle><phrase>struct snd_compr_metadata</phrase></refentrytitle> 12577 <manvolnum>9</manvolnum> 12578 <refmiscinfo class="version">4.4.14</refmiscinfo> 12579</refmeta> 12580<refnamediv> 12581 <refname>struct snd_compr_metadata</refname> 12582 <refpurpose> 12583 compressed stream metadata 12584 </refpurpose> 12585</refnamediv> 12586<refsynopsisdiv> 12587 <title>Synopsis</title> 12588 <programlisting> 12589struct snd_compr_metadata { 12590 __u32 key; 12591 __u32 value[8]; 12592}; </programlisting> 12593</refsynopsisdiv> 12594 <refsect1> 12595 <title>Members</title> 12596 <variablelist> 12597 <varlistentry> <term>key</term> 12598 <listitem><para> 12599 key id 12600 </para></listitem> 12601 </varlistentry> 12602 <varlistentry> <term>value[8]</term> 12603 <listitem><para> 12604 key value 12605 </para></listitem> 12606 </varlistentry> 12607 </variablelist> 12608 </refsect1> 12609</refentry> 12610 12611<refentry id="API-SNDRV-COMPRESS-IOCTL-VERSION"> 12612<refentryinfo> 12613 <title>LINUX</title> 12614 <productname>Kernel Hackers Manual</productname> 12615 <date>July 2017</date> 12616</refentryinfo> 12617<refmeta> 12618 <refentrytitle><phrase>SNDRV_COMPRESS_IOCTL_VERSION</phrase></refentrytitle> 12619 <manvolnum>9</manvolnum> 12620 <refmiscinfo class="version">4.4.14</refmiscinfo> 12621</refmeta> 12622<refnamediv> 12623 <refname>SNDRV_COMPRESS_IOCTL_VERSION</refname> 12624 <refpurpose> 12625 </refpurpose> 12626</refnamediv> 12627<refsynopsisdiv> 12628 <title>Synopsis</title> 12629 <funcsynopsis><funcprototype> 12630 <funcdef> <function>SNDRV_COMPRESS_IOCTL_VERSION </function></funcdef> 12631 <void/> 12632 </funcprototype></funcsynopsis> 12633</refsynopsisdiv> 12634<refsect1> 12635 <title>Arguments</title> 12636 <para> 12637 None 12638 </para> 12639</refsect1> 12640<refsect1> 12641<title>SNDRV_COMPRESS_GET_CAPS</title> 12642<para> 12643 Query capability of DSP 12644</para> 12645</refsect1> 12646<refsect1> 12647<title>SNDRV_COMPRESS_GET_CODEC_CAPS</title> 12648<para> 12649 Query capability of a codec 12650</para> 12651</refsect1> 12652<refsect1> 12653<title>SNDRV_COMPRESS_SET_PARAMS</title> 12654<para> 12655 Set codec and stream parameters 12656</para> 12657</refsect1> 12658<refsect1> 12659<title>Note</title> 12660<para> 12661 only codec params can be changed runtime and stream params cant be 12662</para> 12663</refsect1> 12664<refsect1> 12665<title>SNDRV_COMPRESS_GET_PARAMS</title> 12666<para> 12667 Query codec params 12668</para> 12669</refsect1> 12670<refsect1> 12671<title>SNDRV_COMPRESS_TSTAMP</title> 12672<para> 12673 get the current timestamp value 12674</para> 12675</refsect1> 12676<refsect1> 12677<title>SNDRV_COMPRESS_AVAIL</title> 12678<para> 12679 get the current buffer avail value. 12680 This also queries the tstamp properties 12681</para> 12682</refsect1> 12683<refsect1> 12684<title>SNDRV_COMPRESS_PAUSE</title> 12685<para> 12686 Pause the running stream 12687</para> 12688</refsect1> 12689<refsect1> 12690<title>SNDRV_COMPRESS_RESUME</title> 12691<para> 12692 resume a paused stream 12693</para> 12694</refsect1> 12695<refsect1> 12696<title>SNDRV_COMPRESS_START</title> 12697<para> 12698 Start a stream 12699</para> 12700</refsect1> 12701<refsect1> 12702<title>SNDRV_COMPRESS_STOP</title> 12703<para> 12704 stop a running stream, discarding ring buffer content 12705 and the buffers currently with DSP 12706</para> 12707</refsect1> 12708<refsect1> 12709<title>SNDRV_COMPRESS_DRAIN</title> 12710<para> 12711 Play till end of buffers and stop after that 12712</para> 12713</refsect1> 12714<refsect1> 12715<title>SNDRV_COMPRESS_IOCTL_VERSION</title> 12716<para> 12717 Query the API version 12718</para> 12719</refsect1> 12720</refentry> 12721 12722<!-- include/uapi/sound/compress_params.h --> 12723<refentry id="API-struct-snd-enc-vorbis"> 12724<refentryinfo> 12725 <title>LINUX</title> 12726 <productname>Kernel Hackers Manual</productname> 12727 <date>July 2017</date> 12728</refentryinfo> 12729<refmeta> 12730 <refentrytitle><phrase>struct snd_enc_vorbis</phrase></refentrytitle> 12731 <manvolnum>9</manvolnum> 12732 <refmiscinfo class="version">4.4.14</refmiscinfo> 12733</refmeta> 12734<refnamediv> 12735 <refname>struct snd_enc_vorbis</refname> 12736 <refpurpose> 12737 </refpurpose> 12738</refnamediv> 12739<refsynopsisdiv> 12740 <title>Synopsis</title> 12741 <programlisting> 12742struct snd_enc_vorbis { 12743 __s32 quality; 12744 __u32 managed; 12745 __u32 max_bit_rate; 12746 __u32 min_bit_rate; 12747 __u32 downmix; 12748}; </programlisting> 12749</refsynopsisdiv> 12750 <refsect1> 12751 <title>Members</title> 12752 <variablelist> 12753 <varlistentry> <term>quality</term> 12754 <listitem><para> 12755Sets encoding quality to n, between -1 (low) and 10 (high). 12756In the default mode of operation, the quality level is 3. 12757Normal quality range is 0 - 10. 12758 </para></listitem> 12759 </varlistentry> 12760 <varlistentry> <term>managed</term> 12761 <listitem><para> 12762Boolean. Set bitrate management mode. This turns off the 12763normal VBR encoding, but allows hard or soft bitrate constraints to be 12764enforced by the encoder. This mode can be slower, and may also be 12765lower quality. It is primarily useful for streaming. 12766 </para></listitem> 12767 </varlistentry> 12768 <varlistentry> <term>max_bit_rate</term> 12769 <listitem><para> 12770Enabled only if managed is TRUE 12771 </para></listitem> 12772 </varlistentry> 12773 <varlistentry> <term>min_bit_rate</term> 12774 <listitem><para> 12775Enabled only if managed is TRUE 12776 </para></listitem> 12777 </varlistentry> 12778 <varlistentry> <term>downmix</term> 12779 <listitem><para> 12780Boolean. Downmix input from stereo to mono (has no effect on 12781non-stereo streams). Useful for lower-bitrate encoding. 12782 </para></listitem> 12783 </varlistentry> 12784 </variablelist> 12785 </refsect1> 12786<refsect1> 12787<title>Description</title> 12788<para> 12789 These options were extracted from the OpenMAX IL spec and Gstreamer vorbisenc 12790 properties 12791 </para><para> 12792 12793 For best quality users should specify VBR mode and set quality levels. 12794</para> 12795</refsect1> 12796</refentry> 12797 12798<refentry id="API-struct-snd-enc-real"> 12799<refentryinfo> 12800 <title>LINUX</title> 12801 <productname>Kernel Hackers Manual</productname> 12802 <date>July 2017</date> 12803</refentryinfo> 12804<refmeta> 12805 <refentrytitle><phrase>struct snd_enc_real</phrase></refentrytitle> 12806 <manvolnum>9</manvolnum> 12807 <refmiscinfo class="version">4.4.14</refmiscinfo> 12808</refmeta> 12809<refnamediv> 12810 <refname>struct snd_enc_real</refname> 12811 <refpurpose> 12812 </refpurpose> 12813</refnamediv> 12814<refsynopsisdiv> 12815 <title>Synopsis</title> 12816 <programlisting> 12817struct snd_enc_real { 12818 __u32 quant_bits; 12819 __u32 start_region; 12820 __u32 num_regions; 12821}; </programlisting> 12822</refsynopsisdiv> 12823 <refsect1> 12824 <title>Members</title> 12825 <variablelist> 12826 <varlistentry> <term>quant_bits</term> 12827 <listitem><para> 12828 number of coupling quantization bits in the stream 12829 </para></listitem> 12830 </varlistentry> 12831 <varlistentry> <term>start_region</term> 12832 <listitem><para> 12833 coupling start region in the stream 12834 </para></listitem> 12835 </varlistentry> 12836 <varlistentry> <term>num_regions</term> 12837 <listitem><para> 12838 number of regions value 12839 </para></listitem> 12840 </varlistentry> 12841 </variablelist> 12842 </refsect1> 12843<refsect1> 12844<title>Description</title> 12845<para> 12846 These options were extracted from the OpenMAX IL spec 12847</para> 12848</refsect1> 12849</refentry> 12850 12851<refentry id="API-struct-snd-enc-flac"> 12852<refentryinfo> 12853 <title>LINUX</title> 12854 <productname>Kernel Hackers Manual</productname> 12855 <date>July 2017</date> 12856</refentryinfo> 12857<refmeta> 12858 <refentrytitle><phrase>struct snd_enc_flac</phrase></refentrytitle> 12859 <manvolnum>9</manvolnum> 12860 <refmiscinfo class="version">4.4.14</refmiscinfo> 12861</refmeta> 12862<refnamediv> 12863 <refname>struct snd_enc_flac</refname> 12864 <refpurpose> 12865 </refpurpose> 12866</refnamediv> 12867<refsynopsisdiv> 12868 <title>Synopsis</title> 12869 <programlisting> 12870struct snd_enc_flac { 12871 __u32 num; 12872 __u32 gain; 12873}; </programlisting> 12874</refsynopsisdiv> 12875 <refsect1> 12876 <title>Members</title> 12877 <variablelist> 12878 <varlistentry> <term>num</term> 12879 <listitem><para> 12880 serial number, valid only for OGG formats 12881 needs to be set by application 12882 </para></listitem> 12883 </varlistentry> 12884 <varlistentry> <term>gain</term> 12885 <listitem><para> 12886 Add replay gain tags 12887 </para></listitem> 12888 </varlistentry> 12889 </variablelist> 12890 </refsect1> 12891<refsect1> 12892<title>Description</title> 12893<para> 12894 These options were extracted from the FLAC online documentation 12895</para> 12896</refsect1> 12897<refsect1> 12898<title>at http</title> 12899<para> 12900 //flac.sourceforge.net/documentation_tools_flac.html 12901 </para><para> 12902 12903 To make the API simpler, it is assumed that the user will select quality 12904 profiles. Additional options that affect encoding quality and speed can 12905 be added at a later stage if needed. 12906 </para><para> 12907 12908 By default the Subset format is used by encoders. 12909 </para><para> 12910 12911 TAGS such as pictures, etc, cannot be handled by an offloaded encoder and are 12912 not supported in this API. 12913</para> 12914</refsect1> 12915</refentry> 12916 12917<!-- include/sound/compress_driver.h --> 12918<refentry id="API-struct-snd-compr-runtime"> 12919<refentryinfo> 12920 <title>LINUX</title> 12921 <productname>Kernel Hackers Manual</productname> 12922 <date>July 2017</date> 12923</refentryinfo> 12924<refmeta> 12925 <refentrytitle><phrase>struct snd_compr_runtime</phrase></refentrytitle> 12926 <manvolnum>9</manvolnum> 12927 <refmiscinfo class="version">4.4.14</refmiscinfo> 12928</refmeta> 12929<refnamediv> 12930 <refname>struct snd_compr_runtime</refname> 12931 <refpurpose> 12932 </refpurpose> 12933</refnamediv> 12934<refsynopsisdiv> 12935 <title>Synopsis</title> 12936 <programlisting> 12937struct snd_compr_runtime { 12938 snd_pcm_state_t state; 12939 struct snd_compr_ops * ops; 12940 void * buffer; 12941 u64 buffer_size; 12942 u32 fragment_size; 12943 u32 fragments; 12944 u64 total_bytes_available; 12945 u64 total_bytes_transferred; 12946 wait_queue_head_t sleep; 12947 void * private_data; 12948}; </programlisting> 12949</refsynopsisdiv> 12950 <refsect1> 12951 <title>Members</title> 12952 <variablelist> 12953 <varlistentry> <term>state</term> 12954 <listitem><para> 12955stream state 12956 </para></listitem> 12957 </varlistentry> 12958 <varlistentry> <term>ops</term> 12959 <listitem><para> 12960pointer to DSP callbacks 12961 </para></listitem> 12962 </varlistentry> 12963 <varlistentry> <term>buffer</term> 12964 <listitem><para> 12965pointer to kernel buffer, valid only when not in mmap mode or 12966DSP doesn't implement copy 12967 </para></listitem> 12968 </varlistentry> 12969 <varlistentry> <term>buffer_size</term> 12970 <listitem><para> 12971size of the above buffer 12972 </para></listitem> 12973 </varlistentry> 12974 <varlistentry> <term>fragment_size</term> 12975 <listitem><para> 12976size of buffer fragment in bytes 12977 </para></listitem> 12978 </varlistentry> 12979 <varlistentry> <term>fragments</term> 12980 <listitem><para> 12981number of such fragments 12982 </para></listitem> 12983 </varlistentry> 12984 <varlistentry> <term>total_bytes_available</term> 12985 <listitem><para> 12986cumulative number of bytes made available in 12987the ring buffer 12988 </para></listitem> 12989 </varlistentry> 12990 <varlistentry> <term>total_bytes_transferred</term> 12991 <listitem><para> 12992cumulative bytes transferred by offload DSP 12993 </para></listitem> 12994 </varlistentry> 12995 <varlistentry> <term>sleep</term> 12996 <listitem><para> 12997poll sleep 12998 </para></listitem> 12999 </varlistentry> 13000 <varlistentry> <term>private_data</term> 13001 <listitem><para> 13002driver private data pointer 13003 </para></listitem> 13004 </varlistentry> 13005 </variablelist> 13006 </refsect1> 13007</refentry> 13008 13009<refentry id="API-struct-snd-compr-stream"> 13010<refentryinfo> 13011 <title>LINUX</title> 13012 <productname>Kernel Hackers Manual</productname> 13013 <date>July 2017</date> 13014</refentryinfo> 13015<refmeta> 13016 <refentrytitle><phrase>struct snd_compr_stream</phrase></refentrytitle> 13017 <manvolnum>9</manvolnum> 13018 <refmiscinfo class="version">4.4.14</refmiscinfo> 13019</refmeta> 13020<refnamediv> 13021 <refname>struct snd_compr_stream</refname> 13022 <refpurpose> 13023 </refpurpose> 13024</refnamediv> 13025<refsynopsisdiv> 13026 <title>Synopsis</title> 13027 <programlisting> 13028struct snd_compr_stream { 13029 const char * name; 13030 struct snd_compr_ops * ops; 13031 struct snd_compr_runtime * runtime; 13032 struct snd_compr * device; 13033 enum snd_compr_direction direction; 13034 bool metadata_set; 13035 bool next_track; 13036 void * private_data; 13037}; </programlisting> 13038</refsynopsisdiv> 13039 <refsect1> 13040 <title>Members</title> 13041 <variablelist> 13042 <varlistentry> <term>name</term> 13043 <listitem><para> 13044 device name 13045 </para></listitem> 13046 </varlistentry> 13047 <varlistentry> <term>ops</term> 13048 <listitem><para> 13049 pointer to DSP callbacks 13050 </para></listitem> 13051 </varlistentry> 13052 <varlistentry> <term>runtime</term> 13053 <listitem><para> 13054 pointer to runtime structure 13055 </para></listitem> 13056 </varlistentry> 13057 <varlistentry> <term>device</term> 13058 <listitem><para> 13059 device pointer 13060 </para></listitem> 13061 </varlistentry> 13062 <varlistentry> <term>direction</term> 13063 <listitem><para> 13064 stream direction, playback/recording 13065 </para></listitem> 13066 </varlistentry> 13067 <varlistentry> <term>metadata_set</term> 13068 <listitem><para> 13069 metadata set flag, true when set 13070 </para></listitem> 13071 </varlistentry> 13072 <varlistentry> <term>next_track</term> 13073 <listitem><para> 13074 has userspace signal next track transition, true when set 13075 </para></listitem> 13076 </varlistentry> 13077 <varlistentry> <term>private_data</term> 13078 <listitem><para> 13079 pointer to DSP private data 13080 </para></listitem> 13081 </varlistentry> 13082 </variablelist> 13083 </refsect1> 13084</refentry> 13085 13086<refentry id="API-struct-snd-compr-ops"> 13087<refentryinfo> 13088 <title>LINUX</title> 13089 <productname>Kernel Hackers Manual</productname> 13090 <date>July 2017</date> 13091</refentryinfo> 13092<refmeta> 13093 <refentrytitle><phrase>struct snd_compr_ops</phrase></refentrytitle> 13094 <manvolnum>9</manvolnum> 13095 <refmiscinfo class="version">4.4.14</refmiscinfo> 13096</refmeta> 13097<refnamediv> 13098 <refname>struct snd_compr_ops</refname> 13099 <refpurpose> 13100 </refpurpose> 13101</refnamediv> 13102<refsynopsisdiv> 13103 <title>Synopsis</title> 13104 <programlisting> 13105struct snd_compr_ops { 13106 int (* open) (struct snd_compr_stream *stream); 13107 int (* free) (struct snd_compr_stream *stream); 13108 int (* set_params) (struct snd_compr_stream *stream,struct snd_compr_params *params); 13109 int (* get_params) (struct snd_compr_stream *stream,struct snd_codec *params); 13110 int (* set_metadata) (struct snd_compr_stream *stream,struct snd_compr_metadata *metadata); 13111 int (* get_metadata) (struct snd_compr_stream *stream,struct snd_compr_metadata *metadata); 13112 int (* trigger) (struct snd_compr_stream *stream, int cmd); 13113 int (* pointer) (struct snd_compr_stream *stream,struct snd_compr_tstamp *tstamp); 13114 int (* copy) (struct snd_compr_stream *stream, char __user *buf,size_t count); 13115 int (* mmap) (struct snd_compr_stream *stream,struct vm_area_struct *vma); 13116 int (* ack) (struct snd_compr_stream *stream, size_t bytes); 13117 int (* get_caps) (struct snd_compr_stream *stream,struct snd_compr_caps *caps); 13118 int (* get_codec_caps) (struct snd_compr_stream *stream,struct snd_compr_codec_caps *codec); 13119}; </programlisting> 13120</refsynopsisdiv> 13121 <refsect1> 13122 <title>Members</title> 13123 <variablelist> 13124 <varlistentry> <term>open</term> 13125 <listitem><para> 13126 Open the compressed stream 13127 This callback is mandatory and shall keep dsp ready to receive the stream 13128 parameter 13129 </para></listitem> 13130 </varlistentry> 13131 <varlistentry> <term>free</term> 13132 <listitem><para> 13133 Close the compressed stream, mandatory 13134 </para></listitem> 13135 </varlistentry> 13136 <varlistentry> <term>set_params</term> 13137 <listitem><para> 13138 Sets the compressed stream parameters, mandatory 13139 This can be called in during stream creation only to set codec params 13140 and the stream properties 13141 </para></listitem> 13142 </varlistentry> 13143 <varlistentry> <term>get_params</term> 13144 <listitem><para> 13145 retrieve the codec parameters, mandatory 13146 </para></listitem> 13147 </varlistentry> 13148 <varlistentry> <term>set_metadata</term> 13149 <listitem><para> 13150 Set the metadata values for a stream 13151 </para></listitem> 13152 </varlistentry> 13153 <varlistentry> <term>get_metadata</term> 13154 <listitem><para> 13155 retrieves the requested metadata values from stream 13156 </para></listitem> 13157 </varlistentry> 13158 <varlistentry> <term>trigger</term> 13159 <listitem><para> 13160 Trigger operations like start, pause, resume, drain, stop. 13161 This callback is mandatory 13162 </para></listitem> 13163 </varlistentry> 13164 <varlistentry> <term>pointer</term> 13165 <listitem><para> 13166 Retrieve current h/w pointer information. Mandatory 13167 </para></listitem> 13168 </varlistentry> 13169 <varlistentry> <term>copy</term> 13170 <listitem><para> 13171 Copy the compressed data to/from userspace, Optional 13172 Can't be implemented if DSP supports mmap 13173 </para></listitem> 13174 </varlistentry> 13175 <varlistentry> <term>mmap</term> 13176 <listitem><para> 13177 DSP mmap method to mmap DSP memory 13178 </para></listitem> 13179 </varlistentry> 13180 <varlistentry> <term>ack</term> 13181 <listitem><para> 13182 Ack for DSP when data is written to audio buffer, Optional 13183 Not valid if copy is implemented 13184 </para></listitem> 13185 </varlistentry> 13186 <varlistentry> <term>get_caps</term> 13187 <listitem><para> 13188 Retrieve DSP capabilities, mandatory 13189 </para></listitem> 13190 </varlistentry> 13191 <varlistentry> <term>get_codec_caps</term> 13192 <listitem><para> 13193 Retrieve capabilities for a specific codec, mandatory 13194 </para></listitem> 13195 </varlistentry> 13196 </variablelist> 13197 </refsect1> 13198</refentry> 13199 13200<refentry id="API-struct-snd-compr"> 13201<refentryinfo> 13202 <title>LINUX</title> 13203 <productname>Kernel Hackers Manual</productname> 13204 <date>July 2017</date> 13205</refentryinfo> 13206<refmeta> 13207 <refentrytitle><phrase>struct snd_compr</phrase></refentrytitle> 13208 <manvolnum>9</manvolnum> 13209 <refmiscinfo class="version">4.4.14</refmiscinfo> 13210</refmeta> 13211<refnamediv> 13212 <refname>struct snd_compr</refname> 13213 <refpurpose> 13214 </refpurpose> 13215</refnamediv> 13216<refsynopsisdiv> 13217 <title>Synopsis</title> 13218 <programlisting> 13219struct snd_compr { 13220 const char * name; 13221 struct device dev; 13222 struct snd_compr_ops * ops; 13223 void * private_data; 13224 struct snd_card * card; 13225 unsigned int direction; 13226 struct mutex lock; 13227 int device; 13228}; </programlisting> 13229</refsynopsisdiv> 13230 <refsect1> 13231 <title>Members</title> 13232 <variablelist> 13233 <varlistentry> <term>name</term> 13234 <listitem><para> 13235 DSP device name 13236 </para></listitem> 13237 </varlistentry> 13238 <varlistentry> <term>dev</term> 13239 <listitem><para> 13240 associated device instance 13241 </para></listitem> 13242 </varlistentry> 13243 <varlistentry> <term>ops</term> 13244 <listitem><para> 13245 pointer to DSP callbacks 13246 </para></listitem> 13247 </varlistentry> 13248 <varlistentry> <term>private_data</term> 13249 <listitem><para> 13250 pointer to DSP pvt data 13251 </para></listitem> 13252 </varlistentry> 13253 <varlistentry> <term>card</term> 13254 <listitem><para> 13255 sound card pointer 13256 </para></listitem> 13257 </varlistentry> 13258 <varlistentry> <term>direction</term> 13259 <listitem><para> 13260 Playback or capture direction 13261 </para></listitem> 13262 </varlistentry> 13263 <varlistentry> <term>lock</term> 13264 <listitem><para> 13265 device lock 13266 </para></listitem> 13267 </varlistentry> 13268 <varlistentry> <term>device</term> 13269 <listitem><para> 13270 device id 13271 </para></listitem> 13272 </varlistentry> 13273 </variablelist> 13274 </refsect1> 13275</refentry> 13276 13277 </sect1> 13278 </chapter> 13279 <chapter><title>ASoC</title> 13280 <sect1><title>ASoC Core API</title> 13281<!-- include/sound/soc.h --> 13282<refentry id="API-struct-snd-soc-jack-pin"> 13283<refentryinfo> 13284 <title>LINUX</title> 13285 <productname>Kernel Hackers Manual</productname> 13286 <date>July 2017</date> 13287</refentryinfo> 13288<refmeta> 13289 <refentrytitle><phrase>struct snd_soc_jack_pin</phrase></refentrytitle> 13290 <manvolnum>9</manvolnum> 13291 <refmiscinfo class="version">4.4.14</refmiscinfo> 13292</refmeta> 13293<refnamediv> 13294 <refname>struct snd_soc_jack_pin</refname> 13295 <refpurpose> 13296 Describes a pin to update based on jack detection 13297 </refpurpose> 13298</refnamediv> 13299<refsynopsisdiv> 13300 <title>Synopsis</title> 13301 <programlisting> 13302struct snd_soc_jack_pin { 13303 struct list_head list; 13304 const char * pin; 13305 int mask; 13306 bool invert; 13307}; </programlisting> 13308</refsynopsisdiv> 13309 <refsect1> 13310 <title>Members</title> 13311 <variablelist> 13312 <varlistentry> <term>list</term> 13313 <listitem><para> 13314internal list entry 13315 </para></listitem> 13316 </varlistentry> 13317 <varlistentry> <term>pin</term> 13318 <listitem><para> 13319name of the pin to update 13320 </para></listitem> 13321 </varlistentry> 13322 <varlistentry> <term>mask</term> 13323 <listitem><para> 13324bits to check for in reported jack status 13325 </para></listitem> 13326 </varlistentry> 13327 <varlistentry> <term>invert</term> 13328 <listitem><para> 13329if non-zero then pin is enabled when status is not reported 13330 </para></listitem> 13331 </varlistentry> 13332 </variablelist> 13333 </refsect1> 13334</refentry> 13335 13336<refentry id="API-struct-snd-soc-jack-zone"> 13337<refentryinfo> 13338 <title>LINUX</title> 13339 <productname>Kernel Hackers Manual</productname> 13340 <date>July 2017</date> 13341</refentryinfo> 13342<refmeta> 13343 <refentrytitle><phrase>struct snd_soc_jack_zone</phrase></refentrytitle> 13344 <manvolnum>9</manvolnum> 13345 <refmiscinfo class="version">4.4.14</refmiscinfo> 13346</refmeta> 13347<refnamediv> 13348 <refname>struct snd_soc_jack_zone</refname> 13349 <refpurpose> 13350 Describes voltage zones of jack detection 13351 </refpurpose> 13352</refnamediv> 13353<refsynopsisdiv> 13354 <title>Synopsis</title> 13355 <programlisting> 13356struct snd_soc_jack_zone { 13357 unsigned int min_mv; 13358 unsigned int max_mv; 13359 unsigned int jack_type; 13360 unsigned int debounce_time; 13361 struct list_head list; 13362}; </programlisting> 13363</refsynopsisdiv> 13364 <refsect1> 13365 <title>Members</title> 13366 <variablelist> 13367 <varlistentry> <term>min_mv</term> 13368 <listitem><para> 13369 start voltage in mv 13370 </para></listitem> 13371 </varlistentry> 13372 <varlistentry> <term>max_mv</term> 13373 <listitem><para> 13374 end voltage in mv 13375 </para></listitem> 13376 </varlistentry> 13377 <varlistentry> <term>jack_type</term> 13378 <listitem><para> 13379 type of jack that is expected for this voltage 13380 </para></listitem> 13381 </varlistentry> 13382 <varlistentry> <term>debounce_time</term> 13383 <listitem><para> 13384 debounce_time for jack, codec driver should wait for this 13385 duration before reading the adc for voltages 13386 </para></listitem> 13387 </varlistentry> 13388 <varlistentry> <term>list</term> 13389 <listitem><para> 13390 internal list entry 13391 </para></listitem> 13392 </varlistentry> 13393 </variablelist> 13394 </refsect1> 13395</refentry> 13396 13397<refentry id="API-struct-snd-soc-jack-gpio"> 13398<refentryinfo> 13399 <title>LINUX</title> 13400 <productname>Kernel Hackers Manual</productname> 13401 <date>July 2017</date> 13402</refentryinfo> 13403<refmeta> 13404 <refentrytitle><phrase>struct snd_soc_jack_gpio</phrase></refentrytitle> 13405 <manvolnum>9</manvolnum> 13406 <refmiscinfo class="version">4.4.14</refmiscinfo> 13407</refmeta> 13408<refnamediv> 13409 <refname>struct snd_soc_jack_gpio</refname> 13410 <refpurpose> 13411 Describes a gpio pin for jack detection 13412 </refpurpose> 13413</refnamediv> 13414<refsynopsisdiv> 13415 <title>Synopsis</title> 13416 <programlisting> 13417struct snd_soc_jack_gpio { 13418 unsigned int gpio; 13419 unsigned int idx; 13420 struct device * gpiod_dev; 13421 const char * name; 13422 int report; 13423 int invert; 13424 int debounce_time; 13425 bool wake; 13426 int (* jack_status_check) (void *data); 13427}; </programlisting> 13428</refsynopsisdiv> 13429 <refsect1> 13430 <title>Members</title> 13431 <variablelist> 13432 <varlistentry> <term>gpio</term> 13433 <listitem><para> 13434 legacy gpio number 13435 </para></listitem> 13436 </varlistentry> 13437 <varlistentry> <term>idx</term> 13438 <listitem><para> 13439 gpio descriptor index within the function of the GPIO 13440 consumer device 13441 </para></listitem> 13442 </varlistentry> 13443 <varlistentry> <term>gpiod_dev</term> 13444 <listitem><para> 13445 GPIO consumer device 13446 </para></listitem> 13447 </varlistentry> 13448 <varlistentry> <term>name</term> 13449 <listitem><para> 13450 gpio name. Also as connection ID for the GPIO consumer 13451 device function name lookup 13452 </para></listitem> 13453 </varlistentry> 13454 <varlistentry> <term>report</term> 13455 <listitem><para> 13456 value to report when jack detected 13457 </para></listitem> 13458 </varlistentry> 13459 <varlistentry> <term>invert</term> 13460 <listitem><para> 13461 report presence in low state 13462 </para></listitem> 13463 </varlistentry> 13464 <varlistentry> <term>debounce_time</term> 13465 <listitem><para> 13466 debounce time in ms 13467 </para></listitem> 13468 </varlistentry> 13469 <varlistentry> <term>wake</term> 13470 <listitem><para> 13471 enable as wake source 13472 </para></listitem> 13473 </varlistentry> 13474 <varlistentry> <term>jack_status_check</term> 13475 <listitem><para> 13476 callback function which overrides the detection 13477 to provide more complex checks (eg, reading an 13478 ADC). 13479 </para></listitem> 13480 </varlistentry> 13481 </variablelist> 13482 </refsect1> 13483</refentry> 13484 13485<refentry id="API-snd-soc-component-to-codec"> 13486<refentryinfo> 13487 <title>LINUX</title> 13488 <productname>Kernel Hackers Manual</productname> 13489 <date>July 2017</date> 13490</refentryinfo> 13491<refmeta> 13492 <refentrytitle><phrase>snd_soc_component_to_codec</phrase></refentrytitle> 13493 <manvolnum>9</manvolnum> 13494 <refmiscinfo class="version">4.4.14</refmiscinfo> 13495</refmeta> 13496<refnamediv> 13497 <refname>snd_soc_component_to_codec</refname> 13498 <refpurpose> 13499 Casts a component to the CODEC it is embedded in 13500 </refpurpose> 13501</refnamediv> 13502<refsynopsisdiv> 13503 <title>Synopsis</title> 13504 <funcsynopsis><funcprototype> 13505 <funcdef>struct snd_soc_codec * <function>snd_soc_component_to_codec </function></funcdef> 13506 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 13507 </funcprototype></funcsynopsis> 13508</refsynopsisdiv> 13509<refsect1> 13510 <title>Arguments</title> 13511 <variablelist> 13512 <varlistentry> 13513 <term><parameter>component</parameter></term> 13514 <listitem> 13515 <para> 13516 The component to cast to a CODEC 13517 </para> 13518 </listitem> 13519 </varlistentry> 13520 </variablelist> 13521</refsect1> 13522<refsect1> 13523<title>Description</title> 13524<para> 13525 This function must only be used on components that are known to be CODECs. 13526 Otherwise the behavior is undefined. 13527</para> 13528</refsect1> 13529</refentry> 13530 13531<refentry id="API-snd-soc-component-to-platform"> 13532<refentryinfo> 13533 <title>LINUX</title> 13534 <productname>Kernel Hackers Manual</productname> 13535 <date>July 2017</date> 13536</refentryinfo> 13537<refmeta> 13538 <refentrytitle><phrase>snd_soc_component_to_platform</phrase></refentrytitle> 13539 <manvolnum>9</manvolnum> 13540 <refmiscinfo class="version">4.4.14</refmiscinfo> 13541</refmeta> 13542<refnamediv> 13543 <refname>snd_soc_component_to_platform</refname> 13544 <refpurpose> 13545 Casts a component to the platform it is embedded in 13546 </refpurpose> 13547</refnamediv> 13548<refsynopsisdiv> 13549 <title>Synopsis</title> 13550 <funcsynopsis><funcprototype> 13551 <funcdef>struct snd_soc_platform * <function>snd_soc_component_to_platform </function></funcdef> 13552 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 13553 </funcprototype></funcsynopsis> 13554</refsynopsisdiv> 13555<refsect1> 13556 <title>Arguments</title> 13557 <variablelist> 13558 <varlistentry> 13559 <term><parameter>component</parameter></term> 13560 <listitem> 13561 <para> 13562 The component to cast to a platform 13563 </para> 13564 </listitem> 13565 </varlistentry> 13566 </variablelist> 13567</refsect1> 13568<refsect1> 13569<title>Description</title> 13570<para> 13571 This function must only be used on components that are known to be platforms. 13572 Otherwise the behavior is undefined. 13573</para> 13574</refsect1> 13575</refentry> 13576 13577<refentry id="API-snd-soc-dapm-to-component"> 13578<refentryinfo> 13579 <title>LINUX</title> 13580 <productname>Kernel Hackers Manual</productname> 13581 <date>July 2017</date> 13582</refentryinfo> 13583<refmeta> 13584 <refentrytitle><phrase>snd_soc_dapm_to_component</phrase></refentrytitle> 13585 <manvolnum>9</manvolnum> 13586 <refmiscinfo class="version">4.4.14</refmiscinfo> 13587</refmeta> 13588<refnamediv> 13589 <refname>snd_soc_dapm_to_component</refname> 13590 <refpurpose> 13591 Casts a DAPM context to the component it is embedded in 13592 </refpurpose> 13593</refnamediv> 13594<refsynopsisdiv> 13595 <title>Synopsis</title> 13596 <funcsynopsis><funcprototype> 13597 <funcdef>struct snd_soc_component * <function>snd_soc_dapm_to_component </function></funcdef> 13598 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 13599 </funcprototype></funcsynopsis> 13600</refsynopsisdiv> 13601<refsect1> 13602 <title>Arguments</title> 13603 <variablelist> 13604 <varlistentry> 13605 <term><parameter>dapm</parameter></term> 13606 <listitem> 13607 <para> 13608 The DAPM context to cast to the component 13609 </para> 13610 </listitem> 13611 </varlistentry> 13612 </variablelist> 13613</refsect1> 13614<refsect1> 13615<title>Description</title> 13616<para> 13617 This function must only be used on DAPM contexts that are known to be part of 13618 a component (e.g. in a component driver). Otherwise the behavior is 13619 undefined. 13620</para> 13621</refsect1> 13622</refentry> 13623 13624<refentry id="API-snd-soc-dapm-to-codec"> 13625<refentryinfo> 13626 <title>LINUX</title> 13627 <productname>Kernel Hackers Manual</productname> 13628 <date>July 2017</date> 13629</refentryinfo> 13630<refmeta> 13631 <refentrytitle><phrase>snd_soc_dapm_to_codec</phrase></refentrytitle> 13632 <manvolnum>9</manvolnum> 13633 <refmiscinfo class="version">4.4.14</refmiscinfo> 13634</refmeta> 13635<refnamediv> 13636 <refname>snd_soc_dapm_to_codec</refname> 13637 <refpurpose> 13638 Casts a DAPM context to the CODEC it is embedded in 13639 </refpurpose> 13640</refnamediv> 13641<refsynopsisdiv> 13642 <title>Synopsis</title> 13643 <funcsynopsis><funcprototype> 13644 <funcdef>struct snd_soc_codec * <function>snd_soc_dapm_to_codec </function></funcdef> 13645 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 13646 </funcprototype></funcsynopsis> 13647</refsynopsisdiv> 13648<refsect1> 13649 <title>Arguments</title> 13650 <variablelist> 13651 <varlistentry> 13652 <term><parameter>dapm</parameter></term> 13653 <listitem> 13654 <para> 13655 The DAPM context to cast to the CODEC 13656 </para> 13657 </listitem> 13658 </varlistentry> 13659 </variablelist> 13660</refsect1> 13661<refsect1> 13662<title>Description</title> 13663<para> 13664 This function must only be used on DAPM contexts that are known to be part of 13665 a CODEC (e.g. in a CODEC driver). Otherwise the behavior is undefined. 13666</para> 13667</refsect1> 13668</refentry> 13669 13670<refentry id="API-snd-soc-dapm-to-platform"> 13671<refentryinfo> 13672 <title>LINUX</title> 13673 <productname>Kernel Hackers Manual</productname> 13674 <date>July 2017</date> 13675</refentryinfo> 13676<refmeta> 13677 <refentrytitle><phrase>snd_soc_dapm_to_platform</phrase></refentrytitle> 13678 <manvolnum>9</manvolnum> 13679 <refmiscinfo class="version">4.4.14</refmiscinfo> 13680</refmeta> 13681<refnamediv> 13682 <refname>snd_soc_dapm_to_platform</refname> 13683 <refpurpose> 13684 Casts a DAPM context to the platform it is embedded in 13685 </refpurpose> 13686</refnamediv> 13687<refsynopsisdiv> 13688 <title>Synopsis</title> 13689 <funcsynopsis><funcprototype> 13690 <funcdef>struct snd_soc_platform * <function>snd_soc_dapm_to_platform </function></funcdef> 13691 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 13692 </funcprototype></funcsynopsis> 13693</refsynopsisdiv> 13694<refsect1> 13695 <title>Arguments</title> 13696 <variablelist> 13697 <varlistentry> 13698 <term><parameter>dapm</parameter></term> 13699 <listitem> 13700 <para> 13701 The DAPM context to cast to the platform. 13702 </para> 13703 </listitem> 13704 </varlistentry> 13705 </variablelist> 13706</refsect1> 13707<refsect1> 13708<title>Description</title> 13709<para> 13710 This function must only be used on DAPM contexts that are known to be part of 13711 a platform (e.g. in a platform driver). Otherwise the behavior is undefined. 13712</para> 13713</refsect1> 13714</refentry> 13715 13716<refentry id="API-snd-soc-component-get-dapm"> 13717<refentryinfo> 13718 <title>LINUX</title> 13719 <productname>Kernel Hackers Manual</productname> 13720 <date>July 2017</date> 13721</refentryinfo> 13722<refmeta> 13723 <refentrytitle><phrase>snd_soc_component_get_dapm</phrase></refentrytitle> 13724 <manvolnum>9</manvolnum> 13725 <refmiscinfo class="version">4.4.14</refmiscinfo> 13726</refmeta> 13727<refnamediv> 13728 <refname>snd_soc_component_get_dapm</refname> 13729 <refpurpose> 13730 Returns the DAPM context associated with a component 13731 </refpurpose> 13732</refnamediv> 13733<refsynopsisdiv> 13734 <title>Synopsis</title> 13735 <funcsynopsis><funcprototype> 13736 <funcdef>struct snd_soc_dapm_context * <function>snd_soc_component_get_dapm </function></funcdef> 13737 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 13738 </funcprototype></funcsynopsis> 13739</refsynopsisdiv> 13740<refsect1> 13741 <title>Arguments</title> 13742 <variablelist> 13743 <varlistentry> 13744 <term><parameter>component</parameter></term> 13745 <listitem> 13746 <para> 13747 The component for which to get the DAPM context 13748 </para> 13749 </listitem> 13750 </varlistentry> 13751 </variablelist> 13752</refsect1> 13753</refentry> 13754 13755<refentry id="API-snd-soc-codec-get-dapm"> 13756<refentryinfo> 13757 <title>LINUX</title> 13758 <productname>Kernel Hackers Manual</productname> 13759 <date>July 2017</date> 13760</refentryinfo> 13761<refmeta> 13762 <refentrytitle><phrase>snd_soc_codec_get_dapm</phrase></refentrytitle> 13763 <manvolnum>9</manvolnum> 13764 <refmiscinfo class="version">4.4.14</refmiscinfo> 13765</refmeta> 13766<refnamediv> 13767 <refname>snd_soc_codec_get_dapm</refname> 13768 <refpurpose> 13769 Returns the DAPM context for the CODEC 13770 </refpurpose> 13771</refnamediv> 13772<refsynopsisdiv> 13773 <title>Synopsis</title> 13774 <funcsynopsis><funcprototype> 13775 <funcdef>struct snd_soc_dapm_context * <function>snd_soc_codec_get_dapm </function></funcdef> 13776 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 13777 </funcprototype></funcsynopsis> 13778</refsynopsisdiv> 13779<refsect1> 13780 <title>Arguments</title> 13781 <variablelist> 13782 <varlistentry> 13783 <term><parameter>codec</parameter></term> 13784 <listitem> 13785 <para> 13786 The CODEC for which to get the DAPM context 13787 </para> 13788 </listitem> 13789 </varlistentry> 13790 </variablelist> 13791</refsect1> 13792<refsect1> 13793<title>Note</title> 13794<para> 13795 Use this function instead of directly accessing the CODEC's dapm field 13796</para> 13797</refsect1> 13798</refentry> 13799 13800<refentry id="API-snd-soc-codec-init-bias-level"> 13801<refentryinfo> 13802 <title>LINUX</title> 13803 <productname>Kernel Hackers Manual</productname> 13804 <date>July 2017</date> 13805</refentryinfo> 13806<refmeta> 13807 <refentrytitle><phrase>snd_soc_codec_init_bias_level</phrase></refentrytitle> 13808 <manvolnum>9</manvolnum> 13809 <refmiscinfo class="version">4.4.14</refmiscinfo> 13810</refmeta> 13811<refnamediv> 13812 <refname>snd_soc_codec_init_bias_level</refname> 13813 <refpurpose> 13814 Initialize CODEC DAPM bias level 13815 </refpurpose> 13816</refnamediv> 13817<refsynopsisdiv> 13818 <title>Synopsis</title> 13819 <funcsynopsis><funcprototype> 13820 <funcdef>void <function>snd_soc_codec_init_bias_level </function></funcdef> 13821 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 13822 <paramdef>enum snd_soc_bias_level <parameter>level</parameter></paramdef> 13823 </funcprototype></funcsynopsis> 13824</refsynopsisdiv> 13825<refsect1> 13826 <title>Arguments</title> 13827 <variablelist> 13828 <varlistentry> 13829 <term><parameter>codec</parameter></term> 13830 <listitem> 13831 <para> 13832 The CODEC for which to initialize the DAPM bias level 13833 </para> 13834 </listitem> 13835 </varlistentry> 13836 <varlistentry> 13837 <term><parameter>level</parameter></term> 13838 <listitem> 13839 <para> 13840 The DAPM level to initialize to 13841 </para> 13842 </listitem> 13843 </varlistentry> 13844 </variablelist> 13845</refsect1> 13846<refsect1> 13847<title>Description</title> 13848<para> 13849 Initializes the CODEC DAPM bias level. See <function>snd_soc_dapm_init_bias_level</function>. 13850</para> 13851</refsect1> 13852</refentry> 13853 13854<refentry id="API-snd-soc-codec-get-bias-level"> 13855<refentryinfo> 13856 <title>LINUX</title> 13857 <productname>Kernel Hackers Manual</productname> 13858 <date>July 2017</date> 13859</refentryinfo> 13860<refmeta> 13861 <refentrytitle><phrase>snd_soc_codec_get_bias_level</phrase></refentrytitle> 13862 <manvolnum>9</manvolnum> 13863 <refmiscinfo class="version">4.4.14</refmiscinfo> 13864</refmeta> 13865<refnamediv> 13866 <refname>snd_soc_codec_get_bias_level</refname> 13867 <refpurpose> 13868 Get current CODEC DAPM bias level 13869 </refpurpose> 13870</refnamediv> 13871<refsynopsisdiv> 13872 <title>Synopsis</title> 13873 <funcsynopsis><funcprototype> 13874 <funcdef>enum snd_soc_bias_level <function>snd_soc_codec_get_bias_level </function></funcdef> 13875 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 13876 </funcprototype></funcsynopsis> 13877</refsynopsisdiv> 13878<refsect1> 13879 <title>Arguments</title> 13880 <variablelist> 13881 <varlistentry> 13882 <term><parameter>codec</parameter></term> 13883 <listitem> 13884 <para> 13885 The CODEC for which to get the DAPM bias level 13886 </para> 13887 </listitem> 13888 </varlistentry> 13889 </variablelist> 13890</refsect1> 13891<refsect1> 13892<title>Returns</title> 13893<para> 13894 The current DAPM bias level of the CODEC. 13895</para> 13896</refsect1> 13897</refentry> 13898 13899<refentry id="API-snd-soc-codec-force-bias-level"> 13900<refentryinfo> 13901 <title>LINUX</title> 13902 <productname>Kernel Hackers Manual</productname> 13903 <date>July 2017</date> 13904</refentryinfo> 13905<refmeta> 13906 <refentrytitle><phrase>snd_soc_codec_force_bias_level</phrase></refentrytitle> 13907 <manvolnum>9</manvolnum> 13908 <refmiscinfo class="version">4.4.14</refmiscinfo> 13909</refmeta> 13910<refnamediv> 13911 <refname>snd_soc_codec_force_bias_level</refname> 13912 <refpurpose> 13913 Set the CODEC DAPM bias level 13914 </refpurpose> 13915</refnamediv> 13916<refsynopsisdiv> 13917 <title>Synopsis</title> 13918 <funcsynopsis><funcprototype> 13919 <funcdef>int <function>snd_soc_codec_force_bias_level </function></funcdef> 13920 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 13921 <paramdef>enum snd_soc_bias_level <parameter>level</parameter></paramdef> 13922 </funcprototype></funcsynopsis> 13923</refsynopsisdiv> 13924<refsect1> 13925 <title>Arguments</title> 13926 <variablelist> 13927 <varlistentry> 13928 <term><parameter>codec</parameter></term> 13929 <listitem> 13930 <para> 13931 The CODEC for which to set the level 13932 </para> 13933 </listitem> 13934 </varlistentry> 13935 <varlistentry> 13936 <term><parameter>level</parameter></term> 13937 <listitem> 13938 <para> 13939 The level to set to 13940 </para> 13941 </listitem> 13942 </varlistentry> 13943 </variablelist> 13944</refsect1> 13945<refsect1> 13946<title>Description</title> 13947<para> 13948 Forces the CODEC bias level to a specific state. See 13949 <function>snd_soc_dapm_force_bias_level</function>. 13950</para> 13951</refsect1> 13952</refentry> 13953 13954<refentry id="API-snd-soc-dapm-kcontrol-codec"> 13955<refentryinfo> 13956 <title>LINUX</title> 13957 <productname>Kernel Hackers Manual</productname> 13958 <date>July 2017</date> 13959</refentryinfo> 13960<refmeta> 13961 <refentrytitle><phrase>snd_soc_dapm_kcontrol_codec</phrase></refentrytitle> 13962 <manvolnum>9</manvolnum> 13963 <refmiscinfo class="version">4.4.14</refmiscinfo> 13964</refmeta> 13965<refnamediv> 13966 <refname>snd_soc_dapm_kcontrol_codec</refname> 13967 <refpurpose> 13968 Returns the codec associated to a kcontrol 13969 </refpurpose> 13970</refnamediv> 13971<refsynopsisdiv> 13972 <title>Synopsis</title> 13973 <funcsynopsis><funcprototype> 13974 <funcdef>struct snd_soc_codec * <function>snd_soc_dapm_kcontrol_codec </function></funcdef> 13975 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 13976 </funcprototype></funcsynopsis> 13977</refsynopsisdiv> 13978<refsect1> 13979 <title>Arguments</title> 13980 <variablelist> 13981 <varlistentry> 13982 <term><parameter>kcontrol</parameter></term> 13983 <listitem> 13984 <para> 13985 The kcontrol 13986 </para> 13987 </listitem> 13988 </varlistentry> 13989 </variablelist> 13990</refsect1> 13991<refsect1> 13992<title>Description</title> 13993<para> 13994 This function must only be used on DAPM contexts that are known to be part of 13995 a CODEC (e.g. in a CODEC driver). Otherwise the behavior is undefined. 13996</para> 13997</refsect1> 13998</refentry> 13999 14000<refentry id="API-snd-soc-cache-sync"> 14001<refentryinfo> 14002 <title>LINUX</title> 14003 <productname>Kernel Hackers Manual</productname> 14004 <date>July 2017</date> 14005</refentryinfo> 14006<refmeta> 14007 <refentrytitle><phrase>snd_soc_cache_sync</phrase></refentrytitle> 14008 <manvolnum>9</manvolnum> 14009 <refmiscinfo class="version">4.4.14</refmiscinfo> 14010</refmeta> 14011<refnamediv> 14012 <refname>snd_soc_cache_sync</refname> 14013 <refpurpose> 14014 Sync the register cache with the hardware 14015 </refpurpose> 14016</refnamediv> 14017<refsynopsisdiv> 14018 <title>Synopsis</title> 14019 <funcsynopsis><funcprototype> 14020 <funcdef>int <function>snd_soc_cache_sync </function></funcdef> 14021 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 14022 </funcprototype></funcsynopsis> 14023</refsynopsisdiv> 14024<refsect1> 14025 <title>Arguments</title> 14026 <variablelist> 14027 <varlistentry> 14028 <term><parameter>codec</parameter></term> 14029 <listitem> 14030 <para> 14031 CODEC to sync 14032 </para> 14033 </listitem> 14034 </varlistentry> 14035 </variablelist> 14036</refsect1> 14037<refsect1> 14038<title>Note</title> 14039<para> 14040 This function will call <function>regcache_sync</function> 14041</para> 14042</refsect1> 14043</refentry> 14044 14045<refentry id="API-snd-soc-codec-init-regmap"> 14046<refentryinfo> 14047 <title>LINUX</title> 14048 <productname>Kernel Hackers Manual</productname> 14049 <date>July 2017</date> 14050</refentryinfo> 14051<refmeta> 14052 <refentrytitle><phrase>snd_soc_codec_init_regmap</phrase></refentrytitle> 14053 <manvolnum>9</manvolnum> 14054 <refmiscinfo class="version">4.4.14</refmiscinfo> 14055</refmeta> 14056<refnamediv> 14057 <refname>snd_soc_codec_init_regmap</refname> 14058 <refpurpose> 14059 Initialize regmap instance for the CODEC 14060 </refpurpose> 14061</refnamediv> 14062<refsynopsisdiv> 14063 <title>Synopsis</title> 14064 <funcsynopsis><funcprototype> 14065 <funcdef>void <function>snd_soc_codec_init_regmap </function></funcdef> 14066 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 14067 <paramdef>struct regmap * <parameter>regmap</parameter></paramdef> 14068 </funcprototype></funcsynopsis> 14069</refsynopsisdiv> 14070<refsect1> 14071 <title>Arguments</title> 14072 <variablelist> 14073 <varlistentry> 14074 <term><parameter>codec</parameter></term> 14075 <listitem> 14076 <para> 14077 The CODEC for which to initialize the regmap instance 14078 </para> 14079 </listitem> 14080 </varlistentry> 14081 <varlistentry> 14082 <term><parameter>regmap</parameter></term> 14083 <listitem> 14084 <para> 14085 The regmap instance that should be used by the CODEC 14086 </para> 14087 </listitem> 14088 </varlistentry> 14089 </variablelist> 14090</refsect1> 14091<refsect1> 14092<title>Description</title> 14093<para> 14094 This function allows deferred assignment of the regmap instance that is 14095 associated with the CODEC. Only use this if the regmap instance is not yet 14096 ready when the CODEC is registered. The function must also be called before 14097 the first IO attempt of the CODEC. 14098</para> 14099</refsect1> 14100</refentry> 14101 14102<refentry id="API-snd-soc-codec-exit-regmap"> 14103<refentryinfo> 14104 <title>LINUX</title> 14105 <productname>Kernel Hackers Manual</productname> 14106 <date>July 2017</date> 14107</refentryinfo> 14108<refmeta> 14109 <refentrytitle><phrase>snd_soc_codec_exit_regmap</phrase></refentrytitle> 14110 <manvolnum>9</manvolnum> 14111 <refmiscinfo class="version">4.4.14</refmiscinfo> 14112</refmeta> 14113<refnamediv> 14114 <refname>snd_soc_codec_exit_regmap</refname> 14115 <refpurpose> 14116 De-initialize regmap instance for the CODEC 14117 </refpurpose> 14118</refnamediv> 14119<refsynopsisdiv> 14120 <title>Synopsis</title> 14121 <funcsynopsis><funcprototype> 14122 <funcdef>void <function>snd_soc_codec_exit_regmap </function></funcdef> 14123 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 14124 </funcprototype></funcsynopsis> 14125</refsynopsisdiv> 14126<refsect1> 14127 <title>Arguments</title> 14128 <variablelist> 14129 <varlistentry> 14130 <term><parameter>codec</parameter></term> 14131 <listitem> 14132 <para> 14133 The CODEC for which to de-initialize the regmap instance 14134 </para> 14135 </listitem> 14136 </varlistentry> 14137 </variablelist> 14138</refsect1> 14139<refsect1> 14140<title>Description</title> 14141<para> 14142 Calls <function>regmap_exit</function> on the regmap instance associated to the CODEC and 14143 removes the regmap instance from the CODEC. 14144 </para><para> 14145 14146 This function should only be used if <function>snd_soc_codec_init_regmap</function> was used to 14147 initialize the regmap instance. 14148</para> 14149</refsect1> 14150</refentry> 14151 14152<refentry id="API-snd-soc-kcontrol-component"> 14153<refentryinfo> 14154 <title>LINUX</title> 14155 <productname>Kernel Hackers Manual</productname> 14156 <date>July 2017</date> 14157</refentryinfo> 14158<refmeta> 14159 <refentrytitle><phrase>snd_soc_kcontrol_component</phrase></refentrytitle> 14160 <manvolnum>9</manvolnum> 14161 <refmiscinfo class="version">4.4.14</refmiscinfo> 14162</refmeta> 14163<refnamediv> 14164 <refname>snd_soc_kcontrol_component</refname> 14165 <refpurpose> 14166 Returns the component that registered the control 14167 </refpurpose> 14168</refnamediv> 14169<refsynopsisdiv> 14170 <title>Synopsis</title> 14171 <funcsynopsis><funcprototype> 14172 <funcdef>struct snd_soc_component * <function>snd_soc_kcontrol_component </function></funcdef> 14173 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 14174 </funcprototype></funcsynopsis> 14175</refsynopsisdiv> 14176<refsect1> 14177 <title>Arguments</title> 14178 <variablelist> 14179 <varlistentry> 14180 <term><parameter>kcontrol</parameter></term> 14181 <listitem> 14182 <para> 14183 The control for which to get the component 14184 </para> 14185 </listitem> 14186 </varlistentry> 14187 </variablelist> 14188</refsect1> 14189<refsect1> 14190<title>Note</title> 14191<para> 14192 This function will work correctly if the control has been registered 14193 for a component. Either with <function>snd_soc_add_codec_controls</function> or 14194 <function>snd_soc_add_platform_controls</function> or via table based setup for either a 14195 CODEC, a platform or component driver. Otherwise the behavior is undefined. 14196</para> 14197</refsect1> 14198</refentry> 14199 14200<refentry id="API-snd-soc-kcontrol-codec"> 14201<refentryinfo> 14202 <title>LINUX</title> 14203 <productname>Kernel Hackers Manual</productname> 14204 <date>July 2017</date> 14205</refentryinfo> 14206<refmeta> 14207 <refentrytitle><phrase>snd_soc_kcontrol_codec</phrase></refentrytitle> 14208 <manvolnum>9</manvolnum> 14209 <refmiscinfo class="version">4.4.14</refmiscinfo> 14210</refmeta> 14211<refnamediv> 14212 <refname>snd_soc_kcontrol_codec</refname> 14213 <refpurpose> 14214 Returns the CODEC that registered the control 14215 </refpurpose> 14216</refnamediv> 14217<refsynopsisdiv> 14218 <title>Synopsis</title> 14219 <funcsynopsis><funcprototype> 14220 <funcdef>struct snd_soc_codec * <function>snd_soc_kcontrol_codec </function></funcdef> 14221 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 14222 </funcprototype></funcsynopsis> 14223</refsynopsisdiv> 14224<refsect1> 14225 <title>Arguments</title> 14226 <variablelist> 14227 <varlistentry> 14228 <term><parameter>kcontrol</parameter></term> 14229 <listitem> 14230 <para> 14231 The control for which to get the CODEC 14232 </para> 14233 </listitem> 14234 </varlistentry> 14235 </variablelist> 14236</refsect1> 14237<refsect1> 14238<title>Note</title> 14239<para> 14240 This function will only work correctly if the control has been 14241 registered with <function>snd_soc_add_codec_controls</function> or via table based setup of 14242 snd_soc_codec_driver. Otherwise the behavior is undefined. 14243</para> 14244</refsect1> 14245</refentry> 14246 14247<refentry id="API-snd-soc-kcontrol-platform"> 14248<refentryinfo> 14249 <title>LINUX</title> 14250 <productname>Kernel Hackers Manual</productname> 14251 <date>July 2017</date> 14252</refentryinfo> 14253<refmeta> 14254 <refentrytitle><phrase>snd_soc_kcontrol_platform</phrase></refentrytitle> 14255 <manvolnum>9</manvolnum> 14256 <refmiscinfo class="version">4.4.14</refmiscinfo> 14257</refmeta> 14258<refnamediv> 14259 <refname>snd_soc_kcontrol_platform</refname> 14260 <refpurpose> 14261 Returns the platform that registered the control 14262 </refpurpose> 14263</refnamediv> 14264<refsynopsisdiv> 14265 <title>Synopsis</title> 14266 <funcsynopsis><funcprototype> 14267 <funcdef>struct snd_soc_platform * <function>snd_soc_kcontrol_platform </function></funcdef> 14268 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 14269 </funcprototype></funcsynopsis> 14270</refsynopsisdiv> 14271<refsect1> 14272 <title>Arguments</title> 14273 <variablelist> 14274 <varlistentry> 14275 <term><parameter>kcontrol</parameter></term> 14276 <listitem> 14277 <para> 14278 The control for which to get the platform 14279 </para> 14280 </listitem> 14281 </varlistentry> 14282 </variablelist> 14283</refsect1> 14284<refsect1> 14285<title>Note</title> 14286<para> 14287 This function will only work correctly if the control has been 14288 registered with <function>snd_soc_add_platform_controls</function> or via table based setup of 14289 a snd_soc_platform_driver. Otherwise the behavior is undefined. 14290</para> 14291</refsect1> 14292</refentry> 14293 14294<!-- sound/soc/soc-core.c --> 14295<refentry id="API-snd-soc-runtime-set-dai-fmt"> 14296<refentryinfo> 14297 <title>LINUX</title> 14298 <productname>Kernel Hackers Manual</productname> 14299 <date>July 2017</date> 14300</refentryinfo> 14301<refmeta> 14302 <refentrytitle><phrase>snd_soc_runtime_set_dai_fmt</phrase></refentrytitle> 14303 <manvolnum>9</manvolnum> 14304 <refmiscinfo class="version">4.4.14</refmiscinfo> 14305</refmeta> 14306<refnamediv> 14307 <refname>snd_soc_runtime_set_dai_fmt</refname> 14308 <refpurpose> 14309 Change DAI link format for a ASoC runtime 14310 </refpurpose> 14311</refnamediv> 14312<refsynopsisdiv> 14313 <title>Synopsis</title> 14314 <funcsynopsis><funcprototype> 14315 <funcdef>int <function>snd_soc_runtime_set_dai_fmt </function></funcdef> 14316 <paramdef>struct snd_soc_pcm_runtime * <parameter>rtd</parameter></paramdef> 14317 <paramdef>unsigned int <parameter>dai_fmt</parameter></paramdef> 14318 </funcprototype></funcsynopsis> 14319</refsynopsisdiv> 14320<refsect1> 14321 <title>Arguments</title> 14322 <variablelist> 14323 <varlistentry> 14324 <term><parameter>rtd</parameter></term> 14325 <listitem> 14326 <para> 14327 The runtime for which the DAI link format should be changed 14328 </para> 14329 </listitem> 14330 </varlistentry> 14331 <varlistentry> 14332 <term><parameter>dai_fmt</parameter></term> 14333 <listitem> 14334 <para> 14335 The new DAI link format 14336 </para> 14337 </listitem> 14338 </varlistentry> 14339 </variablelist> 14340</refsect1> 14341<refsect1> 14342<title>Description</title> 14343<para> 14344 This function updates the DAI link format for all DAIs connected to the DAI 14345 link for the specified runtime. 14346</para> 14347</refsect1> 14348<refsect1> 14349<title>Note</title> 14350<para> 14351 For setups with a static format set the dai_fmt field in the 14352 corresponding snd_dai_link struct instead of using this function. 14353 </para><para> 14354 14355 Returns 0 on success, otherwise a negative error code. 14356</para> 14357</refsect1> 14358</refentry> 14359 14360<refentry id="API-snd-soc-cnew"> 14361<refentryinfo> 14362 <title>LINUX</title> 14363 <productname>Kernel Hackers Manual</productname> 14364 <date>July 2017</date> 14365</refentryinfo> 14366<refmeta> 14367 <refentrytitle><phrase>snd_soc_cnew</phrase></refentrytitle> 14368 <manvolnum>9</manvolnum> 14369 <refmiscinfo class="version">4.4.14</refmiscinfo> 14370</refmeta> 14371<refnamediv> 14372 <refname>snd_soc_cnew</refname> 14373 <refpurpose> 14374 create new control 14375 </refpurpose> 14376</refnamediv> 14377<refsynopsisdiv> 14378 <title>Synopsis</title> 14379 <funcsynopsis><funcprototype> 14380 <funcdef>struct snd_kcontrol * <function>snd_soc_cnew </function></funcdef> 14381 <paramdef>const struct snd_kcontrol_new * <parameter>_template</parameter></paramdef> 14382 <paramdef>void * <parameter>data</parameter></paramdef> 14383 <paramdef>const char * <parameter>long_name</parameter></paramdef> 14384 <paramdef>const char * <parameter>prefix</parameter></paramdef> 14385 </funcprototype></funcsynopsis> 14386</refsynopsisdiv> 14387<refsect1> 14388 <title>Arguments</title> 14389 <variablelist> 14390 <varlistentry> 14391 <term><parameter>_template</parameter></term> 14392 <listitem> 14393 <para> 14394 control template 14395 </para> 14396 </listitem> 14397 </varlistentry> 14398 <varlistentry> 14399 <term><parameter>data</parameter></term> 14400 <listitem> 14401 <para> 14402 control private data 14403 </para> 14404 </listitem> 14405 </varlistentry> 14406 <varlistentry> 14407 <term><parameter>long_name</parameter></term> 14408 <listitem> 14409 <para> 14410 control long name 14411 </para> 14412 </listitem> 14413 </varlistentry> 14414 <varlistentry> 14415 <term><parameter>prefix</parameter></term> 14416 <listitem> 14417 <para> 14418 control name prefix 14419 </para> 14420 </listitem> 14421 </varlistentry> 14422 </variablelist> 14423</refsect1> 14424<refsect1> 14425<title>Description</title> 14426<para> 14427 Create a new mixer control from a template control. 14428 </para><para> 14429 14430 Returns 0 for success, else error. 14431</para> 14432</refsect1> 14433</refentry> 14434 14435<refentry id="API-snd-soc-add-component-controls"> 14436<refentryinfo> 14437 <title>LINUX</title> 14438 <productname>Kernel Hackers Manual</productname> 14439 <date>July 2017</date> 14440</refentryinfo> 14441<refmeta> 14442 <refentrytitle><phrase>snd_soc_add_component_controls</phrase></refentrytitle> 14443 <manvolnum>9</manvolnum> 14444 <refmiscinfo class="version">4.4.14</refmiscinfo> 14445</refmeta> 14446<refnamediv> 14447 <refname>snd_soc_add_component_controls</refname> 14448 <refpurpose> 14449 Add an array of controls to a component. 14450 </refpurpose> 14451</refnamediv> 14452<refsynopsisdiv> 14453 <title>Synopsis</title> 14454 <funcsynopsis><funcprototype> 14455 <funcdef>int <function>snd_soc_add_component_controls </function></funcdef> 14456 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 14457 <paramdef>const struct snd_kcontrol_new * <parameter>controls</parameter></paramdef> 14458 <paramdef>unsigned int <parameter>num_controls</parameter></paramdef> 14459 </funcprototype></funcsynopsis> 14460</refsynopsisdiv> 14461<refsect1> 14462 <title>Arguments</title> 14463 <variablelist> 14464 <varlistentry> 14465 <term><parameter>component</parameter></term> 14466 <listitem> 14467 <para> 14468 Component to add controls to 14469 </para> 14470 </listitem> 14471 </varlistentry> 14472 <varlistentry> 14473 <term><parameter>controls</parameter></term> 14474 <listitem> 14475 <para> 14476 Array of controls to add 14477 </para> 14478 </listitem> 14479 </varlistentry> 14480 <varlistentry> 14481 <term><parameter>num_controls</parameter></term> 14482 <listitem> 14483 <para> 14484 Number of elements in the array 14485 </para> 14486 </listitem> 14487 </varlistentry> 14488 </variablelist> 14489</refsect1> 14490<refsect1> 14491<title>Return</title> 14492<para> 14493 0 for success, else error. 14494</para> 14495</refsect1> 14496</refentry> 14497 14498<refentry id="API-snd-soc-add-codec-controls"> 14499<refentryinfo> 14500 <title>LINUX</title> 14501 <productname>Kernel Hackers Manual</productname> 14502 <date>July 2017</date> 14503</refentryinfo> 14504<refmeta> 14505 <refentrytitle><phrase>snd_soc_add_codec_controls</phrase></refentrytitle> 14506 <manvolnum>9</manvolnum> 14507 <refmiscinfo class="version">4.4.14</refmiscinfo> 14508</refmeta> 14509<refnamediv> 14510 <refname>snd_soc_add_codec_controls</refname> 14511 <refpurpose> 14512 add an array of controls to a codec. Convenience function to add a list of controls. Many codecs were duplicating this code. 14513 </refpurpose> 14514</refnamediv> 14515<refsynopsisdiv> 14516 <title>Synopsis</title> 14517 <funcsynopsis><funcprototype> 14518 <funcdef>int <function>snd_soc_add_codec_controls </function></funcdef> 14519 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 14520 <paramdef>const struct snd_kcontrol_new * <parameter>controls</parameter></paramdef> 14521 <paramdef>unsigned int <parameter>num_controls</parameter></paramdef> 14522 </funcprototype></funcsynopsis> 14523</refsynopsisdiv> 14524<refsect1> 14525 <title>Arguments</title> 14526 <variablelist> 14527 <varlistentry> 14528 <term><parameter>codec</parameter></term> 14529 <listitem> 14530 <para> 14531 codec to add controls to 14532 </para> 14533 </listitem> 14534 </varlistentry> 14535 <varlistentry> 14536 <term><parameter>controls</parameter></term> 14537 <listitem> 14538 <para> 14539 array of controls to add 14540 </para> 14541 </listitem> 14542 </varlistentry> 14543 <varlistentry> 14544 <term><parameter>num_controls</parameter></term> 14545 <listitem> 14546 <para> 14547 number of elements in the array 14548 </para> 14549 </listitem> 14550 </varlistentry> 14551 </variablelist> 14552</refsect1> 14553<refsect1> 14554<title>Description</title> 14555<para> 14556 Return 0 for success, else error. 14557</para> 14558</refsect1> 14559</refentry> 14560 14561<refentry id="API-snd-soc-add-platform-controls"> 14562<refentryinfo> 14563 <title>LINUX</title> 14564 <productname>Kernel Hackers Manual</productname> 14565 <date>July 2017</date> 14566</refentryinfo> 14567<refmeta> 14568 <refentrytitle><phrase>snd_soc_add_platform_controls</phrase></refentrytitle> 14569 <manvolnum>9</manvolnum> 14570 <refmiscinfo class="version">4.4.14</refmiscinfo> 14571</refmeta> 14572<refnamediv> 14573 <refname>snd_soc_add_platform_controls</refname> 14574 <refpurpose> 14575 add an array of controls to a platform. Convenience function to add a list of controls. 14576 </refpurpose> 14577</refnamediv> 14578<refsynopsisdiv> 14579 <title>Synopsis</title> 14580 <funcsynopsis><funcprototype> 14581 <funcdef>int <function>snd_soc_add_platform_controls </function></funcdef> 14582 <paramdef>struct snd_soc_platform * <parameter>platform</parameter></paramdef> 14583 <paramdef>const struct snd_kcontrol_new * <parameter>controls</parameter></paramdef> 14584 <paramdef>unsigned int <parameter>num_controls</parameter></paramdef> 14585 </funcprototype></funcsynopsis> 14586</refsynopsisdiv> 14587<refsect1> 14588 <title>Arguments</title> 14589 <variablelist> 14590 <varlistentry> 14591 <term><parameter>platform</parameter></term> 14592 <listitem> 14593 <para> 14594 platform to add controls to 14595 </para> 14596 </listitem> 14597 </varlistentry> 14598 <varlistentry> 14599 <term><parameter>controls</parameter></term> 14600 <listitem> 14601 <para> 14602 array of controls to add 14603 </para> 14604 </listitem> 14605 </varlistentry> 14606 <varlistentry> 14607 <term><parameter>num_controls</parameter></term> 14608 <listitem> 14609 <para> 14610 number of elements in the array 14611 </para> 14612 </listitem> 14613 </varlistentry> 14614 </variablelist> 14615</refsect1> 14616<refsect1> 14617<title>Description</title> 14618<para> 14619 Return 0 for success, else error. 14620</para> 14621</refsect1> 14622</refentry> 14623 14624<refentry id="API-snd-soc-add-card-controls"> 14625<refentryinfo> 14626 <title>LINUX</title> 14627 <productname>Kernel Hackers Manual</productname> 14628 <date>July 2017</date> 14629</refentryinfo> 14630<refmeta> 14631 <refentrytitle><phrase>snd_soc_add_card_controls</phrase></refentrytitle> 14632 <manvolnum>9</manvolnum> 14633 <refmiscinfo class="version">4.4.14</refmiscinfo> 14634</refmeta> 14635<refnamediv> 14636 <refname>snd_soc_add_card_controls</refname> 14637 <refpurpose> 14638 add an array of controls to a SoC card. Convenience function to add a list of controls. 14639 </refpurpose> 14640</refnamediv> 14641<refsynopsisdiv> 14642 <title>Synopsis</title> 14643 <funcsynopsis><funcprototype> 14644 <funcdef>int <function>snd_soc_add_card_controls </function></funcdef> 14645 <paramdef>struct snd_soc_card * <parameter>soc_card</parameter></paramdef> 14646 <paramdef>const struct snd_kcontrol_new * <parameter>controls</parameter></paramdef> 14647 <paramdef>int <parameter>num_controls</parameter></paramdef> 14648 </funcprototype></funcsynopsis> 14649</refsynopsisdiv> 14650<refsect1> 14651 <title>Arguments</title> 14652 <variablelist> 14653 <varlistentry> 14654 <term><parameter>soc_card</parameter></term> 14655 <listitem> 14656 <para> 14657 SoC card to add controls to 14658 </para> 14659 </listitem> 14660 </varlistentry> 14661 <varlistentry> 14662 <term><parameter>controls</parameter></term> 14663 <listitem> 14664 <para> 14665 array of controls to add 14666 </para> 14667 </listitem> 14668 </varlistentry> 14669 <varlistentry> 14670 <term><parameter>num_controls</parameter></term> 14671 <listitem> 14672 <para> 14673 number of elements in the array 14674 </para> 14675 </listitem> 14676 </varlistentry> 14677 </variablelist> 14678</refsect1> 14679<refsect1> 14680<title>Description</title> 14681<para> 14682 Return 0 for success, else error. 14683</para> 14684</refsect1> 14685</refentry> 14686 14687<refentry id="API-snd-soc-add-dai-controls"> 14688<refentryinfo> 14689 <title>LINUX</title> 14690 <productname>Kernel Hackers Manual</productname> 14691 <date>July 2017</date> 14692</refentryinfo> 14693<refmeta> 14694 <refentrytitle><phrase>snd_soc_add_dai_controls</phrase></refentrytitle> 14695 <manvolnum>9</manvolnum> 14696 <refmiscinfo class="version">4.4.14</refmiscinfo> 14697</refmeta> 14698<refnamediv> 14699 <refname>snd_soc_add_dai_controls</refname> 14700 <refpurpose> 14701 add an array of controls to a DAI. Convienience function to add a list of controls. 14702 </refpurpose> 14703</refnamediv> 14704<refsynopsisdiv> 14705 <title>Synopsis</title> 14706 <funcsynopsis><funcprototype> 14707 <funcdef>int <function>snd_soc_add_dai_controls </function></funcdef> 14708 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 14709 <paramdef>const struct snd_kcontrol_new * <parameter>controls</parameter></paramdef> 14710 <paramdef>int <parameter>num_controls</parameter></paramdef> 14711 </funcprototype></funcsynopsis> 14712</refsynopsisdiv> 14713<refsect1> 14714 <title>Arguments</title> 14715 <variablelist> 14716 <varlistentry> 14717 <term><parameter>dai</parameter></term> 14718 <listitem> 14719 <para> 14720 DAI to add controls to 14721 </para> 14722 </listitem> 14723 </varlistentry> 14724 <varlistentry> 14725 <term><parameter>controls</parameter></term> 14726 <listitem> 14727 <para> 14728 array of controls to add 14729 </para> 14730 </listitem> 14731 </varlistentry> 14732 <varlistentry> 14733 <term><parameter>num_controls</parameter></term> 14734 <listitem> 14735 <para> 14736 number of elements in the array 14737 </para> 14738 </listitem> 14739 </varlistentry> 14740 </variablelist> 14741</refsect1> 14742<refsect1> 14743<title>Description</title> 14744<para> 14745 Return 0 for success, else error. 14746</para> 14747</refsect1> 14748</refentry> 14749 14750<refentry id="API-snd-soc-dai-set-sysclk"> 14751<refentryinfo> 14752 <title>LINUX</title> 14753 <productname>Kernel Hackers Manual</productname> 14754 <date>July 2017</date> 14755</refentryinfo> 14756<refmeta> 14757 <refentrytitle><phrase>snd_soc_dai_set_sysclk</phrase></refentrytitle> 14758 <manvolnum>9</manvolnum> 14759 <refmiscinfo class="version">4.4.14</refmiscinfo> 14760</refmeta> 14761<refnamediv> 14762 <refname>snd_soc_dai_set_sysclk</refname> 14763 <refpurpose> 14764 configure DAI system or master clock. 14765 </refpurpose> 14766</refnamediv> 14767<refsynopsisdiv> 14768 <title>Synopsis</title> 14769 <funcsynopsis><funcprototype> 14770 <funcdef>int <function>snd_soc_dai_set_sysclk </function></funcdef> 14771 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 14772 <paramdef>int <parameter>clk_id</parameter></paramdef> 14773 <paramdef>unsigned int <parameter>freq</parameter></paramdef> 14774 <paramdef>int <parameter>dir</parameter></paramdef> 14775 </funcprototype></funcsynopsis> 14776</refsynopsisdiv> 14777<refsect1> 14778 <title>Arguments</title> 14779 <variablelist> 14780 <varlistentry> 14781 <term><parameter>dai</parameter></term> 14782 <listitem> 14783 <para> 14784 DAI 14785 </para> 14786 </listitem> 14787 </varlistentry> 14788 <varlistentry> 14789 <term><parameter>clk_id</parameter></term> 14790 <listitem> 14791 <para> 14792 DAI specific clock ID 14793 </para> 14794 </listitem> 14795 </varlistentry> 14796 <varlistentry> 14797 <term><parameter>freq</parameter></term> 14798 <listitem> 14799 <para> 14800 new clock frequency in Hz 14801 </para> 14802 </listitem> 14803 </varlistentry> 14804 <varlistentry> 14805 <term><parameter>dir</parameter></term> 14806 <listitem> 14807 <para> 14808 new clock direction - input/output. 14809 </para> 14810 </listitem> 14811 </varlistentry> 14812 </variablelist> 14813</refsect1> 14814<refsect1> 14815<title>Description</title> 14816<para> 14817 Configures the DAI master (MCLK) or system (SYSCLK) clocking. 14818</para> 14819</refsect1> 14820</refentry> 14821 14822<refentry id="API-snd-soc-codec-set-sysclk"> 14823<refentryinfo> 14824 <title>LINUX</title> 14825 <productname>Kernel Hackers Manual</productname> 14826 <date>July 2017</date> 14827</refentryinfo> 14828<refmeta> 14829 <refentrytitle><phrase>snd_soc_codec_set_sysclk</phrase></refentrytitle> 14830 <manvolnum>9</manvolnum> 14831 <refmiscinfo class="version">4.4.14</refmiscinfo> 14832</refmeta> 14833<refnamediv> 14834 <refname>snd_soc_codec_set_sysclk</refname> 14835 <refpurpose> 14836 configure CODEC system or master clock. 14837 </refpurpose> 14838</refnamediv> 14839<refsynopsisdiv> 14840 <title>Synopsis</title> 14841 <funcsynopsis><funcprototype> 14842 <funcdef>int <function>snd_soc_codec_set_sysclk </function></funcdef> 14843 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 14844 <paramdef>int <parameter>clk_id</parameter></paramdef> 14845 <paramdef>int <parameter>source</parameter></paramdef> 14846 <paramdef>unsigned int <parameter>freq</parameter></paramdef> 14847 <paramdef>int <parameter>dir</parameter></paramdef> 14848 </funcprototype></funcsynopsis> 14849</refsynopsisdiv> 14850<refsect1> 14851 <title>Arguments</title> 14852 <variablelist> 14853 <varlistentry> 14854 <term><parameter>codec</parameter></term> 14855 <listitem> 14856 <para> 14857 CODEC 14858 </para> 14859 </listitem> 14860 </varlistentry> 14861 <varlistentry> 14862 <term><parameter>clk_id</parameter></term> 14863 <listitem> 14864 <para> 14865 DAI specific clock ID 14866 </para> 14867 </listitem> 14868 </varlistentry> 14869 <varlistentry> 14870 <term><parameter>source</parameter></term> 14871 <listitem> 14872 <para> 14873 Source for the clock 14874 </para> 14875 </listitem> 14876 </varlistentry> 14877 <varlistentry> 14878 <term><parameter>freq</parameter></term> 14879 <listitem> 14880 <para> 14881 new clock frequency in Hz 14882 </para> 14883 </listitem> 14884 </varlistentry> 14885 <varlistentry> 14886 <term><parameter>dir</parameter></term> 14887 <listitem> 14888 <para> 14889 new clock direction - input/output. 14890 </para> 14891 </listitem> 14892 </varlistentry> 14893 </variablelist> 14894</refsect1> 14895<refsect1> 14896<title>Description</title> 14897<para> 14898 Configures the CODEC master (MCLK) or system (SYSCLK) clocking. 14899</para> 14900</refsect1> 14901</refentry> 14902 14903<refentry id="API-snd-soc-dai-set-clkdiv"> 14904<refentryinfo> 14905 <title>LINUX</title> 14906 <productname>Kernel Hackers Manual</productname> 14907 <date>July 2017</date> 14908</refentryinfo> 14909<refmeta> 14910 <refentrytitle><phrase>snd_soc_dai_set_clkdiv</phrase></refentrytitle> 14911 <manvolnum>9</manvolnum> 14912 <refmiscinfo class="version">4.4.14</refmiscinfo> 14913</refmeta> 14914<refnamediv> 14915 <refname>snd_soc_dai_set_clkdiv</refname> 14916 <refpurpose> 14917 configure DAI clock dividers. 14918 </refpurpose> 14919</refnamediv> 14920<refsynopsisdiv> 14921 <title>Synopsis</title> 14922 <funcsynopsis><funcprototype> 14923 <funcdef>int <function>snd_soc_dai_set_clkdiv </function></funcdef> 14924 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 14925 <paramdef>int <parameter>div_id</parameter></paramdef> 14926 <paramdef>int <parameter>div</parameter></paramdef> 14927 </funcprototype></funcsynopsis> 14928</refsynopsisdiv> 14929<refsect1> 14930 <title>Arguments</title> 14931 <variablelist> 14932 <varlistentry> 14933 <term><parameter>dai</parameter></term> 14934 <listitem> 14935 <para> 14936 DAI 14937 </para> 14938 </listitem> 14939 </varlistentry> 14940 <varlistentry> 14941 <term><parameter>div_id</parameter></term> 14942 <listitem> 14943 <para> 14944 DAI specific clock divider ID 14945 </para> 14946 </listitem> 14947 </varlistentry> 14948 <varlistentry> 14949 <term><parameter>div</parameter></term> 14950 <listitem> 14951 <para> 14952 new clock divisor. 14953 </para> 14954 </listitem> 14955 </varlistentry> 14956 </variablelist> 14957</refsect1> 14958<refsect1> 14959<title>Description</title> 14960<para> 14961 Configures the clock dividers. This is used to derive the best DAI bit and 14962 frame clocks from the system or master clock. It's best to set the DAI bit 14963 and frame clocks as low as possible to save system power. 14964</para> 14965</refsect1> 14966</refentry> 14967 14968<refentry id="API-snd-soc-dai-set-pll"> 14969<refentryinfo> 14970 <title>LINUX</title> 14971 <productname>Kernel Hackers Manual</productname> 14972 <date>July 2017</date> 14973</refentryinfo> 14974<refmeta> 14975 <refentrytitle><phrase>snd_soc_dai_set_pll</phrase></refentrytitle> 14976 <manvolnum>9</manvolnum> 14977 <refmiscinfo class="version">4.4.14</refmiscinfo> 14978</refmeta> 14979<refnamediv> 14980 <refname>snd_soc_dai_set_pll</refname> 14981 <refpurpose> 14982 configure DAI PLL. 14983 </refpurpose> 14984</refnamediv> 14985<refsynopsisdiv> 14986 <title>Synopsis</title> 14987 <funcsynopsis><funcprototype> 14988 <funcdef>int <function>snd_soc_dai_set_pll </function></funcdef> 14989 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 14990 <paramdef>int <parameter>pll_id</parameter></paramdef> 14991 <paramdef>int <parameter>source</parameter></paramdef> 14992 <paramdef>unsigned int <parameter>freq_in</parameter></paramdef> 14993 <paramdef>unsigned int <parameter>freq_out</parameter></paramdef> 14994 </funcprototype></funcsynopsis> 14995</refsynopsisdiv> 14996<refsect1> 14997 <title>Arguments</title> 14998 <variablelist> 14999 <varlistentry> 15000 <term><parameter>dai</parameter></term> 15001 <listitem> 15002 <para> 15003 DAI 15004 </para> 15005 </listitem> 15006 </varlistentry> 15007 <varlistentry> 15008 <term><parameter>pll_id</parameter></term> 15009 <listitem> 15010 <para> 15011 DAI specific PLL ID 15012 </para> 15013 </listitem> 15014 </varlistentry> 15015 <varlistentry> 15016 <term><parameter>source</parameter></term> 15017 <listitem> 15018 <para> 15019 DAI specific source for the PLL 15020 </para> 15021 </listitem> 15022 </varlistentry> 15023 <varlistentry> 15024 <term><parameter>freq_in</parameter></term> 15025 <listitem> 15026 <para> 15027 PLL input clock frequency in Hz 15028 </para> 15029 </listitem> 15030 </varlistentry> 15031 <varlistentry> 15032 <term><parameter>freq_out</parameter></term> 15033 <listitem> 15034 <para> 15035 requested PLL output clock frequency in Hz 15036 </para> 15037 </listitem> 15038 </varlistentry> 15039 </variablelist> 15040</refsect1> 15041<refsect1> 15042<title>Description</title> 15043<para> 15044 Configures and enables PLL to generate output clock based on input clock. 15045</para> 15046</refsect1> 15047</refentry> 15048 15049<refentry id="API-snd-soc-dai-set-bclk-ratio"> 15050<refentryinfo> 15051 <title>LINUX</title> 15052 <productname>Kernel Hackers Manual</productname> 15053 <date>July 2017</date> 15054</refentryinfo> 15055<refmeta> 15056 <refentrytitle><phrase>snd_soc_dai_set_bclk_ratio</phrase></refentrytitle> 15057 <manvolnum>9</manvolnum> 15058 <refmiscinfo class="version">4.4.14</refmiscinfo> 15059</refmeta> 15060<refnamediv> 15061 <refname>snd_soc_dai_set_bclk_ratio</refname> 15062 <refpurpose> 15063 configure BCLK to sample rate ratio. 15064 </refpurpose> 15065</refnamediv> 15066<refsynopsisdiv> 15067 <title>Synopsis</title> 15068 <funcsynopsis><funcprototype> 15069 <funcdef>int <function>snd_soc_dai_set_bclk_ratio </function></funcdef> 15070 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 15071 <paramdef>unsigned int <parameter>ratio</parameter></paramdef> 15072 </funcprototype></funcsynopsis> 15073</refsynopsisdiv> 15074<refsect1> 15075 <title>Arguments</title> 15076 <variablelist> 15077 <varlistentry> 15078 <term><parameter>dai</parameter></term> 15079 <listitem> 15080 <para> 15081 DAI 15082 </para> 15083 </listitem> 15084 </varlistentry> 15085 <varlistentry> 15086 <term><parameter>ratio</parameter></term> 15087 <listitem> 15088 <para> 15089 Ratio of BCLK to Sample rate. 15090 </para> 15091 </listitem> 15092 </varlistentry> 15093 </variablelist> 15094</refsect1> 15095<refsect1> 15096<title>Description</title> 15097<para> 15098 Configures the DAI for a preset BCLK to sample rate ratio. 15099</para> 15100</refsect1> 15101</refentry> 15102 15103<refentry id="API-snd-soc-dai-set-fmt"> 15104<refentryinfo> 15105 <title>LINUX</title> 15106 <productname>Kernel Hackers Manual</productname> 15107 <date>July 2017</date> 15108</refentryinfo> 15109<refmeta> 15110 <refentrytitle><phrase>snd_soc_dai_set_fmt</phrase></refentrytitle> 15111 <manvolnum>9</manvolnum> 15112 <refmiscinfo class="version">4.4.14</refmiscinfo> 15113</refmeta> 15114<refnamediv> 15115 <refname>snd_soc_dai_set_fmt</refname> 15116 <refpurpose> 15117 configure DAI hardware audio format. 15118 </refpurpose> 15119</refnamediv> 15120<refsynopsisdiv> 15121 <title>Synopsis</title> 15122 <funcsynopsis><funcprototype> 15123 <funcdef>int <function>snd_soc_dai_set_fmt </function></funcdef> 15124 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 15125 <paramdef>unsigned int <parameter>fmt</parameter></paramdef> 15126 </funcprototype></funcsynopsis> 15127</refsynopsisdiv> 15128<refsect1> 15129 <title>Arguments</title> 15130 <variablelist> 15131 <varlistentry> 15132 <term><parameter>dai</parameter></term> 15133 <listitem> 15134 <para> 15135 DAI 15136 </para> 15137 </listitem> 15138 </varlistentry> 15139 <varlistentry> 15140 <term><parameter>fmt</parameter></term> 15141 <listitem> 15142 <para> 15143 SND_SOC_DAIFMT_ format value. 15144 </para> 15145 </listitem> 15146 </varlistentry> 15147 </variablelist> 15148</refsect1> 15149<refsect1> 15150<title>Description</title> 15151<para> 15152 Configures the DAI hardware format and clocking. 15153</para> 15154</refsect1> 15155</refentry> 15156 15157<refentry id="API-snd-soc-dai-set-tdm-slot"> 15158<refentryinfo> 15159 <title>LINUX</title> 15160 <productname>Kernel Hackers Manual</productname> 15161 <date>July 2017</date> 15162</refentryinfo> 15163<refmeta> 15164 <refentrytitle><phrase>snd_soc_dai_set_tdm_slot</phrase></refentrytitle> 15165 <manvolnum>9</manvolnum> 15166 <refmiscinfo class="version">4.4.14</refmiscinfo> 15167</refmeta> 15168<refnamediv> 15169 <refname>snd_soc_dai_set_tdm_slot</refname> 15170 <refpurpose> 15171 Configures a DAI for TDM operation 15172 </refpurpose> 15173</refnamediv> 15174<refsynopsisdiv> 15175 <title>Synopsis</title> 15176 <funcsynopsis><funcprototype> 15177 <funcdef>int <function>snd_soc_dai_set_tdm_slot </function></funcdef> 15178 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 15179 <paramdef>unsigned int <parameter>tx_mask</parameter></paramdef> 15180 <paramdef>unsigned int <parameter>rx_mask</parameter></paramdef> 15181 <paramdef>int <parameter>slots</parameter></paramdef> 15182 <paramdef>int <parameter>slot_width</parameter></paramdef> 15183 </funcprototype></funcsynopsis> 15184</refsynopsisdiv> 15185<refsect1> 15186 <title>Arguments</title> 15187 <variablelist> 15188 <varlistentry> 15189 <term><parameter>dai</parameter></term> 15190 <listitem> 15191 <para> 15192 The DAI to configure 15193 </para> 15194 </listitem> 15195 </varlistentry> 15196 <varlistentry> 15197 <term><parameter>tx_mask</parameter></term> 15198 <listitem> 15199 <para> 15200 bitmask representing active TX slots. 15201 </para> 15202 </listitem> 15203 </varlistentry> 15204 <varlistentry> 15205 <term><parameter>rx_mask</parameter></term> 15206 <listitem> 15207 <para> 15208 bitmask representing active RX slots. 15209 </para> 15210 </listitem> 15211 </varlistentry> 15212 <varlistentry> 15213 <term><parameter>slots</parameter></term> 15214 <listitem> 15215 <para> 15216 Number of slots in use. 15217 </para> 15218 </listitem> 15219 </varlistentry> 15220 <varlistentry> 15221 <term><parameter>slot_width</parameter></term> 15222 <listitem> 15223 <para> 15224 Width in bits for each slot. 15225 </para> 15226 </listitem> 15227 </varlistentry> 15228 </variablelist> 15229</refsect1> 15230<refsect1> 15231<title>Description</title> 15232<para> 15233 This function configures the specified DAI for TDM operation. <parameter>slot</parameter> contains 15234 the total number of slots of the TDM stream and <parameter>slot_with</parameter> the width of each 15235 slot in bit clock cycles. <parameter>tx_mask</parameter> and <parameter>rx_mask</parameter> are bitmasks specifying the 15236 active slots of the TDM stream for the specified DAI, i.e. which slots the 15237 DAI should write to or read from. If a bit is set the corresponding slot is 15238 active, if a bit is cleared the corresponding slot is inactive. Bit 0 maps to 15239 the first slot, bit 1 to the second slot and so on. The first active slot 15240 maps to the first channel of the DAI, the second active slot to the second 15241 channel and so on. 15242 </para><para> 15243 15244 TDM mode can be disabled by passing 0 for <parameter>slots</parameter>. In this case <parameter>tx_mask</parameter>, 15245 <parameter>rx_mask</parameter> and <parameter>slot_width</parameter> will be ignored. 15246 </para><para> 15247 15248 Returns 0 on success, a negative error code otherwise. 15249</para> 15250</refsect1> 15251</refentry> 15252 15253<refentry id="API-snd-soc-dai-set-channel-map"> 15254<refentryinfo> 15255 <title>LINUX</title> 15256 <productname>Kernel Hackers Manual</productname> 15257 <date>July 2017</date> 15258</refentryinfo> 15259<refmeta> 15260 <refentrytitle><phrase>snd_soc_dai_set_channel_map</phrase></refentrytitle> 15261 <manvolnum>9</manvolnum> 15262 <refmiscinfo class="version">4.4.14</refmiscinfo> 15263</refmeta> 15264<refnamediv> 15265 <refname>snd_soc_dai_set_channel_map</refname> 15266 <refpurpose> 15267 configure DAI audio channel map 15268 </refpurpose> 15269</refnamediv> 15270<refsynopsisdiv> 15271 <title>Synopsis</title> 15272 <funcsynopsis><funcprototype> 15273 <funcdef>int <function>snd_soc_dai_set_channel_map </function></funcdef> 15274 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 15275 <paramdef>unsigned int <parameter>tx_num</parameter></paramdef> 15276 <paramdef>unsigned int * <parameter>tx_slot</parameter></paramdef> 15277 <paramdef>unsigned int <parameter>rx_num</parameter></paramdef> 15278 <paramdef>unsigned int * <parameter>rx_slot</parameter></paramdef> 15279 </funcprototype></funcsynopsis> 15280</refsynopsisdiv> 15281<refsect1> 15282 <title>Arguments</title> 15283 <variablelist> 15284 <varlistentry> 15285 <term><parameter>dai</parameter></term> 15286 <listitem> 15287 <para> 15288 DAI 15289 </para> 15290 </listitem> 15291 </varlistentry> 15292 <varlistentry> 15293 <term><parameter>tx_num</parameter></term> 15294 <listitem> 15295 <para> 15296 how many TX channels 15297 </para> 15298 </listitem> 15299 </varlistentry> 15300 <varlistentry> 15301 <term><parameter>tx_slot</parameter></term> 15302 <listitem> 15303 <para> 15304 pointer to an array which imply the TX slot number channel 15305 0~num-1 uses 15306 </para> 15307 </listitem> 15308 </varlistentry> 15309 <varlistentry> 15310 <term><parameter>rx_num</parameter></term> 15311 <listitem> 15312 <para> 15313 how many RX channels 15314 </para> 15315 </listitem> 15316 </varlistentry> 15317 <varlistentry> 15318 <term><parameter>rx_slot</parameter></term> 15319 <listitem> 15320 <para> 15321 pointer to an array which imply the RX slot number channel 15322 0~num-1 uses 15323 </para> 15324 </listitem> 15325 </varlistentry> 15326 </variablelist> 15327</refsect1> 15328<refsect1> 15329<title>Description</title> 15330<para> 15331 configure the relationship between channel number and TDM slot number. 15332</para> 15333</refsect1> 15334</refentry> 15335 15336<refentry id="API-snd-soc-dai-set-tristate"> 15337<refentryinfo> 15338 <title>LINUX</title> 15339 <productname>Kernel Hackers Manual</productname> 15340 <date>July 2017</date> 15341</refentryinfo> 15342<refmeta> 15343 <refentrytitle><phrase>snd_soc_dai_set_tristate</phrase></refentrytitle> 15344 <manvolnum>9</manvolnum> 15345 <refmiscinfo class="version">4.4.14</refmiscinfo> 15346</refmeta> 15347<refnamediv> 15348 <refname>snd_soc_dai_set_tristate</refname> 15349 <refpurpose> 15350 configure DAI system or master clock. 15351 </refpurpose> 15352</refnamediv> 15353<refsynopsisdiv> 15354 <title>Synopsis</title> 15355 <funcsynopsis><funcprototype> 15356 <funcdef>int <function>snd_soc_dai_set_tristate </function></funcdef> 15357 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 15358 <paramdef>int <parameter>tristate</parameter></paramdef> 15359 </funcprototype></funcsynopsis> 15360</refsynopsisdiv> 15361<refsect1> 15362 <title>Arguments</title> 15363 <variablelist> 15364 <varlistentry> 15365 <term><parameter>dai</parameter></term> 15366 <listitem> 15367 <para> 15368 DAI 15369 </para> 15370 </listitem> 15371 </varlistentry> 15372 <varlistentry> 15373 <term><parameter>tristate</parameter></term> 15374 <listitem> 15375 <para> 15376 tristate enable 15377 </para> 15378 </listitem> 15379 </varlistentry> 15380 </variablelist> 15381</refsect1> 15382<refsect1> 15383<title>Description</title> 15384<para> 15385 Tristates the DAI so that others can use it. 15386</para> 15387</refsect1> 15388</refentry> 15389 15390<refentry id="API-snd-soc-dai-digital-mute"> 15391<refentryinfo> 15392 <title>LINUX</title> 15393 <productname>Kernel Hackers Manual</productname> 15394 <date>July 2017</date> 15395</refentryinfo> 15396<refmeta> 15397 <refentrytitle><phrase>snd_soc_dai_digital_mute</phrase></refentrytitle> 15398 <manvolnum>9</manvolnum> 15399 <refmiscinfo class="version">4.4.14</refmiscinfo> 15400</refmeta> 15401<refnamediv> 15402 <refname>snd_soc_dai_digital_mute</refname> 15403 <refpurpose> 15404 configure DAI system or master clock. 15405 </refpurpose> 15406</refnamediv> 15407<refsynopsisdiv> 15408 <title>Synopsis</title> 15409 <funcsynopsis><funcprototype> 15410 <funcdef>int <function>snd_soc_dai_digital_mute </function></funcdef> 15411 <paramdef>struct snd_soc_dai * <parameter>dai</parameter></paramdef> 15412 <paramdef>int <parameter>mute</parameter></paramdef> 15413 <paramdef>int <parameter>direction</parameter></paramdef> 15414 </funcprototype></funcsynopsis> 15415</refsynopsisdiv> 15416<refsect1> 15417 <title>Arguments</title> 15418 <variablelist> 15419 <varlistentry> 15420 <term><parameter>dai</parameter></term> 15421 <listitem> 15422 <para> 15423 DAI 15424 </para> 15425 </listitem> 15426 </varlistentry> 15427 <varlistentry> 15428 <term><parameter>mute</parameter></term> 15429 <listitem> 15430 <para> 15431 mute enable 15432 </para> 15433 </listitem> 15434 </varlistentry> 15435 <varlistentry> 15436 <term><parameter>direction</parameter></term> 15437 <listitem> 15438 <para> 15439 stream to mute 15440 </para> 15441 </listitem> 15442 </varlistentry> 15443 </variablelist> 15444</refsect1> 15445<refsect1> 15446<title>Description</title> 15447<para> 15448 Mutes the DAI DAC. 15449</para> 15450</refsect1> 15451</refentry> 15452 15453<refentry id="API-snd-soc-register-card"> 15454<refentryinfo> 15455 <title>LINUX</title> 15456 <productname>Kernel Hackers Manual</productname> 15457 <date>July 2017</date> 15458</refentryinfo> 15459<refmeta> 15460 <refentrytitle><phrase>snd_soc_register_card</phrase></refentrytitle> 15461 <manvolnum>9</manvolnum> 15462 <refmiscinfo class="version">4.4.14</refmiscinfo> 15463</refmeta> 15464<refnamediv> 15465 <refname>snd_soc_register_card</refname> 15466 <refpurpose> 15467 Register a card with the ASoC core 15468 </refpurpose> 15469</refnamediv> 15470<refsynopsisdiv> 15471 <title>Synopsis</title> 15472 <funcsynopsis><funcprototype> 15473 <funcdef>int <function>snd_soc_register_card </function></funcdef> 15474 <paramdef>struct snd_soc_card * <parameter>card</parameter></paramdef> 15475 </funcprototype></funcsynopsis> 15476</refsynopsisdiv> 15477<refsect1> 15478 <title>Arguments</title> 15479 <variablelist> 15480 <varlistentry> 15481 <term><parameter>card</parameter></term> 15482 <listitem> 15483 <para> 15484 Card to register 15485 </para> 15486 </listitem> 15487 </varlistentry> 15488 </variablelist> 15489</refsect1> 15490</refentry> 15491 15492<refentry id="API-snd-soc-unregister-card"> 15493<refentryinfo> 15494 <title>LINUX</title> 15495 <productname>Kernel Hackers Manual</productname> 15496 <date>July 2017</date> 15497</refentryinfo> 15498<refmeta> 15499 <refentrytitle><phrase>snd_soc_unregister_card</phrase></refentrytitle> 15500 <manvolnum>9</manvolnum> 15501 <refmiscinfo class="version">4.4.14</refmiscinfo> 15502</refmeta> 15503<refnamediv> 15504 <refname>snd_soc_unregister_card</refname> 15505 <refpurpose> 15506 Unregister a card with the ASoC core 15507 </refpurpose> 15508</refnamediv> 15509<refsynopsisdiv> 15510 <title>Synopsis</title> 15511 <funcsynopsis><funcprototype> 15512 <funcdef>int <function>snd_soc_unregister_card </function></funcdef> 15513 <paramdef>struct snd_soc_card * <parameter>card</parameter></paramdef> 15514 </funcprototype></funcsynopsis> 15515</refsynopsisdiv> 15516<refsect1> 15517 <title>Arguments</title> 15518 <variablelist> 15519 <varlistentry> 15520 <term><parameter>card</parameter></term> 15521 <listitem> 15522 <para> 15523 Card to unregister 15524 </para> 15525 </listitem> 15526 </varlistentry> 15527 </variablelist> 15528</refsect1> 15529</refentry> 15530 15531<refentry id="API-snd-soc-component-init-regmap"> 15532<refentryinfo> 15533 <title>LINUX</title> 15534 <productname>Kernel Hackers Manual</productname> 15535 <date>July 2017</date> 15536</refentryinfo> 15537<refmeta> 15538 <refentrytitle><phrase>snd_soc_component_init_regmap</phrase></refentrytitle> 15539 <manvolnum>9</manvolnum> 15540 <refmiscinfo class="version">4.4.14</refmiscinfo> 15541</refmeta> 15542<refnamediv> 15543 <refname>snd_soc_component_init_regmap</refname> 15544 <refpurpose> 15545 Initialize regmap instance for the component 15546 </refpurpose> 15547</refnamediv> 15548<refsynopsisdiv> 15549 <title>Synopsis</title> 15550 <funcsynopsis><funcprototype> 15551 <funcdef>void <function>snd_soc_component_init_regmap </function></funcdef> 15552 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 15553 <paramdef>struct regmap * <parameter>regmap</parameter></paramdef> 15554 </funcprototype></funcsynopsis> 15555</refsynopsisdiv> 15556<refsect1> 15557 <title>Arguments</title> 15558 <variablelist> 15559 <varlistentry> 15560 <term><parameter>component</parameter></term> 15561 <listitem> 15562 <para> 15563 The component for which to initialize the regmap instance 15564 </para> 15565 </listitem> 15566 </varlistentry> 15567 <varlistentry> 15568 <term><parameter>regmap</parameter></term> 15569 <listitem> 15570 <para> 15571 The regmap instance that should be used by the component 15572 </para> 15573 </listitem> 15574 </varlistentry> 15575 </variablelist> 15576</refsect1> 15577<refsect1> 15578<title>Description</title> 15579<para> 15580 This function allows deferred assignment of the regmap instance that is 15581 associated with the component. Only use this if the regmap instance is not 15582 yet ready when the component is registered. The function must also be called 15583 before the first IO attempt of the component. 15584</para> 15585</refsect1> 15586</refentry> 15587 15588<refentry id="API-snd-soc-component-exit-regmap"> 15589<refentryinfo> 15590 <title>LINUX</title> 15591 <productname>Kernel Hackers Manual</productname> 15592 <date>July 2017</date> 15593</refentryinfo> 15594<refmeta> 15595 <refentrytitle><phrase>snd_soc_component_exit_regmap</phrase></refentrytitle> 15596 <manvolnum>9</manvolnum> 15597 <refmiscinfo class="version">4.4.14</refmiscinfo> 15598</refmeta> 15599<refnamediv> 15600 <refname>snd_soc_component_exit_regmap</refname> 15601 <refpurpose> 15602 De-initialize regmap instance for the component 15603 </refpurpose> 15604</refnamediv> 15605<refsynopsisdiv> 15606 <title>Synopsis</title> 15607 <funcsynopsis><funcprototype> 15608 <funcdef>void <function>snd_soc_component_exit_regmap </function></funcdef> 15609 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 15610 </funcprototype></funcsynopsis> 15611</refsynopsisdiv> 15612<refsect1> 15613 <title>Arguments</title> 15614 <variablelist> 15615 <varlistentry> 15616 <term><parameter>component</parameter></term> 15617 <listitem> 15618 <para> 15619 The component for which to de-initialize the regmap instance 15620 </para> 15621 </listitem> 15622 </varlistentry> 15623 </variablelist> 15624</refsect1> 15625<refsect1> 15626<title>Description</title> 15627<para> 15628 Calls <function>regmap_exit</function> on the regmap instance associated to the component and 15629 removes the regmap instance from the component. 15630 </para><para> 15631 15632 This function should only be used if <function>snd_soc_component_init_regmap</function> was used 15633 to initialize the regmap instance. 15634</para> 15635</refsect1> 15636</refentry> 15637 15638<refentry id="API-snd-soc-unregister-component"> 15639<refentryinfo> 15640 <title>LINUX</title> 15641 <productname>Kernel Hackers Manual</productname> 15642 <date>July 2017</date> 15643</refentryinfo> 15644<refmeta> 15645 <refentrytitle><phrase>snd_soc_unregister_component</phrase></refentrytitle> 15646 <manvolnum>9</manvolnum> 15647 <refmiscinfo class="version">4.4.14</refmiscinfo> 15648</refmeta> 15649<refnamediv> 15650 <refname>snd_soc_unregister_component</refname> 15651 <refpurpose> 15652 Unregister a component from the ASoC core 15653 </refpurpose> 15654</refnamediv> 15655<refsynopsisdiv> 15656 <title>Synopsis</title> 15657 <funcsynopsis><funcprototype> 15658 <funcdef>void <function>snd_soc_unregister_component </function></funcdef> 15659 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15660 </funcprototype></funcsynopsis> 15661</refsynopsisdiv> 15662<refsect1> 15663 <title>Arguments</title> 15664 <variablelist> 15665 <varlistentry> 15666 <term><parameter>dev</parameter></term> 15667 <listitem> 15668 <para> 15669 The device to unregister 15670 </para> 15671 </listitem> 15672 </varlistentry> 15673 </variablelist> 15674</refsect1> 15675</refentry> 15676 15677<refentry id="API-snd-soc-add-platform"> 15678<refentryinfo> 15679 <title>LINUX</title> 15680 <productname>Kernel Hackers Manual</productname> 15681 <date>July 2017</date> 15682</refentryinfo> 15683<refmeta> 15684 <refentrytitle><phrase>snd_soc_add_platform</phrase></refentrytitle> 15685 <manvolnum>9</manvolnum> 15686 <refmiscinfo class="version">4.4.14</refmiscinfo> 15687</refmeta> 15688<refnamediv> 15689 <refname>snd_soc_add_platform</refname> 15690 <refpurpose> 15691 Add a platform to the ASoC core 15692 </refpurpose> 15693</refnamediv> 15694<refsynopsisdiv> 15695 <title>Synopsis</title> 15696 <funcsynopsis><funcprototype> 15697 <funcdef>int <function>snd_soc_add_platform </function></funcdef> 15698 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15699 <paramdef>struct snd_soc_platform * <parameter>platform</parameter></paramdef> 15700 <paramdef>const struct snd_soc_platform_driver * <parameter>platform_drv</parameter></paramdef> 15701 </funcprototype></funcsynopsis> 15702</refsynopsisdiv> 15703<refsect1> 15704 <title>Arguments</title> 15705 <variablelist> 15706 <varlistentry> 15707 <term><parameter>dev</parameter></term> 15708 <listitem> 15709 <para> 15710 The parent device for the platform 15711 </para> 15712 </listitem> 15713 </varlistentry> 15714 <varlistentry> 15715 <term><parameter>platform</parameter></term> 15716 <listitem> 15717 <para> 15718 The platform to add 15719 </para> 15720 </listitem> 15721 </varlistentry> 15722 <varlistentry> 15723 <term><parameter>platform_drv</parameter></term> 15724 <listitem> 15725 <para> 15726 The driver for the platform 15727 </para> 15728 </listitem> 15729 </varlistentry> 15730 </variablelist> 15731</refsect1> 15732</refentry> 15733 15734<refentry id="API-snd-soc-register-platform"> 15735<refentryinfo> 15736 <title>LINUX</title> 15737 <productname>Kernel Hackers Manual</productname> 15738 <date>July 2017</date> 15739</refentryinfo> 15740<refmeta> 15741 <refentrytitle><phrase>snd_soc_register_platform</phrase></refentrytitle> 15742 <manvolnum>9</manvolnum> 15743 <refmiscinfo class="version">4.4.14</refmiscinfo> 15744</refmeta> 15745<refnamediv> 15746 <refname>snd_soc_register_platform</refname> 15747 <refpurpose> 15748 Register a platform with the ASoC core 15749 </refpurpose> 15750</refnamediv> 15751<refsynopsisdiv> 15752 <title>Synopsis</title> 15753 <funcsynopsis><funcprototype> 15754 <funcdef>int <function>snd_soc_register_platform </function></funcdef> 15755 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15756 <paramdef>const struct snd_soc_platform_driver * <parameter>platform_drv</parameter></paramdef> 15757 </funcprototype></funcsynopsis> 15758</refsynopsisdiv> 15759<refsect1> 15760 <title>Arguments</title> 15761 <variablelist> 15762 <varlistentry> 15763 <term><parameter>dev</parameter></term> 15764 <listitem> 15765 <para> 15766 The device for the platform 15767 </para> 15768 </listitem> 15769 </varlistentry> 15770 <varlistentry> 15771 <term><parameter>platform_drv</parameter></term> 15772 <listitem> 15773 <para> 15774 The driver for the platform 15775 </para> 15776 </listitem> 15777 </varlistentry> 15778 </variablelist> 15779</refsect1> 15780</refentry> 15781 15782<refentry id="API-snd-soc-remove-platform"> 15783<refentryinfo> 15784 <title>LINUX</title> 15785 <productname>Kernel Hackers Manual</productname> 15786 <date>July 2017</date> 15787</refentryinfo> 15788<refmeta> 15789 <refentrytitle><phrase>snd_soc_remove_platform</phrase></refentrytitle> 15790 <manvolnum>9</manvolnum> 15791 <refmiscinfo class="version">4.4.14</refmiscinfo> 15792</refmeta> 15793<refnamediv> 15794 <refname>snd_soc_remove_platform</refname> 15795 <refpurpose> 15796 Remove a platform from the ASoC core 15797 </refpurpose> 15798</refnamediv> 15799<refsynopsisdiv> 15800 <title>Synopsis</title> 15801 <funcsynopsis><funcprototype> 15802 <funcdef>void <function>snd_soc_remove_platform </function></funcdef> 15803 <paramdef>struct snd_soc_platform * <parameter>platform</parameter></paramdef> 15804 </funcprototype></funcsynopsis> 15805</refsynopsisdiv> 15806<refsect1> 15807 <title>Arguments</title> 15808 <variablelist> 15809 <varlistentry> 15810 <term><parameter>platform</parameter></term> 15811 <listitem> 15812 <para> 15813 the platform to remove 15814 </para> 15815 </listitem> 15816 </varlistentry> 15817 </variablelist> 15818</refsect1> 15819</refentry> 15820 15821<refentry id="API-snd-soc-unregister-platform"> 15822<refentryinfo> 15823 <title>LINUX</title> 15824 <productname>Kernel Hackers Manual</productname> 15825 <date>July 2017</date> 15826</refentryinfo> 15827<refmeta> 15828 <refentrytitle><phrase>snd_soc_unregister_platform</phrase></refentrytitle> 15829 <manvolnum>9</manvolnum> 15830 <refmiscinfo class="version">4.4.14</refmiscinfo> 15831</refmeta> 15832<refnamediv> 15833 <refname>snd_soc_unregister_platform</refname> 15834 <refpurpose> 15835 Unregister a platform from the ASoC core 15836 </refpurpose> 15837</refnamediv> 15838<refsynopsisdiv> 15839 <title>Synopsis</title> 15840 <funcsynopsis><funcprototype> 15841 <funcdef>void <function>snd_soc_unregister_platform </function></funcdef> 15842 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15843 </funcprototype></funcsynopsis> 15844</refsynopsisdiv> 15845<refsect1> 15846 <title>Arguments</title> 15847 <variablelist> 15848 <varlistentry> 15849 <term><parameter>dev</parameter></term> 15850 <listitem> 15851 <para> 15852 platform to unregister 15853 </para> 15854 </listitem> 15855 </varlistentry> 15856 </variablelist> 15857</refsect1> 15858</refentry> 15859 15860<refentry id="API-snd-soc-register-codec"> 15861<refentryinfo> 15862 <title>LINUX</title> 15863 <productname>Kernel Hackers Manual</productname> 15864 <date>July 2017</date> 15865</refentryinfo> 15866<refmeta> 15867 <refentrytitle><phrase>snd_soc_register_codec</phrase></refentrytitle> 15868 <manvolnum>9</manvolnum> 15869 <refmiscinfo class="version">4.4.14</refmiscinfo> 15870</refmeta> 15871<refnamediv> 15872 <refname>snd_soc_register_codec</refname> 15873 <refpurpose> 15874 Register a codec with the ASoC core 15875 </refpurpose> 15876</refnamediv> 15877<refsynopsisdiv> 15878 <title>Synopsis</title> 15879 <funcsynopsis><funcprototype> 15880 <funcdef>int <function>snd_soc_register_codec </function></funcdef> 15881 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15882 <paramdef>const struct snd_soc_codec_driver * <parameter>codec_drv</parameter></paramdef> 15883 <paramdef>struct snd_soc_dai_driver * <parameter>dai_drv</parameter></paramdef> 15884 <paramdef>int <parameter>num_dai</parameter></paramdef> 15885 </funcprototype></funcsynopsis> 15886</refsynopsisdiv> 15887<refsect1> 15888 <title>Arguments</title> 15889 <variablelist> 15890 <varlistentry> 15891 <term><parameter>dev</parameter></term> 15892 <listitem> 15893 <para> 15894 The parent device for this codec 15895 </para> 15896 </listitem> 15897 </varlistentry> 15898 <varlistentry> 15899 <term><parameter>codec_drv</parameter></term> 15900 <listitem> 15901 <para> 15902 Codec driver 15903 </para> 15904 </listitem> 15905 </varlistentry> 15906 <varlistentry> 15907 <term><parameter>dai_drv</parameter></term> 15908 <listitem> 15909 <para> 15910 The associated DAI driver 15911 </para> 15912 </listitem> 15913 </varlistentry> 15914 <varlistentry> 15915 <term><parameter>num_dai</parameter></term> 15916 <listitem> 15917 <para> 15918 Number of DAIs 15919 </para> 15920 </listitem> 15921 </varlistentry> 15922 </variablelist> 15923</refsect1> 15924</refentry> 15925 15926<refentry id="API-snd-soc-unregister-codec"> 15927<refentryinfo> 15928 <title>LINUX</title> 15929 <productname>Kernel Hackers Manual</productname> 15930 <date>July 2017</date> 15931</refentryinfo> 15932<refmeta> 15933 <refentrytitle><phrase>snd_soc_unregister_codec</phrase></refentrytitle> 15934 <manvolnum>9</manvolnum> 15935 <refmiscinfo class="version">4.4.14</refmiscinfo> 15936</refmeta> 15937<refnamediv> 15938 <refname>snd_soc_unregister_codec</refname> 15939 <refpurpose> 15940 Unregister a codec from the ASoC core 15941 </refpurpose> 15942</refnamediv> 15943<refsynopsisdiv> 15944 <title>Synopsis</title> 15945 <funcsynopsis><funcprototype> 15946 <funcdef>void <function>snd_soc_unregister_codec </function></funcdef> 15947 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15948 </funcprototype></funcsynopsis> 15949</refsynopsisdiv> 15950<refsect1> 15951 <title>Arguments</title> 15952 <variablelist> 15953 <varlistentry> 15954 <term><parameter>dev</parameter></term> 15955 <listitem> 15956 <para> 15957 codec to unregister 15958 </para> 15959 </listitem> 15960 </varlistentry> 15961 </variablelist> 15962</refsect1> 15963</refentry> 15964 15965<!-- !Esound/soc/soc-cache.c no docbook comments here --> 15966<!-- sound/soc/soc-devres.c --> 15967<refentry id="API-devm-snd-soc-register-component"> 15968<refentryinfo> 15969 <title>LINUX</title> 15970 <productname>Kernel Hackers Manual</productname> 15971 <date>July 2017</date> 15972</refentryinfo> 15973<refmeta> 15974 <refentrytitle><phrase>devm_snd_soc_register_component</phrase></refentrytitle> 15975 <manvolnum>9</manvolnum> 15976 <refmiscinfo class="version">4.4.14</refmiscinfo> 15977</refmeta> 15978<refnamediv> 15979 <refname>devm_snd_soc_register_component</refname> 15980 <refpurpose> 15981 resource managed component registration 15982 </refpurpose> 15983</refnamediv> 15984<refsynopsisdiv> 15985 <title>Synopsis</title> 15986 <funcsynopsis><funcprototype> 15987 <funcdef>int <function>devm_snd_soc_register_component </function></funcdef> 15988 <paramdef>struct device * <parameter>dev</parameter></paramdef> 15989 <paramdef>const struct snd_soc_component_driver * <parameter>cmpnt_drv</parameter></paramdef> 15990 <paramdef>struct snd_soc_dai_driver * <parameter>dai_drv</parameter></paramdef> 15991 <paramdef>int <parameter>num_dai</parameter></paramdef> 15992 </funcprototype></funcsynopsis> 15993</refsynopsisdiv> 15994<refsect1> 15995 <title>Arguments</title> 15996 <variablelist> 15997 <varlistentry> 15998 <term><parameter>dev</parameter></term> 15999 <listitem> 16000 <para> 16001 Device used to manage component 16002 </para> 16003 </listitem> 16004 </varlistentry> 16005 <varlistentry> 16006 <term><parameter>cmpnt_drv</parameter></term> 16007 <listitem> 16008 <para> 16009 Component driver 16010 </para> 16011 </listitem> 16012 </varlistentry> 16013 <varlistentry> 16014 <term><parameter>dai_drv</parameter></term> 16015 <listitem> 16016 <para> 16017 DAI driver 16018 </para> 16019 </listitem> 16020 </varlistentry> 16021 <varlistentry> 16022 <term><parameter>num_dai</parameter></term> 16023 <listitem> 16024 <para> 16025 Number of DAIs to register 16026 </para> 16027 </listitem> 16028 </varlistentry> 16029 </variablelist> 16030</refsect1> 16031<refsect1> 16032<title>Description</title> 16033<para> 16034 Register a component with automatic unregistration when the device is 16035 unregistered. 16036</para> 16037</refsect1> 16038</refentry> 16039 16040<refentry id="API-devm-snd-soc-register-platform"> 16041<refentryinfo> 16042 <title>LINUX</title> 16043 <productname>Kernel Hackers Manual</productname> 16044 <date>July 2017</date> 16045</refentryinfo> 16046<refmeta> 16047 <refentrytitle><phrase>devm_snd_soc_register_platform</phrase></refentrytitle> 16048 <manvolnum>9</manvolnum> 16049 <refmiscinfo class="version">4.4.14</refmiscinfo> 16050</refmeta> 16051<refnamediv> 16052 <refname>devm_snd_soc_register_platform</refname> 16053 <refpurpose> 16054 resource managed platform registration 16055 </refpurpose> 16056</refnamediv> 16057<refsynopsisdiv> 16058 <title>Synopsis</title> 16059 <funcsynopsis><funcprototype> 16060 <funcdef>int <function>devm_snd_soc_register_platform </function></funcdef> 16061 <paramdef>struct device * <parameter>dev</parameter></paramdef> 16062 <paramdef>const struct snd_soc_platform_driver * <parameter>platform_drv</parameter></paramdef> 16063 </funcprototype></funcsynopsis> 16064</refsynopsisdiv> 16065<refsect1> 16066 <title>Arguments</title> 16067 <variablelist> 16068 <varlistentry> 16069 <term><parameter>dev</parameter></term> 16070 <listitem> 16071 <para> 16072 Device used to manage platform 16073 </para> 16074 </listitem> 16075 </varlistentry> 16076 <varlistentry> 16077 <term><parameter>platform_drv</parameter></term> 16078 <listitem> 16079 <para> 16080 platform to register 16081 </para> 16082 </listitem> 16083 </varlistentry> 16084 </variablelist> 16085</refsect1> 16086<refsect1> 16087<title>Description</title> 16088<para> 16089 Register a platform driver with automatic unregistration when the device is 16090 unregistered. 16091</para> 16092</refsect1> 16093</refentry> 16094 16095<refentry id="API-devm-snd-soc-register-card"> 16096<refentryinfo> 16097 <title>LINUX</title> 16098 <productname>Kernel Hackers Manual</productname> 16099 <date>July 2017</date> 16100</refentryinfo> 16101<refmeta> 16102 <refentrytitle><phrase>devm_snd_soc_register_card</phrase></refentrytitle> 16103 <manvolnum>9</manvolnum> 16104 <refmiscinfo class="version">4.4.14</refmiscinfo> 16105</refmeta> 16106<refnamediv> 16107 <refname>devm_snd_soc_register_card</refname> 16108 <refpurpose> 16109 resource managed card registration 16110 </refpurpose> 16111</refnamediv> 16112<refsynopsisdiv> 16113 <title>Synopsis</title> 16114 <funcsynopsis><funcprototype> 16115 <funcdef>int <function>devm_snd_soc_register_card </function></funcdef> 16116 <paramdef>struct device * <parameter>dev</parameter></paramdef> 16117 <paramdef>struct snd_soc_card * <parameter>card</parameter></paramdef> 16118 </funcprototype></funcsynopsis> 16119</refsynopsisdiv> 16120<refsect1> 16121 <title>Arguments</title> 16122 <variablelist> 16123 <varlistentry> 16124 <term><parameter>dev</parameter></term> 16125 <listitem> 16126 <para> 16127 Device used to manage card 16128 </para> 16129 </listitem> 16130 </varlistentry> 16131 <varlistentry> 16132 <term><parameter>card</parameter></term> 16133 <listitem> 16134 <para> 16135 Card to register 16136 </para> 16137 </listitem> 16138 </varlistentry> 16139 </variablelist> 16140</refsect1> 16141<refsect1> 16142<title>Description</title> 16143<para> 16144 Register a card with automatic unregistration when the device is 16145 unregistered. 16146</para> 16147</refsect1> 16148</refentry> 16149 16150<refentry id="API-devm-snd-dmaengine-pcm-register"> 16151<refentryinfo> 16152 <title>LINUX</title> 16153 <productname>Kernel Hackers Manual</productname> 16154 <date>July 2017</date> 16155</refentryinfo> 16156<refmeta> 16157 <refentrytitle><phrase>devm_snd_dmaengine_pcm_register</phrase></refentrytitle> 16158 <manvolnum>9</manvolnum> 16159 <refmiscinfo class="version">4.4.14</refmiscinfo> 16160</refmeta> 16161<refnamediv> 16162 <refname>devm_snd_dmaengine_pcm_register</refname> 16163 <refpurpose> 16164 resource managed dmaengine PCM registration 16165 </refpurpose> 16166</refnamediv> 16167<refsynopsisdiv> 16168 <title>Synopsis</title> 16169 <funcsynopsis><funcprototype> 16170 <funcdef>int <function>devm_snd_dmaengine_pcm_register </function></funcdef> 16171 <paramdef>struct device * <parameter>dev</parameter></paramdef> 16172 <paramdef>const struct snd_dmaengine_pcm_config * <parameter>config</parameter></paramdef> 16173 <paramdef>unsigned int <parameter>flags</parameter></paramdef> 16174 </funcprototype></funcsynopsis> 16175</refsynopsisdiv> 16176<refsect1> 16177 <title>Arguments</title> 16178 <variablelist> 16179 <varlistentry> 16180 <term><parameter>dev</parameter></term> 16181 <listitem> 16182 <para> 16183 The parent device for the PCM device 16184 </para> 16185 </listitem> 16186 </varlistentry> 16187 <varlistentry> 16188 <term><parameter>config</parameter></term> 16189 <listitem> 16190 <para> 16191 Platform specific PCM configuration 16192 </para> 16193 </listitem> 16194 </varlistentry> 16195 <varlistentry> 16196 <term><parameter>flags</parameter></term> 16197 <listitem> 16198 <para> 16199 Platform specific quirks 16200 </para> 16201 </listitem> 16202 </varlistentry> 16203 </variablelist> 16204</refsect1> 16205<refsect1> 16206<title>Description</title> 16207<para> 16208 Register a dmaengine based PCM device with automatic unregistration when the 16209 device is unregistered. 16210</para> 16211</refsect1> 16212</refentry> 16213 16214<!-- sound/soc/soc-io.c --> 16215<refentry id="API-snd-soc-component-read"> 16216<refentryinfo> 16217 <title>LINUX</title> 16218 <productname>Kernel Hackers Manual</productname> 16219 <date>July 2017</date> 16220</refentryinfo> 16221<refmeta> 16222 <refentrytitle><phrase>snd_soc_component_read</phrase></refentrytitle> 16223 <manvolnum>9</manvolnum> 16224 <refmiscinfo class="version">4.4.14</refmiscinfo> 16225</refmeta> 16226<refnamediv> 16227 <refname>snd_soc_component_read</refname> 16228 <refpurpose> 16229 Read register value 16230 </refpurpose> 16231</refnamediv> 16232<refsynopsisdiv> 16233 <title>Synopsis</title> 16234 <funcsynopsis><funcprototype> 16235 <funcdef>int <function>snd_soc_component_read </function></funcdef> 16236 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 16237 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16238 <paramdef>unsigned int * <parameter>val</parameter></paramdef> 16239 </funcprototype></funcsynopsis> 16240</refsynopsisdiv> 16241<refsect1> 16242 <title>Arguments</title> 16243 <variablelist> 16244 <varlistentry> 16245 <term><parameter>component</parameter></term> 16246 <listitem> 16247 <para> 16248 Component to read from 16249 </para> 16250 </listitem> 16251 </varlistentry> 16252 <varlistentry> 16253 <term><parameter>reg</parameter></term> 16254 <listitem> 16255 <para> 16256 Register to read 16257 </para> 16258 </listitem> 16259 </varlistentry> 16260 <varlistentry> 16261 <term><parameter>val</parameter></term> 16262 <listitem> 16263 <para> 16264 Pointer to where the read value is stored 16265 </para> 16266 </listitem> 16267 </varlistentry> 16268 </variablelist> 16269</refsect1> 16270<refsect1> 16271<title>Return</title> 16272<para> 16273 0 on success, a negative error code otherwise. 16274</para> 16275</refsect1> 16276</refentry> 16277 16278<refentry id="API-snd-soc-component-write"> 16279<refentryinfo> 16280 <title>LINUX</title> 16281 <productname>Kernel Hackers Manual</productname> 16282 <date>July 2017</date> 16283</refentryinfo> 16284<refmeta> 16285 <refentrytitle><phrase>snd_soc_component_write</phrase></refentrytitle> 16286 <manvolnum>9</manvolnum> 16287 <refmiscinfo class="version">4.4.14</refmiscinfo> 16288</refmeta> 16289<refnamediv> 16290 <refname>snd_soc_component_write</refname> 16291 <refpurpose> 16292 Write register value 16293 </refpurpose> 16294</refnamediv> 16295<refsynopsisdiv> 16296 <title>Synopsis</title> 16297 <funcsynopsis><funcprototype> 16298 <funcdef>int <function>snd_soc_component_write </function></funcdef> 16299 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 16300 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16301 <paramdef>unsigned int <parameter>val</parameter></paramdef> 16302 </funcprototype></funcsynopsis> 16303</refsynopsisdiv> 16304<refsect1> 16305 <title>Arguments</title> 16306 <variablelist> 16307 <varlistentry> 16308 <term><parameter>component</parameter></term> 16309 <listitem> 16310 <para> 16311 Component to write to 16312 </para> 16313 </listitem> 16314 </varlistentry> 16315 <varlistentry> 16316 <term><parameter>reg</parameter></term> 16317 <listitem> 16318 <para> 16319 Register to write 16320 </para> 16321 </listitem> 16322 </varlistentry> 16323 <varlistentry> 16324 <term><parameter>val</parameter></term> 16325 <listitem> 16326 <para> 16327 Value to write to the register 16328 </para> 16329 </listitem> 16330 </varlistentry> 16331 </variablelist> 16332</refsect1> 16333<refsect1> 16334<title>Return</title> 16335<para> 16336 0 on success, a negative error code otherwise. 16337</para> 16338</refsect1> 16339</refentry> 16340 16341<refentry id="API-snd-soc-component-update-bits"> 16342<refentryinfo> 16343 <title>LINUX</title> 16344 <productname>Kernel Hackers Manual</productname> 16345 <date>July 2017</date> 16346</refentryinfo> 16347<refmeta> 16348 <refentrytitle><phrase>snd_soc_component_update_bits</phrase></refentrytitle> 16349 <manvolnum>9</manvolnum> 16350 <refmiscinfo class="version">4.4.14</refmiscinfo> 16351</refmeta> 16352<refnamediv> 16353 <refname>snd_soc_component_update_bits</refname> 16354 <refpurpose> 16355 Perform read/modify/write cycle 16356 </refpurpose> 16357</refnamediv> 16358<refsynopsisdiv> 16359 <title>Synopsis</title> 16360 <funcsynopsis><funcprototype> 16361 <funcdef>int <function>snd_soc_component_update_bits </function></funcdef> 16362 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 16363 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16364 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 16365 <paramdef>unsigned int <parameter>val</parameter></paramdef> 16366 </funcprototype></funcsynopsis> 16367</refsynopsisdiv> 16368<refsect1> 16369 <title>Arguments</title> 16370 <variablelist> 16371 <varlistentry> 16372 <term><parameter>component</parameter></term> 16373 <listitem> 16374 <para> 16375 Component to update 16376 </para> 16377 </listitem> 16378 </varlistentry> 16379 <varlistentry> 16380 <term><parameter>reg</parameter></term> 16381 <listitem> 16382 <para> 16383 Register to update 16384 </para> 16385 </listitem> 16386 </varlistentry> 16387 <varlistentry> 16388 <term><parameter>mask</parameter></term> 16389 <listitem> 16390 <para> 16391 Mask that specifies which bits to update 16392 </para> 16393 </listitem> 16394 </varlistentry> 16395 <varlistentry> 16396 <term><parameter>val</parameter></term> 16397 <listitem> 16398 <para> 16399 New value for the bits specified by mask 16400 </para> 16401 </listitem> 16402 </varlistentry> 16403 </variablelist> 16404</refsect1> 16405<refsect1> 16406<title>Return</title> 16407<para> 16408 1 if the operation was successful and the value of the register 16409 changed, 0 if the operation was successful, but the value did not change. 16410 Returns a negative error code otherwise. 16411</para> 16412</refsect1> 16413</refentry> 16414 16415<refentry id="API-snd-soc-component-update-bits-async"> 16416<refentryinfo> 16417 <title>LINUX</title> 16418 <productname>Kernel Hackers Manual</productname> 16419 <date>July 2017</date> 16420</refentryinfo> 16421<refmeta> 16422 <refentrytitle><phrase>snd_soc_component_update_bits_async</phrase></refentrytitle> 16423 <manvolnum>9</manvolnum> 16424 <refmiscinfo class="version">4.4.14</refmiscinfo> 16425</refmeta> 16426<refnamediv> 16427 <refname>snd_soc_component_update_bits_async</refname> 16428 <refpurpose> 16429 Perform asynchronous read/modify/write cycle 16430 </refpurpose> 16431</refnamediv> 16432<refsynopsisdiv> 16433 <title>Synopsis</title> 16434 <funcsynopsis><funcprototype> 16435 <funcdef>int <function>snd_soc_component_update_bits_async </function></funcdef> 16436 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 16437 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16438 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 16439 <paramdef>unsigned int <parameter>val</parameter></paramdef> 16440 </funcprototype></funcsynopsis> 16441</refsynopsisdiv> 16442<refsect1> 16443 <title>Arguments</title> 16444 <variablelist> 16445 <varlistentry> 16446 <term><parameter>component</parameter></term> 16447 <listitem> 16448 <para> 16449 Component to update 16450 </para> 16451 </listitem> 16452 </varlistentry> 16453 <varlistentry> 16454 <term><parameter>reg</parameter></term> 16455 <listitem> 16456 <para> 16457 Register to update 16458 </para> 16459 </listitem> 16460 </varlistentry> 16461 <varlistentry> 16462 <term><parameter>mask</parameter></term> 16463 <listitem> 16464 <para> 16465 Mask that specifies which bits to update 16466 </para> 16467 </listitem> 16468 </varlistentry> 16469 <varlistentry> 16470 <term><parameter>val</parameter></term> 16471 <listitem> 16472 <para> 16473 New value for the bits specified by mask 16474 </para> 16475 </listitem> 16476 </varlistentry> 16477 </variablelist> 16478</refsect1> 16479<refsect1> 16480<title>Description</title> 16481<para> 16482 This function is similar to <function>snd_soc_component_update_bits</function>, but the update 16483 operation is scheduled asynchronously. This means it may not be completed 16484 when the function returns. To make sure that all scheduled updates have been 16485 completed <function>snd_soc_component_async_complete</function> must be called. 16486</para> 16487</refsect1> 16488<refsect1> 16489<title>Return</title> 16490<para> 16491 1 if the operation was successful and the value of the register 16492 changed, 0 if the operation was successful, but the value did not change. 16493 Returns a negative error code otherwise. 16494</para> 16495</refsect1> 16496</refentry> 16497 16498<refentry id="API-snd-soc-component-async-complete"> 16499<refentryinfo> 16500 <title>LINUX</title> 16501 <productname>Kernel Hackers Manual</productname> 16502 <date>July 2017</date> 16503</refentryinfo> 16504<refmeta> 16505 <refentrytitle><phrase>snd_soc_component_async_complete</phrase></refentrytitle> 16506 <manvolnum>9</manvolnum> 16507 <refmiscinfo class="version">4.4.14</refmiscinfo> 16508</refmeta> 16509<refnamediv> 16510 <refname>snd_soc_component_async_complete</refname> 16511 <refpurpose> 16512 Ensure asynchronous I/O has completed 16513 </refpurpose> 16514</refnamediv> 16515<refsynopsisdiv> 16516 <title>Synopsis</title> 16517 <funcsynopsis><funcprototype> 16518 <funcdef>void <function>snd_soc_component_async_complete </function></funcdef> 16519 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 16520 </funcprototype></funcsynopsis> 16521</refsynopsisdiv> 16522<refsect1> 16523 <title>Arguments</title> 16524 <variablelist> 16525 <varlistentry> 16526 <term><parameter>component</parameter></term> 16527 <listitem> 16528 <para> 16529 Component for which to wait 16530 </para> 16531 </listitem> 16532 </varlistentry> 16533 </variablelist> 16534</refsect1> 16535<refsect1> 16536<title>Description</title> 16537<para> 16538 This function blocks until all asynchronous I/O which has previously been 16539 scheduled using <function>snd_soc_component_update_bits_async</function> has completed. 16540</para> 16541</refsect1> 16542</refentry> 16543 16544<refentry id="API-snd-soc-component-test-bits"> 16545<refentryinfo> 16546 <title>LINUX</title> 16547 <productname>Kernel Hackers Manual</productname> 16548 <date>July 2017</date> 16549</refentryinfo> 16550<refmeta> 16551 <refentrytitle><phrase>snd_soc_component_test_bits</phrase></refentrytitle> 16552 <manvolnum>9</manvolnum> 16553 <refmiscinfo class="version">4.4.14</refmiscinfo> 16554</refmeta> 16555<refnamediv> 16556 <refname>snd_soc_component_test_bits</refname> 16557 <refpurpose> 16558 Test register for change 16559 </refpurpose> 16560</refnamediv> 16561<refsynopsisdiv> 16562 <title>Synopsis</title> 16563 <funcsynopsis><funcprototype> 16564 <funcdef>int <function>snd_soc_component_test_bits </function></funcdef> 16565 <paramdef>struct snd_soc_component * <parameter>component</parameter></paramdef> 16566 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16567 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 16568 <paramdef>unsigned int <parameter>value</parameter></paramdef> 16569 </funcprototype></funcsynopsis> 16570</refsynopsisdiv> 16571<refsect1> 16572 <title>Arguments</title> 16573 <variablelist> 16574 <varlistentry> 16575 <term><parameter>component</parameter></term> 16576 <listitem> 16577 <para> 16578 component 16579 </para> 16580 </listitem> 16581 </varlistentry> 16582 <varlistentry> 16583 <term><parameter>reg</parameter></term> 16584 <listitem> 16585 <para> 16586 Register to test 16587 </para> 16588 </listitem> 16589 </varlistentry> 16590 <varlistentry> 16591 <term><parameter>mask</parameter></term> 16592 <listitem> 16593 <para> 16594 Mask that specifies which bits to test 16595 </para> 16596 </listitem> 16597 </varlistentry> 16598 <varlistentry> 16599 <term><parameter>value</parameter></term> 16600 <listitem> 16601 <para> 16602 Value to test against 16603 </para> 16604 </listitem> 16605 </varlistentry> 16606 </variablelist> 16607</refsect1> 16608<refsect1> 16609<title>Description</title> 16610<para> 16611 Tests a register with a new value and checks if the new value is 16612 different from the old value. 16613</para> 16614</refsect1> 16615<refsect1> 16616<title>Return</title> 16617<para> 16618 1 for change, otherwise 0. 16619</para> 16620</refsect1> 16621</refentry> 16622 16623<refentry id="API-snd-soc-update-bits"> 16624<refentryinfo> 16625 <title>LINUX</title> 16626 <productname>Kernel Hackers Manual</productname> 16627 <date>July 2017</date> 16628</refentryinfo> 16629<refmeta> 16630 <refentrytitle><phrase>snd_soc_update_bits</phrase></refentrytitle> 16631 <manvolnum>9</manvolnum> 16632 <refmiscinfo class="version">4.4.14</refmiscinfo> 16633</refmeta> 16634<refnamediv> 16635 <refname>snd_soc_update_bits</refname> 16636 <refpurpose> 16637 update codec register bits 16638 </refpurpose> 16639</refnamediv> 16640<refsynopsisdiv> 16641 <title>Synopsis</title> 16642 <funcsynopsis><funcprototype> 16643 <funcdef>int <function>snd_soc_update_bits </function></funcdef> 16644 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 16645 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16646 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 16647 <paramdef>unsigned int <parameter>value</parameter></paramdef> 16648 </funcprototype></funcsynopsis> 16649</refsynopsisdiv> 16650<refsect1> 16651 <title>Arguments</title> 16652 <variablelist> 16653 <varlistentry> 16654 <term><parameter>codec</parameter></term> 16655 <listitem> 16656 <para> 16657 audio codec 16658 </para> 16659 </listitem> 16660 </varlistentry> 16661 <varlistentry> 16662 <term><parameter>reg</parameter></term> 16663 <listitem> 16664 <para> 16665 codec register 16666 </para> 16667 </listitem> 16668 </varlistentry> 16669 <varlistentry> 16670 <term><parameter>mask</parameter></term> 16671 <listitem> 16672 <para> 16673 register mask 16674 </para> 16675 </listitem> 16676 </varlistentry> 16677 <varlistentry> 16678 <term><parameter>value</parameter></term> 16679 <listitem> 16680 <para> 16681 new value 16682 </para> 16683 </listitem> 16684 </varlistentry> 16685 </variablelist> 16686</refsect1> 16687<refsect1> 16688<title>Description</title> 16689<para> 16690 Writes new register value. 16691 </para><para> 16692 16693 Returns 1 for change, 0 for no change, or negative error code. 16694</para> 16695</refsect1> 16696</refentry> 16697 16698<refentry id="API-snd-soc-test-bits"> 16699<refentryinfo> 16700 <title>LINUX</title> 16701 <productname>Kernel Hackers Manual</productname> 16702 <date>July 2017</date> 16703</refentryinfo> 16704<refmeta> 16705 <refentrytitle><phrase>snd_soc_test_bits</phrase></refentrytitle> 16706 <manvolnum>9</manvolnum> 16707 <refmiscinfo class="version">4.4.14</refmiscinfo> 16708</refmeta> 16709<refnamediv> 16710 <refname>snd_soc_test_bits</refname> 16711 <refpurpose> 16712 test register for change 16713 </refpurpose> 16714</refnamediv> 16715<refsynopsisdiv> 16716 <title>Synopsis</title> 16717 <funcsynopsis><funcprototype> 16718 <funcdef>int <function>snd_soc_test_bits </function></funcdef> 16719 <paramdef>struct snd_soc_codec * <parameter>codec</parameter></paramdef> 16720 <paramdef>unsigned int <parameter>reg</parameter></paramdef> 16721 <paramdef>unsigned int <parameter>mask</parameter></paramdef> 16722 <paramdef>unsigned int <parameter>value</parameter></paramdef> 16723 </funcprototype></funcsynopsis> 16724</refsynopsisdiv> 16725<refsect1> 16726 <title>Arguments</title> 16727 <variablelist> 16728 <varlistentry> 16729 <term><parameter>codec</parameter></term> 16730 <listitem> 16731 <para> 16732 audio codec 16733 </para> 16734 </listitem> 16735 </varlistentry> 16736 <varlistentry> 16737 <term><parameter>reg</parameter></term> 16738 <listitem> 16739 <para> 16740 codec register 16741 </para> 16742 </listitem> 16743 </varlistentry> 16744 <varlistentry> 16745 <term><parameter>mask</parameter></term> 16746 <listitem> 16747 <para> 16748 register mask 16749 </para> 16750 </listitem> 16751 </varlistentry> 16752 <varlistentry> 16753 <term><parameter>value</parameter></term> 16754 <listitem> 16755 <para> 16756 new value 16757 </para> 16758 </listitem> 16759 </varlistentry> 16760 </variablelist> 16761</refsect1> 16762<refsect1> 16763<title>Description</title> 16764<para> 16765 Tests a register with a new value and checks if the new value is 16766 different from the old value. 16767 </para><para> 16768 16769 Returns 1 for change else 0. 16770</para> 16771</refsect1> 16772</refentry> 16773 16774<!-- sound/soc/soc-pcm.c --> 16775<refentry id="API-snd-soc-set-runtime-hwparams"> 16776<refentryinfo> 16777 <title>LINUX</title> 16778 <productname>Kernel Hackers Manual</productname> 16779 <date>July 2017</date> 16780</refentryinfo> 16781<refmeta> 16782 <refentrytitle><phrase>snd_soc_set_runtime_hwparams</phrase></refentrytitle> 16783 <manvolnum>9</manvolnum> 16784 <refmiscinfo class="version">4.4.14</refmiscinfo> 16785</refmeta> 16786<refnamediv> 16787 <refname>snd_soc_set_runtime_hwparams</refname> 16788 <refpurpose> 16789 set the runtime hardware parameters 16790 </refpurpose> 16791</refnamediv> 16792<refsynopsisdiv> 16793 <title>Synopsis</title> 16794 <funcsynopsis><funcprototype> 16795 <funcdef>int <function>snd_soc_set_runtime_hwparams </function></funcdef> 16796 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 16797 <paramdef>const struct snd_pcm_hardware * <parameter>hw</parameter></paramdef> 16798 </funcprototype></funcsynopsis> 16799</refsynopsisdiv> 16800<refsect1> 16801 <title>Arguments</title> 16802 <variablelist> 16803 <varlistentry> 16804 <term><parameter>substream</parameter></term> 16805 <listitem> 16806 <para> 16807 the pcm substream 16808 </para> 16809 </listitem> 16810 </varlistentry> 16811 <varlistentry> 16812 <term><parameter>hw</parameter></term> 16813 <listitem> 16814 <para> 16815 the hardware parameters 16816 </para> 16817 </listitem> 16818 </varlistentry> 16819 </variablelist> 16820</refsect1> 16821<refsect1> 16822<title>Description</title> 16823<para> 16824 Sets the substream runtime hardware parameters. 16825</para> 16826</refsect1> 16827</refentry> 16828 16829<!-- sound/soc/soc-ops.c --> 16830<refentry id="API-snd-soc-info-enum-double"> 16831<refentryinfo> 16832 <title>LINUX</title> 16833 <productname>Kernel Hackers Manual</productname> 16834 <date>July 2017</date> 16835</refentryinfo> 16836<refmeta> 16837 <refentrytitle><phrase>snd_soc_info_enum_double</phrase></refentrytitle> 16838 <manvolnum>9</manvolnum> 16839 <refmiscinfo class="version">4.4.14</refmiscinfo> 16840</refmeta> 16841<refnamediv> 16842 <refname>snd_soc_info_enum_double</refname> 16843 <refpurpose> 16844 enumerated double mixer info callback 16845 </refpurpose> 16846</refnamediv> 16847<refsynopsisdiv> 16848 <title>Synopsis</title> 16849 <funcsynopsis><funcprototype> 16850 <funcdef>int <function>snd_soc_info_enum_double </function></funcdef> 16851 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 16852 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 16853 </funcprototype></funcsynopsis> 16854</refsynopsisdiv> 16855<refsect1> 16856 <title>Arguments</title> 16857 <variablelist> 16858 <varlistentry> 16859 <term><parameter>kcontrol</parameter></term> 16860 <listitem> 16861 <para> 16862 mixer control 16863 </para> 16864 </listitem> 16865 </varlistentry> 16866 <varlistentry> 16867 <term><parameter>uinfo</parameter></term> 16868 <listitem> 16869 <para> 16870 control element information 16871 </para> 16872 </listitem> 16873 </varlistentry> 16874 </variablelist> 16875</refsect1> 16876<refsect1> 16877<title>Description</title> 16878<para> 16879 Callback to provide information about a double enumerated 16880 mixer control. 16881 </para><para> 16882 16883 Returns 0 for success. 16884</para> 16885</refsect1> 16886</refentry> 16887 16888<refentry id="API-snd-soc-get-enum-double"> 16889<refentryinfo> 16890 <title>LINUX</title> 16891 <productname>Kernel Hackers Manual</productname> 16892 <date>July 2017</date> 16893</refentryinfo> 16894<refmeta> 16895 <refentrytitle><phrase>snd_soc_get_enum_double</phrase></refentrytitle> 16896 <manvolnum>9</manvolnum> 16897 <refmiscinfo class="version">4.4.14</refmiscinfo> 16898</refmeta> 16899<refnamediv> 16900 <refname>snd_soc_get_enum_double</refname> 16901 <refpurpose> 16902 enumerated double mixer get callback 16903 </refpurpose> 16904</refnamediv> 16905<refsynopsisdiv> 16906 <title>Synopsis</title> 16907 <funcsynopsis><funcprototype> 16908 <funcdef>int <function>snd_soc_get_enum_double </function></funcdef> 16909 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 16910 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 16911 </funcprototype></funcsynopsis> 16912</refsynopsisdiv> 16913<refsect1> 16914 <title>Arguments</title> 16915 <variablelist> 16916 <varlistentry> 16917 <term><parameter>kcontrol</parameter></term> 16918 <listitem> 16919 <para> 16920 mixer control 16921 </para> 16922 </listitem> 16923 </varlistentry> 16924 <varlistentry> 16925 <term><parameter>ucontrol</parameter></term> 16926 <listitem> 16927 <para> 16928 control element information 16929 </para> 16930 </listitem> 16931 </varlistentry> 16932 </variablelist> 16933</refsect1> 16934<refsect1> 16935<title>Description</title> 16936<para> 16937 Callback to get the value of a double enumerated mixer. 16938 </para><para> 16939 16940 Returns 0 for success. 16941</para> 16942</refsect1> 16943</refentry> 16944 16945<refentry id="API-snd-soc-put-enum-double"> 16946<refentryinfo> 16947 <title>LINUX</title> 16948 <productname>Kernel Hackers Manual</productname> 16949 <date>July 2017</date> 16950</refentryinfo> 16951<refmeta> 16952 <refentrytitle><phrase>snd_soc_put_enum_double</phrase></refentrytitle> 16953 <manvolnum>9</manvolnum> 16954 <refmiscinfo class="version">4.4.14</refmiscinfo> 16955</refmeta> 16956<refnamediv> 16957 <refname>snd_soc_put_enum_double</refname> 16958 <refpurpose> 16959 enumerated double mixer put callback 16960 </refpurpose> 16961</refnamediv> 16962<refsynopsisdiv> 16963 <title>Synopsis</title> 16964 <funcsynopsis><funcprototype> 16965 <funcdef>int <function>snd_soc_put_enum_double </function></funcdef> 16966 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 16967 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 16968 </funcprototype></funcsynopsis> 16969</refsynopsisdiv> 16970<refsect1> 16971 <title>Arguments</title> 16972 <variablelist> 16973 <varlistentry> 16974 <term><parameter>kcontrol</parameter></term> 16975 <listitem> 16976 <para> 16977 mixer control 16978 </para> 16979 </listitem> 16980 </varlistentry> 16981 <varlistentry> 16982 <term><parameter>ucontrol</parameter></term> 16983 <listitem> 16984 <para> 16985 control element information 16986 </para> 16987 </listitem> 16988 </varlistentry> 16989 </variablelist> 16990</refsect1> 16991<refsect1> 16992<title>Description</title> 16993<para> 16994 Callback to set the value of a double enumerated mixer. 16995 </para><para> 16996 16997 Returns 0 for success. 16998</para> 16999</refsect1> 17000</refentry> 17001 17002<refentry id="API-snd-soc-info-volsw"> 17003<refentryinfo> 17004 <title>LINUX</title> 17005 <productname>Kernel Hackers Manual</productname> 17006 <date>July 2017</date> 17007</refentryinfo> 17008<refmeta> 17009 <refentrytitle><phrase>snd_soc_info_volsw</phrase></refentrytitle> 17010 <manvolnum>9</manvolnum> 17011 <refmiscinfo class="version">4.4.14</refmiscinfo> 17012</refmeta> 17013<refnamediv> 17014 <refname>snd_soc_info_volsw</refname> 17015 <refpurpose> 17016 single mixer info callback 17017 </refpurpose> 17018</refnamediv> 17019<refsynopsisdiv> 17020 <title>Synopsis</title> 17021 <funcsynopsis><funcprototype> 17022 <funcdef>int <function>snd_soc_info_volsw </function></funcdef> 17023 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17024 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 17025 </funcprototype></funcsynopsis> 17026</refsynopsisdiv> 17027<refsect1> 17028 <title>Arguments</title> 17029 <variablelist> 17030 <varlistentry> 17031 <term><parameter>kcontrol</parameter></term> 17032 <listitem> 17033 <para> 17034 mixer control 17035 </para> 17036 </listitem> 17037 </varlistentry> 17038 <varlistentry> 17039 <term><parameter>uinfo</parameter></term> 17040 <listitem> 17041 <para> 17042 control element information 17043 </para> 17044 </listitem> 17045 </varlistentry> 17046 </variablelist> 17047</refsect1> 17048<refsect1> 17049<title>Description</title> 17050<para> 17051 Callback to provide information about a single mixer control, or a double 17052 mixer control that spans 2 registers. 17053 </para><para> 17054 17055 Returns 0 for success. 17056</para> 17057</refsect1> 17058</refentry> 17059 17060<refentry id="API-snd-soc-info-volsw-sx"> 17061<refentryinfo> 17062 <title>LINUX</title> 17063 <productname>Kernel Hackers Manual</productname> 17064 <date>July 2017</date> 17065</refentryinfo> 17066<refmeta> 17067 <refentrytitle><phrase>snd_soc_info_volsw_sx</phrase></refentrytitle> 17068 <manvolnum>9</manvolnum> 17069 <refmiscinfo class="version">4.4.14</refmiscinfo> 17070</refmeta> 17071<refnamediv> 17072 <refname>snd_soc_info_volsw_sx</refname> 17073 <refpurpose> 17074 Mixer info callback for SX TLV controls 17075 </refpurpose> 17076</refnamediv> 17077<refsynopsisdiv> 17078 <title>Synopsis</title> 17079 <funcsynopsis><funcprototype> 17080 <funcdef>int <function>snd_soc_info_volsw_sx </function></funcdef> 17081 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17082 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 17083 </funcprototype></funcsynopsis> 17084</refsynopsisdiv> 17085<refsect1> 17086 <title>Arguments</title> 17087 <variablelist> 17088 <varlistentry> 17089 <term><parameter>kcontrol</parameter></term> 17090 <listitem> 17091 <para> 17092 mixer control 17093 </para> 17094 </listitem> 17095 </varlistentry> 17096 <varlistentry> 17097 <term><parameter>uinfo</parameter></term> 17098 <listitem> 17099 <para> 17100 control element information 17101 </para> 17102 </listitem> 17103 </varlistentry> 17104 </variablelist> 17105</refsect1> 17106<refsect1> 17107<title>Description</title> 17108<para> 17109 Callback to provide information about a single mixer control, or a double 17110 mixer control that spans 2 registers of the SX TLV type. SX TLV controls 17111 have a range that represents both positive and negative values either side 17112 of zero but without a sign bit. 17113 </para><para> 17114 17115 Returns 0 for success. 17116</para> 17117</refsect1> 17118</refentry> 17119 17120<refentry id="API-snd-soc-get-volsw"> 17121<refentryinfo> 17122 <title>LINUX</title> 17123 <productname>Kernel Hackers Manual</productname> 17124 <date>July 2017</date> 17125</refentryinfo> 17126<refmeta> 17127 <refentrytitle><phrase>snd_soc_get_volsw</phrase></refentrytitle> 17128 <manvolnum>9</manvolnum> 17129 <refmiscinfo class="version">4.4.14</refmiscinfo> 17130</refmeta> 17131<refnamediv> 17132 <refname>snd_soc_get_volsw</refname> 17133 <refpurpose> 17134 single mixer get callback 17135 </refpurpose> 17136</refnamediv> 17137<refsynopsisdiv> 17138 <title>Synopsis</title> 17139 <funcsynopsis><funcprototype> 17140 <funcdef>int <function>snd_soc_get_volsw </function></funcdef> 17141 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17142 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17143 </funcprototype></funcsynopsis> 17144</refsynopsisdiv> 17145<refsect1> 17146 <title>Arguments</title> 17147 <variablelist> 17148 <varlistentry> 17149 <term><parameter>kcontrol</parameter></term> 17150 <listitem> 17151 <para> 17152 mixer control 17153 </para> 17154 </listitem> 17155 </varlistentry> 17156 <varlistentry> 17157 <term><parameter>ucontrol</parameter></term> 17158 <listitem> 17159 <para> 17160 control element information 17161 </para> 17162 </listitem> 17163 </varlistentry> 17164 </variablelist> 17165</refsect1> 17166<refsect1> 17167<title>Description</title> 17168<para> 17169 Callback to get the value of a single mixer control, or a double mixer 17170 control that spans 2 registers. 17171 </para><para> 17172 17173 Returns 0 for success. 17174</para> 17175</refsect1> 17176</refentry> 17177 17178<refentry id="API-snd-soc-put-volsw"> 17179<refentryinfo> 17180 <title>LINUX</title> 17181 <productname>Kernel Hackers Manual</productname> 17182 <date>July 2017</date> 17183</refentryinfo> 17184<refmeta> 17185 <refentrytitle><phrase>snd_soc_put_volsw</phrase></refentrytitle> 17186 <manvolnum>9</manvolnum> 17187 <refmiscinfo class="version">4.4.14</refmiscinfo> 17188</refmeta> 17189<refnamediv> 17190 <refname>snd_soc_put_volsw</refname> 17191 <refpurpose> 17192 single mixer put callback 17193 </refpurpose> 17194</refnamediv> 17195<refsynopsisdiv> 17196 <title>Synopsis</title> 17197 <funcsynopsis><funcprototype> 17198 <funcdef>int <function>snd_soc_put_volsw </function></funcdef> 17199 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17200 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17201 </funcprototype></funcsynopsis> 17202</refsynopsisdiv> 17203<refsect1> 17204 <title>Arguments</title> 17205 <variablelist> 17206 <varlistentry> 17207 <term><parameter>kcontrol</parameter></term> 17208 <listitem> 17209 <para> 17210 mixer control 17211 </para> 17212 </listitem> 17213 </varlistentry> 17214 <varlistentry> 17215 <term><parameter>ucontrol</parameter></term> 17216 <listitem> 17217 <para> 17218 control element information 17219 </para> 17220 </listitem> 17221 </varlistentry> 17222 </variablelist> 17223</refsect1> 17224<refsect1> 17225<title>Description</title> 17226<para> 17227 Callback to set the value of a single mixer control, or a double mixer 17228 control that spans 2 registers. 17229 </para><para> 17230 17231 Returns 0 for success. 17232</para> 17233</refsect1> 17234</refentry> 17235 17236<refentry id="API-snd-soc-get-volsw-sx"> 17237<refentryinfo> 17238 <title>LINUX</title> 17239 <productname>Kernel Hackers Manual</productname> 17240 <date>July 2017</date> 17241</refentryinfo> 17242<refmeta> 17243 <refentrytitle><phrase>snd_soc_get_volsw_sx</phrase></refentrytitle> 17244 <manvolnum>9</manvolnum> 17245 <refmiscinfo class="version">4.4.14</refmiscinfo> 17246</refmeta> 17247<refnamediv> 17248 <refname>snd_soc_get_volsw_sx</refname> 17249 <refpurpose> 17250 single mixer get callback 17251 </refpurpose> 17252</refnamediv> 17253<refsynopsisdiv> 17254 <title>Synopsis</title> 17255 <funcsynopsis><funcprototype> 17256 <funcdef>int <function>snd_soc_get_volsw_sx </function></funcdef> 17257 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17258 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17259 </funcprototype></funcsynopsis> 17260</refsynopsisdiv> 17261<refsect1> 17262 <title>Arguments</title> 17263 <variablelist> 17264 <varlistentry> 17265 <term><parameter>kcontrol</parameter></term> 17266 <listitem> 17267 <para> 17268 mixer control 17269 </para> 17270 </listitem> 17271 </varlistentry> 17272 <varlistentry> 17273 <term><parameter>ucontrol</parameter></term> 17274 <listitem> 17275 <para> 17276 control element information 17277 </para> 17278 </listitem> 17279 </varlistentry> 17280 </variablelist> 17281</refsect1> 17282<refsect1> 17283<title>Description</title> 17284<para> 17285 Callback to get the value of a single mixer control, or a double mixer 17286 control that spans 2 registers. 17287 </para><para> 17288 17289 Returns 0 for success. 17290</para> 17291</refsect1> 17292</refentry> 17293 17294<refentry id="API-snd-soc-put-volsw-sx"> 17295<refentryinfo> 17296 <title>LINUX</title> 17297 <productname>Kernel Hackers Manual</productname> 17298 <date>July 2017</date> 17299</refentryinfo> 17300<refmeta> 17301 <refentrytitle><phrase>snd_soc_put_volsw_sx</phrase></refentrytitle> 17302 <manvolnum>9</manvolnum> 17303 <refmiscinfo class="version">4.4.14</refmiscinfo> 17304</refmeta> 17305<refnamediv> 17306 <refname>snd_soc_put_volsw_sx</refname> 17307 <refpurpose> 17308 double mixer set callback 17309 </refpurpose> 17310</refnamediv> 17311<refsynopsisdiv> 17312 <title>Synopsis</title> 17313 <funcsynopsis><funcprototype> 17314 <funcdef>int <function>snd_soc_put_volsw_sx </function></funcdef> 17315 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17316 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17317 </funcprototype></funcsynopsis> 17318</refsynopsisdiv> 17319<refsect1> 17320 <title>Arguments</title> 17321 <variablelist> 17322 <varlistentry> 17323 <term><parameter>kcontrol</parameter></term> 17324 <listitem> 17325 <para> 17326 mixer control 17327 </para> 17328 </listitem> 17329 </varlistentry> 17330 <varlistentry> 17331 <term><parameter>ucontrol</parameter></term> 17332 <listitem> 17333 <para> 17334 control element information 17335 </para> 17336 </listitem> 17337 </varlistentry> 17338 </variablelist> 17339</refsect1> 17340<refsect1> 17341<title>Description</title> 17342<para> 17343 Callback to set the value of a double mixer control that spans 2 registers. 17344 </para><para> 17345 17346 Returns 0 for success. 17347</para> 17348</refsect1> 17349</refentry> 17350 17351<refentry id="API-snd-soc-info-volsw-range"> 17352<refentryinfo> 17353 <title>LINUX</title> 17354 <productname>Kernel Hackers Manual</productname> 17355 <date>July 2017</date> 17356</refentryinfo> 17357<refmeta> 17358 <refentrytitle><phrase>snd_soc_info_volsw_range</phrase></refentrytitle> 17359 <manvolnum>9</manvolnum> 17360 <refmiscinfo class="version">4.4.14</refmiscinfo> 17361</refmeta> 17362<refnamediv> 17363 <refname>snd_soc_info_volsw_range</refname> 17364 <refpurpose> 17365 single mixer info callback with range. 17366 </refpurpose> 17367</refnamediv> 17368<refsynopsisdiv> 17369 <title>Synopsis</title> 17370 <funcsynopsis><funcprototype> 17371 <funcdef>int <function>snd_soc_info_volsw_range </function></funcdef> 17372 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17373 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 17374 </funcprototype></funcsynopsis> 17375</refsynopsisdiv> 17376<refsect1> 17377 <title>Arguments</title> 17378 <variablelist> 17379 <varlistentry> 17380 <term><parameter>kcontrol</parameter></term> 17381 <listitem> 17382 <para> 17383 mixer control 17384 </para> 17385 </listitem> 17386 </varlistentry> 17387 <varlistentry> 17388 <term><parameter>uinfo</parameter></term> 17389 <listitem> 17390 <para> 17391 control element information 17392 </para> 17393 </listitem> 17394 </varlistentry> 17395 </variablelist> 17396</refsect1> 17397<refsect1> 17398<title>Description</title> 17399<para> 17400 Callback to provide information, within a range, about a single 17401 mixer control. 17402 </para><para> 17403 17404 returns 0 for success. 17405</para> 17406</refsect1> 17407</refentry> 17408 17409<refentry id="API-snd-soc-put-volsw-range"> 17410<refentryinfo> 17411 <title>LINUX</title> 17412 <productname>Kernel Hackers Manual</productname> 17413 <date>July 2017</date> 17414</refentryinfo> 17415<refmeta> 17416 <refentrytitle><phrase>snd_soc_put_volsw_range</phrase></refentrytitle> 17417 <manvolnum>9</manvolnum> 17418 <refmiscinfo class="version">4.4.14</refmiscinfo> 17419</refmeta> 17420<refnamediv> 17421 <refname>snd_soc_put_volsw_range</refname> 17422 <refpurpose> 17423 single mixer put value callback with range. 17424 </refpurpose> 17425</refnamediv> 17426<refsynopsisdiv> 17427 <title>Synopsis</title> 17428 <funcsynopsis><funcprototype> 17429 <funcdef>int <function>snd_soc_put_volsw_range </function></funcdef> 17430 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17431 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17432 </funcprototype></funcsynopsis> 17433</refsynopsisdiv> 17434<refsect1> 17435 <title>Arguments</title> 17436 <variablelist> 17437 <varlistentry> 17438 <term><parameter>kcontrol</parameter></term> 17439 <listitem> 17440 <para> 17441 mixer control 17442 </para> 17443 </listitem> 17444 </varlistentry> 17445 <varlistentry> 17446 <term><parameter>ucontrol</parameter></term> 17447 <listitem> 17448 <para> 17449 control element information 17450 </para> 17451 </listitem> 17452 </varlistentry> 17453 </variablelist> 17454</refsect1> 17455<refsect1> 17456<title>Description</title> 17457<para> 17458 Callback to set the value, within a range, for a single mixer control. 17459 </para><para> 17460 17461 Returns 0 for success. 17462</para> 17463</refsect1> 17464</refentry> 17465 17466<refentry id="API-snd-soc-get-volsw-range"> 17467<refentryinfo> 17468 <title>LINUX</title> 17469 <productname>Kernel Hackers Manual</productname> 17470 <date>July 2017</date> 17471</refentryinfo> 17472<refmeta> 17473 <refentrytitle><phrase>snd_soc_get_volsw_range</phrase></refentrytitle> 17474 <manvolnum>9</manvolnum> 17475 <refmiscinfo class="version">4.4.14</refmiscinfo> 17476</refmeta> 17477<refnamediv> 17478 <refname>snd_soc_get_volsw_range</refname> 17479 <refpurpose> 17480 single mixer get callback with range 17481 </refpurpose> 17482</refnamediv> 17483<refsynopsisdiv> 17484 <title>Synopsis</title> 17485 <funcsynopsis><funcprototype> 17486 <funcdef>int <function>snd_soc_get_volsw_range </function></funcdef> 17487 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17488 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17489 </funcprototype></funcsynopsis> 17490</refsynopsisdiv> 17491<refsect1> 17492 <title>Arguments</title> 17493 <variablelist> 17494 <varlistentry> 17495 <term><parameter>kcontrol</parameter></term> 17496 <listitem> 17497 <para> 17498 mixer control 17499 </para> 17500 </listitem> 17501 </varlistentry> 17502 <varlistentry> 17503 <term><parameter>ucontrol</parameter></term> 17504 <listitem> 17505 <para> 17506 control element information 17507 </para> 17508 </listitem> 17509 </varlistentry> 17510 </variablelist> 17511</refsect1> 17512<refsect1> 17513<title>Description</title> 17514<para> 17515 Callback to get the value, within a range, of a single mixer control. 17516 </para><para> 17517 17518 Returns 0 for success. 17519</para> 17520</refsect1> 17521</refentry> 17522 17523<refentry id="API-snd-soc-limit-volume"> 17524<refentryinfo> 17525 <title>LINUX</title> 17526 <productname>Kernel Hackers Manual</productname> 17527 <date>July 2017</date> 17528</refentryinfo> 17529<refmeta> 17530 <refentrytitle><phrase>snd_soc_limit_volume</phrase></refentrytitle> 17531 <manvolnum>9</manvolnum> 17532 <refmiscinfo class="version">4.4.14</refmiscinfo> 17533</refmeta> 17534<refnamediv> 17535 <refname>snd_soc_limit_volume</refname> 17536 <refpurpose> 17537 Set new limit to an existing volume control. 17538 </refpurpose> 17539</refnamediv> 17540<refsynopsisdiv> 17541 <title>Synopsis</title> 17542 <funcsynopsis><funcprototype> 17543 <funcdef>int <function>snd_soc_limit_volume </function></funcdef> 17544 <paramdef>struct snd_soc_card * <parameter>card</parameter></paramdef> 17545 <paramdef>const char * <parameter>name</parameter></paramdef> 17546 <paramdef>int <parameter>max</parameter></paramdef> 17547 </funcprototype></funcsynopsis> 17548</refsynopsisdiv> 17549<refsect1> 17550 <title>Arguments</title> 17551 <variablelist> 17552 <varlistentry> 17553 <term><parameter>card</parameter></term> 17554 <listitem> 17555 <para> 17556 where to look for the control 17557 </para> 17558 </listitem> 17559 </varlistentry> 17560 <varlistentry> 17561 <term><parameter>name</parameter></term> 17562 <listitem> 17563 <para> 17564 Name of the control 17565 </para> 17566 </listitem> 17567 </varlistentry> 17568 <varlistentry> 17569 <term><parameter>max</parameter></term> 17570 <listitem> 17571 <para> 17572 new maximum limit 17573 </para> 17574 </listitem> 17575 </varlistentry> 17576 </variablelist> 17577</refsect1> 17578<refsect1> 17579<title>Description</title> 17580<para> 17581 Return 0 for success, else error. 17582</para> 17583</refsect1> 17584</refentry> 17585 17586<refentry id="API-snd-soc-info-xr-sx"> 17587<refentryinfo> 17588 <title>LINUX</title> 17589 <productname>Kernel Hackers Manual</productname> 17590 <date>July 2017</date> 17591</refentryinfo> 17592<refmeta> 17593 <refentrytitle><phrase>snd_soc_info_xr_sx</phrase></refentrytitle> 17594 <manvolnum>9</manvolnum> 17595 <refmiscinfo class="version">4.4.14</refmiscinfo> 17596</refmeta> 17597<refnamediv> 17598 <refname>snd_soc_info_xr_sx</refname> 17599 <refpurpose> 17600 signed multi register info callback 17601 </refpurpose> 17602</refnamediv> 17603<refsynopsisdiv> 17604 <title>Synopsis</title> 17605 <funcsynopsis><funcprototype> 17606 <funcdef>int <function>snd_soc_info_xr_sx </function></funcdef> 17607 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17608 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 17609 </funcprototype></funcsynopsis> 17610</refsynopsisdiv> 17611<refsect1> 17612 <title>Arguments</title> 17613 <variablelist> 17614 <varlistentry> 17615 <term><parameter>kcontrol</parameter></term> 17616 <listitem> 17617 <para> 17618 mreg control 17619 </para> 17620 </listitem> 17621 </varlistentry> 17622 <varlistentry> 17623 <term><parameter>uinfo</parameter></term> 17624 <listitem> 17625 <para> 17626 control element information 17627 </para> 17628 </listitem> 17629 </varlistentry> 17630 </variablelist> 17631</refsect1> 17632<refsect1> 17633<title>Description</title> 17634<para> 17635 Callback to provide information of a control that can 17636 span multiple codec registers which together 17637 forms a single signed value in a MSB/LSB manner. 17638 </para><para> 17639 17640 Returns 0 for success. 17641</para> 17642</refsect1> 17643</refentry> 17644 17645<refentry id="API-snd-soc-get-xr-sx"> 17646<refentryinfo> 17647 <title>LINUX</title> 17648 <productname>Kernel Hackers Manual</productname> 17649 <date>July 2017</date> 17650</refentryinfo> 17651<refmeta> 17652 <refentrytitle><phrase>snd_soc_get_xr_sx</phrase></refentrytitle> 17653 <manvolnum>9</manvolnum> 17654 <refmiscinfo class="version">4.4.14</refmiscinfo> 17655</refmeta> 17656<refnamediv> 17657 <refname>snd_soc_get_xr_sx</refname> 17658 <refpurpose> 17659 signed multi register get callback 17660 </refpurpose> 17661</refnamediv> 17662<refsynopsisdiv> 17663 <title>Synopsis</title> 17664 <funcsynopsis><funcprototype> 17665 <funcdef>int <function>snd_soc_get_xr_sx </function></funcdef> 17666 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17667 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17668 </funcprototype></funcsynopsis> 17669</refsynopsisdiv> 17670<refsect1> 17671 <title>Arguments</title> 17672 <variablelist> 17673 <varlistentry> 17674 <term><parameter>kcontrol</parameter></term> 17675 <listitem> 17676 <para> 17677 mreg control 17678 </para> 17679 </listitem> 17680 </varlistentry> 17681 <varlistentry> 17682 <term><parameter>ucontrol</parameter></term> 17683 <listitem> 17684 <para> 17685 control element information 17686 </para> 17687 </listitem> 17688 </varlistentry> 17689 </variablelist> 17690</refsect1> 17691<refsect1> 17692<title>Description</title> 17693<para> 17694 Callback to get the value of a control that can span 17695 multiple codec registers which together forms a single 17696 signed value in a MSB/LSB manner. The control supports 17697 specifying total no of bits used to allow for bitfields 17698 across the multiple codec registers. 17699 </para><para> 17700 17701 Returns 0 for success. 17702</para> 17703</refsect1> 17704</refentry> 17705 17706<refentry id="API-snd-soc-put-xr-sx"> 17707<refentryinfo> 17708 <title>LINUX</title> 17709 <productname>Kernel Hackers Manual</productname> 17710 <date>July 2017</date> 17711</refentryinfo> 17712<refmeta> 17713 <refentrytitle><phrase>snd_soc_put_xr_sx</phrase></refentrytitle> 17714 <manvolnum>9</manvolnum> 17715 <refmiscinfo class="version">4.4.14</refmiscinfo> 17716</refmeta> 17717<refnamediv> 17718 <refname>snd_soc_put_xr_sx</refname> 17719 <refpurpose> 17720 signed multi register get callback 17721 </refpurpose> 17722</refnamediv> 17723<refsynopsisdiv> 17724 <title>Synopsis</title> 17725 <funcsynopsis><funcprototype> 17726 <funcdef>int <function>snd_soc_put_xr_sx </function></funcdef> 17727 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17728 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17729 </funcprototype></funcsynopsis> 17730</refsynopsisdiv> 17731<refsect1> 17732 <title>Arguments</title> 17733 <variablelist> 17734 <varlistentry> 17735 <term><parameter>kcontrol</parameter></term> 17736 <listitem> 17737 <para> 17738 mreg control 17739 </para> 17740 </listitem> 17741 </varlistentry> 17742 <varlistentry> 17743 <term><parameter>ucontrol</parameter></term> 17744 <listitem> 17745 <para> 17746 control element information 17747 </para> 17748 </listitem> 17749 </varlistentry> 17750 </variablelist> 17751</refsect1> 17752<refsect1> 17753<title>Description</title> 17754<para> 17755 Callback to set the value of a control that can span 17756 multiple codec registers which together forms a single 17757 signed value in a MSB/LSB manner. The control supports 17758 specifying total no of bits used to allow for bitfields 17759 across the multiple codec registers. 17760 </para><para> 17761 17762 Returns 0 for success. 17763</para> 17764</refsect1> 17765</refentry> 17766 17767<refentry id="API-snd-soc-get-strobe"> 17768<refentryinfo> 17769 <title>LINUX</title> 17770 <productname>Kernel Hackers Manual</productname> 17771 <date>July 2017</date> 17772</refentryinfo> 17773<refmeta> 17774 <refentrytitle><phrase>snd_soc_get_strobe</phrase></refentrytitle> 17775 <manvolnum>9</manvolnum> 17776 <refmiscinfo class="version">4.4.14</refmiscinfo> 17777</refmeta> 17778<refnamediv> 17779 <refname>snd_soc_get_strobe</refname> 17780 <refpurpose> 17781 strobe get callback 17782 </refpurpose> 17783</refnamediv> 17784<refsynopsisdiv> 17785 <title>Synopsis</title> 17786 <funcsynopsis><funcprototype> 17787 <funcdef>int <function>snd_soc_get_strobe </function></funcdef> 17788 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17789 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17790 </funcprototype></funcsynopsis> 17791</refsynopsisdiv> 17792<refsect1> 17793 <title>Arguments</title> 17794 <variablelist> 17795 <varlistentry> 17796 <term><parameter>kcontrol</parameter></term> 17797 <listitem> 17798 <para> 17799 mixer control 17800 </para> 17801 </listitem> 17802 </varlistentry> 17803 <varlistentry> 17804 <term><parameter>ucontrol</parameter></term> 17805 <listitem> 17806 <para> 17807 control element information 17808 </para> 17809 </listitem> 17810 </varlistentry> 17811 </variablelist> 17812</refsect1> 17813<refsect1> 17814<title>Description</title> 17815<para> 17816 Callback get the value of a strobe mixer control. 17817 </para><para> 17818 17819 Returns 0 for success. 17820</para> 17821</refsect1> 17822</refentry> 17823 17824<refentry id="API-snd-soc-put-strobe"> 17825<refentryinfo> 17826 <title>LINUX</title> 17827 <productname>Kernel Hackers Manual</productname> 17828 <date>July 2017</date> 17829</refentryinfo> 17830<refmeta> 17831 <refentrytitle><phrase>snd_soc_put_strobe</phrase></refentrytitle> 17832 <manvolnum>9</manvolnum> 17833 <refmiscinfo class="version">4.4.14</refmiscinfo> 17834</refmeta> 17835<refnamediv> 17836 <refname>snd_soc_put_strobe</refname> 17837 <refpurpose> 17838 strobe put callback 17839 </refpurpose> 17840</refnamediv> 17841<refsynopsisdiv> 17842 <title>Synopsis</title> 17843 <funcsynopsis><funcprototype> 17844 <funcdef>int <function>snd_soc_put_strobe </function></funcdef> 17845 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17846 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 17847 </funcprototype></funcsynopsis> 17848</refsynopsisdiv> 17849<refsect1> 17850 <title>Arguments</title> 17851 <variablelist> 17852 <varlistentry> 17853 <term><parameter>kcontrol</parameter></term> 17854 <listitem> 17855 <para> 17856 mixer control 17857 </para> 17858 </listitem> 17859 </varlistentry> 17860 <varlistentry> 17861 <term><parameter>ucontrol</parameter></term> 17862 <listitem> 17863 <para> 17864 control element information 17865 </para> 17866 </listitem> 17867 </varlistentry> 17868 </variablelist> 17869</refsect1> 17870<refsect1> 17871<title>Description</title> 17872<para> 17873 Callback strobe a register bit to high then low (or the inverse) 17874 in one pass of a single mixer enum control. 17875 </para><para> 17876 17877 Returns 1 for success. 17878</para> 17879</refsect1> 17880</refentry> 17881 17882<!-- sound/soc/soc-compress.c --> 17883<refentry id="API-snd-soc-new-compress"> 17884<refentryinfo> 17885 <title>LINUX</title> 17886 <productname>Kernel Hackers Manual</productname> 17887 <date>July 2017</date> 17888</refentryinfo> 17889<refmeta> 17890 <refentrytitle><phrase>snd_soc_new_compress</phrase></refentrytitle> 17891 <manvolnum>9</manvolnum> 17892 <refmiscinfo class="version">4.4.14</refmiscinfo> 17893</refmeta> 17894<refnamediv> 17895 <refname>snd_soc_new_compress</refname> 17896 <refpurpose> 17897 create a new compress. 17898 </refpurpose> 17899</refnamediv> 17900<refsynopsisdiv> 17901 <title>Synopsis</title> 17902 <funcsynopsis><funcprototype> 17903 <funcdef>int <function>snd_soc_new_compress </function></funcdef> 17904 <paramdef>struct snd_soc_pcm_runtime * <parameter>rtd</parameter></paramdef> 17905 <paramdef>int <parameter>num</parameter></paramdef> 17906 </funcprototype></funcsynopsis> 17907</refsynopsisdiv> 17908<refsect1> 17909 <title>Arguments</title> 17910 <variablelist> 17911 <varlistentry> 17912 <term><parameter>rtd</parameter></term> 17913 <listitem> 17914 <para> 17915 The runtime for which we will create compress 17916 </para> 17917 </listitem> 17918 </varlistentry> 17919 <varlistentry> 17920 <term><parameter>num</parameter></term> 17921 <listitem> 17922 <para> 17923 the device index number (zero based - shared with normal PCMs) 17924 </para> 17925 </listitem> 17926 </varlistentry> 17927 </variablelist> 17928</refsect1> 17929<refsect1> 17930<title>Return</title> 17931<para> 17932 0 for success, else error. 17933</para> 17934</refsect1> 17935</refentry> 17936 17937 </sect1> 17938 <sect1><title>ASoC DAPM API</title> 17939<!-- sound/soc/soc-dapm.c --> 17940<refentry id="API-snd-soc-dapm-kcontrol-widget"> 17941<refentryinfo> 17942 <title>LINUX</title> 17943 <productname>Kernel Hackers Manual</productname> 17944 <date>July 2017</date> 17945</refentryinfo> 17946<refmeta> 17947 <refentrytitle><phrase>snd_soc_dapm_kcontrol_widget</phrase></refentrytitle> 17948 <manvolnum>9</manvolnum> 17949 <refmiscinfo class="version">4.4.14</refmiscinfo> 17950</refmeta> 17951<refnamediv> 17952 <refname>snd_soc_dapm_kcontrol_widget</refname> 17953 <refpurpose> 17954 Returns the widget associated to a kcontrol 17955 </refpurpose> 17956</refnamediv> 17957<refsynopsisdiv> 17958 <title>Synopsis</title> 17959 <funcsynopsis><funcprototype> 17960 <funcdef>struct snd_soc_dapm_widget * <function>snd_soc_dapm_kcontrol_widget </function></funcdef> 17961 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 17962 </funcprototype></funcsynopsis> 17963</refsynopsisdiv> 17964<refsect1> 17965 <title>Arguments</title> 17966 <variablelist> 17967 <varlistentry> 17968 <term><parameter>kcontrol</parameter></term> 17969 <listitem> 17970 <para> 17971 The kcontrol 17972 </para> 17973 </listitem> 17974 </varlistentry> 17975 </variablelist> 17976</refsect1> 17977</refentry> 17978 17979<refentry id="API-snd-soc-dapm-kcontrol-dapm"> 17980<refentryinfo> 17981 <title>LINUX</title> 17982 <productname>Kernel Hackers Manual</productname> 17983 <date>July 2017</date> 17984</refentryinfo> 17985<refmeta> 17986 <refentrytitle><phrase>snd_soc_dapm_kcontrol_dapm</phrase></refentrytitle> 17987 <manvolnum>9</manvolnum> 17988 <refmiscinfo class="version">4.4.14</refmiscinfo> 17989</refmeta> 17990<refnamediv> 17991 <refname>snd_soc_dapm_kcontrol_dapm</refname> 17992 <refpurpose> 17993 Returns the dapm context associated to a kcontrol 17994 </refpurpose> 17995</refnamediv> 17996<refsynopsisdiv> 17997 <title>Synopsis</title> 17998 <funcsynopsis><funcprototype> 17999 <funcdef>struct snd_soc_dapm_context * <function>snd_soc_dapm_kcontrol_dapm </function></funcdef> 18000 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18001 </funcprototype></funcsynopsis> 18002</refsynopsisdiv> 18003<refsect1> 18004 <title>Arguments</title> 18005 <variablelist> 18006 <varlistentry> 18007 <term><parameter>kcontrol</parameter></term> 18008 <listitem> 18009 <para> 18010 The kcontrol 18011 </para> 18012 </listitem> 18013 </varlistentry> 18014 </variablelist> 18015</refsect1> 18016<refsect1> 18017<title>Note</title> 18018<para> 18019 This function must only be used on kcontrols that are known to have 18020 been registered for a CODEC. Otherwise the behaviour is undefined. 18021</para> 18022</refsect1> 18023</refentry> 18024 18025<refentry id="API-snd-soc-dapm-force-bias-level"> 18026<refentryinfo> 18027 <title>LINUX</title> 18028 <productname>Kernel Hackers Manual</productname> 18029 <date>July 2017</date> 18030</refentryinfo> 18031<refmeta> 18032 <refentrytitle><phrase>snd_soc_dapm_force_bias_level</phrase></refentrytitle> 18033 <manvolnum>9</manvolnum> 18034 <refmiscinfo class="version">4.4.14</refmiscinfo> 18035</refmeta> 18036<refnamediv> 18037 <refname>snd_soc_dapm_force_bias_level</refname> 18038 <refpurpose> 18039 Sets the DAPM bias level 18040 </refpurpose> 18041</refnamediv> 18042<refsynopsisdiv> 18043 <title>Synopsis</title> 18044 <funcsynopsis><funcprototype> 18045 <funcdef>int <function>snd_soc_dapm_force_bias_level </function></funcdef> 18046 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18047 <paramdef>enum snd_soc_bias_level <parameter>level</parameter></paramdef> 18048 </funcprototype></funcsynopsis> 18049</refsynopsisdiv> 18050<refsect1> 18051 <title>Arguments</title> 18052 <variablelist> 18053 <varlistentry> 18054 <term><parameter>dapm</parameter></term> 18055 <listitem> 18056 <para> 18057 The DAPM context for which to set the level 18058 </para> 18059 </listitem> 18060 </varlistentry> 18061 <varlistentry> 18062 <term><parameter>level</parameter></term> 18063 <listitem> 18064 <para> 18065 The level to set 18066 </para> 18067 </listitem> 18068 </varlistentry> 18069 </variablelist> 18070</refsect1> 18071<refsect1> 18072<title>Description</title> 18073<para> 18074 Forces the DAPM bias level to a specific state. It will call the bias level 18075 callback of DAPM context with the specified level. This will even happen if 18076 the context is already at the same level. Furthermore it will not go through 18077 the normal bias level sequencing, meaning any intermediate states between the 18078 current and the target state will not be entered. 18079 </para><para> 18080 18081 Note that the change in bias level is only temporary and the next time 18082 <function>snd_soc_dapm_sync</function> is called the state will be set to the level as 18083 determined by the DAPM core. The function is mainly intended to be used to 18084 used during probe or resume from suspend to power up the device so 18085 initialization can be done, before the DAPM core takes over. 18086</para> 18087</refsect1> 18088</refentry> 18089 18090<refentry id="API-snd-soc-dapm-sync-unlocked"> 18091<refentryinfo> 18092 <title>LINUX</title> 18093 <productname>Kernel Hackers Manual</productname> 18094 <date>July 2017</date> 18095</refentryinfo> 18096<refmeta> 18097 <refentrytitle><phrase>snd_soc_dapm_sync_unlocked</phrase></refentrytitle> 18098 <manvolnum>9</manvolnum> 18099 <refmiscinfo class="version">4.4.14</refmiscinfo> 18100</refmeta> 18101<refnamediv> 18102 <refname>snd_soc_dapm_sync_unlocked</refname> 18103 <refpurpose> 18104 scan and power dapm paths 18105 </refpurpose> 18106</refnamediv> 18107<refsynopsisdiv> 18108 <title>Synopsis</title> 18109 <funcsynopsis><funcprototype> 18110 <funcdef>int <function>snd_soc_dapm_sync_unlocked </function></funcdef> 18111 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18112 </funcprototype></funcsynopsis> 18113</refsynopsisdiv> 18114<refsect1> 18115 <title>Arguments</title> 18116 <variablelist> 18117 <varlistentry> 18118 <term><parameter>dapm</parameter></term> 18119 <listitem> 18120 <para> 18121 DAPM context 18122 </para> 18123 </listitem> 18124 </varlistentry> 18125 </variablelist> 18126</refsect1> 18127<refsect1> 18128<title>Description</title> 18129<para> 18130 Walks all dapm audio paths and powers widgets according to their 18131 stream or path usage. 18132 </para><para> 18133 18134 Requires external locking. 18135 </para><para> 18136 18137 Returns 0 for success. 18138</para> 18139</refsect1> 18140</refentry> 18141 18142<refentry id="API-snd-soc-dapm-sync"> 18143<refentryinfo> 18144 <title>LINUX</title> 18145 <productname>Kernel Hackers Manual</productname> 18146 <date>July 2017</date> 18147</refentryinfo> 18148<refmeta> 18149 <refentrytitle><phrase>snd_soc_dapm_sync</phrase></refentrytitle> 18150 <manvolnum>9</manvolnum> 18151 <refmiscinfo class="version">4.4.14</refmiscinfo> 18152</refmeta> 18153<refnamediv> 18154 <refname>snd_soc_dapm_sync</refname> 18155 <refpurpose> 18156 scan and power dapm paths 18157 </refpurpose> 18158</refnamediv> 18159<refsynopsisdiv> 18160 <title>Synopsis</title> 18161 <funcsynopsis><funcprototype> 18162 <funcdef>int <function>snd_soc_dapm_sync </function></funcdef> 18163 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18164 </funcprototype></funcsynopsis> 18165</refsynopsisdiv> 18166<refsect1> 18167 <title>Arguments</title> 18168 <variablelist> 18169 <varlistentry> 18170 <term><parameter>dapm</parameter></term> 18171 <listitem> 18172 <para> 18173 DAPM context 18174 </para> 18175 </listitem> 18176 </varlistentry> 18177 </variablelist> 18178</refsect1> 18179<refsect1> 18180<title>Description</title> 18181<para> 18182 Walks all dapm audio paths and powers widgets according to their 18183 stream or path usage. 18184 </para><para> 18185 18186 Returns 0 for success. 18187</para> 18188</refsect1> 18189</refentry> 18190 18191<refentry id="API-snd-soc-dapm-add-routes"> 18192<refentryinfo> 18193 <title>LINUX</title> 18194 <productname>Kernel Hackers Manual</productname> 18195 <date>July 2017</date> 18196</refentryinfo> 18197<refmeta> 18198 <refentrytitle><phrase>snd_soc_dapm_add_routes</phrase></refentrytitle> 18199 <manvolnum>9</manvolnum> 18200 <refmiscinfo class="version">4.4.14</refmiscinfo> 18201</refmeta> 18202<refnamediv> 18203 <refname>snd_soc_dapm_add_routes</refname> 18204 <refpurpose> 18205 Add routes between DAPM widgets 18206 </refpurpose> 18207</refnamediv> 18208<refsynopsisdiv> 18209 <title>Synopsis</title> 18210 <funcsynopsis><funcprototype> 18211 <funcdef>int <function>snd_soc_dapm_add_routes </function></funcdef> 18212 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18213 <paramdef>const struct snd_soc_dapm_route * <parameter>route</parameter></paramdef> 18214 <paramdef>int <parameter>num</parameter></paramdef> 18215 </funcprototype></funcsynopsis> 18216</refsynopsisdiv> 18217<refsect1> 18218 <title>Arguments</title> 18219 <variablelist> 18220 <varlistentry> 18221 <term><parameter>dapm</parameter></term> 18222 <listitem> 18223 <para> 18224 DAPM context 18225 </para> 18226 </listitem> 18227 </varlistentry> 18228 <varlistentry> 18229 <term><parameter>route</parameter></term> 18230 <listitem> 18231 <para> 18232 audio routes 18233 </para> 18234 </listitem> 18235 </varlistentry> 18236 <varlistentry> 18237 <term><parameter>num</parameter></term> 18238 <listitem> 18239 <para> 18240 number of routes 18241 </para> 18242 </listitem> 18243 </varlistentry> 18244 </variablelist> 18245</refsect1> 18246<refsect1> 18247<title>Description</title> 18248<para> 18249 Connects 2 dapm widgets together via a named audio path. The sink is 18250 the widget receiving the audio signal, whilst the source is the sender 18251 of the audio signal. 18252 </para><para> 18253 18254 Returns 0 for success else error. On error all resources can be freed 18255 with a call to <function>snd_soc_card_free</function>. 18256</para> 18257</refsect1> 18258</refentry> 18259 18260<refentry id="API-snd-soc-dapm-del-routes"> 18261<refentryinfo> 18262 <title>LINUX</title> 18263 <productname>Kernel Hackers Manual</productname> 18264 <date>July 2017</date> 18265</refentryinfo> 18266<refmeta> 18267 <refentrytitle><phrase>snd_soc_dapm_del_routes</phrase></refentrytitle> 18268 <manvolnum>9</manvolnum> 18269 <refmiscinfo class="version">4.4.14</refmiscinfo> 18270</refmeta> 18271<refnamediv> 18272 <refname>snd_soc_dapm_del_routes</refname> 18273 <refpurpose> 18274 Remove routes between DAPM widgets 18275 </refpurpose> 18276</refnamediv> 18277<refsynopsisdiv> 18278 <title>Synopsis</title> 18279 <funcsynopsis><funcprototype> 18280 <funcdef>int <function>snd_soc_dapm_del_routes </function></funcdef> 18281 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18282 <paramdef>const struct snd_soc_dapm_route * <parameter>route</parameter></paramdef> 18283 <paramdef>int <parameter>num</parameter></paramdef> 18284 </funcprototype></funcsynopsis> 18285</refsynopsisdiv> 18286<refsect1> 18287 <title>Arguments</title> 18288 <variablelist> 18289 <varlistentry> 18290 <term><parameter>dapm</parameter></term> 18291 <listitem> 18292 <para> 18293 DAPM context 18294 </para> 18295 </listitem> 18296 </varlistentry> 18297 <varlistentry> 18298 <term><parameter>route</parameter></term> 18299 <listitem> 18300 <para> 18301 audio routes 18302 </para> 18303 </listitem> 18304 </varlistentry> 18305 <varlistentry> 18306 <term><parameter>num</parameter></term> 18307 <listitem> 18308 <para> 18309 number of routes 18310 </para> 18311 </listitem> 18312 </varlistentry> 18313 </variablelist> 18314</refsect1> 18315<refsect1> 18316<title>Description</title> 18317<para> 18318 Removes routes from the DAPM context. 18319</para> 18320</refsect1> 18321</refentry> 18322 18323<refentry id="API-snd-soc-dapm-weak-routes"> 18324<refentryinfo> 18325 <title>LINUX</title> 18326 <productname>Kernel Hackers Manual</productname> 18327 <date>July 2017</date> 18328</refentryinfo> 18329<refmeta> 18330 <refentrytitle><phrase>snd_soc_dapm_weak_routes</phrase></refentrytitle> 18331 <manvolnum>9</manvolnum> 18332 <refmiscinfo class="version">4.4.14</refmiscinfo> 18333</refmeta> 18334<refnamediv> 18335 <refname>snd_soc_dapm_weak_routes</refname> 18336 <refpurpose> 18337 Mark routes between DAPM widgets as weak 18338 </refpurpose> 18339</refnamediv> 18340<refsynopsisdiv> 18341 <title>Synopsis</title> 18342 <funcsynopsis><funcprototype> 18343 <funcdef>int <function>snd_soc_dapm_weak_routes </function></funcdef> 18344 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18345 <paramdef>const struct snd_soc_dapm_route * <parameter>route</parameter></paramdef> 18346 <paramdef>int <parameter>num</parameter></paramdef> 18347 </funcprototype></funcsynopsis> 18348</refsynopsisdiv> 18349<refsect1> 18350 <title>Arguments</title> 18351 <variablelist> 18352 <varlistentry> 18353 <term><parameter>dapm</parameter></term> 18354 <listitem> 18355 <para> 18356 DAPM context 18357 </para> 18358 </listitem> 18359 </varlistentry> 18360 <varlistentry> 18361 <term><parameter>route</parameter></term> 18362 <listitem> 18363 <para> 18364 audio routes 18365 </para> 18366 </listitem> 18367 </varlistentry> 18368 <varlistentry> 18369 <term><parameter>num</parameter></term> 18370 <listitem> 18371 <para> 18372 number of routes 18373 </para> 18374 </listitem> 18375 </varlistentry> 18376 </variablelist> 18377</refsect1> 18378<refsect1> 18379<title>Description</title> 18380<para> 18381 Mark existing routes matching those specified in the passed array 18382 as being weak, meaning that they are ignored for the purpose of 18383 power decisions. The main intended use case is for sidetone paths 18384 which couple audio between other independent paths if they are both 18385 active in order to make the combination work better at the user 18386 level but which aren't intended to be <quote>used</quote>. 18387 </para><para> 18388 18389 Note that CODEC drivers should not use this as sidetone type paths 18390 can frequently also be used as bypass paths. 18391</para> 18392</refsect1> 18393</refentry> 18394 18395<refentry id="API-snd-soc-dapm-new-widgets"> 18396<refentryinfo> 18397 <title>LINUX</title> 18398 <productname>Kernel Hackers Manual</productname> 18399 <date>July 2017</date> 18400</refentryinfo> 18401<refmeta> 18402 <refentrytitle><phrase>snd_soc_dapm_new_widgets</phrase></refentrytitle> 18403 <manvolnum>9</manvolnum> 18404 <refmiscinfo class="version">4.4.14</refmiscinfo> 18405</refmeta> 18406<refnamediv> 18407 <refname>snd_soc_dapm_new_widgets</refname> 18408 <refpurpose> 18409 add new dapm widgets 18410 </refpurpose> 18411</refnamediv> 18412<refsynopsisdiv> 18413 <title>Synopsis</title> 18414 <funcsynopsis><funcprototype> 18415 <funcdef>int <function>snd_soc_dapm_new_widgets </function></funcdef> 18416 <paramdef>struct snd_soc_card * <parameter>card</parameter></paramdef> 18417 </funcprototype></funcsynopsis> 18418</refsynopsisdiv> 18419<refsect1> 18420 <title>Arguments</title> 18421 <variablelist> 18422 <varlistentry> 18423 <term><parameter>card</parameter></term> 18424 <listitem> 18425 <para> 18426 card to be checked for new dapm widgets 18427 </para> 18428 </listitem> 18429 </varlistentry> 18430 </variablelist> 18431</refsect1> 18432<refsect1> 18433<title>Description</title> 18434<para> 18435 Checks the codec for any new dapm widgets and creates them if found. 18436 </para><para> 18437 18438 Returns 0 for success. 18439</para> 18440</refsect1> 18441</refentry> 18442 18443<refentry id="API-snd-soc-dapm-get-volsw"> 18444<refentryinfo> 18445 <title>LINUX</title> 18446 <productname>Kernel Hackers Manual</productname> 18447 <date>July 2017</date> 18448</refentryinfo> 18449<refmeta> 18450 <refentrytitle><phrase>snd_soc_dapm_get_volsw</phrase></refentrytitle> 18451 <manvolnum>9</manvolnum> 18452 <refmiscinfo class="version">4.4.14</refmiscinfo> 18453</refmeta> 18454<refnamediv> 18455 <refname>snd_soc_dapm_get_volsw</refname> 18456 <refpurpose> 18457 dapm mixer get callback 18458 </refpurpose> 18459</refnamediv> 18460<refsynopsisdiv> 18461 <title>Synopsis</title> 18462 <funcsynopsis><funcprototype> 18463 <funcdef>int <function>snd_soc_dapm_get_volsw </function></funcdef> 18464 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18465 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 18466 </funcprototype></funcsynopsis> 18467</refsynopsisdiv> 18468<refsect1> 18469 <title>Arguments</title> 18470 <variablelist> 18471 <varlistentry> 18472 <term><parameter>kcontrol</parameter></term> 18473 <listitem> 18474 <para> 18475 mixer control 18476 </para> 18477 </listitem> 18478 </varlistentry> 18479 <varlistentry> 18480 <term><parameter>ucontrol</parameter></term> 18481 <listitem> 18482 <para> 18483 control element information 18484 </para> 18485 </listitem> 18486 </varlistentry> 18487 </variablelist> 18488</refsect1> 18489<refsect1> 18490<title>Description</title> 18491<para> 18492 Callback to get the value of a dapm mixer control. 18493 </para><para> 18494 18495 Returns 0 for success. 18496</para> 18497</refsect1> 18498</refentry> 18499 18500<refentry id="API-snd-soc-dapm-put-volsw"> 18501<refentryinfo> 18502 <title>LINUX</title> 18503 <productname>Kernel Hackers Manual</productname> 18504 <date>July 2017</date> 18505</refentryinfo> 18506<refmeta> 18507 <refentrytitle><phrase>snd_soc_dapm_put_volsw</phrase></refentrytitle> 18508 <manvolnum>9</manvolnum> 18509 <refmiscinfo class="version">4.4.14</refmiscinfo> 18510</refmeta> 18511<refnamediv> 18512 <refname>snd_soc_dapm_put_volsw</refname> 18513 <refpurpose> 18514 dapm mixer set callback 18515 </refpurpose> 18516</refnamediv> 18517<refsynopsisdiv> 18518 <title>Synopsis</title> 18519 <funcsynopsis><funcprototype> 18520 <funcdef>int <function>snd_soc_dapm_put_volsw </function></funcdef> 18521 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18522 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 18523 </funcprototype></funcsynopsis> 18524</refsynopsisdiv> 18525<refsect1> 18526 <title>Arguments</title> 18527 <variablelist> 18528 <varlistentry> 18529 <term><parameter>kcontrol</parameter></term> 18530 <listitem> 18531 <para> 18532 mixer control 18533 </para> 18534 </listitem> 18535 </varlistentry> 18536 <varlistentry> 18537 <term><parameter>ucontrol</parameter></term> 18538 <listitem> 18539 <para> 18540 control element information 18541 </para> 18542 </listitem> 18543 </varlistentry> 18544 </variablelist> 18545</refsect1> 18546<refsect1> 18547<title>Description</title> 18548<para> 18549 Callback to set the value of a dapm mixer control. 18550 </para><para> 18551 18552 Returns 0 for success. 18553</para> 18554</refsect1> 18555</refentry> 18556 18557<refentry id="API-snd-soc-dapm-get-enum-double"> 18558<refentryinfo> 18559 <title>LINUX</title> 18560 <productname>Kernel Hackers Manual</productname> 18561 <date>July 2017</date> 18562</refentryinfo> 18563<refmeta> 18564 <refentrytitle><phrase>snd_soc_dapm_get_enum_double</phrase></refentrytitle> 18565 <manvolnum>9</manvolnum> 18566 <refmiscinfo class="version">4.4.14</refmiscinfo> 18567</refmeta> 18568<refnamediv> 18569 <refname>snd_soc_dapm_get_enum_double</refname> 18570 <refpurpose> 18571 dapm enumerated double mixer get callback 18572 </refpurpose> 18573</refnamediv> 18574<refsynopsisdiv> 18575 <title>Synopsis</title> 18576 <funcsynopsis><funcprototype> 18577 <funcdef>int <function>snd_soc_dapm_get_enum_double </function></funcdef> 18578 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18579 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 18580 </funcprototype></funcsynopsis> 18581</refsynopsisdiv> 18582<refsect1> 18583 <title>Arguments</title> 18584 <variablelist> 18585 <varlistentry> 18586 <term><parameter>kcontrol</parameter></term> 18587 <listitem> 18588 <para> 18589 mixer control 18590 </para> 18591 </listitem> 18592 </varlistentry> 18593 <varlistentry> 18594 <term><parameter>ucontrol</parameter></term> 18595 <listitem> 18596 <para> 18597 control element information 18598 </para> 18599 </listitem> 18600 </varlistentry> 18601 </variablelist> 18602</refsect1> 18603<refsect1> 18604<title>Description</title> 18605<para> 18606 Callback to get the value of a dapm enumerated double mixer control. 18607 </para><para> 18608 18609 Returns 0 for success. 18610</para> 18611</refsect1> 18612</refentry> 18613 18614<refentry id="API-snd-soc-dapm-put-enum-double"> 18615<refentryinfo> 18616 <title>LINUX</title> 18617 <productname>Kernel Hackers Manual</productname> 18618 <date>July 2017</date> 18619</refentryinfo> 18620<refmeta> 18621 <refentrytitle><phrase>snd_soc_dapm_put_enum_double</phrase></refentrytitle> 18622 <manvolnum>9</manvolnum> 18623 <refmiscinfo class="version">4.4.14</refmiscinfo> 18624</refmeta> 18625<refnamediv> 18626 <refname>snd_soc_dapm_put_enum_double</refname> 18627 <refpurpose> 18628 dapm enumerated double mixer set callback 18629 </refpurpose> 18630</refnamediv> 18631<refsynopsisdiv> 18632 <title>Synopsis</title> 18633 <funcsynopsis><funcprototype> 18634 <funcdef>int <function>snd_soc_dapm_put_enum_double </function></funcdef> 18635 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18636 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 18637 </funcprototype></funcsynopsis> 18638</refsynopsisdiv> 18639<refsect1> 18640 <title>Arguments</title> 18641 <variablelist> 18642 <varlistentry> 18643 <term><parameter>kcontrol</parameter></term> 18644 <listitem> 18645 <para> 18646 mixer control 18647 </para> 18648 </listitem> 18649 </varlistentry> 18650 <varlistentry> 18651 <term><parameter>ucontrol</parameter></term> 18652 <listitem> 18653 <para> 18654 control element information 18655 </para> 18656 </listitem> 18657 </varlistentry> 18658 </variablelist> 18659</refsect1> 18660<refsect1> 18661<title>Description</title> 18662<para> 18663 Callback to set the value of a dapm enumerated double mixer control. 18664 </para><para> 18665 18666 Returns 0 for success. 18667</para> 18668</refsect1> 18669</refentry> 18670 18671<refentry id="API-snd-soc-dapm-info-pin-switch"> 18672<refentryinfo> 18673 <title>LINUX</title> 18674 <productname>Kernel Hackers Manual</productname> 18675 <date>July 2017</date> 18676</refentryinfo> 18677<refmeta> 18678 <refentrytitle><phrase>snd_soc_dapm_info_pin_switch</phrase></refentrytitle> 18679 <manvolnum>9</manvolnum> 18680 <refmiscinfo class="version">4.4.14</refmiscinfo> 18681</refmeta> 18682<refnamediv> 18683 <refname>snd_soc_dapm_info_pin_switch</refname> 18684 <refpurpose> 18685 Info for a pin switch 18686 </refpurpose> 18687</refnamediv> 18688<refsynopsisdiv> 18689 <title>Synopsis</title> 18690 <funcsynopsis><funcprototype> 18691 <funcdef>int <function>snd_soc_dapm_info_pin_switch </function></funcdef> 18692 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18693 <paramdef>struct snd_ctl_elem_info * <parameter>uinfo</parameter></paramdef> 18694 </funcprototype></funcsynopsis> 18695</refsynopsisdiv> 18696<refsect1> 18697 <title>Arguments</title> 18698 <variablelist> 18699 <varlistentry> 18700 <term><parameter>kcontrol</parameter></term> 18701 <listitem> 18702 <para> 18703 mixer control 18704 </para> 18705 </listitem> 18706 </varlistentry> 18707 <varlistentry> 18708 <term><parameter>uinfo</parameter></term> 18709 <listitem> 18710 <para> 18711 control element information 18712 </para> 18713 </listitem> 18714 </varlistentry> 18715 </variablelist> 18716</refsect1> 18717<refsect1> 18718<title>Description</title> 18719<para> 18720 Callback to provide information about a pin switch control. 18721</para> 18722</refsect1> 18723</refentry> 18724 18725<refentry id="API-snd-soc-dapm-get-pin-switch"> 18726<refentryinfo> 18727 <title>LINUX</title> 18728 <productname>Kernel Hackers Manual</productname> 18729 <date>July 2017</date> 18730</refentryinfo> 18731<refmeta> 18732 <refentrytitle><phrase>snd_soc_dapm_get_pin_switch</phrase></refentrytitle> 18733 <manvolnum>9</manvolnum> 18734 <refmiscinfo class="version">4.4.14</refmiscinfo> 18735</refmeta> 18736<refnamediv> 18737 <refname>snd_soc_dapm_get_pin_switch</refname> 18738 <refpurpose> 18739 Get information for a pin switch 18740 </refpurpose> 18741</refnamediv> 18742<refsynopsisdiv> 18743 <title>Synopsis</title> 18744 <funcsynopsis><funcprototype> 18745 <funcdef>int <function>snd_soc_dapm_get_pin_switch </function></funcdef> 18746 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18747 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 18748 </funcprototype></funcsynopsis> 18749</refsynopsisdiv> 18750<refsect1> 18751 <title>Arguments</title> 18752 <variablelist> 18753 <varlistentry> 18754 <term><parameter>kcontrol</parameter></term> 18755 <listitem> 18756 <para> 18757 mixer control 18758 </para> 18759 </listitem> 18760 </varlistentry> 18761 <varlistentry> 18762 <term><parameter>ucontrol</parameter></term> 18763 <listitem> 18764 <para> 18765 Value 18766 </para> 18767 </listitem> 18768 </varlistentry> 18769 </variablelist> 18770</refsect1> 18771</refentry> 18772 18773<refentry id="API-snd-soc-dapm-put-pin-switch"> 18774<refentryinfo> 18775 <title>LINUX</title> 18776 <productname>Kernel Hackers Manual</productname> 18777 <date>July 2017</date> 18778</refentryinfo> 18779<refmeta> 18780 <refentrytitle><phrase>snd_soc_dapm_put_pin_switch</phrase></refentrytitle> 18781 <manvolnum>9</manvolnum> 18782 <refmiscinfo class="version">4.4.14</refmiscinfo> 18783</refmeta> 18784<refnamediv> 18785 <refname>snd_soc_dapm_put_pin_switch</refname> 18786 <refpurpose> 18787 Set information for a pin switch 18788 </refpurpose> 18789</refnamediv> 18790<refsynopsisdiv> 18791 <title>Synopsis</title> 18792 <funcsynopsis><funcprototype> 18793 <funcdef>int <function>snd_soc_dapm_put_pin_switch </function></funcdef> 18794 <paramdef>struct snd_kcontrol * <parameter>kcontrol</parameter></paramdef> 18795 <paramdef>struct snd_ctl_elem_value * <parameter>ucontrol</parameter></paramdef> 18796 </funcprototype></funcsynopsis> 18797</refsynopsisdiv> 18798<refsect1> 18799 <title>Arguments</title> 18800 <variablelist> 18801 <varlistentry> 18802 <term><parameter>kcontrol</parameter></term> 18803 <listitem> 18804 <para> 18805 mixer control 18806 </para> 18807 </listitem> 18808 </varlistentry> 18809 <varlistentry> 18810 <term><parameter>ucontrol</parameter></term> 18811 <listitem> 18812 <para> 18813 Value 18814 </para> 18815 </listitem> 18816 </varlistentry> 18817 </variablelist> 18818</refsect1> 18819</refentry> 18820 18821<refentry id="API-snd-soc-dapm-new-controls"> 18822<refentryinfo> 18823 <title>LINUX</title> 18824 <productname>Kernel Hackers Manual</productname> 18825 <date>July 2017</date> 18826</refentryinfo> 18827<refmeta> 18828 <refentrytitle><phrase>snd_soc_dapm_new_controls</phrase></refentrytitle> 18829 <manvolnum>9</manvolnum> 18830 <refmiscinfo class="version">4.4.14</refmiscinfo> 18831</refmeta> 18832<refnamediv> 18833 <refname>snd_soc_dapm_new_controls</refname> 18834 <refpurpose> 18835 create new dapm controls 18836 </refpurpose> 18837</refnamediv> 18838<refsynopsisdiv> 18839 <title>Synopsis</title> 18840 <funcsynopsis><funcprototype> 18841 <funcdef>int <function>snd_soc_dapm_new_controls </function></funcdef> 18842 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18843 <paramdef>const struct snd_soc_dapm_widget * <parameter>widget</parameter></paramdef> 18844 <paramdef>int <parameter>num</parameter></paramdef> 18845 </funcprototype></funcsynopsis> 18846</refsynopsisdiv> 18847<refsect1> 18848 <title>Arguments</title> 18849 <variablelist> 18850 <varlistentry> 18851 <term><parameter>dapm</parameter></term> 18852 <listitem> 18853 <para> 18854 DAPM context 18855 </para> 18856 </listitem> 18857 </varlistentry> 18858 <varlistentry> 18859 <term><parameter>widget</parameter></term> 18860 <listitem> 18861 <para> 18862 widget array 18863 </para> 18864 </listitem> 18865 </varlistentry> 18866 <varlistentry> 18867 <term><parameter>num</parameter></term> 18868 <listitem> 18869 <para> 18870 number of widgets 18871 </para> 18872 </listitem> 18873 </varlistentry> 18874 </variablelist> 18875</refsect1> 18876<refsect1> 18877<title>Description</title> 18878<para> 18879 Creates new DAPM controls based upon the templates. 18880 </para><para> 18881 18882 Returns 0 for success else error. 18883</para> 18884</refsect1> 18885</refentry> 18886 18887<refentry id="API-snd-soc-dapm-enable-pin-unlocked"> 18888<refentryinfo> 18889 <title>LINUX</title> 18890 <productname>Kernel Hackers Manual</productname> 18891 <date>July 2017</date> 18892</refentryinfo> 18893<refmeta> 18894 <refentrytitle><phrase>snd_soc_dapm_enable_pin_unlocked</phrase></refentrytitle> 18895 <manvolnum>9</manvolnum> 18896 <refmiscinfo class="version">4.4.14</refmiscinfo> 18897</refmeta> 18898<refnamediv> 18899 <refname>snd_soc_dapm_enable_pin_unlocked</refname> 18900 <refpurpose> 18901 enable pin. 18902 </refpurpose> 18903</refnamediv> 18904<refsynopsisdiv> 18905 <title>Synopsis</title> 18906 <funcsynopsis><funcprototype> 18907 <funcdef>int <function>snd_soc_dapm_enable_pin_unlocked </function></funcdef> 18908 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18909 <paramdef>const char * <parameter>pin</parameter></paramdef> 18910 </funcprototype></funcsynopsis> 18911</refsynopsisdiv> 18912<refsect1> 18913 <title>Arguments</title> 18914 <variablelist> 18915 <varlistentry> 18916 <term><parameter>dapm</parameter></term> 18917 <listitem> 18918 <para> 18919 DAPM context 18920 </para> 18921 </listitem> 18922 </varlistentry> 18923 <varlistentry> 18924 <term><parameter>pin</parameter></term> 18925 <listitem> 18926 <para> 18927 pin name 18928 </para> 18929 </listitem> 18930 </varlistentry> 18931 </variablelist> 18932</refsect1> 18933<refsect1> 18934<title>Description</title> 18935<para> 18936 Enables input/output pin and its parents or children widgets iff there is 18937 a valid audio route and active audio stream. 18938 </para><para> 18939 18940 Requires external locking. 18941</para> 18942</refsect1> 18943<refsect1> 18944<title>NOTE</title> 18945<para> 18946 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 18947 do any widget power switching. 18948</para> 18949</refsect1> 18950</refentry> 18951 18952<refentry id="API-snd-soc-dapm-enable-pin"> 18953<refentryinfo> 18954 <title>LINUX</title> 18955 <productname>Kernel Hackers Manual</productname> 18956 <date>July 2017</date> 18957</refentryinfo> 18958<refmeta> 18959 <refentrytitle><phrase>snd_soc_dapm_enable_pin</phrase></refentrytitle> 18960 <manvolnum>9</manvolnum> 18961 <refmiscinfo class="version">4.4.14</refmiscinfo> 18962</refmeta> 18963<refnamediv> 18964 <refname>snd_soc_dapm_enable_pin</refname> 18965 <refpurpose> 18966 enable pin. 18967 </refpurpose> 18968</refnamediv> 18969<refsynopsisdiv> 18970 <title>Synopsis</title> 18971 <funcsynopsis><funcprototype> 18972 <funcdef>int <function>snd_soc_dapm_enable_pin </function></funcdef> 18973 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 18974 <paramdef>const char * <parameter>pin</parameter></paramdef> 18975 </funcprototype></funcsynopsis> 18976</refsynopsisdiv> 18977<refsect1> 18978 <title>Arguments</title> 18979 <variablelist> 18980 <varlistentry> 18981 <term><parameter>dapm</parameter></term> 18982 <listitem> 18983 <para> 18984 DAPM context 18985 </para> 18986 </listitem> 18987 </varlistentry> 18988 <varlistentry> 18989 <term><parameter>pin</parameter></term> 18990 <listitem> 18991 <para> 18992 pin name 18993 </para> 18994 </listitem> 18995 </varlistentry> 18996 </variablelist> 18997</refsect1> 18998<refsect1> 18999<title>Description</title> 19000<para> 19001 Enables input/output pin and its parents or children widgets iff there is 19002 a valid audio route and active audio stream. 19003</para> 19004</refsect1> 19005<refsect1> 19006<title>NOTE</title> 19007<para> 19008 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19009 do any widget power switching. 19010</para> 19011</refsect1> 19012</refentry> 19013 19014<refentry id="API-snd-soc-dapm-force-enable-pin-unlocked"> 19015<refentryinfo> 19016 <title>LINUX</title> 19017 <productname>Kernel Hackers Manual</productname> 19018 <date>July 2017</date> 19019</refentryinfo> 19020<refmeta> 19021 <refentrytitle><phrase>snd_soc_dapm_force_enable_pin_unlocked</phrase></refentrytitle> 19022 <manvolnum>9</manvolnum> 19023 <refmiscinfo class="version">4.4.14</refmiscinfo> 19024</refmeta> 19025<refnamediv> 19026 <refname>snd_soc_dapm_force_enable_pin_unlocked</refname> 19027 <refpurpose> 19028 force a pin to be enabled 19029 </refpurpose> 19030</refnamediv> 19031<refsynopsisdiv> 19032 <title>Synopsis</title> 19033 <funcsynopsis><funcprototype> 19034 <funcdef>int <function>snd_soc_dapm_force_enable_pin_unlocked </function></funcdef> 19035 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19036 <paramdef>const char * <parameter>pin</parameter></paramdef> 19037 </funcprototype></funcsynopsis> 19038</refsynopsisdiv> 19039<refsect1> 19040 <title>Arguments</title> 19041 <variablelist> 19042 <varlistentry> 19043 <term><parameter>dapm</parameter></term> 19044 <listitem> 19045 <para> 19046 DAPM context 19047 </para> 19048 </listitem> 19049 </varlistentry> 19050 <varlistentry> 19051 <term><parameter>pin</parameter></term> 19052 <listitem> 19053 <para> 19054 pin name 19055 </para> 19056 </listitem> 19057 </varlistentry> 19058 </variablelist> 19059</refsect1> 19060<refsect1> 19061<title>Description</title> 19062<para> 19063 Enables input/output pin regardless of any other state. This is 19064 intended for use with microphone bias supplies used in microphone 19065 jack detection. 19066 </para><para> 19067 19068 Requires external locking. 19069</para> 19070</refsect1> 19071<refsect1> 19072<title>NOTE</title> 19073<para> 19074 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19075 do any widget power switching. 19076</para> 19077</refsect1> 19078</refentry> 19079 19080<refentry id="API-snd-soc-dapm-force-enable-pin"> 19081<refentryinfo> 19082 <title>LINUX</title> 19083 <productname>Kernel Hackers Manual</productname> 19084 <date>July 2017</date> 19085</refentryinfo> 19086<refmeta> 19087 <refentrytitle><phrase>snd_soc_dapm_force_enable_pin</phrase></refentrytitle> 19088 <manvolnum>9</manvolnum> 19089 <refmiscinfo class="version">4.4.14</refmiscinfo> 19090</refmeta> 19091<refnamediv> 19092 <refname>snd_soc_dapm_force_enable_pin</refname> 19093 <refpurpose> 19094 force a pin to be enabled 19095 </refpurpose> 19096</refnamediv> 19097<refsynopsisdiv> 19098 <title>Synopsis</title> 19099 <funcsynopsis><funcprototype> 19100 <funcdef>int <function>snd_soc_dapm_force_enable_pin </function></funcdef> 19101 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19102 <paramdef>const char * <parameter>pin</parameter></paramdef> 19103 </funcprototype></funcsynopsis> 19104</refsynopsisdiv> 19105<refsect1> 19106 <title>Arguments</title> 19107 <variablelist> 19108 <varlistentry> 19109 <term><parameter>dapm</parameter></term> 19110 <listitem> 19111 <para> 19112 DAPM context 19113 </para> 19114 </listitem> 19115 </varlistentry> 19116 <varlistentry> 19117 <term><parameter>pin</parameter></term> 19118 <listitem> 19119 <para> 19120 pin name 19121 </para> 19122 </listitem> 19123 </varlistentry> 19124 </variablelist> 19125</refsect1> 19126<refsect1> 19127<title>Description</title> 19128<para> 19129 Enables input/output pin regardless of any other state. This is 19130 intended for use with microphone bias supplies used in microphone 19131 jack detection. 19132</para> 19133</refsect1> 19134<refsect1> 19135<title>NOTE</title> 19136<para> 19137 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19138 do any widget power switching. 19139</para> 19140</refsect1> 19141</refentry> 19142 19143<refentry id="API-snd-soc-dapm-disable-pin-unlocked"> 19144<refentryinfo> 19145 <title>LINUX</title> 19146 <productname>Kernel Hackers Manual</productname> 19147 <date>July 2017</date> 19148</refentryinfo> 19149<refmeta> 19150 <refentrytitle><phrase>snd_soc_dapm_disable_pin_unlocked</phrase></refentrytitle> 19151 <manvolnum>9</manvolnum> 19152 <refmiscinfo class="version">4.4.14</refmiscinfo> 19153</refmeta> 19154<refnamediv> 19155 <refname>snd_soc_dapm_disable_pin_unlocked</refname> 19156 <refpurpose> 19157 disable pin. 19158 </refpurpose> 19159</refnamediv> 19160<refsynopsisdiv> 19161 <title>Synopsis</title> 19162 <funcsynopsis><funcprototype> 19163 <funcdef>int <function>snd_soc_dapm_disable_pin_unlocked </function></funcdef> 19164 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19165 <paramdef>const char * <parameter>pin</parameter></paramdef> 19166 </funcprototype></funcsynopsis> 19167</refsynopsisdiv> 19168<refsect1> 19169 <title>Arguments</title> 19170 <variablelist> 19171 <varlistentry> 19172 <term><parameter>dapm</parameter></term> 19173 <listitem> 19174 <para> 19175 DAPM context 19176 </para> 19177 </listitem> 19178 </varlistentry> 19179 <varlistentry> 19180 <term><parameter>pin</parameter></term> 19181 <listitem> 19182 <para> 19183 pin name 19184 </para> 19185 </listitem> 19186 </varlistentry> 19187 </variablelist> 19188</refsect1> 19189<refsect1> 19190<title>Description</title> 19191<para> 19192 Disables input/output pin and its parents or children widgets. 19193 </para><para> 19194 19195 Requires external locking. 19196</para> 19197</refsect1> 19198<refsect1> 19199<title>NOTE</title> 19200<para> 19201 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19202 do any widget power switching. 19203</para> 19204</refsect1> 19205</refentry> 19206 19207<refentry id="API-snd-soc-dapm-disable-pin"> 19208<refentryinfo> 19209 <title>LINUX</title> 19210 <productname>Kernel Hackers Manual</productname> 19211 <date>July 2017</date> 19212</refentryinfo> 19213<refmeta> 19214 <refentrytitle><phrase>snd_soc_dapm_disable_pin</phrase></refentrytitle> 19215 <manvolnum>9</manvolnum> 19216 <refmiscinfo class="version">4.4.14</refmiscinfo> 19217</refmeta> 19218<refnamediv> 19219 <refname>snd_soc_dapm_disable_pin</refname> 19220 <refpurpose> 19221 disable pin. 19222 </refpurpose> 19223</refnamediv> 19224<refsynopsisdiv> 19225 <title>Synopsis</title> 19226 <funcsynopsis><funcprototype> 19227 <funcdef>int <function>snd_soc_dapm_disable_pin </function></funcdef> 19228 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19229 <paramdef>const char * <parameter>pin</parameter></paramdef> 19230 </funcprototype></funcsynopsis> 19231</refsynopsisdiv> 19232<refsect1> 19233 <title>Arguments</title> 19234 <variablelist> 19235 <varlistentry> 19236 <term><parameter>dapm</parameter></term> 19237 <listitem> 19238 <para> 19239 DAPM context 19240 </para> 19241 </listitem> 19242 </varlistentry> 19243 <varlistentry> 19244 <term><parameter>pin</parameter></term> 19245 <listitem> 19246 <para> 19247 pin name 19248 </para> 19249 </listitem> 19250 </varlistentry> 19251 </variablelist> 19252</refsect1> 19253<refsect1> 19254<title>Description</title> 19255<para> 19256 Disables input/output pin and its parents or children widgets. 19257</para> 19258</refsect1> 19259<refsect1> 19260<title>NOTE</title> 19261<para> 19262 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19263 do any widget power switching. 19264</para> 19265</refsect1> 19266</refentry> 19267 19268<refentry id="API-snd-soc-dapm-nc-pin-unlocked"> 19269<refentryinfo> 19270 <title>LINUX</title> 19271 <productname>Kernel Hackers Manual</productname> 19272 <date>July 2017</date> 19273</refentryinfo> 19274<refmeta> 19275 <refentrytitle><phrase>snd_soc_dapm_nc_pin_unlocked</phrase></refentrytitle> 19276 <manvolnum>9</manvolnum> 19277 <refmiscinfo class="version">4.4.14</refmiscinfo> 19278</refmeta> 19279<refnamediv> 19280 <refname>snd_soc_dapm_nc_pin_unlocked</refname> 19281 <refpurpose> 19282 permanently disable pin. 19283 </refpurpose> 19284</refnamediv> 19285<refsynopsisdiv> 19286 <title>Synopsis</title> 19287 <funcsynopsis><funcprototype> 19288 <funcdef>int <function>snd_soc_dapm_nc_pin_unlocked </function></funcdef> 19289 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19290 <paramdef>const char * <parameter>pin</parameter></paramdef> 19291 </funcprototype></funcsynopsis> 19292</refsynopsisdiv> 19293<refsect1> 19294 <title>Arguments</title> 19295 <variablelist> 19296 <varlistentry> 19297 <term><parameter>dapm</parameter></term> 19298 <listitem> 19299 <para> 19300 DAPM context 19301 </para> 19302 </listitem> 19303 </varlistentry> 19304 <varlistentry> 19305 <term><parameter>pin</parameter></term> 19306 <listitem> 19307 <para> 19308 pin name 19309 </para> 19310 </listitem> 19311 </varlistentry> 19312 </variablelist> 19313</refsect1> 19314<refsect1> 19315<title>Description</title> 19316<para> 19317 Marks the specified pin as being not connected, disabling it along 19318 any parent or child widgets. At present this is identical to 19319 <function>snd_soc_dapm_disable_pin</function> but in future it will be extended to do 19320 additional things such as disabling controls which only affect 19321 paths through the pin. 19322 </para><para> 19323 19324 Requires external locking. 19325</para> 19326</refsect1> 19327<refsect1> 19328<title>NOTE</title> 19329<para> 19330 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19331 do any widget power switching. 19332</para> 19333</refsect1> 19334</refentry> 19335 19336<refentry id="API-snd-soc-dapm-nc-pin"> 19337<refentryinfo> 19338 <title>LINUX</title> 19339 <productname>Kernel Hackers Manual</productname> 19340 <date>July 2017</date> 19341</refentryinfo> 19342<refmeta> 19343 <refentrytitle><phrase>snd_soc_dapm_nc_pin</phrase></refentrytitle> 19344 <manvolnum>9</manvolnum> 19345 <refmiscinfo class="version">4.4.14</refmiscinfo> 19346</refmeta> 19347<refnamediv> 19348 <refname>snd_soc_dapm_nc_pin</refname> 19349 <refpurpose> 19350 permanently disable pin. 19351 </refpurpose> 19352</refnamediv> 19353<refsynopsisdiv> 19354 <title>Synopsis</title> 19355 <funcsynopsis><funcprototype> 19356 <funcdef>int <function>snd_soc_dapm_nc_pin </function></funcdef> 19357 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19358 <paramdef>const char * <parameter>pin</parameter></paramdef> 19359 </funcprototype></funcsynopsis> 19360</refsynopsisdiv> 19361<refsect1> 19362 <title>Arguments</title> 19363 <variablelist> 19364 <varlistentry> 19365 <term><parameter>dapm</parameter></term> 19366 <listitem> 19367 <para> 19368 DAPM context 19369 </para> 19370 </listitem> 19371 </varlistentry> 19372 <varlistentry> 19373 <term><parameter>pin</parameter></term> 19374 <listitem> 19375 <para> 19376 pin name 19377 </para> 19378 </listitem> 19379 </varlistentry> 19380 </variablelist> 19381</refsect1> 19382<refsect1> 19383<title>Description</title> 19384<para> 19385 Marks the specified pin as being not connected, disabling it along 19386 any parent or child widgets. At present this is identical to 19387 <function>snd_soc_dapm_disable_pin</function> but in future it will be extended to do 19388 additional things such as disabling controls which only affect 19389 paths through the pin. 19390</para> 19391</refsect1> 19392<refsect1> 19393<title>NOTE</title> 19394<para> 19395 <function>snd_soc_dapm_sync</function> needs to be called after this for DAPM to 19396 do any widget power switching. 19397</para> 19398</refsect1> 19399</refentry> 19400 19401<refentry id="API-snd-soc-dapm-get-pin-status"> 19402<refentryinfo> 19403 <title>LINUX</title> 19404 <productname>Kernel Hackers Manual</productname> 19405 <date>July 2017</date> 19406</refentryinfo> 19407<refmeta> 19408 <refentrytitle><phrase>snd_soc_dapm_get_pin_status</phrase></refentrytitle> 19409 <manvolnum>9</manvolnum> 19410 <refmiscinfo class="version">4.4.14</refmiscinfo> 19411</refmeta> 19412<refnamediv> 19413 <refname>snd_soc_dapm_get_pin_status</refname> 19414 <refpurpose> 19415 get audio pin status 19416 </refpurpose> 19417</refnamediv> 19418<refsynopsisdiv> 19419 <title>Synopsis</title> 19420 <funcsynopsis><funcprototype> 19421 <funcdef>int <function>snd_soc_dapm_get_pin_status </function></funcdef> 19422 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19423 <paramdef>const char * <parameter>pin</parameter></paramdef> 19424 </funcprototype></funcsynopsis> 19425</refsynopsisdiv> 19426<refsect1> 19427 <title>Arguments</title> 19428 <variablelist> 19429 <varlistentry> 19430 <term><parameter>dapm</parameter></term> 19431 <listitem> 19432 <para> 19433 DAPM context 19434 </para> 19435 </listitem> 19436 </varlistentry> 19437 <varlistentry> 19438 <term><parameter>pin</parameter></term> 19439 <listitem> 19440 <para> 19441 audio signal pin endpoint (or start point) 19442 </para> 19443 </listitem> 19444 </varlistentry> 19445 </variablelist> 19446</refsect1> 19447<refsect1> 19448<title>Description</title> 19449<para> 19450 Get audio pin status - connected or disconnected. 19451 </para><para> 19452 19453 Returns 1 for connected otherwise 0. 19454</para> 19455</refsect1> 19456</refentry> 19457 19458<refentry id="API-snd-soc-dapm-ignore-suspend"> 19459<refentryinfo> 19460 <title>LINUX</title> 19461 <productname>Kernel Hackers Manual</productname> 19462 <date>July 2017</date> 19463</refentryinfo> 19464<refmeta> 19465 <refentrytitle><phrase>snd_soc_dapm_ignore_suspend</phrase></refentrytitle> 19466 <manvolnum>9</manvolnum> 19467 <refmiscinfo class="version">4.4.14</refmiscinfo> 19468</refmeta> 19469<refnamediv> 19470 <refname>snd_soc_dapm_ignore_suspend</refname> 19471 <refpurpose> 19472 ignore suspend status for DAPM endpoint 19473 </refpurpose> 19474</refnamediv> 19475<refsynopsisdiv> 19476 <title>Synopsis</title> 19477 <funcsynopsis><funcprototype> 19478 <funcdef>int <function>snd_soc_dapm_ignore_suspend </function></funcdef> 19479 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19480 <paramdef>const char * <parameter>pin</parameter></paramdef> 19481 </funcprototype></funcsynopsis> 19482</refsynopsisdiv> 19483<refsect1> 19484 <title>Arguments</title> 19485 <variablelist> 19486 <varlistentry> 19487 <term><parameter>dapm</parameter></term> 19488 <listitem> 19489 <para> 19490 DAPM context 19491 </para> 19492 </listitem> 19493 </varlistentry> 19494 <varlistentry> 19495 <term><parameter>pin</parameter></term> 19496 <listitem> 19497 <para> 19498 audio signal pin endpoint (or start point) 19499 </para> 19500 </listitem> 19501 </varlistentry> 19502 </variablelist> 19503</refsect1> 19504<refsect1> 19505<title>Description</title> 19506<para> 19507 Mark the given endpoint or pin as ignoring suspend. When the 19508 system is disabled a path between two endpoints flagged as ignoring 19509 suspend will not be disabled. The path must already be enabled via 19510 normal means at suspend time, it will not be turned on if it was not 19511 already enabled. 19512</para> 19513</refsect1> 19514</refentry> 19515 19516<refentry id="API-snd-soc-dapm-free"> 19517<refentryinfo> 19518 <title>LINUX</title> 19519 <productname>Kernel Hackers Manual</productname> 19520 <date>July 2017</date> 19521</refentryinfo> 19522<refmeta> 19523 <refentrytitle><phrase>snd_soc_dapm_free</phrase></refentrytitle> 19524 <manvolnum>9</manvolnum> 19525 <refmiscinfo class="version">4.4.14</refmiscinfo> 19526</refmeta> 19527<refnamediv> 19528 <refname>snd_soc_dapm_free</refname> 19529 <refpurpose> 19530 free dapm resources 19531 </refpurpose> 19532</refnamediv> 19533<refsynopsisdiv> 19534 <title>Synopsis</title> 19535 <funcsynopsis><funcprototype> 19536 <funcdef>void <function>snd_soc_dapm_free </function></funcdef> 19537 <paramdef>struct snd_soc_dapm_context * <parameter>dapm</parameter></paramdef> 19538 </funcprototype></funcsynopsis> 19539</refsynopsisdiv> 19540<refsect1> 19541 <title>Arguments</title> 19542 <variablelist> 19543 <varlistentry> 19544 <term><parameter>dapm</parameter></term> 19545 <listitem> 19546 <para> 19547 DAPM context 19548 </para> 19549 </listitem> 19550 </varlistentry> 19551 </variablelist> 19552</refsect1> 19553<refsect1> 19554<title>Description</title> 19555<para> 19556 Free all dapm widgets and resources. 19557</para> 19558</refsect1> 19559</refentry> 19560 19561 </sect1> 19562 <sect1><title>ASoC DMA Engine API</title> 19563<!-- sound/soc/soc-generic-dmaengine-pcm.c --> 19564<refentry id="API-snd-dmaengine-pcm-prepare-slave-config"> 19565<refentryinfo> 19566 <title>LINUX</title> 19567 <productname>Kernel Hackers Manual</productname> 19568 <date>July 2017</date> 19569</refentryinfo> 19570<refmeta> 19571 <refentrytitle><phrase>snd_dmaengine_pcm_prepare_slave_config</phrase></refentrytitle> 19572 <manvolnum>9</manvolnum> 19573 <refmiscinfo class="version">4.4.14</refmiscinfo> 19574</refmeta> 19575<refnamediv> 19576 <refname>snd_dmaengine_pcm_prepare_slave_config</refname> 19577 <refpurpose> 19578 Generic prepare_slave_config callback 19579 </refpurpose> 19580</refnamediv> 19581<refsynopsisdiv> 19582 <title>Synopsis</title> 19583 <funcsynopsis><funcprototype> 19584 <funcdef>int <function>snd_dmaengine_pcm_prepare_slave_config </function></funcdef> 19585 <paramdef>struct snd_pcm_substream * <parameter>substream</parameter></paramdef> 19586 <paramdef>struct snd_pcm_hw_params * <parameter>params</parameter></paramdef> 19587 <paramdef>struct dma_slave_config * <parameter>slave_config</parameter></paramdef> 19588 </funcprototype></funcsynopsis> 19589</refsynopsisdiv> 19590<refsect1> 19591 <title>Arguments</title> 19592 <variablelist> 19593 <varlistentry> 19594 <term><parameter>substream</parameter></term> 19595 <listitem> 19596 <para> 19597 PCM substream 19598 </para> 19599 </listitem> 19600 </varlistentry> 19601 <varlistentry> 19602 <term><parameter>params</parameter></term> 19603 <listitem> 19604 <para> 19605 hw_params 19606 </para> 19607 </listitem> 19608 </varlistentry> 19609 <varlistentry> 19610 <term><parameter>slave_config</parameter></term> 19611 <listitem> 19612 <para> 19613 DMA slave config to prepare 19614 </para> 19615 </listitem> 19616 </varlistentry> 19617 </variablelist> 19618</refsect1> 19619<refsect1> 19620<title>Description</title> 19621<para> 19622 This function can be used as a generic prepare_slave_config callback for 19623 platforms which make use of the snd_dmaengine_dai_dma_data struct for their 19624 DAI DMA data. Internally the function will first call 19625 snd_hwparams_to_dma_slave_config to fill in the slave config based on the 19626 hw_params, followed by snd_dmaengine_set_config_from_dai_data to fill in the 19627 remaining fields based on the DAI DMA data. 19628</para> 19629</refsect1> 19630</refentry> 19631 19632<refentry id="API-snd-dmaengine-pcm-register"> 19633<refentryinfo> 19634 <title>LINUX</title> 19635 <productname>Kernel Hackers Manual</productname> 19636 <date>July 2017</date> 19637</refentryinfo> 19638<refmeta> 19639 <refentrytitle><phrase>snd_dmaengine_pcm_register</phrase></refentrytitle> 19640 <manvolnum>9</manvolnum> 19641 <refmiscinfo class="version">4.4.14</refmiscinfo> 19642</refmeta> 19643<refnamediv> 19644 <refname>snd_dmaengine_pcm_register</refname> 19645 <refpurpose> 19646 Register a dmaengine based PCM device 19647 </refpurpose> 19648</refnamediv> 19649<refsynopsisdiv> 19650 <title>Synopsis</title> 19651 <funcsynopsis><funcprototype> 19652 <funcdef>int <function>snd_dmaengine_pcm_register </function></funcdef> 19653 <paramdef>struct device * <parameter>dev</parameter></paramdef> 19654 <paramdef>const struct snd_dmaengine_pcm_config * <parameter>config</parameter></paramdef> 19655 <paramdef>unsigned int <parameter>flags</parameter></paramdef> 19656 </funcprototype></funcsynopsis> 19657</refsynopsisdiv> 19658<refsect1> 19659 <title>Arguments</title> 19660 <variablelist> 19661 <varlistentry> 19662 <term><parameter>dev</parameter></term> 19663 <listitem> 19664 <para> 19665 The parent device for the PCM device 19666 </para> 19667 </listitem> 19668 </varlistentry> 19669 <varlistentry> 19670 <term><parameter>config</parameter></term> 19671 <listitem> 19672 <para> 19673 Platform specific PCM configuration 19674 </para> 19675 </listitem> 19676 </varlistentry> 19677 <varlistentry> 19678 <term><parameter>flags</parameter></term> 19679 <listitem> 19680 <para> 19681 Platform specific quirks 19682 </para> 19683 </listitem> 19684 </varlistentry> 19685 </variablelist> 19686</refsect1> 19687</refentry> 19688 19689<refentry id="API-snd-dmaengine-pcm-unregister"> 19690<refentryinfo> 19691 <title>LINUX</title> 19692 <productname>Kernel Hackers Manual</productname> 19693 <date>July 2017</date> 19694</refentryinfo> 19695<refmeta> 19696 <refentrytitle><phrase>snd_dmaengine_pcm_unregister</phrase></refentrytitle> 19697 <manvolnum>9</manvolnum> 19698 <refmiscinfo class="version">4.4.14</refmiscinfo> 19699</refmeta> 19700<refnamediv> 19701 <refname>snd_dmaengine_pcm_unregister</refname> 19702 <refpurpose> 19703 Removes a dmaengine based PCM device 19704 </refpurpose> 19705</refnamediv> 19706<refsynopsisdiv> 19707 <title>Synopsis</title> 19708 <funcsynopsis><funcprototype> 19709 <funcdef>void <function>snd_dmaengine_pcm_unregister </function></funcdef> 19710 <paramdef>struct device * <parameter>dev</parameter></paramdef> 19711 </funcprototype></funcsynopsis> 19712</refsynopsisdiv> 19713<refsect1> 19714 <title>Arguments</title> 19715 <variablelist> 19716 <varlistentry> 19717 <term><parameter>dev</parameter></term> 19718 <listitem> 19719 <para> 19720 Parent device the PCM was register with 19721 </para> 19722 </listitem> 19723 </varlistentry> 19724 </variablelist> 19725</refsect1> 19726<refsect1> 19727<title>Description</title> 19728<para> 19729 Removes a dmaengine based PCM device previously registered with 19730 snd_dmaengine_pcm_register. 19731</para> 19732</refsect1> 19733</refentry> 19734 19735 </sect1> 19736 </chapter> 19737 <chapter><title>Miscellaneous Functions</title> 19738 <sect1><title>Hardware-Dependent Devices API</title> 19739<!-- sound/core/hwdep.c --> 19740<refentry id="API-snd-hwdep-new"> 19741<refentryinfo> 19742 <title>LINUX</title> 19743 <productname>Kernel Hackers Manual</productname> 19744 <date>July 2017</date> 19745</refentryinfo> 19746<refmeta> 19747 <refentrytitle><phrase>snd_hwdep_new</phrase></refentrytitle> 19748 <manvolnum>9</manvolnum> 19749 <refmiscinfo class="version">4.4.14</refmiscinfo> 19750</refmeta> 19751<refnamediv> 19752 <refname>snd_hwdep_new</refname> 19753 <refpurpose> 19754 create a new hwdep instance 19755 </refpurpose> 19756</refnamediv> 19757<refsynopsisdiv> 19758 <title>Synopsis</title> 19759 <funcsynopsis><funcprototype> 19760 <funcdef>int <function>snd_hwdep_new </function></funcdef> 19761 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 19762 <paramdef>char * <parameter>id</parameter></paramdef> 19763 <paramdef>int <parameter>device</parameter></paramdef> 19764 <paramdef>struct snd_hwdep ** <parameter>rhwdep</parameter></paramdef> 19765 </funcprototype></funcsynopsis> 19766</refsynopsisdiv> 19767<refsect1> 19768 <title>Arguments</title> 19769 <variablelist> 19770 <varlistentry> 19771 <term><parameter>card</parameter></term> 19772 <listitem> 19773 <para> 19774 the card instance 19775 </para> 19776 </listitem> 19777 </varlistentry> 19778 <varlistentry> 19779 <term><parameter>id</parameter></term> 19780 <listitem> 19781 <para> 19782 the id string 19783 </para> 19784 </listitem> 19785 </varlistentry> 19786 <varlistentry> 19787 <term><parameter>device</parameter></term> 19788 <listitem> 19789 <para> 19790 the device index (zero-based) 19791 </para> 19792 </listitem> 19793 </varlistentry> 19794 <varlistentry> 19795 <term><parameter>rhwdep</parameter></term> 19796 <listitem> 19797 <para> 19798 the pointer to store the new hwdep instance 19799 </para> 19800 </listitem> 19801 </varlistentry> 19802 </variablelist> 19803</refsect1> 19804<refsect1> 19805<title>Description</title> 19806<para> 19807 Creates a new hwdep instance with the given index on the card. 19808 The callbacks (hwdep->ops) must be set on the returned instance 19809 after this call manually by the caller. 19810</para> 19811</refsect1> 19812<refsect1> 19813<title>Return</title> 19814<para> 19815 Zero if successful, or a negative error code on failure. 19816</para> 19817</refsect1> 19818</refentry> 19819 19820 </sect1> 19821 <sect1><title>Jack Abstraction Layer API</title> 19822<!-- include/sound/jack.h --> 19823<refentry id="API-enum-snd-jack-types"> 19824<refentryinfo> 19825 <title>LINUX</title> 19826 <productname>Kernel Hackers Manual</productname> 19827 <date>July 2017</date> 19828</refentryinfo> 19829<refmeta> 19830 <refentrytitle><phrase>enum snd_jack_types</phrase></refentrytitle> 19831 <manvolnum>9</manvolnum> 19832 <refmiscinfo class="version">4.4.14</refmiscinfo> 19833</refmeta> 19834<refnamediv> 19835 <refname>enum snd_jack_types</refname> 19836 <refpurpose> 19837 Jack types which can be reported 19838 </refpurpose> 19839</refnamediv> 19840<refsynopsisdiv> 19841 <title>Synopsis</title> 19842 <programlisting> 19843enum snd_jack_types { 19844 SND_JACK_HEADPHONE, 19845 SND_JACK_MICROPHONE, 19846 SND_JACK_HEADSET, 19847 SND_JACK_LINEOUT, 19848 SND_JACK_MECHANICAL, 19849 SND_JACK_VIDEOOUT, 19850 SND_JACK_AVOUT, 19851 SND_JACK_LINEIN, 19852 SND_JACK_BTN_0, 19853 SND_JACK_BTN_1, 19854 SND_JACK_BTN_2, 19855 SND_JACK_BTN_3, 19856 SND_JACK_BTN_4, 19857 SND_JACK_BTN_5 19858}; </programlisting> 19859</refsynopsisdiv> 19860<refsect1> 19861 <title>Constants</title> 19862 <variablelist> 19863 <varlistentry> <term>SND_JACK_HEADPHONE</term> 19864 <listitem><para> 19865Headphone 19866 </para></listitem> 19867 </varlistentry> 19868 <varlistentry> <term>SND_JACK_MICROPHONE</term> 19869 <listitem><para> 19870Microphone 19871 </para></listitem> 19872 </varlistentry> 19873 <varlistentry> <term>SND_JACK_HEADSET</term> 19874 <listitem><para> 19875Headset 19876 </para></listitem> 19877 </varlistentry> 19878 <varlistentry> <term>SND_JACK_LINEOUT</term> 19879 <listitem><para> 19880Line out 19881 </para></listitem> 19882 </varlistentry> 19883 <varlistentry> <term>SND_JACK_MECHANICAL</term> 19884 <listitem><para> 19885Mechanical switch 19886 </para></listitem> 19887 </varlistentry> 19888 <varlistentry> <term>SND_JACK_VIDEOOUT</term> 19889 <listitem><para> 19890Video out 19891 </para></listitem> 19892 </varlistentry> 19893 <varlistentry> <term>SND_JACK_AVOUT</term> 19894 <listitem><para> 19895AV (Audio Video) out 19896 </para></listitem> 19897 </varlistentry> 19898 <varlistentry> <term>SND_JACK_LINEIN</term> 19899 <listitem><para> 19900Line in 19901 </para></listitem> 19902 </varlistentry> 19903 <varlistentry> <term>SND_JACK_BTN_0</term> 19904 <listitem><para> 19905Button 0 19906 </para></listitem> 19907 </varlistentry> 19908 <varlistentry> <term>SND_JACK_BTN_1</term> 19909 <listitem><para> 19910Button 1 19911 </para></listitem> 19912 </varlistentry> 19913 <varlistentry> <term>SND_JACK_BTN_2</term> 19914 <listitem><para> 19915Button 2 19916 </para></listitem> 19917 </varlistentry> 19918 <varlistentry> <term>SND_JACK_BTN_3</term> 19919 <listitem><para> 19920Button 3 19921 </para></listitem> 19922 </varlistentry> 19923 <varlistentry> <term>SND_JACK_BTN_4</term> 19924 <listitem><para> 19925Button 4 19926 </para></listitem> 19927 </varlistentry> 19928 <varlistentry> <term>SND_JACK_BTN_5</term> 19929 <listitem><para> 19930Button 5 19931 </para></listitem> 19932 </varlistentry> 19933 </variablelist> 19934</refsect1> 19935<refsect1> 19936<title>Description</title> 19937<para> 19938 These values are used as a bitmask. 19939 </para><para> 19940 19941 Note that this must be kept in sync with the lookup table in 19942 sound/core/jack.c. 19943</para> 19944</refsect1> 19945</refentry> 19946 19947<!-- sound/core/jack.c --> 19948<refentry id="API-snd-jack-add-new-kctl"> 19949<refentryinfo> 19950 <title>LINUX</title> 19951 <productname>Kernel Hackers Manual</productname> 19952 <date>July 2017</date> 19953</refentryinfo> 19954<refmeta> 19955 <refentrytitle><phrase>snd_jack_add_new_kctl</phrase></refentrytitle> 19956 <manvolnum>9</manvolnum> 19957 <refmiscinfo class="version">4.4.14</refmiscinfo> 19958</refmeta> 19959<refnamediv> 19960 <refname>snd_jack_add_new_kctl</refname> 19961 <refpurpose> 19962 Create a new snd_jack_kctl and add it to jack 19963 </refpurpose> 19964</refnamediv> 19965<refsynopsisdiv> 19966 <title>Synopsis</title> 19967 <funcsynopsis><funcprototype> 19968 <funcdef>int <function>snd_jack_add_new_kctl </function></funcdef> 19969 <paramdef>struct snd_jack * <parameter>jack</parameter></paramdef> 19970 <paramdef>const char * <parameter>name</parameter></paramdef> 19971 <paramdef>int <parameter>mask</parameter></paramdef> 19972 </funcprototype></funcsynopsis> 19973</refsynopsisdiv> 19974<refsect1> 19975 <title>Arguments</title> 19976 <variablelist> 19977 <varlistentry> 19978 <term><parameter>jack</parameter></term> 19979 <listitem> 19980 <para> 19981 the jack instance which the kctl will attaching to 19982 </para> 19983 </listitem> 19984 </varlistentry> 19985 <varlistentry> 19986 <term><parameter>name</parameter></term> 19987 <listitem> 19988 <para> 19989 the name for the snd_kcontrol object 19990 </para> 19991 </listitem> 19992 </varlistentry> 19993 <varlistentry> 19994 <term><parameter>mask</parameter></term> 19995 <listitem> 19996 <para> 19997 a bitmask of enum snd_jack_type values that can be detected 19998 by this snd_jack_kctl object. 19999 </para> 20000 </listitem> 20001 </varlistentry> 20002 </variablelist> 20003</refsect1> 20004<refsect1> 20005<title>Description</title> 20006<para> 20007 Creates a new snd_kcontrol object and adds it to the jack kctl_list. 20008</para> 20009</refsect1> 20010<refsect1> 20011<title>Return</title> 20012<para> 20013 Zero if successful, or a negative error code on failure. 20014</para> 20015</refsect1> 20016</refentry> 20017 20018<refentry id="API-snd-jack-new"> 20019<refentryinfo> 20020 <title>LINUX</title> 20021 <productname>Kernel Hackers Manual</productname> 20022 <date>July 2017</date> 20023</refentryinfo> 20024<refmeta> 20025 <refentrytitle><phrase>snd_jack_new</phrase></refentrytitle> 20026 <manvolnum>9</manvolnum> 20027 <refmiscinfo class="version">4.4.14</refmiscinfo> 20028</refmeta> 20029<refnamediv> 20030 <refname>snd_jack_new</refname> 20031 <refpurpose> 20032 Create a new jack 20033 </refpurpose> 20034</refnamediv> 20035<refsynopsisdiv> 20036 <title>Synopsis</title> 20037 <funcsynopsis><funcprototype> 20038 <funcdef>int <function>snd_jack_new </function></funcdef> 20039 <paramdef>struct snd_card * <parameter>card</parameter></paramdef> 20040 <paramdef>const char * <parameter>id</parameter></paramdef> 20041 <paramdef>int <parameter>type</parameter></paramdef> 20042 <paramdef>struct snd_jack ** <parameter>jjack</parameter></paramdef> 20043 <paramdef>bool <parameter>initial_kctl</parameter></paramdef> 20044 <paramdef>bool <parameter>phantom_jack</parameter></paramdef> 20045 </funcprototype></funcsynopsis> 20046</refsynopsisdiv> 20047<refsect1> 20048 <title>Arguments</title> 20049 <variablelist> 20050 <varlistentry> 20051 <term><parameter>card</parameter></term> 20052 <listitem> 20053 <para> 20054 the card instance 20055 </para> 20056 </listitem> 20057 </varlistentry> 20058 <varlistentry> 20059 <term><parameter>id</parameter></term> 20060 <listitem> 20061 <para> 20062 an identifying string for this jack 20063 </para> 20064 </listitem> 20065 </varlistentry> 20066 <varlistentry> 20067 <term><parameter>type</parameter></term> 20068 <listitem> 20069 <para> 20070 a bitmask of enum snd_jack_type values that can be detected by 20071 this jack 20072 </para> 20073 </listitem> 20074 </varlistentry> 20075 <varlistentry> 20076 <term><parameter>jjack</parameter></term> 20077 <listitem> 20078 <para> 20079 Used to provide the allocated jack object to the caller. 20080 </para> 20081 </listitem> 20082 </varlistentry> 20083 <varlistentry> 20084 <term><parameter>initial_kctl</parameter></term> 20085 <listitem> 20086 <para> 20087 if true, create a kcontrol and add it to the jack list. 20088 </para> 20089 </listitem> 20090 </varlistentry> 20091 <varlistentry> 20092 <term><parameter>phantom_jack</parameter></term> 20093 <listitem> 20094 <para> 20095 Don't create a input device for phantom jacks. 20096 </para> 20097 </listitem> 20098 </varlistentry> 20099 </variablelist> 20100</refsect1> 20101<refsect1> 20102<title>Description</title> 20103<para> 20104 Creates a new jack object. 20105</para> 20106</refsect1> 20107<refsect1> 20108<title>Return</title> 20109<para> 20110 Zero if successful, or a negative error code on failure. 20111 On success <parameter>jjack</parameter> will be initialised. 20112</para> 20113</refsect1> 20114</refentry> 20115 20116<refentry id="API-snd-jack-set-parent"> 20117<refentryinfo> 20118 <title>LINUX</title> 20119 <productname>Kernel Hackers Manual</productname> 20120 <date>July 2017</date> 20121</refentryinfo> 20122<refmeta> 20123 <refentrytitle><phrase>snd_jack_set_parent</phrase></refentrytitle> 20124 <manvolnum>9</manvolnum> 20125 <refmiscinfo class="version">4.4.14</refmiscinfo> 20126</refmeta> 20127<refnamediv> 20128 <refname>snd_jack_set_parent</refname> 20129 <refpurpose> 20130 Set the parent device for a jack 20131 </refpurpose> 20132</refnamediv> 20133<refsynopsisdiv> 20134 <title>Synopsis</title> 20135 <funcsynopsis><funcprototype> 20136 <funcdef>void <function>snd_jack_set_parent </function></funcdef> 20137 <paramdef>struct snd_jack * <parameter>jack</parameter></paramdef> 20138 <paramdef>struct device * <parameter>parent</parameter></paramdef> 20139 </funcprototype></funcsynopsis> 20140</refsynopsisdiv> 20141<refsect1> 20142 <title>Arguments</title> 20143 <variablelist> 20144 <varlistentry> 20145 <term><parameter>jack</parameter></term> 20146 <listitem> 20147 <para> 20148 The jack to configure 20149 </para> 20150 </listitem> 20151 </varlistentry> 20152 <varlistentry> 20153 <term><parameter>parent</parameter></term> 20154 <listitem> 20155 <para> 20156 The device to set as parent for the jack. 20157 </para> 20158 </listitem> 20159 </varlistentry> 20160 </variablelist> 20161</refsect1> 20162<refsect1> 20163<title>Description</title> 20164<para> 20165 Set the parent for the jack devices in the device tree. This 20166 function is only valid prior to registration of the jack. If no 20167 parent is configured then the parent device will be the sound card. 20168</para> 20169</refsect1> 20170</refentry> 20171 20172<refentry id="API-snd-jack-set-key"> 20173<refentryinfo> 20174 <title>LINUX</title> 20175 <productname>Kernel Hackers Manual</productname> 20176 <date>July 2017</date> 20177</refentryinfo> 20178<refmeta> 20179 <refentrytitle><phrase>snd_jack_set_key</phrase></refentrytitle> 20180 <manvolnum>9</manvolnum> 20181 <refmiscinfo class="version">4.4.14</refmiscinfo> 20182</refmeta> 20183<refnamediv> 20184 <refname>snd_jack_set_key</refname> 20185 <refpurpose> 20186 Set a key mapping on a jack 20187 </refpurpose> 20188</refnamediv> 20189<refsynopsisdiv> 20190 <title>Synopsis</title> 20191 <funcsynopsis><funcprototype> 20192 <funcdef>int <function>snd_jack_set_key </function></funcdef> 20193 <paramdef>struct snd_jack * <parameter>jack</parameter></paramdef> 20194 <paramdef>enum snd_jack_types <parameter>type</parameter></paramdef> 20195 <paramdef>int <parameter>keytype</parameter></paramdef> 20196 </funcprototype></funcsynopsis> 20197</refsynopsisdiv> 20198<refsect1> 20199 <title>Arguments</title> 20200 <variablelist> 20201 <varlistentry> 20202 <term><parameter>jack</parameter></term> 20203 <listitem> 20204 <para> 20205 The jack to configure 20206 </para> 20207 </listitem> 20208 </varlistentry> 20209 <varlistentry> 20210 <term><parameter>type</parameter></term> 20211 <listitem> 20212 <para> 20213 Jack report type for this key 20214 </para> 20215 </listitem> 20216 </varlistentry> 20217 <varlistentry> 20218 <term><parameter>keytype</parameter></term> 20219 <listitem> 20220 <para> 20221 Input layer key type to be reported 20222 </para> 20223 </listitem> 20224 </varlistentry> 20225 </variablelist> 20226</refsect1> 20227<refsect1> 20228<title>Description</title> 20229<para> 20230 Map a SND_JACK_BTN_ button type to an input layer key, allowing 20231 reporting of keys on accessories via the jack abstraction. If no 20232 mapping is provided but keys are enabled in the jack type then 20233 BTN_n numeric buttons will be reported. 20234 </para><para> 20235 20236 If jacks are not reporting via the input API this call will have no 20237 effect. 20238 </para><para> 20239 20240 Note that this is intended to be use by simple devices with small 20241 numbers of keys that can be reported. It is also possible to 20242 access the input device directly - devices with complex input 20243 capabilities on accessories should consider doing this rather than 20244 using this abstraction. 20245 </para><para> 20246 20247 This function may only be called prior to registration of the jack. 20248</para> 20249</refsect1> 20250<refsect1> 20251<title>Return</title> 20252<para> 20253 Zero if successful, or a negative error code on failure. 20254</para> 20255</refsect1> 20256</refentry> 20257 20258<refentry id="API-snd-jack-report"> 20259<refentryinfo> 20260 <title>LINUX</title> 20261 <productname>Kernel Hackers Manual</productname> 20262 <date>July 2017</date> 20263</refentryinfo> 20264<refmeta> 20265 <refentrytitle><phrase>snd_jack_report</phrase></refentrytitle> 20266 <manvolnum>9</manvolnum> 20267 <refmiscinfo class="version">4.4.14</refmiscinfo> 20268</refmeta> 20269<refnamediv> 20270 <refname>snd_jack_report</refname> 20271 <refpurpose> 20272 Report the current status of a jack 20273 </refpurpose> 20274</refnamediv> 20275<refsynopsisdiv> 20276 <title>Synopsis</title> 20277 <funcsynopsis><funcprototype> 20278 <funcdef>void <function>snd_jack_report </function></funcdef> 20279 <paramdef>struct snd_jack * <parameter>jack</parameter></paramdef> 20280 <paramdef>int <parameter>status</parameter></paramdef> 20281 </funcprototype></funcsynopsis> 20282</refsynopsisdiv> 20283<refsect1> 20284 <title>Arguments</title> 20285 <variablelist> 20286 <varlistentry> 20287 <term><parameter>jack</parameter></term> 20288 <listitem> 20289 <para> 20290 The jack to report status for 20291 </para> 20292 </listitem> 20293 </varlistentry> 20294 <varlistentry> 20295 <term><parameter>status</parameter></term> 20296 <listitem> 20297 <para> 20298 The current status of the jack 20299 </para> 20300 </listitem> 20301 </varlistentry> 20302 </variablelist> 20303</refsect1> 20304</refentry> 20305 20306<!-- sound/soc/soc-jack.c --> 20307<refentry id="API-snd-soc-card-jack-new"> 20308<refentryinfo> 20309 <title>LINUX</title> 20310 <productname>Kernel Hackers Manual</productname> 20311 <date>July 2017</date> 20312</refentryinfo> 20313<refmeta> 20314 <refentrytitle><phrase>snd_soc_card_jack_new</phrase></refentrytitle> 20315 <manvolnum>9</manvolnum> 20316 <refmiscinfo class="version">4.4.14</refmiscinfo> 20317</refmeta> 20318<refnamediv> 20319 <refname>snd_soc_card_jack_new</refname> 20320 <refpurpose> 20321 Create a new jack 20322 </refpurpose> 20323</refnamediv> 20324<refsynopsisdiv> 20325 <title>Synopsis</title> 20326 <funcsynopsis><funcprototype> 20327 <funcdef>int <function>snd_soc_card_jack_new </function></funcdef> 20328 <paramdef>struct snd_soc_card * <parameter>card</parameter></paramdef> 20329 <paramdef>const char * <parameter>id</parameter></paramdef> 20330 <paramdef>int <parameter>type</parameter></paramdef> 20331 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20332 <paramdef>struct snd_soc_jack_pin * <parameter>pins</parameter></paramdef> 20333 <paramdef>unsigned int <parameter>num_pins</parameter></paramdef> 20334 </funcprototype></funcsynopsis> 20335</refsynopsisdiv> 20336<refsect1> 20337 <title>Arguments</title> 20338 <variablelist> 20339 <varlistentry> 20340 <term><parameter>card</parameter></term> 20341 <listitem> 20342 <para> 20343 ASoC card 20344 </para> 20345 </listitem> 20346 </varlistentry> 20347 <varlistentry> 20348 <term><parameter>id</parameter></term> 20349 <listitem> 20350 <para> 20351 an identifying string for this jack 20352 </para> 20353 </listitem> 20354 </varlistentry> 20355 <varlistentry> 20356 <term><parameter>type</parameter></term> 20357 <listitem> 20358 <para> 20359 a bitmask of enum snd_jack_type values that can be detected by 20360 this jack 20361 </para> 20362 </listitem> 20363 </varlistentry> 20364 <varlistentry> 20365 <term><parameter>jack</parameter></term> 20366 <listitem> 20367 <para> 20368 structure to use for the jack 20369 </para> 20370 </listitem> 20371 </varlistentry> 20372 <varlistentry> 20373 <term><parameter>pins</parameter></term> 20374 <listitem> 20375 <para> 20376 Array of jack pins to be added to the jack or NULL 20377 </para> 20378 </listitem> 20379 </varlistentry> 20380 <varlistentry> 20381 <term><parameter>num_pins</parameter></term> 20382 <listitem> 20383 <para> 20384 Number of elements in the <parameter>pins</parameter> array 20385 </para> 20386 </listitem> 20387 </varlistentry> 20388 </variablelist> 20389</refsect1> 20390<refsect1> 20391<title>Description</title> 20392<para> 20393 Creates a new jack object. 20394 </para><para> 20395 20396 Returns zero if successful, or a negative error code on failure. 20397 On success jack will be initialised. 20398</para> 20399</refsect1> 20400</refentry> 20401 20402<refentry id="API-snd-soc-jack-report"> 20403<refentryinfo> 20404 <title>LINUX</title> 20405 <productname>Kernel Hackers Manual</productname> 20406 <date>July 2017</date> 20407</refentryinfo> 20408<refmeta> 20409 <refentrytitle><phrase>snd_soc_jack_report</phrase></refentrytitle> 20410 <manvolnum>9</manvolnum> 20411 <refmiscinfo class="version">4.4.14</refmiscinfo> 20412</refmeta> 20413<refnamediv> 20414 <refname>snd_soc_jack_report</refname> 20415 <refpurpose> 20416 Report the current status for a jack 20417 </refpurpose> 20418</refnamediv> 20419<refsynopsisdiv> 20420 <title>Synopsis</title> 20421 <funcsynopsis><funcprototype> 20422 <funcdef>void <function>snd_soc_jack_report </function></funcdef> 20423 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20424 <paramdef>int <parameter>status</parameter></paramdef> 20425 <paramdef>int <parameter>mask</parameter></paramdef> 20426 </funcprototype></funcsynopsis> 20427</refsynopsisdiv> 20428<refsect1> 20429 <title>Arguments</title> 20430 <variablelist> 20431 <varlistentry> 20432 <term><parameter>jack</parameter></term> 20433 <listitem> 20434 <para> 20435 the jack 20436 </para> 20437 </listitem> 20438 </varlistentry> 20439 <varlistentry> 20440 <term><parameter>status</parameter></term> 20441 <listitem> 20442 <para> 20443 a bitmask of enum snd_jack_type values that are currently detected. 20444 </para> 20445 </listitem> 20446 </varlistentry> 20447 <varlistentry> 20448 <term><parameter>mask</parameter></term> 20449 <listitem> 20450 <para> 20451 a bitmask of enum snd_jack_type values that being reported. 20452 </para> 20453 </listitem> 20454 </varlistentry> 20455 </variablelist> 20456</refsect1> 20457<refsect1> 20458<title>Description</title> 20459<para> 20460 If configured using <function>snd_soc_jack_add_pins</function> then the associated 20461 DAPM pins will be enabled or disabled as appropriate and DAPM 20462 synchronised. 20463</para> 20464</refsect1> 20465<refsect1> 20466<title>Note</title> 20467<para> 20468 This function uses mutexes and should be called from a 20469 context which can sleep (such as a workqueue). 20470</para> 20471</refsect1> 20472</refentry> 20473 20474<refentry id="API-snd-soc-jack-add-zones"> 20475<refentryinfo> 20476 <title>LINUX</title> 20477 <productname>Kernel Hackers Manual</productname> 20478 <date>July 2017</date> 20479</refentryinfo> 20480<refmeta> 20481 <refentrytitle><phrase>snd_soc_jack_add_zones</phrase></refentrytitle> 20482 <manvolnum>9</manvolnum> 20483 <refmiscinfo class="version">4.4.14</refmiscinfo> 20484</refmeta> 20485<refnamediv> 20486 <refname>snd_soc_jack_add_zones</refname> 20487 <refpurpose> 20488 Associate voltage zones with jack 20489 </refpurpose> 20490</refnamediv> 20491<refsynopsisdiv> 20492 <title>Synopsis</title> 20493 <funcsynopsis><funcprototype> 20494 <funcdef>int <function>snd_soc_jack_add_zones </function></funcdef> 20495 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20496 <paramdef>int <parameter>count</parameter></paramdef> 20497 <paramdef>struct snd_soc_jack_zone * <parameter>zones</parameter></paramdef> 20498 </funcprototype></funcsynopsis> 20499</refsynopsisdiv> 20500<refsect1> 20501 <title>Arguments</title> 20502 <variablelist> 20503 <varlistentry> 20504 <term><parameter>jack</parameter></term> 20505 <listitem> 20506 <para> 20507 ASoC jack 20508 </para> 20509 </listitem> 20510 </varlistentry> 20511 <varlistentry> 20512 <term><parameter>count</parameter></term> 20513 <listitem> 20514 <para> 20515 Number of zones 20516 </para> 20517 </listitem> 20518 </varlistentry> 20519 <varlistentry> 20520 <term><parameter>zones</parameter></term> 20521 <listitem> 20522 <para> 20523 Array of zones 20524 </para> 20525 </listitem> 20526 </varlistentry> 20527 </variablelist> 20528</refsect1> 20529<refsect1> 20530<title>Description</title> 20531<para> 20532 After this function has been called the zones specified in the 20533 array will be associated with the jack. 20534</para> 20535</refsect1> 20536</refentry> 20537 20538<refentry id="API-snd-soc-jack-get-type"> 20539<refentryinfo> 20540 <title>LINUX</title> 20541 <productname>Kernel Hackers Manual</productname> 20542 <date>July 2017</date> 20543</refentryinfo> 20544<refmeta> 20545 <refentrytitle><phrase>snd_soc_jack_get_type</phrase></refentrytitle> 20546 <manvolnum>9</manvolnum> 20547 <refmiscinfo class="version">4.4.14</refmiscinfo> 20548</refmeta> 20549<refnamediv> 20550 <refname>snd_soc_jack_get_type</refname> 20551 <refpurpose> 20552 Based on the mic bias value, this function returns the type of jack from the zones declared in the jack type 20553 </refpurpose> 20554</refnamediv> 20555<refsynopsisdiv> 20556 <title>Synopsis</title> 20557 <funcsynopsis><funcprototype> 20558 <funcdef>int <function>snd_soc_jack_get_type </function></funcdef> 20559 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20560 <paramdef>int <parameter>micbias_voltage</parameter></paramdef> 20561 </funcprototype></funcsynopsis> 20562</refsynopsisdiv> 20563<refsect1> 20564 <title>Arguments</title> 20565 <variablelist> 20566 <varlistentry> 20567 <term><parameter>jack</parameter></term> 20568 <listitem> 20569 <para> 20570 ASoC jack 20571 </para> 20572 </listitem> 20573 </varlistentry> 20574 <varlistentry> 20575 <term><parameter>micbias_voltage</parameter></term> 20576 <listitem> 20577 <para> 20578 mic bias voltage at adc channel when jack is plugged in 20579 </para> 20580 </listitem> 20581 </varlistentry> 20582 </variablelist> 20583</refsect1> 20584<refsect1> 20585<title>Description</title> 20586<para> 20587 Based on the mic bias value passed, this function helps identify 20588 the type of jack from the already declared jack zones 20589</para> 20590</refsect1> 20591</refentry> 20592 20593<refentry id="API-snd-soc-jack-add-pins"> 20594<refentryinfo> 20595 <title>LINUX</title> 20596 <productname>Kernel Hackers Manual</productname> 20597 <date>July 2017</date> 20598</refentryinfo> 20599<refmeta> 20600 <refentrytitle><phrase>snd_soc_jack_add_pins</phrase></refentrytitle> 20601 <manvolnum>9</manvolnum> 20602 <refmiscinfo class="version">4.4.14</refmiscinfo> 20603</refmeta> 20604<refnamediv> 20605 <refname>snd_soc_jack_add_pins</refname> 20606 <refpurpose> 20607 Associate DAPM pins with an ASoC jack 20608 </refpurpose> 20609</refnamediv> 20610<refsynopsisdiv> 20611 <title>Synopsis</title> 20612 <funcsynopsis><funcprototype> 20613 <funcdef>int <function>snd_soc_jack_add_pins </function></funcdef> 20614 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20615 <paramdef>int <parameter>count</parameter></paramdef> 20616 <paramdef>struct snd_soc_jack_pin * <parameter>pins</parameter></paramdef> 20617 </funcprototype></funcsynopsis> 20618</refsynopsisdiv> 20619<refsect1> 20620 <title>Arguments</title> 20621 <variablelist> 20622 <varlistentry> 20623 <term><parameter>jack</parameter></term> 20624 <listitem> 20625 <para> 20626 ASoC jack 20627 </para> 20628 </listitem> 20629 </varlistentry> 20630 <varlistentry> 20631 <term><parameter>count</parameter></term> 20632 <listitem> 20633 <para> 20634 Number of pins 20635 </para> 20636 </listitem> 20637 </varlistentry> 20638 <varlistentry> 20639 <term><parameter>pins</parameter></term> 20640 <listitem> 20641 <para> 20642 Array of pins 20643 </para> 20644 </listitem> 20645 </varlistentry> 20646 </variablelist> 20647</refsect1> 20648<refsect1> 20649<title>Description</title> 20650<para> 20651 After this function has been called the DAPM pins specified in the 20652 pins array will have their status updated to reflect the current 20653 state of the jack whenever the jack status is updated. 20654</para> 20655</refsect1> 20656</refentry> 20657 20658<refentry id="API-snd-soc-jack-notifier-register"> 20659<refentryinfo> 20660 <title>LINUX</title> 20661 <productname>Kernel Hackers Manual</productname> 20662 <date>July 2017</date> 20663</refentryinfo> 20664<refmeta> 20665 <refentrytitle><phrase>snd_soc_jack_notifier_register</phrase></refentrytitle> 20666 <manvolnum>9</manvolnum> 20667 <refmiscinfo class="version">4.4.14</refmiscinfo> 20668</refmeta> 20669<refnamediv> 20670 <refname>snd_soc_jack_notifier_register</refname> 20671 <refpurpose> 20672 Register a notifier for jack status 20673 </refpurpose> 20674</refnamediv> 20675<refsynopsisdiv> 20676 <title>Synopsis</title> 20677 <funcsynopsis><funcprototype> 20678 <funcdef>void <function>snd_soc_jack_notifier_register </function></funcdef> 20679 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20680 <paramdef>struct notifier_block * <parameter>nb</parameter></paramdef> 20681 </funcprototype></funcsynopsis> 20682</refsynopsisdiv> 20683<refsect1> 20684 <title>Arguments</title> 20685 <variablelist> 20686 <varlistentry> 20687 <term><parameter>jack</parameter></term> 20688 <listitem> 20689 <para> 20690 ASoC jack 20691 </para> 20692 </listitem> 20693 </varlistentry> 20694 <varlistentry> 20695 <term><parameter>nb</parameter></term> 20696 <listitem> 20697 <para> 20698 Notifier block to register 20699 </para> 20700 </listitem> 20701 </varlistentry> 20702 </variablelist> 20703</refsect1> 20704<refsect1> 20705<title>Description</title> 20706<para> 20707 Register for notification of the current status of the jack. Note 20708 that it is not possible to report additional jack events in the 20709 callback from the notifier, this is intended to support 20710 applications such as enabling electrical detection only when a 20711 mechanical detection event has occurred. 20712</para> 20713</refsect1> 20714</refentry> 20715 20716<refentry id="API-snd-soc-jack-notifier-unregister"> 20717<refentryinfo> 20718 <title>LINUX</title> 20719 <productname>Kernel Hackers Manual</productname> 20720 <date>July 2017</date> 20721</refentryinfo> 20722<refmeta> 20723 <refentrytitle><phrase>snd_soc_jack_notifier_unregister</phrase></refentrytitle> 20724 <manvolnum>9</manvolnum> 20725 <refmiscinfo class="version">4.4.14</refmiscinfo> 20726</refmeta> 20727<refnamediv> 20728 <refname>snd_soc_jack_notifier_unregister</refname> 20729 <refpurpose> 20730 Unregister a notifier for jack status 20731 </refpurpose> 20732</refnamediv> 20733<refsynopsisdiv> 20734 <title>Synopsis</title> 20735 <funcsynopsis><funcprototype> 20736 <funcdef>void <function>snd_soc_jack_notifier_unregister </function></funcdef> 20737 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20738 <paramdef>struct notifier_block * <parameter>nb</parameter></paramdef> 20739 </funcprototype></funcsynopsis> 20740</refsynopsisdiv> 20741<refsect1> 20742 <title>Arguments</title> 20743 <variablelist> 20744 <varlistentry> 20745 <term><parameter>jack</parameter></term> 20746 <listitem> 20747 <para> 20748 ASoC jack 20749 </para> 20750 </listitem> 20751 </varlistentry> 20752 <varlistentry> 20753 <term><parameter>nb</parameter></term> 20754 <listitem> 20755 <para> 20756 Notifier block to unregister 20757 </para> 20758 </listitem> 20759 </varlistentry> 20760 </variablelist> 20761</refsect1> 20762<refsect1> 20763<title>Description</title> 20764<para> 20765 Stop notifying for status changes. 20766</para> 20767</refsect1> 20768</refentry> 20769 20770<refentry id="API-snd-soc-jack-add-gpios"> 20771<refentryinfo> 20772 <title>LINUX</title> 20773 <productname>Kernel Hackers Manual</productname> 20774 <date>July 2017</date> 20775</refentryinfo> 20776<refmeta> 20777 <refentrytitle><phrase>snd_soc_jack_add_gpios</phrase></refentrytitle> 20778 <manvolnum>9</manvolnum> 20779 <refmiscinfo class="version">4.4.14</refmiscinfo> 20780</refmeta> 20781<refnamediv> 20782 <refname>snd_soc_jack_add_gpios</refname> 20783 <refpurpose> 20784 Associate GPIO pins with an ASoC jack 20785 </refpurpose> 20786</refnamediv> 20787<refsynopsisdiv> 20788 <title>Synopsis</title> 20789 <funcsynopsis><funcprototype> 20790 <funcdef>int <function>snd_soc_jack_add_gpios </function></funcdef> 20791 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20792 <paramdef>int <parameter>count</parameter></paramdef> 20793 <paramdef>struct snd_soc_jack_gpio * <parameter>gpios</parameter></paramdef> 20794 </funcprototype></funcsynopsis> 20795</refsynopsisdiv> 20796<refsect1> 20797 <title>Arguments</title> 20798 <variablelist> 20799 <varlistentry> 20800 <term><parameter>jack</parameter></term> 20801 <listitem> 20802 <para> 20803 ASoC jack 20804 </para> 20805 </listitem> 20806 </varlistentry> 20807 <varlistentry> 20808 <term><parameter>count</parameter></term> 20809 <listitem> 20810 <para> 20811 number of pins 20812 </para> 20813 </listitem> 20814 </varlistentry> 20815 <varlistentry> 20816 <term><parameter>gpios</parameter></term> 20817 <listitem> 20818 <para> 20819 array of gpio pins 20820 </para> 20821 </listitem> 20822 </varlistentry> 20823 </variablelist> 20824</refsect1> 20825<refsect1> 20826<title>Description</title> 20827<para> 20828 This function will request gpio, set data direction and request irq 20829 for each gpio in the array. 20830</para> 20831</refsect1> 20832</refentry> 20833 20834<refentry id="API-snd-soc-jack-add-gpiods"> 20835<refentryinfo> 20836 <title>LINUX</title> 20837 <productname>Kernel Hackers Manual</productname> 20838 <date>July 2017</date> 20839</refentryinfo> 20840<refmeta> 20841 <refentrytitle><phrase>snd_soc_jack_add_gpiods</phrase></refentrytitle> 20842 <manvolnum>9</manvolnum> 20843 <refmiscinfo class="version">4.4.14</refmiscinfo> 20844</refmeta> 20845<refnamediv> 20846 <refname>snd_soc_jack_add_gpiods</refname> 20847 <refpurpose> 20848 Associate GPIO descriptor pins with an ASoC jack 20849 </refpurpose> 20850</refnamediv> 20851<refsynopsisdiv> 20852 <title>Synopsis</title> 20853 <funcsynopsis><funcprototype> 20854 <funcdef>int <function>snd_soc_jack_add_gpiods </function></funcdef> 20855 <paramdef>struct device * <parameter>gpiod_dev</parameter></paramdef> 20856 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20857 <paramdef>int <parameter>count</parameter></paramdef> 20858 <paramdef>struct snd_soc_jack_gpio * <parameter>gpios</parameter></paramdef> 20859 </funcprototype></funcsynopsis> 20860</refsynopsisdiv> 20861<refsect1> 20862 <title>Arguments</title> 20863 <variablelist> 20864 <varlistentry> 20865 <term><parameter>gpiod_dev</parameter></term> 20866 <listitem> 20867 <para> 20868 GPIO consumer device 20869 </para> 20870 </listitem> 20871 </varlistentry> 20872 <varlistentry> 20873 <term><parameter>jack</parameter></term> 20874 <listitem> 20875 <para> 20876 ASoC jack 20877 </para> 20878 </listitem> 20879 </varlistentry> 20880 <varlistentry> 20881 <term><parameter>count</parameter></term> 20882 <listitem> 20883 <para> 20884 number of pins 20885 </para> 20886 </listitem> 20887 </varlistentry> 20888 <varlistentry> 20889 <term><parameter>gpios</parameter></term> 20890 <listitem> 20891 <para> 20892 array of gpio pins 20893 </para> 20894 </listitem> 20895 </varlistentry> 20896 </variablelist> 20897</refsect1> 20898<refsect1> 20899<title>Description</title> 20900<para> 20901 This function will request gpio, set data direction and request irq 20902 for each gpio in the array. 20903</para> 20904</refsect1> 20905</refentry> 20906 20907<refentry id="API-snd-soc-jack-free-gpios"> 20908<refentryinfo> 20909 <title>LINUX</title> 20910 <productname>Kernel Hackers Manual</productname> 20911 <date>July 2017</date> 20912</refentryinfo> 20913<refmeta> 20914 <refentrytitle><phrase>snd_soc_jack_free_gpios</phrase></refentrytitle> 20915 <manvolnum>9</manvolnum> 20916 <refmiscinfo class="version">4.4.14</refmiscinfo> 20917</refmeta> 20918<refnamediv> 20919 <refname>snd_soc_jack_free_gpios</refname> 20920 <refpurpose> 20921 Release GPIO pins' resources of an ASoC jack 20922 </refpurpose> 20923</refnamediv> 20924<refsynopsisdiv> 20925 <title>Synopsis</title> 20926 <funcsynopsis><funcprototype> 20927 <funcdef>void <function>snd_soc_jack_free_gpios </function></funcdef> 20928 <paramdef>struct snd_soc_jack * <parameter>jack</parameter></paramdef> 20929 <paramdef>int <parameter>count</parameter></paramdef> 20930 <paramdef>struct snd_soc_jack_gpio * <parameter>gpios</parameter></paramdef> 20931 </funcprototype></funcsynopsis> 20932</refsynopsisdiv> 20933<refsect1> 20934 <title>Arguments</title> 20935 <variablelist> 20936 <varlistentry> 20937 <term><parameter>jack</parameter></term> 20938 <listitem> 20939 <para> 20940 ASoC jack 20941 </para> 20942 </listitem> 20943 </varlistentry> 20944 <varlistentry> 20945 <term><parameter>count</parameter></term> 20946 <listitem> 20947 <para> 20948 number of pins 20949 </para> 20950 </listitem> 20951 </varlistentry> 20952 <varlistentry> 20953 <term><parameter>gpios</parameter></term> 20954 <listitem> 20955 <para> 20956 array of gpio pins 20957 </para> 20958 </listitem> 20959 </varlistentry> 20960 </variablelist> 20961</refsect1> 20962<refsect1> 20963<title>Description</title> 20964<para> 20965 Release gpio and irq resources for gpio pins associated with an ASoC jack. 20966</para> 20967</refsect1> 20968</refentry> 20969 20970 </sect1> 20971 <sect1><title>ISA DMA Helpers</title> 20972<!-- sound/core/isadma.c --> 20973<refentry id="API-snd-dma-program"> 20974<refentryinfo> 20975 <title>LINUX</title> 20976 <productname>Kernel Hackers Manual</productname> 20977 <date>July 2017</date> 20978</refentryinfo> 20979<refmeta> 20980 <refentrytitle><phrase>snd_dma_program</phrase></refentrytitle> 20981 <manvolnum>9</manvolnum> 20982 <refmiscinfo class="version">4.4.14</refmiscinfo> 20983</refmeta> 20984<refnamediv> 20985 <refname>snd_dma_program</refname> 20986 <refpurpose> 20987 program an ISA DMA transfer 20988 </refpurpose> 20989</refnamediv> 20990<refsynopsisdiv> 20991 <title>Synopsis</title> 20992 <funcsynopsis><funcprototype> 20993 <funcdef>void <function>snd_dma_program </function></funcdef> 20994 <paramdef>unsigned long <parameter>dma</parameter></paramdef> 20995 <paramdef>unsigned long <parameter>addr</parameter></paramdef> 20996 <paramdef>unsigned int <parameter>size</parameter></paramdef> 20997 <paramdef>unsigned short <parameter>mode</parameter></paramdef> 20998 </funcprototype></funcsynopsis> 20999</refsynopsisdiv> 21000<refsect1> 21001 <title>Arguments</title> 21002 <variablelist> 21003 <varlistentry> 21004 <term><parameter>dma</parameter></term> 21005 <listitem> 21006 <para> 21007 the dma number 21008 </para> 21009 </listitem> 21010 </varlistentry> 21011 <varlistentry> 21012 <term><parameter>addr</parameter></term> 21013 <listitem> 21014 <para> 21015 the physical address of the buffer 21016 </para> 21017 </listitem> 21018 </varlistentry> 21019 <varlistentry> 21020 <term><parameter>size</parameter></term> 21021 <listitem> 21022 <para> 21023 the DMA transfer size 21024 </para> 21025 </listitem> 21026 </varlistentry> 21027 <varlistentry> 21028 <term><parameter>mode</parameter></term> 21029 <listitem> 21030 <para> 21031 the DMA transfer mode, DMA_MODE_XXX 21032 </para> 21033 </listitem> 21034 </varlistentry> 21035 </variablelist> 21036</refsect1> 21037<refsect1> 21038<title>Description</title> 21039<para> 21040 Programs an ISA DMA transfer for the given buffer. 21041</para> 21042</refsect1> 21043</refentry> 21044 21045<refentry id="API-snd-dma-disable"> 21046<refentryinfo> 21047 <title>LINUX</title> 21048 <productname>Kernel Hackers Manual</productname> 21049 <date>July 2017</date> 21050</refentryinfo> 21051<refmeta> 21052 <refentrytitle><phrase>snd_dma_disable</phrase></refentrytitle> 21053 <manvolnum>9</manvolnum> 21054 <refmiscinfo class="version">4.4.14</refmiscinfo> 21055</refmeta> 21056<refnamediv> 21057 <refname>snd_dma_disable</refname> 21058 <refpurpose> 21059 stop the ISA DMA transfer 21060 </refpurpose> 21061</refnamediv> 21062<refsynopsisdiv> 21063 <title>Synopsis</title> 21064 <funcsynopsis><funcprototype> 21065 <funcdef>void <function>snd_dma_disable </function></funcdef> 21066 <paramdef>unsigned long <parameter>dma</parameter></paramdef> 21067 </funcprototype></funcsynopsis> 21068</refsynopsisdiv> 21069<refsect1> 21070 <title>Arguments</title> 21071 <variablelist> 21072 <varlistentry> 21073 <term><parameter>dma</parameter></term> 21074 <listitem> 21075 <para> 21076 the dma number 21077 </para> 21078 </listitem> 21079 </varlistentry> 21080 </variablelist> 21081</refsect1> 21082<refsect1> 21083<title>Description</title> 21084<para> 21085 Stops the ISA DMA transfer. 21086</para> 21087</refsect1> 21088</refentry> 21089 21090<refentry id="API-snd-dma-pointer"> 21091<refentryinfo> 21092 <title>LINUX</title> 21093 <productname>Kernel Hackers Manual</productname> 21094 <date>July 2017</date> 21095</refentryinfo> 21096<refmeta> 21097 <refentrytitle><phrase>snd_dma_pointer</phrase></refentrytitle> 21098 <manvolnum>9</manvolnum> 21099 <refmiscinfo class="version">4.4.14</refmiscinfo> 21100</refmeta> 21101<refnamediv> 21102 <refname>snd_dma_pointer</refname> 21103 <refpurpose> 21104 return the current pointer to DMA transfer buffer in bytes 21105 </refpurpose> 21106</refnamediv> 21107<refsynopsisdiv> 21108 <title>Synopsis</title> 21109 <funcsynopsis><funcprototype> 21110 <funcdef>unsigned int <function>snd_dma_pointer </function></funcdef> 21111 <paramdef>unsigned long <parameter>dma</parameter></paramdef> 21112 <paramdef>unsigned int <parameter>size</parameter></paramdef> 21113 </funcprototype></funcsynopsis> 21114</refsynopsisdiv> 21115<refsect1> 21116 <title>Arguments</title> 21117 <variablelist> 21118 <varlistentry> 21119 <term><parameter>dma</parameter></term> 21120 <listitem> 21121 <para> 21122 the dma number 21123 </para> 21124 </listitem> 21125 </varlistentry> 21126 <varlistentry> 21127 <term><parameter>size</parameter></term> 21128 <listitem> 21129 <para> 21130 the dma transfer size 21131 </para> 21132 </listitem> 21133 </varlistentry> 21134 </variablelist> 21135</refsect1> 21136<refsect1> 21137<title>Return</title> 21138<para> 21139 The current pointer in DMA transfer buffer in bytes. 21140</para> 21141</refsect1> 21142</refentry> 21143 21144 </sect1> 21145 <sect1><title>Other Helper Macros</title> 21146<!-- include/sound/core.h --> 21147<refentry id="API-snd-printk"> 21148<refentryinfo> 21149 <title>LINUX</title> 21150 <productname>Kernel Hackers Manual</productname> 21151 <date>July 2017</date> 21152</refentryinfo> 21153<refmeta> 21154 <refentrytitle><phrase>snd_printk</phrase></refentrytitle> 21155 <manvolnum>9</manvolnum> 21156 <refmiscinfo class="version">4.4.14</refmiscinfo> 21157</refmeta> 21158<refnamediv> 21159 <refname>snd_printk</refname> 21160 <refpurpose> 21161 printk wrapper 21162 </refpurpose> 21163</refnamediv> 21164<refsynopsisdiv> 21165 <title>Synopsis</title> 21166 <funcsynopsis><funcprototype> 21167 <funcdef> <function>snd_printk </function></funcdef> 21168 <paramdef> <parameter>fmt</parameter></paramdef> 21169 <paramdef> <parameter>args...</parameter></paramdef> 21170 </funcprototype></funcsynopsis> 21171</refsynopsisdiv> 21172<refsect1> 21173 <title>Arguments</title> 21174 <variablelist> 21175 <varlistentry> 21176 <term><parameter>fmt</parameter></term> 21177 <listitem> 21178 <para> 21179 format string 21180 </para> 21181 </listitem> 21182 </varlistentry> 21183 <varlistentry> 21184 <term><parameter>args...</parameter></term> 21185 <listitem> 21186 <para> 21187 variable arguments 21188 </para> 21189 </listitem> 21190 </varlistentry> 21191 </variablelist> 21192</refsect1> 21193<refsect1> 21194<title>Description</title> 21195<para> 21196 Works like <function>printk</function> but prints the file and the line of the caller 21197 when configured with CONFIG_SND_VERBOSE_PRINTK. 21198</para> 21199</refsect1> 21200</refentry> 21201 21202<refentry id="API-snd-printd"> 21203<refentryinfo> 21204 <title>LINUX</title> 21205 <productname>Kernel Hackers Manual</productname> 21206 <date>July 2017</date> 21207</refentryinfo> 21208<refmeta> 21209 <refentrytitle><phrase>snd_printd</phrase></refentrytitle> 21210 <manvolnum>9</manvolnum> 21211 <refmiscinfo class="version">4.4.14</refmiscinfo> 21212</refmeta> 21213<refnamediv> 21214 <refname>snd_printd</refname> 21215 <refpurpose> 21216 debug printk 21217 </refpurpose> 21218</refnamediv> 21219<refsynopsisdiv> 21220 <title>Synopsis</title> 21221 <funcsynopsis><funcprototype> 21222 <funcdef> <function>snd_printd </function></funcdef> 21223 <paramdef> <parameter>fmt</parameter></paramdef> 21224 <paramdef> <parameter>args...</parameter></paramdef> 21225 </funcprototype></funcsynopsis> 21226</refsynopsisdiv> 21227<refsect1> 21228 <title>Arguments</title> 21229 <variablelist> 21230 <varlistentry> 21231 <term><parameter>fmt</parameter></term> 21232 <listitem> 21233 <para> 21234 format string 21235 </para> 21236 </listitem> 21237 </varlistentry> 21238 <varlistentry> 21239 <term><parameter>args...</parameter></term> 21240 <listitem> 21241 <para> 21242 variable arguments 21243 </para> 21244 </listitem> 21245 </varlistentry> 21246 </variablelist> 21247</refsect1> 21248<refsect1> 21249<title>Description</title> 21250<para> 21251 Works like <function>snd_printk</function> for debugging purposes. 21252 Ignored when CONFIG_SND_DEBUG is not set. 21253</para> 21254</refsect1> 21255</refentry> 21256 21257<refentry id="API-snd-BUG"> 21258<refentryinfo> 21259 <title>LINUX</title> 21260 <productname>Kernel Hackers Manual</productname> 21261 <date>July 2017</date> 21262</refentryinfo> 21263<refmeta> 21264 <refentrytitle><phrase>snd_BUG</phrase></refentrytitle> 21265 <manvolnum>9</manvolnum> 21266 <refmiscinfo class="version">4.4.14</refmiscinfo> 21267</refmeta> 21268<refnamediv> 21269 <refname>snd_BUG</refname> 21270 <refpurpose> 21271 give a BUG warning message and stack trace 21272 </refpurpose> 21273</refnamediv> 21274<refsynopsisdiv> 21275 <title>Synopsis</title> 21276 <funcsynopsis><funcprototype> 21277 <funcdef> <function>snd_BUG </function></funcdef> 21278 <void/> 21279 </funcprototype></funcsynopsis> 21280</refsynopsisdiv> 21281<refsect1> 21282 <title>Arguments</title> 21283 <para> 21284 None 21285 </para> 21286</refsect1> 21287<refsect1> 21288<title>Description</title> 21289<para> 21290 </para><para> 21291 21292 Calls <function>WARN</function> if CONFIG_SND_DEBUG is set. 21293 Ignored when CONFIG_SND_DEBUG is not set. 21294</para> 21295</refsect1> 21296</refentry> 21297 21298<refentry id="API-snd-printd-ratelimit"> 21299<refentryinfo> 21300 <title>LINUX</title> 21301 <productname>Kernel Hackers Manual</productname> 21302 <date>July 2017</date> 21303</refentryinfo> 21304<refmeta> 21305 <refentrytitle><phrase>snd_printd_ratelimit</phrase></refentrytitle> 21306 <manvolnum>9</manvolnum> 21307 <refmiscinfo class="version">4.4.14</refmiscinfo> 21308</refmeta> 21309<refnamediv> 21310 <refname>snd_printd_ratelimit</refname> 21311 <refpurpose> 21312 </refpurpose> 21313</refnamediv> 21314<refsynopsisdiv> 21315 <title>Synopsis</title> 21316 <funcsynopsis><funcprototype> 21317 <funcdef> <function>snd_printd_ratelimit </function></funcdef> 21318 <void/> 21319 </funcprototype></funcsynopsis> 21320</refsynopsisdiv> 21321<refsect1> 21322 <title>Arguments</title> 21323 <para> 21324 None 21325 </para> 21326</refsect1> 21327</refentry> 21328 21329<refentry id="API-snd-BUG-ON"> 21330<refentryinfo> 21331 <title>LINUX</title> 21332 <productname>Kernel Hackers Manual</productname> 21333 <date>July 2017</date> 21334</refentryinfo> 21335<refmeta> 21336 <refentrytitle><phrase>snd_BUG_ON</phrase></refentrytitle> 21337 <manvolnum>9</manvolnum> 21338 <refmiscinfo class="version">4.4.14</refmiscinfo> 21339</refmeta> 21340<refnamediv> 21341 <refname>snd_BUG_ON</refname> 21342 <refpurpose> 21343 debugging check macro 21344 </refpurpose> 21345</refnamediv> 21346<refsynopsisdiv> 21347 <title>Synopsis</title> 21348 <funcsynopsis><funcprototype> 21349 <funcdef> <function>snd_BUG_ON </function></funcdef> 21350 <paramdef> <parameter>cond</parameter></paramdef> 21351 </funcprototype></funcsynopsis> 21352</refsynopsisdiv> 21353<refsect1> 21354 <title>Arguments</title> 21355 <variablelist> 21356 <varlistentry> 21357 <term><parameter>cond</parameter></term> 21358 <listitem> 21359 <para> 21360 condition to evaluate 21361 </para> 21362 </listitem> 21363 </varlistentry> 21364 </variablelist> 21365</refsect1> 21366<refsect1> 21367<title>Description</title> 21368<para> 21369 Has the same behavior as WARN_ON when CONFIG_SND_DEBUG is set, 21370 otherwise just evaluates the conditional and returns the value. 21371</para> 21372</refsect1> 21373</refentry> 21374 21375<refentry id="API-snd-printdd"> 21376<refentryinfo> 21377 <title>LINUX</title> 21378 <productname>Kernel Hackers Manual</productname> 21379 <date>July 2017</date> 21380</refentryinfo> 21381<refmeta> 21382 <refentrytitle><phrase>snd_printdd</phrase></refentrytitle> 21383 <manvolnum>9</manvolnum> 21384 <refmiscinfo class="version">4.4.14</refmiscinfo> 21385</refmeta> 21386<refnamediv> 21387 <refname>snd_printdd</refname> 21388 <refpurpose> 21389 debug printk 21390 </refpurpose> 21391</refnamediv> 21392<refsynopsisdiv> 21393 <title>Synopsis</title> 21394 <funcsynopsis><funcprototype> 21395 <funcdef> <function>snd_printdd </function></funcdef> 21396 <paramdef> <parameter>format</parameter></paramdef> 21397 <paramdef> <parameter>args...</parameter></paramdef> 21398 </funcprototype></funcsynopsis> 21399</refsynopsisdiv> 21400<refsect1> 21401 <title>Arguments</title> 21402 <variablelist> 21403 <varlistentry> 21404 <term><parameter>format</parameter></term> 21405 <listitem> 21406 <para> 21407 format string 21408 </para> 21409 </listitem> 21410 </varlistentry> 21411 <varlistentry> 21412 <term><parameter>args...</parameter></term> 21413 <listitem> 21414 <para> 21415 variable arguments 21416 </para> 21417 </listitem> 21418 </varlistentry> 21419 </variablelist> 21420</refsect1> 21421<refsect1> 21422<title>Description</title> 21423<para> 21424 Works like <function>snd_printk</function> for debugging purposes. 21425 Ignored when CONFIG_SND_DEBUG_VERBOSE is not set. 21426</para> 21427</refsect1> 21428</refentry> 21429 21430 </sect1> 21431 </chapter> 21432 21433</book> 21434