]> asedeno.scripts.mit.edu Git - linux.git/blob - Documentation/sound/kernel-api/writing-an-alsa-driver.rst
145bf6aad7cb00e74aafe6e9c7788bf7f70a15aa
[linux.git] / Documentation / sound / kernel-api / writing-an-alsa-driver.rst
1 ======================
2 Writing an ALSA Driver
3 ======================
4
5 :Author: Takashi Iwai <tiwai@suse.de>
6
7 Preface
8 =======
9
10 This document describes how to write an `ALSA (Advanced Linux Sound
11 Architecture) <http://www.alsa-project.org/>`__ driver. The document
12 focuses mainly on PCI soundcards. In the case of other device types, the
13 API might be different, too. However, at least the ALSA kernel API is
14 consistent, and therefore it would be still a bit help for writing them.
15
16 This document targets people who already have enough C language skills
17 and have basic linux kernel programming knowledge. This document doesn't
18 explain the general topic of linux kernel coding and doesn't cover
19 low-level driver implementation details. It only describes the standard
20 way to write a PCI sound driver on ALSA.
21
22 This document is still a draft version. Any feedback and corrections,
23 please!!
24
25 File Tree Structure
26 ===================
27
28 General
29 -------
30
31 The file tree structure of ALSA driver is depicted below.
32
33 ::
34
35             sound
36                     /core
37                             /oss
38                             /seq
39                                     /oss
40                     /include
41                     /drivers
42                             /mpu401
43                             /opl3
44                     /i2c
45                     /synth
46                             /emux
47                     /pci
48                             /(cards)
49                     /isa
50                             /(cards)
51                     /arm
52                     /ppc
53                     /sparc
54                     /usb
55                     /pcmcia /(cards)
56                     /soc
57                     /oss
58
59
60 core directory
61 --------------
62
63 This directory contains the middle layer which is the heart of ALSA
64 drivers. In this directory, the native ALSA modules are stored. The
65 sub-directories contain different modules and are dependent upon the
66 kernel config.
67
68 core/oss
69 ~~~~~~~~
70
71 The codes for PCM and mixer OSS emulation modules are stored in this
72 directory. The rawmidi OSS emulation is included in the ALSA rawmidi
73 code since it's quite small. The sequencer code is stored in
74 ``core/seq/oss`` directory (see `below <#core-seq-oss>`__).
75
76 core/seq
77 ~~~~~~~~
78
79 This directory and its sub-directories are for the ALSA sequencer. This
80 directory contains the sequencer core and primary sequencer modules such
81 like snd-seq-midi, snd-seq-virmidi, etc. They are compiled only when
82 ``CONFIG_SND_SEQUENCER`` is set in the kernel config.
83
84 core/seq/oss
85 ~~~~~~~~~~~~
86
87 This contains the OSS sequencer emulation codes.
88
89 include directory
90 -----------------
91
92 This is the place for the public header files of ALSA drivers, which are
93 to be exported to user-space, or included by several files at different
94 directories. Basically, the private header files should not be placed in
95 this directory, but you may still find files there, due to historical
96 reasons :)
97
98 drivers directory
99 -----------------
100
101 This directory contains code shared among different drivers on different
102 architectures. They are hence supposed not to be architecture-specific.
103 For example, the dummy pcm driver and the serial MIDI driver are found
104 in this directory. In the sub-directories, there is code for components
105 which are independent from bus and cpu architectures.
106
107 drivers/mpu401
108 ~~~~~~~~~~~~~~
109
110 The MPU401 and MPU401-UART modules are stored here.
111
112 drivers/opl3 and opl4
113 ~~~~~~~~~~~~~~~~~~~~~
114
115 The OPL3 and OPL4 FM-synth stuff is found here.
116
117 i2c directory
118 -------------
119
120 This contains the ALSA i2c components.
121
122 Although there is a standard i2c layer on Linux, ALSA has its own i2c
123 code for some cards, because the soundcard needs only a simple operation
124 and the standard i2c API is too complicated for such a purpose.
125
126 synth directory
127 ---------------
128
129 This contains the synth middle-level modules.
130
131 So far, there is only Emu8000/Emu10k1 synth driver under the
132 ``synth/emux`` sub-directory.
133
134 pci directory
135 -------------
136
137 This directory and its sub-directories hold the top-level card modules
138 for PCI soundcards and the code specific to the PCI BUS.
139
140 The drivers compiled from a single file are stored directly in the pci
141 directory, while the drivers with several source files are stored on
142 their own sub-directory (e.g. emu10k1, ice1712).
143
144 isa directory
145 -------------
146
147 This directory and its sub-directories hold the top-level card modules
148 for ISA soundcards.
149
150 arm, ppc, and sparc directories
151 -------------------------------
152
153 They are used for top-level card modules which are specific to one of
154 these architectures.
155
156 usb directory
157 -------------
158
159 This directory contains the USB-audio driver. In the latest version, the
160 USB MIDI driver is integrated in the usb-audio driver.
161
162 pcmcia directory
163 ----------------
164
165 The PCMCIA, especially PCCard drivers will go here. CardBus drivers will
166 be in the pci directory, because their API is identical to that of
167 standard PCI cards.
168
169 soc directory
170 -------------
171
172 This directory contains the codes for ASoC (ALSA System on Chip)
173 layer including ASoC core, codec and machine drivers.
174
175 oss directory
176 -------------
177
178 Here contains OSS/Lite codes.
179 All codes have been deprecated except for dmasound on m68k as of
180 writing this.
181
182
183 Basic Flow for PCI Drivers
184 ==========================
185
186 Outline
187 -------
188
189 The minimum flow for PCI soundcards is as follows:
190
191 -  define the PCI ID table (see the section `PCI Entries`_).
192
193 -  create ``probe`` callback.
194
195 -  create ``remove`` callback.
196
197 -  create a :c:type:`struct pci_driver <pci_driver>` structure
198    containing the three pointers above.
199
200 -  create an ``init`` function just calling the
201    :c:func:`pci_register_driver()` to register the pci_driver
202    table defined above.
203
204 -  create an ``exit`` function to call the
205    :c:func:`pci_unregister_driver()` function.
206
207 Full Code Example
208 -----------------
209
210 The code example is shown below. Some parts are kept unimplemented at
211 this moment but will be filled in the next sections. The numbers in the
212 comment lines of the :c:func:`snd_mychip_probe()` function refer
213 to details explained in the following section.
214
215 ::
216
217       #include <linux/init.h>
218       #include <linux/pci.h>
219       #include <linux/slab.h>
220       #include <sound/core.h>
221       #include <sound/initval.h>
222
223       /* module parameters (see "Module Parameters") */
224       /* SNDRV_CARDS: maximum number of cards supported by this module */
225       static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
226       static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
227       static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
228
229       /* definition of the chip-specific record */
230       struct mychip {
231               struct snd_card *card;
232               /* the rest of the implementation will be in section
233                * "PCI Resource Management"
234                */
235       };
236
237       /* chip-specific destructor
238        * (see "PCI Resource Management")
239        */
240       static int snd_mychip_free(struct mychip *chip)
241       {
242               .... /* will be implemented later... */
243       }
244
245       /* component-destructor
246        * (see "Management of Cards and Components")
247        */
248       static int snd_mychip_dev_free(struct snd_device *device)
249       {
250               return snd_mychip_free(device->device_data);
251       }
252
253       /* chip-specific constructor
254        * (see "Management of Cards and Components")
255        */
256       static int snd_mychip_create(struct snd_card *card,
257                                    struct pci_dev *pci,
258                                    struct mychip **rchip)
259       {
260               struct mychip *chip;
261               int err;
262               static struct snd_device_ops ops = {
263                      .dev_free = snd_mychip_dev_free,
264               };
265
266               *rchip = NULL;
267
268               /* check PCI availability here
269                * (see "PCI Resource Management")
270                */
271               ....
272
273               /* allocate a chip-specific data with zero filled */
274               chip = kzalloc(sizeof(*chip), GFP_KERNEL);
275               if (chip == NULL)
276                       return -ENOMEM;
277
278               chip->card = card;
279
280               /* rest of initialization here; will be implemented
281                * later, see "PCI Resource Management"
282                */
283               ....
284
285               err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
286               if (err < 0) {
287                       snd_mychip_free(chip);
288                       return err;
289               }
290
291               *rchip = chip;
292               return 0;
293       }
294
295       /* constructor -- see "Driver Constructor" sub-section */
296       static int snd_mychip_probe(struct pci_dev *pci,
297                                   const struct pci_device_id *pci_id)
298       {
299               static int dev;
300               struct snd_card *card;
301               struct mychip *chip;
302               int err;
303
304               /* (1) */
305               if (dev >= SNDRV_CARDS)
306                       return -ENODEV;
307               if (!enable[dev]) {
308                       dev++;
309                       return -ENOENT;
310               }
311
312               /* (2) */
313               err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
314                                  0, &card);
315               if (err < 0)
316                       return err;
317
318               /* (3) */
319               err = snd_mychip_create(card, pci, &chip);
320               if (err < 0)
321                       goto error;
322
323               /* (4) */
324               strcpy(card->driver, "My Chip");
325               strcpy(card->shortname, "My Own Chip 123");
326               sprintf(card->longname, "%s at 0x%lx irq %i",
327                       card->shortname, chip->port, chip->irq);
328
329               /* (5) */
330               .... /* implemented later */
331
332               /* (6) */
333               err = snd_card_register(card);
334               if (err < 0)
335                       goto error;
336
337               /* (7) */
338               pci_set_drvdata(pci, card);
339               dev++;
340               return 0;
341
342       error:
343               snd_card_free(card);
344               return err;
345       }
346
347       /* destructor -- see the "Destructor" sub-section */
348       static void snd_mychip_remove(struct pci_dev *pci)
349       {
350               snd_card_free(pci_get_drvdata(pci));
351       }
352
353
354
355 Driver Constructor
356 ------------------
357
358 The real constructor of PCI drivers is the ``probe`` callback. The
359 ``probe`` callback and other component-constructors which are called
360 from the ``probe`` callback cannot be used with the ``__init`` prefix
361 because any PCI device could be a hotplug device.
362
363 In the ``probe`` callback, the following scheme is often used.
364
365 1) Check and increment the device index.
366 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
367
368 ::
369
370   static int dev;
371   ....
372   if (dev >= SNDRV_CARDS)
373           return -ENODEV;
374   if (!enable[dev]) {
375           dev++;
376           return -ENOENT;
377   }
378
379
380 where ``enable[dev]`` is the module option.
381
382 Each time the ``probe`` callback is called, check the availability of
383 the device. If not available, simply increment the device index and
384 returns. dev will be incremented also later (`step 7
385 <#set-the-pci-driver-data-and-return-zero>`__).
386
387 2) Create a card instance
388 ~~~~~~~~~~~~~~~~~~~~~~~~~
389
390 ::
391
392   struct snd_card *card;
393   int err;
394   ....
395   err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
396                      0, &card);
397
398
399 The details will be explained in the section `Management of Cards and
400 Components`_.
401
402 3) Create a main component
403 ~~~~~~~~~~~~~~~~~~~~~~~~~~
404
405 In this part, the PCI resources are allocated.
406
407 ::
408
409   struct mychip *chip;
410   ....
411   err = snd_mychip_create(card, pci, &chip);
412   if (err < 0)
413           goto error;
414
415 The details will be explained in the section `PCI Resource
416 Management`_.
417
418 When something goes wrong, the probe function needs to deal with the
419 error.  In this example, we have a single error handling path placed
420 at the end of the function.
421
422 ::
423
424   error:
425           snd_card_free(card);
426           return err;
427
428 Since each component can be properly freed, the single
429 :c:func:`snd_card_free()` call should suffice in most cases.
430
431
432 4) Set the driver ID and name strings.
433 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
434
435 ::
436
437   strcpy(card->driver, "My Chip");
438   strcpy(card->shortname, "My Own Chip 123");
439   sprintf(card->longname, "%s at 0x%lx irq %i",
440           card->shortname, chip->port, chip->irq);
441
442 The driver field holds the minimal ID string of the chip. This is used
443 by alsa-lib's configurator, so keep it simple but unique. Even the
444 same driver can have different driver IDs to distinguish the
445 functionality of each chip type.
446
447 The shortname field is a string shown as more verbose name. The longname
448 field contains the information shown in ``/proc/asound/cards``.
449
450 5) Create other components, such as mixer, MIDI, etc.
451 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
452
453 Here you define the basic components such as `PCM <#PCM-Interface>`__,
454 mixer (e.g. `AC97 <#API-for-AC97-Codec>`__), MIDI (e.g.
455 `MPU-401 <#MIDI-MPU401-UART-Interface>`__), and other interfaces.
456 Also, if you want a `proc file <#Proc-Interface>`__, define it here,
457 too.
458
459 6) Register the card instance.
460 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
461
462 ::
463
464   err = snd_card_register(card);
465   if (err < 0)
466           goto error;
467
468 Will be explained in the section `Management of Cards and
469 Components`_, too.
470
471 7) Set the PCI driver data and return zero.
472 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
473
474 ::
475
476   pci_set_drvdata(pci, card);
477   dev++;
478   return 0;
479
480 In the above, the card record is stored. This pointer is used in the
481 remove callback and power-management callbacks, too.
482
483 Destructor
484 ----------
485
486 The destructor, remove callback, simply releases the card instance. Then
487 the ALSA middle layer will release all the attached components
488 automatically.
489
490 It would be typically just :c:func:`calling snd_card_free()`:
491
492 ::
493
494   static void snd_mychip_remove(struct pci_dev *pci)
495   {
496           snd_card_free(pci_get_drvdata(pci));
497   }
498
499
500 The above code assumes that the card pointer is set to the PCI driver
501 data.
502
503 Header Files
504 ------------
505
506 For the above example, at least the following include files are
507 necessary.
508
509 ::
510
511   #include <linux/init.h>
512   #include <linux/pci.h>
513   #include <linux/slab.h>
514   #include <sound/core.h>
515   #include <sound/initval.h>
516
517 where the last one is necessary only when module options are defined
518 in the source file. If the code is split into several files, the files
519 without module options don't need them.
520
521 In addition to these headers, you'll need ``<linux/interrupt.h>`` for
522 interrupt handling, and ``<linux/io.h>`` for I/O access. If you use the
523 :c:func:`mdelay()` or :c:func:`udelay()` functions, you'll need
524 to include ``<linux/delay.h>`` too.
525
526 The ALSA interfaces like the PCM and control APIs are defined in other
527 ``<sound/xxx.h>`` header files. They have to be included after
528 ``<sound/core.h>``.
529
530 Management of Cards and Components
531 ==================================
532
533 Card Instance
534 -------------
535
536 For each soundcard, a “card” record must be allocated.
537
538 A card record is the headquarters of the soundcard. It manages the whole
539 list of devices (components) on the soundcard, such as PCM, mixers,
540 MIDI, synthesizer, and so on. Also, the card record holds the ID and the
541 name strings of the card, manages the root of proc files, and controls
542 the power-management states and hotplug disconnections. The component
543 list on the card record is used to manage the correct release of
544 resources at destruction.
545
546 As mentioned above, to create a card instance, call
547 :c:func:`snd_card_new()`.
548
549 ::
550
551   struct snd_card *card;
552   int err;
553   err = snd_card_new(&pci->dev, index, id, module, extra_size, &card);
554
555
556 The function takes six arguments: the parent device pointer, the
557 card-index number, the id string, the module pointer (usually
558 ``THIS_MODULE``), the size of extra-data space, and the pointer to
559 return the card instance. The extra_size argument is used to allocate
560 card->private_data for the chip-specific data. Note that these data are
561 allocated by :c:func:`snd_card_new()`.
562
563 The first argument, the pointer of struct :c:type:`struct device
564 <device>`, specifies the parent device. For PCI devices, typically
565 ``&pci->`` is passed there.
566
567 Components
568 ----------
569
570 After the card is created, you can attach the components (devices) to
571 the card instance. In an ALSA driver, a component is represented as a
572 :c:type:`struct snd_device <snd_device>` object. A component
573 can be a PCM instance, a control interface, a raw MIDI interface, etc.
574 Each such instance has one component entry.
575
576 A component can be created via :c:func:`snd_device_new()`
577 function.
578
579 ::
580
581   snd_device_new(card, SNDRV_DEV_XXX, chip, &ops);
582
583 This takes the card pointer, the device-level (``SNDRV_DEV_XXX``), the
584 data pointer, and the callback pointers (``&ops``). The device-level
585 defines the type of components and the order of registration and
586 de-registration. For most components, the device-level is already
587 defined. For a user-defined component, you can use
588 ``SNDRV_DEV_LOWLEVEL``.
589
590 This function itself doesn't allocate the data space. The data must be
591 allocated manually beforehand, and its pointer is passed as the
592 argument. This pointer (``chip`` in the above example) is used as the
593 identifier for the instance.
594
595 Each pre-defined ALSA component such as ac97 and pcm calls
596 :c:func:`snd_device_new()` inside its constructor. The destructor
597 for each component is defined in the callback pointers. Hence, you don't
598 need to take care of calling a destructor for such a component.
599
600 If you wish to create your own component, you need to set the destructor
601 function to the dev_free callback in the ``ops``, so that it can be
602 released automatically via :c:func:`snd_card_free()`. The next
603 example will show an implementation of chip-specific data.
604
605 Chip-Specific Data
606 ------------------
607
608 Chip-specific information, e.g. the I/O port address, its resource
609 pointer, or the irq number, is stored in the chip-specific record.
610
611 ::
612
613   struct mychip {
614           ....
615   };
616
617
618 In general, there are two ways of allocating the chip record.
619
620 1. Allocating via :c:func:`snd_card_new()`.
621 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
622
623 As mentioned above, you can pass the extra-data-length to the 5th
624 argument of :c:func:`snd_card_new()`, i.e.
625
626 ::
627
628   err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
629                      sizeof(struct mychip), &card);
630
631 :c:type:`struct mychip <mychip>` is the type of the chip record.
632
633 In return, the allocated record can be accessed as
634
635 ::
636
637   struct mychip *chip = card->private_data;
638
639 With this method, you don't have to allocate twice. The record is
640 released together with the card instance.
641
642 2. Allocating an extra device.
643 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
644
645 After allocating a card instance via :c:func:`snd_card_new()`
646 (with ``0`` on the 4th arg), call :c:func:`kzalloc()`.
647
648 ::
649
650   struct snd_card *card;
651   struct mychip *chip;
652   err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
653                      0, &card);
654   .....
655   chip = kzalloc(sizeof(*chip), GFP_KERNEL);
656
657 The chip record should have the field to hold the card pointer at least,
658
659 ::
660
661   struct mychip {
662           struct snd_card *card;
663           ....
664   };
665
666
667 Then, set the card pointer in the returned chip instance.
668
669 ::
670
671   chip->card = card;
672
673 Next, initialize the fields, and register this chip record as a
674 low-level device with a specified ``ops``,
675
676 ::
677
678   static struct snd_device_ops ops = {
679           .dev_free =        snd_mychip_dev_free,
680   };
681   ....
682   snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
683
684 :c:func:`snd_mychip_dev_free()` is the device-destructor
685 function, which will call the real destructor.
686
687 ::
688
689   static int snd_mychip_dev_free(struct snd_device *device)
690   {
691           return snd_mychip_free(device->device_data);
692   }
693
694 where :c:func:`snd_mychip_free()` is the real destructor.
695
696 The demerit of this method is the obviously more amount of codes.
697 The merit is, however, you can trigger the own callback at registering
698 and disconnecting the card via setting in snd_device_ops.
699 About the registering and disconnecting the card, see the subsections
700 below.
701
702
703 Registration and Release
704 ------------------------
705
706 After all components are assigned, register the card instance by calling
707 :c:func:`snd_card_register()`. Access to the device files is
708 enabled at this point. That is, before
709 :c:func:`snd_card_register()` is called, the components are safely
710 inaccessible from external side. If this call fails, exit the probe
711 function after releasing the card via :c:func:`snd_card_free()`.
712
713 For releasing the card instance, you can call simply
714 :c:func:`snd_card_free()`. As mentioned earlier, all components
715 are released automatically by this call.
716
717 For a device which allows hotplugging, you can use
718 :c:func:`snd_card_free_when_closed()`. This one will postpone
719 the destruction until all devices are closed.
720
721 PCI Resource Management
722 =======================
723
724 Full Code Example
725 -----------------
726
727 In this section, we'll complete the chip-specific constructor,
728 destructor and PCI entries. Example code is shown first, below.
729
730 ::
731
732       struct mychip {
733               struct snd_card *card;
734               struct pci_dev *pci;
735
736               unsigned long port;
737               int irq;
738       };
739
740       static int snd_mychip_free(struct mychip *chip)
741       {
742               /* disable hardware here if any */
743               .... /* (not implemented in this document) */
744
745               /* release the irq */
746               if (chip->irq >= 0)
747                       free_irq(chip->irq, chip);
748               /* release the I/O ports & memory */
749               pci_release_regions(chip->pci);
750               /* disable the PCI entry */
751               pci_disable_device(chip->pci);
752               /* release the data */
753               kfree(chip);
754               return 0;
755       }
756
757       /* chip-specific constructor */
758       static int snd_mychip_create(struct snd_card *card,
759                                    struct pci_dev *pci,
760                                    struct mychip **rchip)
761       {
762               struct mychip *chip;
763               int err;
764               static struct snd_device_ops ops = {
765                      .dev_free = snd_mychip_dev_free,
766               };
767
768               *rchip = NULL;
769
770               /* initialize the PCI entry */
771               err = pci_enable_device(pci);
772               if (err < 0)
773                       return err;
774               /* check PCI availability (28bit DMA) */
775               if (pci_set_dma_mask(pci, DMA_BIT_MASK(28)) < 0 ||
776                   pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(28)) < 0) {
777                       printk(KERN_ERR "error to set 28bit mask DMA\n");
778                       pci_disable_device(pci);
779                       return -ENXIO;
780               }
781
782               chip = kzalloc(sizeof(*chip), GFP_KERNEL);
783               if (chip == NULL) {
784                       pci_disable_device(pci);
785                       return -ENOMEM;
786               }
787
788               /* initialize the stuff */
789               chip->card = card;
790               chip->pci = pci;
791               chip->irq = -1;
792
793               /* (1) PCI resource allocation */
794               err = pci_request_regions(pci, "My Chip");
795               if (err < 0) {
796                       kfree(chip);
797                       pci_disable_device(pci);
798                       return err;
799               }
800               chip->port = pci_resource_start(pci, 0);
801               if (request_irq(pci->irq, snd_mychip_interrupt,
802                               IRQF_SHARED, KBUILD_MODNAME, chip)) {
803                       printk(KERN_ERR "cannot grab irq %d\n", pci->irq);
804                       snd_mychip_free(chip);
805                       return -EBUSY;
806               }
807               chip->irq = pci->irq;
808
809               /* (2) initialization of the chip hardware */
810               .... /*   (not implemented in this document) */
811
812               err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
813               if (err < 0) {
814                       snd_mychip_free(chip);
815                       return err;
816               }
817
818               *rchip = chip;
819               return 0;
820       }
821
822       /* PCI IDs */
823       static struct pci_device_id snd_mychip_ids[] = {
824               { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
825                 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
826               ....
827               { 0, }
828       };
829       MODULE_DEVICE_TABLE(pci, snd_mychip_ids);
830
831       /* pci_driver definition */
832       static struct pci_driver driver = {
833               .name = KBUILD_MODNAME,
834               .id_table = snd_mychip_ids,
835               .probe = snd_mychip_probe,
836               .remove = snd_mychip_remove,
837       };
838
839       /* module initialization */
840       static int __init alsa_card_mychip_init(void)
841       {
842               return pci_register_driver(&driver);
843       }
844
845       /* module clean up */
846       static void __exit alsa_card_mychip_exit(void)
847       {
848               pci_unregister_driver(&driver);
849       }
850
851       module_init(alsa_card_mychip_init)
852       module_exit(alsa_card_mychip_exit)
853
854       EXPORT_NO_SYMBOLS; /* for old kernels only */
855
856 Some Hafta's
857 ------------
858
859 The allocation of PCI resources is done in the ``probe`` function, and
860 usually an extra :c:func:`xxx_create()` function is written for this
861 purpose.
862
863 In the case of PCI devices, you first have to call the
864 :c:func:`pci_enable_device()` function before allocating
865 resources. Also, you need to set the proper PCI DMA mask to limit the
866 accessed I/O range. In some cases, you might need to call
867 :c:func:`pci_set_master()` function, too.
868
869 Suppose the 28bit mask, and the code to be added would be like:
870
871 ::
872
873   err = pci_enable_device(pci);
874   if (err < 0)
875           return err;
876   if (pci_set_dma_mask(pci, DMA_BIT_MASK(28)) < 0 ||
877       pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(28)) < 0) {
878           printk(KERN_ERR "error to set 28bit mask DMA\n");
879           pci_disable_device(pci);
880           return -ENXIO;
881   }
882   
883
884 Resource Allocation
885 -------------------
886
887 The allocation of I/O ports and irqs is done via standard kernel
888 functions.  These resources must be released in the destructor
889 function (see below).
890
891 Now assume that the PCI device has an I/O port with 8 bytes and an
892 interrupt. Then :c:type:`struct mychip <mychip>` will have the
893 following fields:
894
895 ::
896
897   struct mychip {
898           struct snd_card *card;
899
900           unsigned long port;
901           int irq;
902   };
903
904
905 For an I/O port (and also a memory region), you need to have the
906 resource pointer for the standard resource management. For an irq, you
907 have to keep only the irq number (integer). But you need to initialize
908 this number as -1 before actual allocation, since irq 0 is valid. The
909 port address and its resource pointer can be initialized as null by
910 :c:func:`kzalloc()` automatically, so you don't have to take care of
911 resetting them.
912
913 The allocation of an I/O port is done like this:
914
915 ::
916
917   err = pci_request_regions(pci, "My Chip");
918   if (err < 0) { 
919           kfree(chip);
920           pci_disable_device(pci);
921           return err;
922   }
923   chip->port = pci_resource_start(pci, 0);
924
925 It will reserve the I/O port region of 8 bytes of the given PCI device.
926 The returned value, ``chip->res_port``, is allocated via
927 :c:func:`kmalloc()` by :c:func:`request_region()`. The pointer
928 must be released via :c:func:`kfree()`, but there is a problem with
929 this. This issue will be explained later.
930
931 The allocation of an interrupt source is done like this:
932
933 ::
934
935   if (request_irq(pci->irq, snd_mychip_interrupt,
936                   IRQF_SHARED, KBUILD_MODNAME, chip)) {
937           printk(KERN_ERR "cannot grab irq %d\n", pci->irq);
938           snd_mychip_free(chip);
939           return -EBUSY;
940   }
941   chip->irq = pci->irq;
942
943 where :c:func:`snd_mychip_interrupt()` is the interrupt handler
944 defined `later <#pcm-interface-interrupt-handler>`__. Note that
945 ``chip->irq`` should be defined only when :c:func:`request_irq()`
946 succeeded.
947
948 On the PCI bus, interrupts can be shared. Thus, ``IRQF_SHARED`` is used
949 as the interrupt flag of :c:func:`request_irq()`.
950
951 The last argument of :c:func:`request_irq()` is the data pointer
952 passed to the interrupt handler. Usually, the chip-specific record is
953 used for that, but you can use what you like, too.
954
955 I won't give details about the interrupt handler at this point, but at
956 least its appearance can be explained now. The interrupt handler looks
957 usually like the following:
958
959 ::
960
961   static irqreturn_t snd_mychip_interrupt(int irq, void *dev_id)
962   {
963           struct mychip *chip = dev_id;
964           ....
965           return IRQ_HANDLED;
966   }
967
968
969 Now let's write the corresponding destructor for the resources above.
970 The role of destructor is simple: disable the hardware (if already
971 activated) and release the resources. So far, we have no hardware part,
972 so the disabling code is not written here.
973
974 To release the resources, the “check-and-release” method is a safer way.
975 For the interrupt, do like this:
976
977 ::
978
979   if (chip->irq >= 0)
980           free_irq(chip->irq, chip);
981
982 Since the irq number can start from 0, you should initialize
983 ``chip->irq`` with a negative value (e.g. -1), so that you can check
984 the validity of the irq number as above.
985
986 When you requested I/O ports or memory regions via
987 :c:func:`pci_request_region()` or
988 :c:func:`pci_request_regions()` like in this example, release the
989 resource(s) using the corresponding function,
990 :c:func:`pci_release_region()` or
991 :c:func:`pci_release_regions()`.
992
993 ::
994
995   pci_release_regions(chip->pci);
996
997 When you requested manually via :c:func:`request_region()` or
998 :c:func:`request_mem_region()`, you can release it via
999 :c:func:`release_resource()`. Suppose that you keep the resource
1000 pointer returned from :c:func:`request_region()` in
1001 chip->res_port, the release procedure looks like:
1002
1003 ::
1004
1005   release_and_free_resource(chip->res_port);
1006
1007 Don't forget to call :c:func:`pci_disable_device()` before the
1008 end.
1009
1010 And finally, release the chip-specific record.
1011
1012 ::
1013
1014   kfree(chip);
1015
1016 We didn't implement the hardware disabling part in the above. If you
1017 need to do this, please note that the destructor may be called even
1018 before the initialization of the chip is completed. It would be better
1019 to have a flag to skip hardware disabling if the hardware was not
1020 initialized yet.
1021
1022 When the chip-data is assigned to the card using
1023 :c:func:`snd_device_new()` with ``SNDRV_DEV_LOWLELVEL`` , its
1024 destructor is called at the last. That is, it is assured that all other
1025 components like PCMs and controls have already been released. You don't
1026 have to stop PCMs, etc. explicitly, but just call low-level hardware
1027 stopping.
1028
1029 The management of a memory-mapped region is almost as same as the
1030 management of an I/O port. You'll need three fields like the
1031 following:
1032
1033 ::
1034
1035   struct mychip {
1036           ....
1037           unsigned long iobase_phys;
1038           void __iomem *iobase_virt;
1039   };
1040
1041 and the allocation would be like below:
1042
1043 ::
1044
1045   err = pci_request_regions(pci, "My Chip");
1046   if (err < 0) {
1047           kfree(chip);
1048           return err;
1049   }
1050   chip->iobase_phys = pci_resource_start(pci, 0);
1051   chip->iobase_virt = ioremap_nocache(chip->iobase_phys,
1052                                       pci_resource_len(pci, 0));
1053
1054 and the corresponding destructor would be:
1055
1056 ::
1057
1058   static int snd_mychip_free(struct mychip *chip)
1059   {
1060           ....
1061           if (chip->iobase_virt)
1062                   iounmap(chip->iobase_virt);
1063           ....
1064           pci_release_regions(chip->pci);
1065           ....
1066   }
1067
1068 Of course, a modern way with :c:func:`pci_iomap()` will make things a
1069 bit easier, too.
1070
1071 ::
1072
1073   err = pci_request_regions(pci, "My Chip");
1074   if (err < 0) {
1075           kfree(chip);
1076           return err;
1077   }
1078   chip->iobase_virt = pci_iomap(pci, 0, 0);
1079
1080 which is paired with :c:func:`pci_iounmap()` at destructor.
1081
1082
1083 PCI Entries
1084 -----------
1085
1086 So far, so good. Let's finish the missing PCI stuff. At first, we need a
1087 :c:type:`struct pci_device_id <pci_device_id>` table for
1088 this chipset. It's a table of PCI vendor/device ID number, and some
1089 masks.
1090
1091 For example,
1092
1093 ::
1094
1095   static struct pci_device_id snd_mychip_ids[] = {
1096           { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
1097             PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
1098           ....
1099           { 0, }
1100   };
1101   MODULE_DEVICE_TABLE(pci, snd_mychip_ids);
1102
1103 The first and second fields of the :c:type:`struct pci_device_id
1104 <pci_device_id>` structure are the vendor and device IDs. If you
1105 have no reason to filter the matching devices, you can leave the
1106 remaining fields as above. The last field of the :c:type:`struct
1107 pci_device_id <pci_device_id>` struct contains private data
1108 for this entry. You can specify any value here, for example, to define
1109 specific operations for supported device IDs. Such an example is found
1110 in the intel8x0 driver.
1111
1112 The last entry of this list is the terminator. You must specify this
1113 all-zero entry.
1114
1115 Then, prepare the :c:type:`struct pci_driver <pci_driver>`
1116 record:
1117
1118 ::
1119
1120   static struct pci_driver driver = {
1121           .name = KBUILD_MODNAME,
1122           .id_table = snd_mychip_ids,
1123           .probe = snd_mychip_probe,
1124           .remove = snd_mychip_remove,
1125   };
1126
1127 The ``probe`` and ``remove`` functions have already been defined in
1128 the previous sections. The ``name`` field is the name string of this
1129 device. Note that you must not use a slash “/” in this string.
1130
1131 And at last, the module entries:
1132
1133 ::
1134
1135   static int __init alsa_card_mychip_init(void)
1136   {
1137           return pci_register_driver(&driver);
1138   }
1139
1140   static void __exit alsa_card_mychip_exit(void)
1141   {
1142           pci_unregister_driver(&driver);
1143   }
1144
1145   module_init(alsa_card_mychip_init)
1146   module_exit(alsa_card_mychip_exit)
1147
1148 Note that these module entries are tagged with ``__init`` and ``__exit``
1149 prefixes.
1150
1151 That's all!
1152
1153 PCM Interface
1154 =============
1155
1156 General
1157 -------
1158
1159 The PCM middle layer of ALSA is quite powerful and it is only necessary
1160 for each driver to implement the low-level functions to access its
1161 hardware.
1162
1163 For accessing to the PCM layer, you need to include ``<sound/pcm.h>``
1164 first. In addition, ``<sound/pcm_params.h>`` might be needed if you
1165 access to some functions related with hw_param.
1166
1167 Each card device can have up to four pcm instances. A pcm instance
1168 corresponds to a pcm device file. The limitation of number of instances
1169 comes only from the available bit size of the Linux's device numbers.
1170 Once when 64bit device number is used, we'll have more pcm instances
1171 available.
1172
1173 A pcm instance consists of pcm playback and capture streams, and each
1174 pcm stream consists of one or more pcm substreams. Some soundcards
1175 support multiple playback functions. For example, emu10k1 has a PCM
1176 playback of 32 stereo substreams. In this case, at each open, a free
1177 substream is (usually) automatically chosen and opened. Meanwhile, when
1178 only one substream exists and it was already opened, the successful open
1179 will either block or error with ``EAGAIN`` according to the file open
1180 mode. But you don't have to care about such details in your driver. The
1181 PCM middle layer will take care of such work.
1182
1183 Full Code Example
1184 -----------------
1185
1186 The example code below does not include any hardware access routines but
1187 shows only the skeleton, how to build up the PCM interfaces.
1188
1189 ::
1190
1191       #include <sound/pcm.h>
1192       ....
1193
1194       /* hardware definition */
1195       static struct snd_pcm_hardware snd_mychip_playback_hw = {
1196               .info = (SNDRV_PCM_INFO_MMAP |
1197                        SNDRV_PCM_INFO_INTERLEAVED |
1198                        SNDRV_PCM_INFO_BLOCK_TRANSFER |
1199                        SNDRV_PCM_INFO_MMAP_VALID),
1200               .formats =          SNDRV_PCM_FMTBIT_S16_LE,
1201               .rates =            SNDRV_PCM_RATE_8000_48000,
1202               .rate_min =         8000,
1203               .rate_max =         48000,
1204               .channels_min =     2,
1205               .channels_max =     2,
1206               .buffer_bytes_max = 32768,
1207               .period_bytes_min = 4096,
1208               .period_bytes_max = 32768,
1209               .periods_min =      1,
1210               .periods_max =      1024,
1211       };
1212
1213       /* hardware definition */
1214       static struct snd_pcm_hardware snd_mychip_capture_hw = {
1215               .info = (SNDRV_PCM_INFO_MMAP |
1216                        SNDRV_PCM_INFO_INTERLEAVED |
1217                        SNDRV_PCM_INFO_BLOCK_TRANSFER |
1218                        SNDRV_PCM_INFO_MMAP_VALID),
1219               .formats =          SNDRV_PCM_FMTBIT_S16_LE,
1220               .rates =            SNDRV_PCM_RATE_8000_48000,
1221               .rate_min =         8000,
1222               .rate_max =         48000,
1223               .channels_min =     2,
1224               .channels_max =     2,
1225               .buffer_bytes_max = 32768,
1226               .period_bytes_min = 4096,
1227               .period_bytes_max = 32768,
1228               .periods_min =      1,
1229               .periods_max =      1024,
1230       };
1231
1232       /* open callback */
1233       static int snd_mychip_playback_open(struct snd_pcm_substream *substream)
1234       {
1235               struct mychip *chip = snd_pcm_substream_chip(substream);
1236               struct snd_pcm_runtime *runtime = substream->runtime;
1237
1238               runtime->hw = snd_mychip_playback_hw;
1239               /* more hardware-initialization will be done here */
1240               ....
1241               return 0;
1242       }
1243
1244       /* close callback */
1245       static int snd_mychip_playback_close(struct snd_pcm_substream *substream)
1246       {
1247               struct mychip *chip = snd_pcm_substream_chip(substream);
1248               /* the hardware-specific codes will be here */
1249               ....
1250               return 0;
1251
1252       }
1253
1254       /* open callback */
1255       static int snd_mychip_capture_open(struct snd_pcm_substream *substream)
1256       {
1257               struct mychip *chip = snd_pcm_substream_chip(substream);
1258               struct snd_pcm_runtime *runtime = substream->runtime;
1259
1260               runtime->hw = snd_mychip_capture_hw;
1261               /* more hardware-initialization will be done here */
1262               ....
1263               return 0;
1264       }
1265
1266       /* close callback */
1267       static int snd_mychip_capture_close(struct snd_pcm_substream *substream)
1268       {
1269               struct mychip *chip = snd_pcm_substream_chip(substream);
1270               /* the hardware-specific codes will be here */
1271               ....
1272               return 0;
1273       }
1274
1275       /* hw_params callback */
1276       static int snd_mychip_pcm_hw_params(struct snd_pcm_substream *substream,
1277                                    struct snd_pcm_hw_params *hw_params)
1278       {
1279               /* the hardware-specific codes will be here */
1280               ....
1281               return 0;
1282       }
1283
1284       /* hw_free callback */
1285       static int snd_mychip_pcm_hw_free(struct snd_pcm_substream *substream)
1286       {
1287               /* the hardware-specific codes will be here */
1288               ....
1289               return 0;
1290       }
1291
1292       /* prepare callback */
1293       static int snd_mychip_pcm_prepare(struct snd_pcm_substream *substream)
1294       {
1295               struct mychip *chip = snd_pcm_substream_chip(substream);
1296               struct snd_pcm_runtime *runtime = substream->runtime;
1297
1298               /* set up the hardware with the current configuration
1299                * for example...
1300                */
1301               mychip_set_sample_format(chip, runtime->format);
1302               mychip_set_sample_rate(chip, runtime->rate);
1303               mychip_set_channels(chip, runtime->channels);
1304               mychip_set_dma_setup(chip, runtime->dma_addr,
1305                                    chip->buffer_size,
1306                                    chip->period_size);
1307               return 0;
1308       }
1309
1310       /* trigger callback */
1311       static int snd_mychip_pcm_trigger(struct snd_pcm_substream *substream,
1312                                         int cmd)
1313       {
1314               switch (cmd) {
1315               case SNDRV_PCM_TRIGGER_START:
1316                       /* do something to start the PCM engine */
1317                       ....
1318                       break;
1319               case SNDRV_PCM_TRIGGER_STOP:
1320                       /* do something to stop the PCM engine */
1321                       ....
1322                       break;
1323               default:
1324                       return -EINVAL;
1325               }
1326       }
1327
1328       /* pointer callback */
1329       static snd_pcm_uframes_t
1330       snd_mychip_pcm_pointer(struct snd_pcm_substream *substream)
1331       {
1332               struct mychip *chip = snd_pcm_substream_chip(substream);
1333               unsigned int current_ptr;
1334
1335               /* get the current hardware pointer */
1336               current_ptr = mychip_get_hw_pointer(chip);
1337               return current_ptr;
1338       }
1339
1340       /* operators */
1341       static struct snd_pcm_ops snd_mychip_playback_ops = {
1342               .open =        snd_mychip_playback_open,
1343               .close =       snd_mychip_playback_close,
1344               .hw_params =   snd_mychip_pcm_hw_params,
1345               .hw_free =     snd_mychip_pcm_hw_free,
1346               .prepare =     snd_mychip_pcm_prepare,
1347               .trigger =     snd_mychip_pcm_trigger,
1348               .pointer =     snd_mychip_pcm_pointer,
1349       };
1350
1351       /* operators */
1352       static struct snd_pcm_ops snd_mychip_capture_ops = {
1353               .open =        snd_mychip_capture_open,
1354               .close =       snd_mychip_capture_close,
1355               .hw_params =   snd_mychip_pcm_hw_params,
1356               .hw_free =     snd_mychip_pcm_hw_free,
1357               .prepare =     snd_mychip_pcm_prepare,
1358               .trigger =     snd_mychip_pcm_trigger,
1359               .pointer =     snd_mychip_pcm_pointer,
1360       };
1361
1362       /*
1363        *  definitions of capture are omitted here...
1364        */
1365
1366       /* create a pcm device */
1367       static int snd_mychip_new_pcm(struct mychip *chip)
1368       {
1369               struct snd_pcm *pcm;
1370               int err;
1371
1372               err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, &pcm);
1373               if (err < 0)
1374                       return err;
1375               pcm->private_data = chip;
1376               strcpy(pcm->name, "My Chip");
1377               chip->pcm = pcm;
1378               /* set operators */
1379               snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK,
1380                               &snd_mychip_playback_ops);
1381               snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE,
1382                               &snd_mychip_capture_ops);
1383               /* pre-allocation of buffers */
1384               /* NOTE: this may fail */
1385               snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV,
1386                                              &chip->pci->dev,
1387                                              64*1024, 64*1024);
1388               return 0;
1389       }
1390
1391
1392 PCM Constructor
1393 ---------------
1394
1395 A pcm instance is allocated by the :c:func:`snd_pcm_new()`
1396 function. It would be better to create a constructor for pcm, namely,
1397
1398 ::
1399
1400   static int snd_mychip_new_pcm(struct mychip *chip)
1401   {
1402           struct snd_pcm *pcm;
1403           int err;
1404
1405           err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, &pcm);
1406           if (err < 0) 
1407                   return err;
1408           pcm->private_data = chip;
1409           strcpy(pcm->name, "My Chip");
1410           chip->pcm = pcm;
1411           ....
1412           return 0;
1413   }
1414
1415 The :c:func:`snd_pcm_new()` function takes four arguments. The
1416 first argument is the card pointer to which this pcm is assigned, and
1417 the second is the ID string.
1418
1419 The third argument (``index``, 0 in the above) is the index of this new
1420 pcm. It begins from zero. If you create more than one pcm instances,
1421 specify the different numbers in this argument. For example, ``index =
1422 1`` for the second PCM device.
1423
1424 The fourth and fifth arguments are the number of substreams for playback
1425 and capture, respectively. Here 1 is used for both arguments. When no
1426 playback or capture substreams are available, pass 0 to the
1427 corresponding argument.
1428
1429 If a chip supports multiple playbacks or captures, you can specify more
1430 numbers, but they must be handled properly in open/close, etc.
1431 callbacks. When you need to know which substream you are referring to,
1432 then it can be obtained from :c:type:`struct snd_pcm_substream
1433 <snd_pcm_substream>` data passed to each callback as follows:
1434
1435 ::
1436
1437   struct snd_pcm_substream *substream;
1438   int index = substream->number;
1439
1440
1441 After the pcm is created, you need to set operators for each pcm stream.
1442
1443 ::
1444
1445   snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK,
1446                   &snd_mychip_playback_ops);
1447   snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE,
1448                   &snd_mychip_capture_ops);
1449
1450 The operators are defined typically like this:
1451
1452 ::
1453
1454   static struct snd_pcm_ops snd_mychip_playback_ops = {
1455           .open =        snd_mychip_pcm_open,
1456           .close =       snd_mychip_pcm_close,
1457           .hw_params =   snd_mychip_pcm_hw_params,
1458           .hw_free =     snd_mychip_pcm_hw_free,
1459           .prepare =     snd_mychip_pcm_prepare,
1460           .trigger =     snd_mychip_pcm_trigger,
1461           .pointer =     snd_mychip_pcm_pointer,
1462   };
1463
1464 All the callbacks are described in the Operators_ subsection.
1465
1466 After setting the operators, you probably will want to pre-allocate the
1467 buffer and set up the managed allocation mode.
1468 For that, simply call the following:
1469
1470 ::
1471
1472   snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV,
1473                                  &chip->pci->dev,
1474                                  64*1024, 64*1024);
1475
1476 It will allocate a buffer up to 64kB as default. Buffer management
1477 details will be described in the later section `Buffer and Memory
1478 Management`_.
1479
1480 Additionally, you can set some extra information for this pcm in
1481 ``pcm->info_flags``. The available values are defined as
1482 ``SNDRV_PCM_INFO_XXX`` in ``<sound/asound.h>``, which is used for the
1483 hardware definition (described later). When your soundchip supports only
1484 half-duplex, specify like this:
1485
1486 ::
1487
1488   pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
1489
1490
1491 ... And the Destructor?
1492 -----------------------
1493
1494 The destructor for a pcm instance is not always necessary. Since the pcm
1495 device will be released by the middle layer code automatically, you
1496 don't have to call the destructor explicitly.
1497
1498 The destructor would be necessary if you created special records
1499 internally and needed to release them. In such a case, set the
1500 destructor function to ``pcm->private_free``:
1501
1502 ::
1503
1504       static void mychip_pcm_free(struct snd_pcm *pcm)
1505       {
1506               struct mychip *chip = snd_pcm_chip(pcm);
1507               /* free your own data */
1508               kfree(chip->my_private_pcm_data);
1509               /* do what you like else */
1510               ....
1511       }
1512
1513       static int snd_mychip_new_pcm(struct mychip *chip)
1514       {
1515               struct snd_pcm *pcm;
1516               ....
1517               /* allocate your own data */
1518               chip->my_private_pcm_data = kmalloc(...);
1519               /* set the destructor */
1520               pcm->private_data = chip;
1521               pcm->private_free = mychip_pcm_free;
1522               ....
1523       }
1524
1525
1526
1527 Runtime Pointer - The Chest of PCM Information
1528 ----------------------------------------------
1529
1530 When the PCM substream is opened, a PCM runtime instance is allocated
1531 and assigned to the substream. This pointer is accessible via
1532 ``substream->runtime``. This runtime pointer holds most information you
1533 need to control the PCM: the copy of hw_params and sw_params
1534 configurations, the buffer pointers, mmap records, spinlocks, etc.
1535
1536 The definition of runtime instance is found in ``<sound/pcm.h>``. Here
1537 are the contents of this file:
1538
1539 ::
1540
1541   struct _snd_pcm_runtime {
1542           /* -- Status -- */
1543           struct snd_pcm_substream *trigger_master;
1544           snd_timestamp_t trigger_tstamp;       /* trigger timestamp */
1545           int overrange;
1546           snd_pcm_uframes_t avail_max;
1547           snd_pcm_uframes_t hw_ptr_base;        /* Position at buffer restart */
1548           snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time*/
1549   
1550           /* -- HW params -- */
1551           snd_pcm_access_t access;      /* access mode */
1552           snd_pcm_format_t format;      /* SNDRV_PCM_FORMAT_* */
1553           snd_pcm_subformat_t subformat;        /* subformat */
1554           unsigned int rate;            /* rate in Hz */
1555           unsigned int channels;                /* channels */
1556           snd_pcm_uframes_t period_size;        /* period size */
1557           unsigned int periods;         /* periods */
1558           snd_pcm_uframes_t buffer_size;        /* buffer size */
1559           unsigned int tick_time;               /* tick time */
1560           snd_pcm_uframes_t min_align;  /* Min alignment for the format */
1561           size_t byte_align;
1562           unsigned int frame_bits;
1563           unsigned int sample_bits;
1564           unsigned int info;
1565           unsigned int rate_num;
1566           unsigned int rate_den;
1567   
1568           /* -- SW params -- */
1569           struct timespec tstamp_mode;  /* mmap timestamp is updated */
1570           unsigned int period_step;
1571           unsigned int sleep_min;               /* min ticks to sleep */
1572           snd_pcm_uframes_t start_threshold;
1573           snd_pcm_uframes_t stop_threshold;
1574           snd_pcm_uframes_t silence_threshold; /* Silence filling happens when
1575                                                   noise is nearest than this */
1576           snd_pcm_uframes_t silence_size;       /* Silence filling size */
1577           snd_pcm_uframes_t boundary;   /* pointers wrap point */
1578   
1579           snd_pcm_uframes_t silenced_start;
1580           snd_pcm_uframes_t silenced_size;
1581   
1582           snd_pcm_sync_id_t sync;               /* hardware synchronization ID */
1583   
1584           /* -- mmap -- */
1585           volatile struct snd_pcm_mmap_status *status;
1586           volatile struct snd_pcm_mmap_control *control;
1587           atomic_t mmap_count;
1588   
1589           /* -- locking / scheduling -- */
1590           spinlock_t lock;
1591           wait_queue_head_t sleep;
1592           struct timer_list tick_timer;
1593           struct fasync_struct *fasync;
1594
1595           /* -- private section -- */
1596           void *private_data;
1597           void (*private_free)(struct snd_pcm_runtime *runtime);
1598   
1599           /* -- hardware description -- */
1600           struct snd_pcm_hardware hw;
1601           struct snd_pcm_hw_constraints hw_constraints;
1602   
1603           /* -- timer -- */
1604           unsigned int timer_resolution;        /* timer resolution */
1605   
1606           /* -- DMA -- */           
1607           unsigned char *dma_area;      /* DMA area */
1608           dma_addr_t dma_addr;          /* physical bus address (not accessible from main CPU) */
1609           size_t dma_bytes;             /* size of DMA area */
1610   
1611           struct snd_dma_buffer *dma_buffer_p;  /* allocated buffer */
1612   
1613   #if defined(CONFIG_SND_PCM_OSS) || defined(CONFIG_SND_PCM_OSS_MODULE)
1614           /* -- OSS things -- */
1615           struct snd_pcm_oss_runtime oss;
1616   #endif
1617   };
1618
1619
1620 For the operators (callbacks) of each sound driver, most of these
1621 records are supposed to be read-only. Only the PCM middle-layer changes
1622 / updates them. The exceptions are the hardware description (hw) DMA
1623 buffer information and the private data. Besides, if you use the
1624 standard managed buffer allocation mode, you don't need to set the
1625 DMA buffer information by yourself.
1626
1627 In the sections below, important records are explained.
1628
1629 Hardware Description
1630 ~~~~~~~~~~~~~~~~~~~~
1631
1632 The hardware descriptor (:c:type:`struct snd_pcm_hardware
1633 <snd_pcm_hardware>`) contains the definitions of the fundamental
1634 hardware configuration. Above all, you'll need to define this in the
1635 `PCM open callback`_. Note that the runtime instance holds the copy of
1636 the descriptor, not the pointer to the existing descriptor. That is,
1637 in the open callback, you can modify the copied descriptor
1638 (``runtime->hw``) as you need. For example, if the maximum number of
1639 channels is 1 only on some chip models, you can still use the same
1640 hardware descriptor and change the channels_max later:
1641
1642 ::
1643
1644           struct snd_pcm_runtime *runtime = substream->runtime;
1645           ...
1646           runtime->hw = snd_mychip_playback_hw; /* common definition */
1647           if (chip->model == VERY_OLD_ONE)
1648                   runtime->hw.channels_max = 1;
1649
1650 Typically, you'll have a hardware descriptor as below:
1651
1652 ::
1653
1654   static struct snd_pcm_hardware snd_mychip_playback_hw = {
1655           .info = (SNDRV_PCM_INFO_MMAP |
1656                    SNDRV_PCM_INFO_INTERLEAVED |
1657                    SNDRV_PCM_INFO_BLOCK_TRANSFER |
1658                    SNDRV_PCM_INFO_MMAP_VALID),
1659           .formats =          SNDRV_PCM_FMTBIT_S16_LE,
1660           .rates =            SNDRV_PCM_RATE_8000_48000,
1661           .rate_min =         8000,
1662           .rate_max =         48000,
1663           .channels_min =     2,
1664           .channels_max =     2,
1665           .buffer_bytes_max = 32768,
1666           .period_bytes_min = 4096,
1667           .period_bytes_max = 32768,
1668           .periods_min =      1,
1669           .periods_max =      1024,
1670   };
1671
1672 -  The ``info`` field contains the type and capabilities of this
1673    pcm. The bit flags are defined in ``<sound/asound.h>`` as
1674    ``SNDRV_PCM_INFO_XXX``. Here, at least, you have to specify whether
1675    the mmap is supported and which interleaved format is
1676    supported. When the hardware supports mmap, add the
1677    ``SNDRV_PCM_INFO_MMAP`` flag here. When the hardware supports the
1678    interleaved or the non-interleaved formats,
1679    ``SNDRV_PCM_INFO_INTERLEAVED`` or ``SNDRV_PCM_INFO_NONINTERLEAVED``
1680    flag must be set, respectively. If both are supported, you can set
1681    both, too.
1682
1683    In the above example, ``MMAP_VALID`` and ``BLOCK_TRANSFER`` are
1684    specified for the OSS mmap mode. Usually both are set. Of course,
1685    ``MMAP_VALID`` is set only if the mmap is really supported.
1686
1687    The other possible flags are ``SNDRV_PCM_INFO_PAUSE`` and
1688    ``SNDRV_PCM_INFO_RESUME``. The ``PAUSE`` bit means that the pcm
1689    supports the “pause” operation, while the ``RESUME`` bit means that
1690    the pcm supports the full “suspend/resume” operation. If the
1691    ``PAUSE`` flag is set, the ``trigger`` callback below must handle
1692    the corresponding (pause push/release) commands. The suspend/resume
1693    trigger commands can be defined even without the ``RESUME``
1694    flag. See `Power Management`_ section for details.
1695
1696    When the PCM substreams can be synchronized (typically,
1697    synchronized start/stop of a playback and a capture streams), you
1698    can give ``SNDRV_PCM_INFO_SYNC_START``, too. In this case, you'll
1699    need to check the linked-list of PCM substreams in the trigger
1700    callback. This will be described in the later section.
1701
1702 -  ``formats`` field contains the bit-flags of supported formats
1703    (``SNDRV_PCM_FMTBIT_XXX``). If the hardware supports more than one
1704    format, give all or'ed bits. In the example above, the signed 16bit
1705    little-endian format is specified.
1706
1707 -  ``rates`` field contains the bit-flags of supported rates
1708    (``SNDRV_PCM_RATE_XXX``). When the chip supports continuous rates,
1709    pass ``CONTINUOUS`` bit additionally. The pre-defined rate bits are
1710    provided only for typical rates. If your chip supports
1711    unconventional rates, you need to add the ``KNOT`` bit and set up
1712    the hardware constraint manually (explained later).
1713
1714 -  ``rate_min`` and ``rate_max`` define the minimum and maximum sample
1715    rate. This should correspond somehow to ``rates`` bits.
1716
1717 -  ``channel_min`` and ``channel_max`` define, as you might already
1718    expected, the minimum and maximum number of channels.
1719
1720 -  ``buffer_bytes_max`` defines the maximum buffer size in
1721    bytes. There is no ``buffer_bytes_min`` field, since it can be
1722    calculated from the minimum period size and the minimum number of
1723    periods. Meanwhile, ``period_bytes_min`` and define the minimum and
1724    maximum size of the period in bytes. ``periods_max`` and
1725    ``periods_min`` define the maximum and minimum number of periods in
1726    the buffer.
1727
1728    The “period” is a term that corresponds to a fragment in the OSS
1729    world. The period defines the size at which a PCM interrupt is
1730    generated. This size strongly depends on the hardware. Generally,
1731    the smaller period size will give you more interrupts, that is,
1732    more controls. In the case of capture, this size defines the input
1733    latency. On the other hand, the whole buffer size defines the
1734    output latency for the playback direction.
1735
1736 -  There is also a field ``fifo_size``. This specifies the size of the
1737    hardware FIFO, but currently it is neither used in the driver nor
1738    in the alsa-lib. So, you can ignore this field.
1739
1740 PCM Configurations
1741 ~~~~~~~~~~~~~~~~~~
1742
1743 Ok, let's go back again to the PCM runtime records. The most
1744 frequently referred records in the runtime instance are the PCM
1745 configurations. The PCM configurations are stored in the runtime
1746 instance after the application sends ``hw_params`` data via
1747 alsa-lib. There are many fields copied from hw_params and sw_params
1748 structs. For example, ``format`` holds the format type chosen by the
1749 application. This field contains the enum value
1750 ``SNDRV_PCM_FORMAT_XXX``.
1751
1752 One thing to be noted is that the configured buffer and period sizes
1753 are stored in “frames” in the runtime. In the ALSA world, ``1 frame =
1754 channels \* samples-size``. For conversion between frames and bytes,
1755 you can use the :c:func:`frames_to_bytes()` and
1756 :c:func:`bytes_to_frames()` helper functions.
1757
1758 ::
1759
1760   period_bytes = frames_to_bytes(runtime, runtime->period_size);
1761
1762 Also, many software parameters (sw_params) are stored in frames, too.
1763 Please check the type of the field. ``snd_pcm_uframes_t`` is for the
1764 frames as unsigned integer while ``snd_pcm_sframes_t`` is for the
1765 frames as signed integer.
1766
1767 DMA Buffer Information
1768 ~~~~~~~~~~~~~~~~~~~~~~
1769
1770 The DMA buffer is defined by the following four fields, ``dma_area``,
1771 ``dma_addr``, ``dma_bytes`` and ``dma_private``. The ``dma_area``
1772 holds the buffer pointer (the logical address). You can call
1773 :c:func:`memcpy()` from/to this pointer. Meanwhile, ``dma_addr`` holds
1774 the physical address of the buffer. This field is specified only when
1775 the buffer is a linear buffer. ``dma_bytes`` holds the size of buffer
1776 in bytes. ``dma_private`` is used for the ALSA DMA allocator.
1777
1778 If you use either the managed buffer allocation mode or the standard
1779 API function :c:func:`snd_pcm_lib_malloc_pages()` for allocating the buffer,
1780 these fields are set by the ALSA middle layer, and you should *not*
1781 change them by yourself. You can read them but not write them. On the
1782 other hand, if you want to allocate the buffer by yourself, you'll
1783 need to manage it in hw_params callback. At least, ``dma_bytes`` is
1784 mandatory. ``dma_area`` is necessary when the buffer is mmapped. If
1785 your driver doesn't support mmap, this field is not
1786 necessary. ``dma_addr`` is also optional. You can use dma_private as
1787 you like, too.
1788
1789 Running Status
1790 ~~~~~~~~~~~~~~
1791
1792 The running status can be referred via ``runtime->status``. This is
1793 the pointer to the :c:type:`struct snd_pcm_mmap_status
1794 <snd_pcm_mmap_status>` record. For example, you can get the current
1795 DMA hardware pointer via ``runtime->status->hw_ptr``.
1796
1797 The DMA application pointer can be referred via ``runtime->control``,
1798 which points to the :c:type:`struct snd_pcm_mmap_control
1799 <snd_pcm_mmap_control>` record. However, accessing directly to
1800 this value is not recommended.
1801
1802 Private Data
1803 ~~~~~~~~~~~~
1804
1805 You can allocate a record for the substream and store it in
1806 ``runtime->private_data``. Usually, this is done in the `PCM open
1807 callback`_. Don't mix this with ``pcm->private_data``. The
1808 ``pcm->private_data`` usually points to the chip instance assigned
1809 statically at the creation of PCM, while the ``runtime->private_data``
1810 points to a dynamic data structure created at the PCM open
1811 callback.
1812
1813 ::
1814
1815   static int snd_xxx_open(struct snd_pcm_substream *substream)
1816   {
1817           struct my_pcm_data *data;
1818           ....
1819           data = kmalloc(sizeof(*data), GFP_KERNEL);
1820           substream->runtime->private_data = data;
1821           ....
1822   }
1823
1824
1825 The allocated object must be released in the `close callback`_.
1826
1827 Operators
1828 ---------
1829
1830 OK, now let me give details about each pcm callback (``ops``). In
1831 general, every callback must return 0 if successful, or a negative
1832 error number such as ``-EINVAL``. To choose an appropriate error
1833 number, it is advised to check what value other parts of the kernel
1834 return when the same kind of request fails.
1835
1836 The callback function takes at least the argument with :c:type:`struct
1837 snd_pcm_substream <snd_pcm_substream>` pointer. To retrieve the chip
1838 record from the given substream instance, you can use the following
1839 macro.
1840
1841 ::
1842
1843   int xxx() {
1844           struct mychip *chip = snd_pcm_substream_chip(substream);
1845           ....
1846   }
1847
1848 The macro reads ``substream->private_data``, which is a copy of
1849 ``pcm->private_data``. You can override the former if you need to
1850 assign different data records per PCM substream. For example, the
1851 cmi8330 driver assigns different ``private_data`` for playback and
1852 capture directions, because it uses two different codecs (SB- and
1853 AD-compatible) for different directions.
1854
1855 PCM open callback
1856 ~~~~~~~~~~~~~~~~~
1857
1858 ::
1859
1860   static int snd_xxx_open(struct snd_pcm_substream *substream);
1861
1862 This is called when a pcm substream is opened.
1863
1864 At least, here you have to initialize the ``runtime->hw``
1865 record. Typically, this is done by like this:
1866
1867 ::
1868
1869   static int snd_xxx_open(struct snd_pcm_substream *substream)
1870   {
1871           struct mychip *chip = snd_pcm_substream_chip(substream);
1872           struct snd_pcm_runtime *runtime = substream->runtime;
1873
1874           runtime->hw = snd_mychip_playback_hw;
1875           return 0;
1876   }
1877
1878 where ``snd_mychip_playback_hw`` is the pre-defined hardware
1879 description.
1880
1881 You can allocate a private data in this callback, as described in
1882 `Private Data`_ section.
1883
1884 If the hardware configuration needs more constraints, set the hardware
1885 constraints here, too. See Constraints_ for more details.
1886
1887 close callback
1888 ~~~~~~~~~~~~~~
1889
1890 ::
1891
1892   static int snd_xxx_close(struct snd_pcm_substream *substream);
1893
1894
1895 Obviously, this is called when a pcm substream is closed.
1896
1897 Any private instance for a pcm substream allocated in the ``open``
1898 callback will be released here.
1899
1900 ::
1901
1902   static int snd_xxx_close(struct snd_pcm_substream *substream)
1903   {
1904           ....
1905           kfree(substream->runtime->private_data);
1906           ....
1907   }
1908
1909 ioctl callback
1910 ~~~~~~~~~~~~~~
1911
1912 This is used for any special call to pcm ioctls. But usually you can
1913 leave it as NULL, then PCM core calls the generic ioctl callback
1914 function :c:func:`snd_pcm_lib_ioctl()`.  If you need to deal with the
1915 unique setup of channel info or reset procedure, you can pass your own
1916 callback function here.
1917
1918 hw_params callback
1919 ~~~~~~~~~~~~~~~~~~~
1920
1921 ::
1922
1923   static int snd_xxx_hw_params(struct snd_pcm_substream *substream,
1924                                struct snd_pcm_hw_params *hw_params);
1925
1926 This is called when the hardware parameter (``hw_params``) is set up
1927 by the application, that is, once when the buffer size, the period
1928 size, the format, etc. are defined for the pcm substream.
1929
1930 Many hardware setups should be done in this callback, including the
1931 allocation of buffers.
1932
1933 Parameters to be initialized are retrieved by
1934 :c:func:`params_xxx()` macros.
1935
1936 When you set up the managed buffer allocation mode for the substream,
1937 a buffer is already allocated before this callback gets
1938 called. Alternatively, you can call a helper function below for
1939 allocating the buffer, too.
1940
1941 ::
1942
1943   snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
1944
1945 :c:func:`snd_pcm_lib_malloc_pages()` is available only when the
1946 DMA buffers have been pre-allocated. See the section `Buffer Types`_
1947 for more details.
1948
1949 Note that this and ``prepare`` callbacks may be called multiple times
1950 per initialization. For example, the OSS emulation may call these
1951 callbacks at each change via its ioctl.
1952
1953 Thus, you need to be careful not to allocate the same buffers many
1954 times, which will lead to memory leaks! Calling the helper function
1955 above many times is OK. It will release the previous buffer
1956 automatically when it was already allocated.
1957
1958 Another note is that this callback is non-atomic (schedulable) as
1959 default, i.e. when no ``nonatomic`` flag set. This is important,
1960 because the ``trigger`` callback is atomic (non-schedulable). That is,
1961 mutexes or any schedule-related functions are not available in
1962 ``trigger`` callback. Please see the subsection Atomicity_ for
1963 details.
1964
1965 hw_free callback
1966 ~~~~~~~~~~~~~~~~~
1967
1968 ::
1969
1970   static int snd_xxx_hw_free(struct snd_pcm_substream *substream);
1971
1972 This is called to release the resources allocated via
1973 ``hw_params``.
1974
1975 This function is always called before the close callback is called.
1976 Also, the callback may be called multiple times, too. Keep track
1977 whether the resource was already released.
1978
1979 When you have set up the managed buffer allocation mode for the PCM
1980 substream, the allocated PCM buffer will be automatically released
1981 after this callback gets called.  Otherwise you'll have to release the
1982 buffer manually.  Typically, when the buffer was allocated from the
1983 pre-allocated pool, you can use the standard API function
1984 :c:func:`snd_pcm_lib_malloc_pages()` like:
1985
1986 ::
1987
1988   snd_pcm_lib_free_pages(substream);
1989
1990 prepare callback
1991 ~~~~~~~~~~~~~~~~
1992
1993 ::
1994
1995   static int snd_xxx_prepare(struct snd_pcm_substream *substream);
1996
1997 This callback is called when the pcm is “prepared”. You can set the
1998 format type, sample rate, etc. here. The difference from ``hw_params``
1999 is that the ``prepare`` callback will be called each time
2000 :c:func:`snd_pcm_prepare()` is called, i.e. when recovering after
2001 underruns, etc.
2002
2003 Note that this callback is now non-atomic. You can use
2004 schedule-related functions safely in this callback.
2005
2006 In this and the following callbacks, you can refer to the values via
2007 the runtime record, ``substream->runtime``. For example, to get the
2008 current rate, format or channels, access to ``runtime->rate``,
2009 ``runtime->format`` or ``runtime->channels``, respectively. The
2010 physical address of the allocated buffer is set to
2011 ``runtime->dma_area``. The buffer and period sizes are in
2012 ``runtime->buffer_size`` and ``runtime->period_size``, respectively.
2013
2014 Be careful that this callback will be called many times at each setup,
2015 too.
2016
2017 trigger callback
2018 ~~~~~~~~~~~~~~~~
2019
2020 ::
2021
2022   static int snd_xxx_trigger(struct snd_pcm_substream *substream, int cmd);
2023
2024 This is called when the pcm is started, stopped or paused.
2025
2026 Which action is specified in the second argument,
2027 ``SNDRV_PCM_TRIGGER_XXX`` in ``<sound/pcm.h>``. At least, the ``START``
2028 and ``STOP`` commands must be defined in this callback.
2029
2030 ::
2031
2032   switch (cmd) {
2033   case SNDRV_PCM_TRIGGER_START:
2034           /* do something to start the PCM engine */
2035           break;
2036   case SNDRV_PCM_TRIGGER_STOP:
2037           /* do something to stop the PCM engine */
2038           break;
2039   default:
2040           return -EINVAL;
2041   }
2042
2043 When the pcm supports the pause operation (given in the info field of
2044 the hardware table), the ``PAUSE_PUSH`` and ``PAUSE_RELEASE`` commands
2045 must be handled here, too. The former is the command to pause the pcm,
2046 and the latter to restart the pcm again.
2047
2048 When the pcm supports the suspend/resume operation, regardless of full
2049 or partial suspend/resume support, the ``SUSPEND`` and ``RESUME``
2050 commands must be handled, too. These commands are issued when the
2051 power-management status is changed. Obviously, the ``SUSPEND`` and
2052 ``RESUME`` commands suspend and resume the pcm substream, and usually,
2053 they are identical to the ``STOP`` and ``START`` commands, respectively.
2054 See the `Power Management`_ section for details.
2055
2056 As mentioned, this callback is atomic as default unless ``nonatomic``
2057 flag set, and you cannot call functions which may sleep. The
2058 ``trigger`` callback should be as minimal as possible, just really
2059 triggering the DMA. The other stuff should be initialized
2060 ``hw_params`` and ``prepare`` callbacks properly beforehand.
2061
2062 pointer callback
2063 ~~~~~~~~~~~~~~~~
2064
2065 ::
2066
2067   static snd_pcm_uframes_t snd_xxx_pointer(struct snd_pcm_substream *substream)
2068
2069 This callback is called when the PCM middle layer inquires the current
2070 hardware position on the buffer. The position must be returned in
2071 frames, ranging from 0 to ``buffer_size - 1``. 
2072
2073 This is called usually from the buffer-update routine in the pcm
2074 middle layer, which is invoked when :c:func:`snd_pcm_period_elapsed()`
2075 is called in the interrupt routine. Then the pcm middle layer updates
2076 the position and calculates the available space, and wakes up the
2077 sleeping poll threads, etc.
2078
2079 This callback is also atomic as default.
2080
2081 copy_user, copy_kernel and fill_silence ops
2082 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2083
2084 These callbacks are not mandatory, and can be omitted in most cases.
2085 These callbacks are used when the hardware buffer cannot be in the
2086 normal memory space. Some chips have their own buffer on the hardware
2087 which is not mappable. In such a case, you have to transfer the data
2088 manually from the memory buffer to the hardware buffer. Or, if the
2089 buffer is non-contiguous on both physical and virtual memory spaces,
2090 these callbacks must be defined, too.
2091
2092 If these two callbacks are defined, copy and set-silence operations
2093 are done by them. The detailed will be described in the later section
2094 `Buffer and Memory Management`_.
2095
2096 ack callback
2097 ~~~~~~~~~~~~
2098
2099 This callback is also not mandatory. This callback is called when the
2100 ``appl_ptr`` is updated in read or write operations. Some drivers like
2101 emu10k1-fx and cs46xx need to track the current ``appl_ptr`` for the
2102 internal buffer, and this callback is useful only for such a purpose.
2103
2104 This callback is atomic as default.
2105
2106 page callback
2107 ~~~~~~~~~~~~~
2108
2109 This callback is optional too. The mmap calls this callback to get the
2110 page fault address.
2111
2112 Since the recent changes, you need no special callback any longer for
2113 the standard SG-buffer or vmalloc-buffer. Hence this callback should
2114 be rarely used.
2115
2116 mmap calllback
2117 ~~~~~~~~~~~~~~
2118
2119 This is another optional callback for controlling mmap behavior.
2120 Once when defined, PCM core calls this callback when a page is
2121 memory-mapped instead of dealing via the standard helper.
2122 If you need special handling (due to some architecture or
2123 device-specific issues), implement everything here as you like.
2124
2125
2126 PCM Interrupt Handler
2127 ---------------------
2128
2129 The rest of pcm stuff is the PCM interrupt handler. The role of PCM
2130 interrupt handler in the sound driver is to update the buffer position
2131 and to tell the PCM middle layer when the buffer position goes across
2132 the prescribed period size. To inform this, call the
2133 :c:func:`snd_pcm_period_elapsed()` function.
2134
2135 There are several types of sound chips to generate the interrupts.
2136
2137 Interrupts at the period (fragment) boundary
2138 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2139
2140 This is the most frequently found type: the hardware generates an
2141 interrupt at each period boundary. In this case, you can call
2142 :c:func:`snd_pcm_period_elapsed()` at each interrupt.
2143
2144 :c:func:`snd_pcm_period_elapsed()` takes the substream pointer as
2145 its argument. Thus, you need to keep the substream pointer accessible
2146 from the chip instance. For example, define ``substream`` field in the
2147 chip record to hold the current running substream pointer, and set the
2148 pointer value at ``open`` callback (and reset at ``close`` callback).
2149
2150 If you acquire a spinlock in the interrupt handler, and the lock is used
2151 in other pcm callbacks, too, then you have to release the lock before
2152 calling :c:func:`snd_pcm_period_elapsed()`, because
2153 :c:func:`snd_pcm_period_elapsed()` calls other pcm callbacks
2154 inside.
2155
2156 Typical code would be like:
2157
2158 ::
2159
2160
2161       static irqreturn_t snd_mychip_interrupt(int irq, void *dev_id)
2162       {
2163               struct mychip *chip = dev_id;
2164               spin_lock(&chip->lock);
2165               ....
2166               if (pcm_irq_invoked(chip)) {
2167                       /* call updater, unlock before it */
2168                       spin_unlock(&chip->lock);
2169                       snd_pcm_period_elapsed(chip->substream);
2170                       spin_lock(&chip->lock);
2171                       /* acknowledge the interrupt if necessary */
2172               }
2173               ....
2174               spin_unlock(&chip->lock);
2175               return IRQ_HANDLED;
2176       }
2177
2178
2179
2180 High frequency timer interrupts
2181 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2182
2183 This happens when the hardware doesn't generate interrupts at the period
2184 boundary but issues timer interrupts at a fixed timer rate (e.g. es1968
2185 or ymfpci drivers). In this case, you need to check the current hardware
2186 position and accumulate the processed sample length at each interrupt.
2187 When the accumulated size exceeds the period size, call
2188 :c:func:`snd_pcm_period_elapsed()` and reset the accumulator.
2189
2190 Typical code would be like the following.
2191
2192 ::
2193
2194
2195       static irqreturn_t snd_mychip_interrupt(int irq, void *dev_id)
2196       {
2197               struct mychip *chip = dev_id;
2198               spin_lock(&chip->lock);
2199               ....
2200               if (pcm_irq_invoked(chip)) {
2201                       unsigned int last_ptr, size;
2202                       /* get the current hardware pointer (in frames) */
2203                       last_ptr = get_hw_ptr(chip);
2204                       /* calculate the processed frames since the
2205                        * last update
2206                        */
2207                       if (last_ptr < chip->last_ptr)
2208                               size = runtime->buffer_size + last_ptr
2209                                        - chip->last_ptr;
2210                       else
2211                               size = last_ptr - chip->last_ptr;
2212                       /* remember the last updated point */
2213                       chip->last_ptr = last_ptr;
2214                       /* accumulate the size */
2215                       chip->size += size;
2216                       /* over the period boundary? */
2217                       if (chip->size >= runtime->period_size) {
2218                               /* reset the accumulator */
2219                               chip->size %= runtime->period_size;
2220                               /* call updater */
2221                               spin_unlock(&chip->lock);
2222                               snd_pcm_period_elapsed(substream);
2223                               spin_lock(&chip->lock);
2224                       }
2225                       /* acknowledge the interrupt if necessary */
2226               }
2227               ....
2228               spin_unlock(&chip->lock);
2229               return IRQ_HANDLED;
2230       }
2231
2232
2233
2234 On calling :c:func:`snd_pcm_period_elapsed()`
2235 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2236
2237 In both cases, even if more than one period are elapsed, you don't have
2238 to call :c:func:`snd_pcm_period_elapsed()` many times. Call only
2239 once. And the pcm layer will check the current hardware pointer and
2240 update to the latest status.
2241
2242 Atomicity
2243 ---------
2244
2245 One of the most important (and thus difficult to debug) problems in
2246 kernel programming are race conditions. In the Linux kernel, they are
2247 usually avoided via spin-locks, mutexes or semaphores. In general, if a
2248 race condition can happen in an interrupt handler, it has to be managed
2249 atomically, and you have to use a spinlock to protect the critical
2250 session. If the critical section is not in interrupt handler code and if
2251 taking a relatively long time to execute is acceptable, you should use
2252 mutexes or semaphores instead.
2253
2254 As already seen, some pcm callbacks are atomic and some are not. For
2255 example, the ``hw_params`` callback is non-atomic, while ``trigger``
2256 callback is atomic. This means, the latter is called already in a
2257 spinlock held by the PCM middle layer. Please take this atomicity into
2258 account when you choose a locking scheme in the callbacks.
2259
2260 In the atomic callbacks, you cannot use functions which may call
2261 :c:func:`schedule()` or go to :c:func:`sleep()`. Semaphores and
2262 mutexes can sleep, and hence they cannot be used inside the atomic
2263 callbacks (e.g. ``trigger`` callback). To implement some delay in such a
2264 callback, please use :c:func:`udelay()` or :c:func:`mdelay()`.
2265
2266 All three atomic callbacks (trigger, pointer, and ack) are called with
2267 local interrupts disabled.
2268
2269 The recent changes in PCM core code, however, allow all PCM operations
2270 to be non-atomic. This assumes that the all caller sides are in
2271 non-atomic contexts. For example, the function
2272 :c:func:`snd_pcm_period_elapsed()` is called typically from the
2273 interrupt handler. But, if you set up the driver to use a threaded
2274 interrupt handler, this call can be in non-atomic context, too. In such
2275 a case, you can set ``nonatomic`` filed of :c:type:`struct snd_pcm
2276 <snd_pcm>` object after creating it. When this flag is set, mutex
2277 and rwsem are used internally in the PCM core instead of spin and
2278 rwlocks, so that you can call all PCM functions safely in a non-atomic
2279 context.
2280
2281 Constraints
2282 -----------
2283
2284 If your chip supports unconventional sample rates, or only the limited
2285 samples, you need to set a constraint for the condition.
2286
2287 For example, in order to restrict the sample rates in the some supported
2288 values, use :c:func:`snd_pcm_hw_constraint_list()`. You need to
2289 call this function in the open callback.
2290
2291 ::
2292
2293       static unsigned int rates[] =
2294               {4000, 10000, 22050, 44100};
2295       static struct snd_pcm_hw_constraint_list constraints_rates = {
2296               .count = ARRAY_SIZE(rates),
2297               .list = rates,
2298               .mask = 0,
2299       };
2300
2301       static int snd_mychip_pcm_open(struct snd_pcm_substream *substream)
2302       {
2303               int err;
2304               ....
2305               err = snd_pcm_hw_constraint_list(substream->runtime, 0,
2306                                                SNDRV_PCM_HW_PARAM_RATE,
2307                                                &constraints_rates);
2308               if (err < 0)
2309                       return err;
2310               ....
2311       }
2312
2313
2314
2315 There are many different constraints. Look at ``sound/pcm.h`` for a
2316 complete list. You can even define your own constraint rules. For
2317 example, let's suppose my_chip can manage a substream of 1 channel if
2318 and only if the format is ``S16_LE``, otherwise it supports any format
2319 specified in the :c:type:`struct snd_pcm_hardware
2320 <snd_pcm_hardware>` structure (or in any other
2321 constraint_list). You can build a rule like this:
2322
2323 ::
2324
2325       static int hw_rule_channels_by_format(struct snd_pcm_hw_params *params,
2326                                             struct snd_pcm_hw_rule *rule)
2327       {
2328               struct snd_interval *c = hw_param_interval(params,
2329                             SNDRV_PCM_HW_PARAM_CHANNELS);
2330               struct snd_mask *f = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);
2331               struct snd_interval ch;
2332
2333               snd_interval_any(&ch);
2334               if (f->bits[0] == SNDRV_PCM_FMTBIT_S16_LE) {
2335                       ch.min = ch.max = 1;
2336                       ch.integer = 1;
2337                       return snd_interval_refine(c, &ch);
2338               }
2339               return 0;
2340       }
2341
2342
2343 Then you need to call this function to add your rule:
2344
2345 ::
2346
2347   snd_pcm_hw_rule_add(substream->runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,
2348                       hw_rule_channels_by_format, NULL,
2349                       SNDRV_PCM_HW_PARAM_FORMAT, -1);
2350
2351 The rule function is called when an application sets the PCM format, and
2352 it refines the number of channels accordingly. But an application may
2353 set the number of channels before setting the format. Thus you also need
2354 to define the inverse rule:
2355
2356 ::
2357
2358       static int hw_rule_format_by_channels(struct snd_pcm_hw_params *params,
2359                                             struct snd_pcm_hw_rule *rule)
2360       {
2361               struct snd_interval *c = hw_param_interval(params,
2362                     SNDRV_PCM_HW_PARAM_CHANNELS);
2363               struct snd_mask *f = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);
2364               struct snd_mask fmt;
2365
2366               snd_mask_any(&fmt);    /* Init the struct */
2367               if (c->min < 2) {
2368                       fmt.bits[0] &= SNDRV_PCM_FMTBIT_S16_LE;
2369                       return snd_mask_refine(f, &fmt);
2370               }
2371               return 0;
2372       }
2373
2374
2375 ... and in the open callback:
2376
2377 ::
2378
2379   snd_pcm_hw_rule_add(substream->runtime, 0, SNDRV_PCM_HW_PARAM_FORMAT,
2380                       hw_rule_format_by_channels, NULL,
2381                       SNDRV_PCM_HW_PARAM_CHANNELS, -1);
2382
2383 One typical usage of the hw constraints is to align the buffer size
2384 with the period size.  As default, ALSA PCM core doesn't enforce the
2385 buffer size to be aligned with the period size.  For example, it'd be
2386 possible to have a combination like 256 period bytes with 999 buffer
2387 bytes.
2388
2389 Many device chips, however, require the buffer to be a multiple of
2390 periods.  In such a case, call
2391 :c:func:`snd_pcm_hw_constraint_integer()` for
2392 ``SNDRV_PCM_HW_PARAM_PERIODS``.
2393
2394 ::
2395
2396   snd_pcm_hw_constraint_integer(substream->runtime,
2397                                 SNDRV_PCM_HW_PARAM_PERIODS);
2398
2399 This assures that the number of periods is integer, hence the buffer
2400 size is aligned with the period size.
2401
2402 The hw constraint is a very much powerful mechanism to define the
2403 preferred PCM configuration, and there are relevant helpers.
2404 I won't give more details here, rather I would like to say, “Luke, use
2405 the source.”
2406
2407 Control Interface
2408 =================
2409
2410 General
2411 -------
2412
2413 The control interface is used widely for many switches, sliders, etc.
2414 which are accessed from user-space. Its most important use is the mixer
2415 interface. In other words, since ALSA 0.9.x, all the mixer stuff is
2416 implemented on the control kernel API.
2417
2418 ALSA has a well-defined AC97 control module. If your chip supports only
2419 the AC97 and nothing else, you can skip this section.
2420
2421 The control API is defined in ``<sound/control.h>``. Include this file
2422 if you want to add your own controls.
2423
2424 Definition of Controls
2425 ----------------------
2426
2427 To create a new control, you need to define the following three
2428 callbacks: ``info``, ``get`` and ``put``. Then, define a
2429 :c:type:`struct snd_kcontrol_new <snd_kcontrol_new>` record, such as:
2430
2431 ::
2432
2433
2434       static struct snd_kcontrol_new my_control = {
2435               .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
2436               .name = "PCM Playback Switch",
2437               .index = 0,
2438               .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
2439               .private_value = 0xffff,
2440               .info = my_control_info,
2441               .get = my_control_get,
2442               .put = my_control_put
2443       };
2444
2445
2446 The ``iface`` field specifies the control type,
2447 ``SNDRV_CTL_ELEM_IFACE_XXX``, which is usually ``MIXER``. Use ``CARD``
2448 for global controls that are not logically part of the mixer. If the
2449 control is closely associated with some specific device on the sound
2450 card, use ``HWDEP``, ``PCM``, ``RAWMIDI``, ``TIMER``, or ``SEQUENCER``,
2451 and specify the device number with the ``device`` and ``subdevice``
2452 fields.
2453
2454 The ``name`` is the name identifier string. Since ALSA 0.9.x, the
2455 control name is very important, because its role is classified from
2456 its name. There are pre-defined standard control names. The details
2457 are described in the `Control Names`_ subsection.
2458
2459 The ``index`` field holds the index number of this control. If there
2460 are several different controls with the same name, they can be
2461 distinguished by the index number. This is the case when several
2462 codecs exist on the card. If the index is zero, you can omit the
2463 definition above. 
2464
2465 The ``access`` field contains the access type of this control. Give
2466 the combination of bit masks, ``SNDRV_CTL_ELEM_ACCESS_XXX``,
2467 there. The details will be explained in the `Access Flags`_
2468 subsection.
2469
2470 The ``private_value`` field contains an arbitrary long integer value
2471 for this record. When using the generic ``info``, ``get`` and ``put``
2472 callbacks, you can pass a value through this field. If several small
2473 numbers are necessary, you can combine them in bitwise. Or, it's
2474 possible to give a pointer (casted to unsigned long) of some record to
2475 this field, too. 
2476
2477 The ``tlv`` field can be used to provide metadata about the control;
2478 see the `Metadata`_ subsection.
2479
2480 The other three are `Control Callbacks`_.
2481
2482 Control Names
2483 -------------
2484
2485 There are some standards to define the control names. A control is
2486 usually defined from the three parts as “SOURCE DIRECTION FUNCTION”.
2487
2488 The first, ``SOURCE``, specifies the source of the control, and is a
2489 string such as “Master”, “PCM”, “CD” and “Line”. There are many
2490 pre-defined sources.
2491
2492 The second, ``DIRECTION``, is one of the following strings according to
2493 the direction of the control: “Playback”, “Capture”, “Bypass Playback”
2494 and “Bypass Capture”. Or, it can be omitted, meaning both playback and
2495 capture directions.
2496
2497 The third, ``FUNCTION``, is one of the following strings according to
2498 the function of the control: “Switch”, “Volume” and “Route”.
2499
2500 The example of control names are, thus, “Master Capture Switch” or “PCM
2501 Playback Volume”.
2502
2503 There are some exceptions:
2504
2505 Global capture and playback
2506 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2507
2508 “Capture Source”, “Capture Switch” and “Capture Volume” are used for the
2509 global capture (input) source, switch and volume. Similarly, “Playback
2510 Switch” and “Playback Volume” are used for the global output gain switch
2511 and volume.
2512
2513 Tone-controls
2514 ~~~~~~~~~~~~~
2515
2516 tone-control switch and volumes are specified like “Tone Control - XXX”,
2517 e.g. “Tone Control - Switch”, “Tone Control - Bass”, “Tone Control -
2518 Center”.
2519
2520 3D controls
2521 ~~~~~~~~~~~
2522
2523 3D-control switches and volumes are specified like “3D Control - XXX”,
2524 e.g. “3D Control - Switch”, “3D Control - Center”, “3D Control - Space”.
2525
2526 Mic boost
2527 ~~~~~~~~~
2528
2529 Mic-boost switch is set as “Mic Boost” or “Mic Boost (6dB)”.
2530
2531 More precise information can be found in
2532 ``Documentation/sound/designs/control-names.rst``.
2533
2534 Access Flags
2535 ------------
2536
2537 The access flag is the bitmask which specifies the access type of the
2538 given control. The default access type is
2539 ``SNDRV_CTL_ELEM_ACCESS_READWRITE``, which means both read and write are
2540 allowed to this control. When the access flag is omitted (i.e. = 0), it
2541 is considered as ``READWRITE`` access as default.
2542
2543 When the control is read-only, pass ``SNDRV_CTL_ELEM_ACCESS_READ``
2544 instead. In this case, you don't have to define the ``put`` callback.
2545 Similarly, when the control is write-only (although it's a rare case),
2546 you can use the ``WRITE`` flag instead, and you don't need the ``get``
2547 callback.
2548
2549 If the control value changes frequently (e.g. the VU meter),
2550 ``VOLATILE`` flag should be given. This means that the control may be
2551 changed without `Change notification`_. Applications should poll such
2552 a control constantly.
2553
2554 When the control is inactive, set the ``INACTIVE`` flag, too. There are
2555 ``LOCK`` and ``OWNER`` flags to change the write permissions.
2556
2557 Control Callbacks
2558 -----------------
2559
2560 info callback
2561 ~~~~~~~~~~~~~
2562
2563 The ``info`` callback is used to get detailed information on this
2564 control. This must store the values of the given :c:type:`struct
2565 snd_ctl_elem_info <snd_ctl_elem_info>` object. For example,
2566 for a boolean control with a single element:
2567
2568 ::
2569
2570
2571       static int snd_myctl_mono_info(struct snd_kcontrol *kcontrol,
2572                               struct snd_ctl_elem_info *uinfo)
2573       {
2574               uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
2575               uinfo->count = 1;
2576               uinfo->value.integer.min = 0;
2577               uinfo->value.integer.max = 1;
2578               return 0;
2579       }
2580
2581
2582
2583 The ``type`` field specifies the type of the control. There are
2584 ``BOOLEAN``, ``INTEGER``, ``ENUMERATED``, ``BYTES``, ``IEC958`` and
2585 ``INTEGER64``. The ``count`` field specifies the number of elements in
2586 this control. For example, a stereo volume would have count = 2. The
2587 ``value`` field is a union, and the values stored are depending on the
2588 type. The boolean and integer types are identical.
2589
2590 The enumerated type is a bit different from others. You'll need to set
2591 the string for the currently given item index.
2592
2593 ::
2594
2595   static int snd_myctl_enum_info(struct snd_kcontrol *kcontrol,
2596                           struct snd_ctl_elem_info *uinfo)
2597   {
2598           static char *texts[4] = {
2599                   "First", "Second", "Third", "Fourth"
2600           };
2601           uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2602           uinfo->count = 1;
2603           uinfo->value.enumerated.items = 4;
2604           if (uinfo->value.enumerated.item > 3)
2605                   uinfo->value.enumerated.item = 3;
2606           strcpy(uinfo->value.enumerated.name,
2607                  texts[uinfo->value.enumerated.item]);
2608           return 0;
2609   }
2610
2611 The above callback can be simplified with a helper function,
2612 :c:func:`snd_ctl_enum_info()`. The final code looks like below.
2613 (You can pass ``ARRAY_SIZE(texts)`` instead of 4 in the third argument;
2614 it's a matter of taste.)
2615
2616 ::
2617
2618   static int snd_myctl_enum_info(struct snd_kcontrol *kcontrol,
2619                           struct snd_ctl_elem_info *uinfo)
2620   {
2621           static char *texts[4] = {
2622                   "First", "Second", "Third", "Fourth"
2623           };
2624           return snd_ctl_enum_info(uinfo, 1, 4, texts);
2625   }
2626
2627
2628 Some common info callbacks are available for your convenience:
2629 :c:func:`snd_ctl_boolean_mono_info()` and
2630 :c:func:`snd_ctl_boolean_stereo_info()`. Obviously, the former
2631 is an info callback for a mono channel boolean item, just like
2632 :c:func:`snd_myctl_mono_info()` above, and the latter is for a
2633 stereo channel boolean item.
2634
2635 get callback
2636 ~~~~~~~~~~~~
2637
2638 This callback is used to read the current value of the control and to
2639 return to user-space.
2640
2641 For example,
2642
2643 ::
2644
2645
2646       static int snd_myctl_get(struct snd_kcontrol *kcontrol,
2647                                struct snd_ctl_elem_value *ucontrol)
2648       {
2649               struct mychip *chip = snd_kcontrol_chip(kcontrol);
2650               ucontrol->value.integer.value[0] = get_some_value(chip);
2651               return 0;
2652       }
2653
2654
2655
2656 The ``value`` field depends on the type of control as well as on the
2657 info callback. For example, the sb driver uses this field to store the
2658 register offset, the bit-shift and the bit-mask. The ``private_value``
2659 field is set as follows:
2660
2661 ::
2662
2663   .private_value = reg | (shift << 16) | (mask << 24)
2664
2665 and is retrieved in callbacks like
2666
2667 ::
2668
2669   static int snd_sbmixer_get_single(struct snd_kcontrol *kcontrol,
2670                                     struct snd_ctl_elem_value *ucontrol)
2671   {
2672           int reg = kcontrol->private_value & 0xff;
2673           int shift = (kcontrol->private_value >> 16) & 0xff;
2674           int mask = (kcontrol->private_value >> 24) & 0xff;
2675           ....
2676   }
2677
2678 In the ``get`` callback, you have to fill all the elements if the
2679 control has more than one elements, i.e. ``count > 1``. In the example
2680 above, we filled only one element (``value.integer.value[0]``) since
2681 it's assumed as ``count = 1``.
2682
2683 put callback
2684 ~~~~~~~~~~~~
2685
2686 This callback is used to write a value from user-space.
2687
2688 For example,
2689
2690 ::
2691
2692
2693       static int snd_myctl_put(struct snd_kcontrol *kcontrol,
2694                                struct snd_ctl_elem_value *ucontrol)
2695       {
2696               struct mychip *chip = snd_kcontrol_chip(kcontrol);
2697               int changed = 0;
2698               if (chip->current_value !=
2699                    ucontrol->value.integer.value[0]) {
2700                       change_current_value(chip,
2701                                   ucontrol->value.integer.value[0]);
2702                       changed = 1;
2703               }
2704               return changed;
2705       }
2706
2707
2708
2709 As seen above, you have to return 1 if the value is changed. If the
2710 value is not changed, return 0 instead. If any fatal error happens,
2711 return a negative error code as usual.
2712
2713 As in the ``get`` callback, when the control has more than one
2714 elements, all elements must be evaluated in this callback, too.
2715
2716 Callbacks are not atomic
2717 ~~~~~~~~~~~~~~~~~~~~~~~~
2718
2719 All these three callbacks are basically not atomic.
2720
2721 Control Constructor
2722 -------------------
2723
2724 When everything is ready, finally we can create a new control. To create
2725 a control, there are two functions to be called,
2726 :c:func:`snd_ctl_new1()` and :c:func:`snd_ctl_add()`.
2727
2728 In the simplest way, you can do like this:
2729
2730 ::
2731
2732   err = snd_ctl_add(card, snd_ctl_new1(&my_control, chip));
2733   if (err < 0)
2734           return err;
2735
2736 where ``my_control`` is the :c:type:`struct snd_kcontrol_new
2737 <snd_kcontrol_new>` object defined above, and chip is the object
2738 pointer to be passed to kcontrol->private_data which can be referred
2739 to in callbacks.
2740
2741 :c:func:`snd_ctl_new1()` allocates a new :c:type:`struct
2742 snd_kcontrol <snd_kcontrol>` instance, and
2743 :c:func:`snd_ctl_add()` assigns the given control component to the
2744 card.
2745
2746 Change Notification
2747 -------------------
2748
2749 If you need to change and update a control in the interrupt routine, you
2750 can call :c:func:`snd_ctl_notify()`. For example,
2751
2752 ::
2753
2754   snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE, id_pointer);
2755
2756 This function takes the card pointer, the event-mask, and the control id
2757 pointer for the notification. The event-mask specifies the types of
2758 notification, for example, in the above example, the change of control
2759 values is notified. The id pointer is the pointer of :c:type:`struct
2760 snd_ctl_elem_id <snd_ctl_elem_id>` to be notified. You can
2761 find some examples in ``es1938.c`` or ``es1968.c`` for hardware volume
2762 interrupts.
2763
2764 Metadata
2765 --------
2766
2767 To provide information about the dB values of a mixer control, use on of
2768 the ``DECLARE_TLV_xxx`` macros from ``<sound/tlv.h>`` to define a
2769 variable containing this information, set the ``tlv.p`` field to point to
2770 this variable, and include the ``SNDRV_CTL_ELEM_ACCESS_TLV_READ`` flag
2771 in the ``access`` field; like this:
2772
2773 ::
2774
2775   static DECLARE_TLV_DB_SCALE(db_scale_my_control, -4050, 150, 0);
2776
2777   static struct snd_kcontrol_new my_control = {
2778           ...
2779           .access = SNDRV_CTL_ELEM_ACCESS_READWRITE |
2780                     SNDRV_CTL_ELEM_ACCESS_TLV_READ,
2781           ...
2782           .tlv.p = db_scale_my_control,
2783   };
2784
2785
2786 The :c:func:`DECLARE_TLV_DB_SCALE()` macro defines information
2787 about a mixer control where each step in the control's value changes the
2788 dB value by a constant dB amount. The first parameter is the name of the
2789 variable to be defined. The second parameter is the minimum value, in
2790 units of 0.01 dB. The third parameter is the step size, in units of 0.01
2791 dB. Set the fourth parameter to 1 if the minimum value actually mutes
2792 the control.
2793
2794 The :c:func:`DECLARE_TLV_DB_LINEAR()` macro defines information
2795 about a mixer control where the control's value affects the output
2796 linearly. The first parameter is the name of the variable to be defined.
2797 The second parameter is the minimum value, in units of 0.01 dB. The
2798 third parameter is the maximum value, in units of 0.01 dB. If the
2799 minimum value mutes the control, set the second parameter to
2800 ``TLV_DB_GAIN_MUTE``.
2801
2802 API for AC97 Codec
2803 ==================
2804
2805 General
2806 -------
2807
2808 The ALSA AC97 codec layer is a well-defined one, and you don't have to
2809 write much code to control it. Only low-level control routines are
2810 necessary. The AC97 codec API is defined in ``<sound/ac97_codec.h>``.
2811
2812 Full Code Example
2813 -----------------
2814
2815 ::
2816
2817       struct mychip {
2818               ....
2819               struct snd_ac97 *ac97;
2820               ....
2821       };
2822
2823       static unsigned short snd_mychip_ac97_read(struct snd_ac97 *ac97,
2824                                                  unsigned short reg)
2825       {
2826               struct mychip *chip = ac97->private_data;
2827               ....
2828               /* read a register value here from the codec */
2829               return the_register_value;
2830       }
2831
2832       static void snd_mychip_ac97_write(struct snd_ac97 *ac97,
2833                                        unsigned short reg, unsigned short val)
2834       {
2835               struct mychip *chip = ac97->private_data;
2836               ....
2837               /* write the given register value to the codec */
2838       }
2839
2840       static int snd_mychip_ac97(struct mychip *chip)
2841       {
2842               struct snd_ac97_bus *bus;
2843               struct snd_ac97_template ac97;
2844               int err;
2845               static struct snd_ac97_bus_ops ops = {
2846                       .write = snd_mychip_ac97_write,
2847                       .read = snd_mychip_ac97_read,
2848               };
2849
2850               err = snd_ac97_bus(chip->card, 0, &ops, NULL, &bus);
2851               if (err < 0)
2852                       return err;
2853               memset(&ac97, 0, sizeof(ac97));
2854               ac97.private_data = chip;
2855               return snd_ac97_mixer(bus, &ac97, &chip->ac97);
2856       }
2857
2858
2859 AC97 Constructor
2860 ----------------
2861
2862 To create an ac97 instance, first call :c:func:`snd_ac97_bus()`
2863 with an ``ac97_bus_ops_t`` record with callback functions.
2864
2865 ::
2866
2867   struct snd_ac97_bus *bus;
2868   static struct snd_ac97_bus_ops ops = {
2869         .write = snd_mychip_ac97_write,
2870         .read = snd_mychip_ac97_read,
2871   };
2872
2873   snd_ac97_bus(card, 0, &ops, NULL, &pbus);
2874
2875 The bus record is shared among all belonging ac97 instances.
2876
2877 And then call :c:func:`snd_ac97_mixer()` with an :c:type:`struct
2878 snd_ac97_template <snd_ac97_template>` record together with
2879 the bus pointer created above.
2880
2881 ::
2882
2883   struct snd_ac97_template ac97;
2884   int err;
2885
2886   memset(&ac97, 0, sizeof(ac97));
2887   ac97.private_data = chip;
2888   snd_ac97_mixer(bus, &ac97, &chip->ac97);
2889
2890 where chip->ac97 is a pointer to a newly created ``ac97_t``
2891 instance. In this case, the chip pointer is set as the private data,
2892 so that the read/write callback functions can refer to this chip
2893 instance. This instance is not necessarily stored in the chip
2894 record. If you need to change the register values from the driver, or
2895 need the suspend/resume of ac97 codecs, keep this pointer to pass to
2896 the corresponding functions.
2897
2898 AC97 Callbacks
2899 --------------
2900
2901 The standard callbacks are ``read`` and ``write``. Obviously they
2902 correspond to the functions for read and write accesses to the
2903 hardware low-level codes.
2904
2905 The ``read`` callback returns the register value specified in the
2906 argument.
2907
2908 ::
2909
2910   static unsigned short snd_mychip_ac97_read(struct snd_ac97 *ac97,
2911                                              unsigned short reg)
2912   {
2913           struct mychip *chip = ac97->private_data;
2914           ....
2915           return the_register_value;
2916   }
2917
2918 Here, the chip can be cast from ``ac97->private_data``.
2919
2920 Meanwhile, the ``write`` callback is used to set the register
2921 value
2922
2923 ::
2924
2925   static void snd_mychip_ac97_write(struct snd_ac97 *ac97,
2926                        unsigned short reg, unsigned short val)
2927
2928
2929 These callbacks are non-atomic like the control API callbacks.
2930
2931 There are also other callbacks: ``reset``, ``wait`` and ``init``.
2932
2933 The ``reset`` callback is used to reset the codec. If the chip
2934 requires a special kind of reset, you can define this callback.
2935
2936 The ``wait`` callback is used to add some waiting time in the standard
2937 initialization of the codec. If the chip requires the extra waiting
2938 time, define this callback.
2939
2940 The ``init`` callback is used for additional initialization of the
2941 codec.
2942
2943 Updating Registers in The Driver
2944 --------------------------------
2945
2946 If you need to access to the codec from the driver, you can call the
2947 following functions: :c:func:`snd_ac97_write()`,
2948 :c:func:`snd_ac97_read()`, :c:func:`snd_ac97_update()` and
2949 :c:func:`snd_ac97_update_bits()`.
2950
2951 Both :c:func:`snd_ac97_write()` and
2952 :c:func:`snd_ac97_update()` functions are used to set a value to
2953 the given register (``AC97_XXX``). The difference between them is that
2954 :c:func:`snd_ac97_update()` doesn't write a value if the given
2955 value has been already set, while :c:func:`snd_ac97_write()`
2956 always rewrites the value.
2957
2958 ::
2959
2960   snd_ac97_write(ac97, AC97_MASTER, 0x8080);
2961   snd_ac97_update(ac97, AC97_MASTER, 0x8080);
2962
2963 :c:func:`snd_ac97_read()` is used to read the value of the given
2964 register. For example,
2965
2966 ::
2967
2968   value = snd_ac97_read(ac97, AC97_MASTER);
2969
2970 :c:func:`snd_ac97_update_bits()` is used to update some bits in
2971 the given register.
2972
2973 ::
2974
2975   snd_ac97_update_bits(ac97, reg, mask, value);
2976
2977 Also, there is a function to change the sample rate (of a given register
2978 such as ``AC97_PCM_FRONT_DAC_RATE``) when VRA or DRA is supported by the
2979 codec: :c:func:`snd_ac97_set_rate()`.
2980
2981 ::
2982
2983   snd_ac97_set_rate(ac97, AC97_PCM_FRONT_DAC_RATE, 44100);
2984
2985
2986 The following registers are available to set the rate:
2987 ``AC97_PCM_MIC_ADC_RATE``, ``AC97_PCM_FRONT_DAC_RATE``,
2988 ``AC97_PCM_LR_ADC_RATE``, ``AC97_SPDIF``. When ``AC97_SPDIF`` is
2989 specified, the register is not really changed but the corresponding
2990 IEC958 status bits will be updated.
2991
2992 Clock Adjustment
2993 ----------------
2994
2995 In some chips, the clock of the codec isn't 48000 but using a PCI clock
2996 (to save a quartz!). In this case, change the field ``bus->clock`` to
2997 the corresponding value. For example, intel8x0 and es1968 drivers have
2998 their own function to read from the clock.
2999
3000 Proc Files
3001 ----------
3002
3003 The ALSA AC97 interface will create a proc file such as
3004 ``/proc/asound/card0/codec97#0/ac97#0-0`` and ``ac97#0-0+regs``. You
3005 can refer to these files to see the current status and registers of
3006 the codec.
3007
3008 Multiple Codecs
3009 ---------------
3010
3011 When there are several codecs on the same card, you need to call
3012 :c:func:`snd_ac97_mixer()` multiple times with ``ac97.num=1`` or
3013 greater. The ``num`` field specifies the codec number.
3014
3015 If you set up multiple codecs, you either need to write different
3016 callbacks for each codec or check ``ac97->num`` in the callback
3017 routines.
3018
3019 MIDI (MPU401-UART) Interface
3020 ============================
3021
3022 General
3023 -------
3024
3025 Many soundcards have built-in MIDI (MPU401-UART) interfaces. When the
3026 soundcard supports the standard MPU401-UART interface, most likely you
3027 can use the ALSA MPU401-UART API. The MPU401-UART API is defined in
3028 ``<sound/mpu401.h>``.
3029
3030 Some soundchips have a similar but slightly different implementation of
3031 mpu401 stuff. For example, emu10k1 has its own mpu401 routines.
3032
3033 MIDI Constructor
3034 ----------------
3035
3036 To create a rawmidi object, call :c:func:`snd_mpu401_uart_new()`.
3037
3038 ::
3039
3040   struct snd_rawmidi *rmidi;
3041   snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, info_flags,
3042                       irq, &rmidi);
3043
3044
3045 The first argument is the card pointer, and the second is the index of
3046 this component. You can create up to 8 rawmidi devices.
3047
3048 The third argument is the type of the hardware, ``MPU401_HW_XXX``. If
3049 it's not a special one, you can use ``MPU401_HW_MPU401``.
3050
3051 The 4th argument is the I/O port address. Many backward-compatible
3052 MPU401 have an I/O port such as 0x330. Or, it might be a part of its own
3053 PCI I/O region. It depends on the chip design.
3054
3055 The 5th argument is a bitflag for additional information. When the I/O
3056 port address above is part of the PCI I/O region, the MPU401 I/O port
3057 might have been already allocated (reserved) by the driver itself. In
3058 such a case, pass a bit flag ``MPU401_INFO_INTEGRATED``, and the
3059 mpu401-uart layer will allocate the I/O ports by itself.
3060
3061 When the controller supports only the input or output MIDI stream, pass
3062 the ``MPU401_INFO_INPUT`` or ``MPU401_INFO_OUTPUT`` bitflag,
3063 respectively. Then the rawmidi instance is created as a single stream.
3064
3065 ``MPU401_INFO_MMIO`` bitflag is used to change the access method to MMIO
3066 (via readb and writeb) instead of iob and outb. In this case, you have
3067 to pass the iomapped address to :c:func:`snd_mpu401_uart_new()`.
3068
3069 When ``MPU401_INFO_TX_IRQ`` is set, the output stream isn't checked in
3070 the default interrupt handler. The driver needs to call
3071 :c:func:`snd_mpu401_uart_interrupt_tx()` by itself to start
3072 processing the output stream in the irq handler.
3073
3074 If the MPU-401 interface shares its interrupt with the other logical
3075 devices on the card, set ``MPU401_INFO_IRQ_HOOK`` (see
3076 `below <#MIDI-Interrupt-Handler>`__).
3077
3078 Usually, the port address corresponds to the command port and port + 1
3079 corresponds to the data port. If not, you may change the ``cport``
3080 field of :c:type:`struct snd_mpu401 <snd_mpu401>` manually afterward.
3081 However, :c:type:`struct snd_mpu401 <snd_mpu401>` pointer is
3082 not returned explicitly by :c:func:`snd_mpu401_uart_new()`. You
3083 need to cast ``rmidi->private_data`` to :c:type:`struct snd_mpu401
3084 <snd_mpu401>` explicitly,
3085
3086 ::
3087
3088   struct snd_mpu401 *mpu;
3089   mpu = rmidi->private_data;
3090
3091 and reset the ``cport`` as you like:
3092
3093 ::
3094
3095   mpu->cport = my_own_control_port;
3096
3097 The 6th argument specifies the ISA irq number that will be allocated. If
3098 no interrupt is to be allocated (because your code is already allocating
3099 a shared interrupt, or because the device does not use interrupts), pass
3100 -1 instead. For a MPU-401 device without an interrupt, a polling timer
3101 will be used instead.
3102
3103 MIDI Interrupt Handler
3104 ----------------------
3105
3106 When the interrupt is allocated in
3107 :c:func:`snd_mpu401_uart_new()`, an exclusive ISA interrupt
3108 handler is automatically used, hence you don't have anything else to do
3109 than creating the mpu401 stuff. Otherwise, you have to set
3110 ``MPU401_INFO_IRQ_HOOK``, and call
3111 :c:func:`snd_mpu401_uart_interrupt()` explicitly from your own
3112 interrupt handler when it has determined that a UART interrupt has
3113 occurred.
3114
3115 In this case, you need to pass the private_data of the returned rawmidi
3116 object from :c:func:`snd_mpu401_uart_new()` as the second
3117 argument of :c:func:`snd_mpu401_uart_interrupt()`.
3118
3119 ::
3120
3121   snd_mpu401_uart_interrupt(irq, rmidi->private_data, regs);
3122
3123
3124 RawMIDI Interface
3125 =================
3126
3127 Overview
3128 --------
3129
3130 The raw MIDI interface is used for hardware MIDI ports that can be
3131 accessed as a byte stream. It is not used for synthesizer chips that do
3132 not directly understand MIDI.
3133
3134 ALSA handles file and buffer management. All you have to do is to write
3135 some code to move data between the buffer and the hardware.
3136
3137 The rawmidi API is defined in ``<sound/rawmidi.h>``.
3138
3139 RawMIDI Constructor
3140 -------------------
3141
3142 To create a rawmidi device, call the :c:func:`snd_rawmidi_new()`
3143 function:
3144
3145 ::
3146
3147   struct snd_rawmidi *rmidi;
3148   err = snd_rawmidi_new(chip->card, "MyMIDI", 0, outs, ins, &rmidi);
3149   if (err < 0)
3150           return err;
3151   rmidi->private_data = chip;
3152   strcpy(rmidi->name, "My MIDI");
3153   rmidi->info_flags = SNDRV_RAWMIDI_INFO_OUTPUT |
3154                       SNDRV_RAWMIDI_INFO_INPUT |
3155                       SNDRV_RAWMIDI_INFO_DUPLEX;
3156
3157 The first argument is the card pointer, the second argument is the ID
3158 string.
3159
3160 The third argument is the index of this component. You can create up to
3161 8 rawmidi devices.
3162
3163 The fourth and fifth arguments are the number of output and input
3164 substreams, respectively, of this device (a substream is the equivalent
3165 of a MIDI port).
3166
3167 Set the ``info_flags`` field to specify the capabilities of the
3168 device. Set ``SNDRV_RAWMIDI_INFO_OUTPUT`` if there is at least one
3169 output port, ``SNDRV_RAWMIDI_INFO_INPUT`` if there is at least one
3170 input port, and ``SNDRV_RAWMIDI_INFO_DUPLEX`` if the device can handle
3171 output and input at the same time.
3172
3173 After the rawmidi device is created, you need to set the operators
3174 (callbacks) for each substream. There are helper functions to set the
3175 operators for all the substreams of a device:
3176
3177 ::
3178
3179   snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT, &snd_mymidi_output_ops);
3180   snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT, &snd_mymidi_input_ops);
3181
3182 The operators are usually defined like this:
3183
3184 ::
3185
3186   static struct snd_rawmidi_ops snd_mymidi_output_ops = {
3187           .open =    snd_mymidi_output_open,
3188           .close =   snd_mymidi_output_close,
3189           .trigger = snd_mymidi_output_trigger,
3190   };
3191
3192 These callbacks are explained in the `RawMIDI Callbacks`_ section.
3193
3194 If there are more than one substream, you should give a unique name to
3195 each of them:
3196
3197 ::
3198
3199   struct snd_rawmidi_substream *substream;
3200   list_for_each_entry(substream,
3201                       &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT].substreams,
3202                       list {
3203           sprintf(substream->name, "My MIDI Port %d", substream->number + 1);
3204   }
3205   /* same for SNDRV_RAWMIDI_STREAM_INPUT */
3206
3207 RawMIDI Callbacks
3208 -----------------
3209
3210 In all the callbacks, the private data that you've set for the rawmidi
3211 device can be accessed as ``substream->rmidi->private_data``.
3212
3213 If there is more than one port, your callbacks can determine the port
3214 index from the struct snd_rawmidi_substream data passed to each
3215 callback:
3216
3217 ::
3218
3219   struct snd_rawmidi_substream *substream;
3220   int index = substream->number;
3221
3222 RawMIDI open callback
3223 ~~~~~~~~~~~~~~~~~~~~~
3224
3225 ::
3226
3227       static int snd_xxx_open(struct snd_rawmidi_substream *substream);
3228
3229
3230 This is called when a substream is opened. You can initialize the
3231 hardware here, but you shouldn't start transmitting/receiving data yet.
3232
3233 RawMIDI close callback
3234 ~~~~~~~~~~~~~~~~~~~~~~
3235
3236 ::
3237
3238       static int snd_xxx_close(struct snd_rawmidi_substream *substream);
3239
3240 Guess what.
3241
3242 The ``open`` and ``close`` callbacks of a rawmidi device are
3243 serialized with a mutex, and can sleep.
3244
3245 Rawmidi trigger callback for output substreams
3246 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3247
3248 ::
3249
3250       static void snd_xxx_output_trigger(struct snd_rawmidi_substream *substream, int up);
3251
3252
3253 This is called with a nonzero ``up`` parameter when there is some data
3254 in the substream buffer that must be transmitted.
3255
3256 To read data from the buffer, call
3257 :c:func:`snd_rawmidi_transmit_peek()`. It will return the number
3258 of bytes that have been read; this will be less than the number of bytes
3259 requested when there are no more data in the buffer. After the data have
3260 been transmitted successfully, call
3261 :c:func:`snd_rawmidi_transmit_ack()` to remove the data from the
3262 substream buffer:
3263
3264 ::
3265
3266   unsigned char data;
3267   while (snd_rawmidi_transmit_peek(substream, &data, 1) == 1) {
3268           if (snd_mychip_try_to_transmit(data))
3269                   snd_rawmidi_transmit_ack(substream, 1);
3270           else
3271                   break; /* hardware FIFO full */
3272   }
3273
3274 If you know beforehand that the hardware will accept data, you can use
3275 the :c:func:`snd_rawmidi_transmit()` function which reads some
3276 data and removes them from the buffer at once:
3277
3278 ::
3279
3280   while (snd_mychip_transmit_possible()) {
3281           unsigned char data;
3282           if (snd_rawmidi_transmit(substream, &data, 1) != 1)
3283                   break; /* no more data */
3284           snd_mychip_transmit(data);
3285   }
3286
3287 If you know beforehand how many bytes you can accept, you can use a
3288 buffer size greater than one with the
3289 :c:func:`snd_rawmidi_transmit\*()` functions.
3290
3291 The ``trigger`` callback must not sleep. If the hardware FIFO is full
3292 before the substream buffer has been emptied, you have to continue
3293 transmitting data later, either in an interrupt handler, or with a
3294 timer if the hardware doesn't have a MIDI transmit interrupt.
3295
3296 The ``trigger`` callback is called with a zero ``up`` parameter when
3297 the transmission of data should be aborted.
3298
3299 RawMIDI trigger callback for input substreams
3300 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3301
3302 ::
3303
3304       static void snd_xxx_input_trigger(struct snd_rawmidi_substream *substream, int up);
3305
3306
3307 This is called with a nonzero ``up`` parameter to enable receiving data,
3308 or with a zero ``up`` parameter do disable receiving data.
3309
3310 The ``trigger`` callback must not sleep; the actual reading of data
3311 from the device is usually done in an interrupt handler.
3312
3313 When data reception is enabled, your interrupt handler should call
3314 :c:func:`snd_rawmidi_receive()` for all received data:
3315
3316 ::
3317
3318   void snd_mychip_midi_interrupt(...)
3319   {
3320           while (mychip_midi_available()) {
3321                   unsigned char data;
3322                   data = mychip_midi_read();
3323                   snd_rawmidi_receive(substream, &data, 1);
3324           }
3325   }
3326
3327
3328 drain callback
3329 ~~~~~~~~~~~~~~
3330
3331 ::
3332
3333       static void snd_xxx_drain(struct snd_rawmidi_substream *substream);
3334
3335
3336 This is only used with output substreams. This function should wait
3337 until all data read from the substream buffer have been transmitted.
3338 This ensures that the device can be closed and the driver unloaded
3339 without losing data.
3340
3341 This callback is optional. If you do not set ``drain`` in the struct
3342 snd_rawmidi_ops structure, ALSA will simply wait for 50 milliseconds
3343 instead.
3344
3345 Miscellaneous Devices
3346 =====================
3347
3348 FM OPL3
3349 -------
3350
3351 The FM OPL3 is still used in many chips (mainly for backward
3352 compatibility). ALSA has a nice OPL3 FM control layer, too. The OPL3 API
3353 is defined in ``<sound/opl3.h>``.
3354
3355 FM registers can be directly accessed through the direct-FM API, defined
3356 in ``<sound/asound_fm.h>``. In ALSA native mode, FM registers are
3357 accessed through the Hardware-Dependent Device direct-FM extension API,
3358 whereas in OSS compatible mode, FM registers can be accessed with the
3359 OSS direct-FM compatible API in ``/dev/dmfmX`` device.
3360
3361 To create the OPL3 component, you have two functions to call. The first
3362 one is a constructor for the ``opl3_t`` instance.
3363
3364 ::
3365
3366   struct snd_opl3 *opl3;
3367   snd_opl3_create(card, lport, rport, OPL3_HW_OPL3_XXX,
3368                   integrated, &opl3);
3369
3370 The first argument is the card pointer, the second one is the left port
3371 address, and the third is the right port address. In most cases, the
3372 right port is placed at the left port + 2.
3373
3374 The fourth argument is the hardware type.
3375
3376 When the left and right ports have been already allocated by the card
3377 driver, pass non-zero to the fifth argument (``integrated``). Otherwise,
3378 the opl3 module will allocate the specified ports by itself.
3379
3380 When the accessing the hardware requires special method instead of the
3381 standard I/O access, you can create opl3 instance separately with
3382 :c:func:`snd_opl3_new()`.
3383
3384 ::
3385
3386   struct snd_opl3 *opl3;
3387   snd_opl3_new(card, OPL3_HW_OPL3_XXX, &opl3);
3388
3389 Then set ``command``, ``private_data`` and ``private_free`` for the
3390 private access function, the private data and the destructor. The
3391 ``l_port`` and ``r_port`` are not necessarily set. Only the command
3392 must be set properly. You can retrieve the data from the
3393 ``opl3->private_data`` field. 
3394
3395 After creating the opl3 instance via :c:func:`snd_opl3_new()`,
3396 call :c:func:`snd_opl3_init()` to initialize the chip to the
3397 proper state. Note that :c:func:`snd_opl3_create()` always calls
3398 it internally.
3399
3400 If the opl3 instance is created successfully, then create a hwdep device
3401 for this opl3.
3402
3403 ::
3404
3405   struct snd_hwdep *opl3hwdep;
3406   snd_opl3_hwdep_new(opl3, 0, 1, &opl3hwdep);
3407
3408 The first argument is the ``opl3_t`` instance you created, and the
3409 second is the index number, usually 0.
3410
3411 The third argument is the index-offset for the sequencer client assigned
3412 to the OPL3 port. When there is an MPU401-UART, give 1 for here (UART
3413 always takes 0).
3414
3415 Hardware-Dependent Devices
3416 --------------------------
3417
3418 Some chips need user-space access for special controls or for loading
3419 the micro code. In such a case, you can create a hwdep
3420 (hardware-dependent) device. The hwdep API is defined in
3421 ``<sound/hwdep.h>``. You can find examples in opl3 driver or
3422 ``isa/sb/sb16_csp.c``.
3423
3424 The creation of the ``hwdep`` instance is done via
3425 :c:func:`snd_hwdep_new()`.
3426
3427 ::
3428
3429   struct snd_hwdep *hw;
3430   snd_hwdep_new(card, "My HWDEP", 0, &hw);
3431
3432 where the third argument is the index number.
3433
3434 You can then pass any pointer value to the ``private_data``. If you
3435 assign a private data, you should define the destructor, too. The
3436 destructor function is set in the ``private_free`` field.
3437
3438 ::
3439
3440   struct mydata *p = kmalloc(sizeof(*p), GFP_KERNEL);
3441   hw->private_data = p;
3442   hw->private_free = mydata_free;
3443
3444 and the implementation of the destructor would be:
3445
3446 ::
3447
3448   static void mydata_free(struct snd_hwdep *hw)
3449   {
3450           struct mydata *p = hw->private_data;
3451           kfree(p);
3452   }
3453
3454 The arbitrary file operations can be defined for this instance. The file
3455 operators are defined in the ``ops`` table. For example, assume that
3456 this chip needs an ioctl.
3457
3458 ::
3459
3460   hw->ops.open = mydata_open;
3461   hw->ops.ioctl = mydata_ioctl;
3462   hw->ops.release = mydata_release;
3463
3464 And implement the callback functions as you like.
3465
3466 IEC958 (S/PDIF)
3467 ---------------
3468
3469 Usually the controls for IEC958 devices are implemented via the control
3470 interface. There is a macro to compose a name string for IEC958
3471 controls, :c:func:`SNDRV_CTL_NAME_IEC958()` defined in
3472 ``<include/asound.h>``.
3473
3474 There are some standard controls for IEC958 status bits. These controls
3475 use the type ``SNDRV_CTL_ELEM_TYPE_IEC958``, and the size of element is
3476 fixed as 4 bytes array (value.iec958.status[x]). For the ``info``
3477 callback, you don't specify the value field for this type (the count
3478 field must be set, though).
3479
3480 “IEC958 Playback Con Mask” is used to return the bit-mask for the IEC958
3481 status bits of consumer mode. Similarly, “IEC958 Playback Pro Mask”
3482 returns the bitmask for professional mode. They are read-only controls,
3483 and are defined as MIXER controls (iface =
3484 ``SNDRV_CTL_ELEM_IFACE_MIXER``).
3485
3486 Meanwhile, “IEC958 Playback Default” control is defined for getting and
3487 setting the current default IEC958 bits. Note that this one is usually
3488 defined as a PCM control (iface = ``SNDRV_CTL_ELEM_IFACE_PCM``),
3489 although in some places it's defined as a MIXER control.
3490
3491 In addition, you can define the control switches to enable/disable or to
3492 set the raw bit mode. The implementation will depend on the chip, but
3493 the control should be named as “IEC958 xxx”, preferably using the
3494 :c:func:`SNDRV_CTL_NAME_IEC958()` macro.
3495
3496 You can find several cases, for example, ``pci/emu10k1``,
3497 ``pci/ice1712``, or ``pci/cmipci.c``.
3498
3499 Buffer and Memory Management
3500 ============================
3501
3502 Buffer Types
3503 ------------
3504
3505 ALSA provides several different buffer allocation functions depending on
3506 the bus and the architecture. All these have a consistent API. The
3507 allocation of physically-contiguous pages is done via
3508 :c:func:`snd_malloc_xxx_pages()` function, where xxx is the bus
3509 type.
3510
3511 The allocation of pages with fallback is
3512 :c:func:`snd_malloc_xxx_pages_fallback()`. This function tries
3513 to allocate the specified pages but if the pages are not available, it
3514 tries to reduce the page sizes until enough space is found.
3515
3516 The release the pages, call :c:func:`snd_free_xxx_pages()`
3517 function.
3518
3519 Usually, ALSA drivers try to allocate and reserve a large contiguous
3520 physical space at the time the module is loaded for the later use. This
3521 is called “pre-allocation”. As already written, you can call the
3522 following function at pcm instance construction time (in the case of PCI
3523 bus).
3524
3525 ::
3526
3527   snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
3528                                         &pci->dev, size, max);
3529
3530 where ``size`` is the byte size to be pre-allocated and the ``max`` is
3531 the maximum size to be changed via the ``prealloc`` proc file. The
3532 allocator will try to get an area as large as possible within the
3533 given size.
3534
3535 The second argument (type) and the third argument (device pointer) are
3536 dependent on the bus. For normal devices, pass the device pointer
3537 (typically identical as ``card->dev``) to the third argument with
3538 ``SNDRV_DMA_TYPE_DEV`` type. For the continuous buffer unrelated to the
3539 bus can be pre-allocated with ``SNDRV_DMA_TYPE_CONTINUOUS`` type.
3540 You can pass NULL to the device pointer in that case, which is the
3541 default mode implying to allocate with ``GFP_KRENEL`` flag.
3542 If you need a different GFP flag, you can pass it by encoding the flag
3543 into the device pointer via a special macro
3544 :c:func:`snd_dma_continuous_data()`.
3545 For the scatter-gather buffers, use ``SNDRV_DMA_TYPE_DEV_SG`` with the
3546 device pointer (see the `Non-Contiguous Buffers`_ section).
3547
3548 Once the buffer is pre-allocated, you can use the allocator in the
3549 ``hw_params`` callback:
3550
3551 ::
3552
3553   snd_pcm_lib_malloc_pages(substream, size);
3554
3555 Note that you have to pre-allocate to use this function.
3556
3557 Most of drivers use, though, rather the newly introduced "managed
3558 buffer allocation mode" instead of the manual allocation or release.
3559 This is done by calling :c:func:`snd_pcm_set_managed_buffer_all()`
3560 instead of :c:func:`snd_pcm_lib_preallocate_pages_for_all()`.
3561
3562 ::
3563
3564   snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV,
3565                                  &pci->dev, size, max);
3566
3567 where passed arguments are identical in both functions.
3568 The difference in the managed mode is that PCM core will call
3569 :c:func:`snd_pcm_lib_malloc_pages()` internally already before calling
3570 the PCM ``hw_params`` callback, and call :c:func:`snd_pcm_lib_free_pages()`
3571 after the PCM ``hw_free`` callback automatically.  So the driver
3572 doesn't have to call these functions explicitly in its callback any
3573 longer.  This made many driver code having NULL ``hw_params`` and
3574 ``hw_free`` entries.
3575
3576 External Hardware Buffers
3577 -------------------------
3578
3579 Some chips have their own hardware buffers and the DMA transfer from the
3580 host memory is not available. In such a case, you need to either 1)
3581 copy/set the audio data directly to the external hardware buffer, or 2)
3582 make an intermediate buffer and copy/set the data from it to the
3583 external hardware buffer in interrupts (or in tasklets, preferably).
3584
3585 The first case works fine if the external hardware buffer is large
3586 enough. This method doesn't need any extra buffers and thus is more
3587 effective. You need to define the ``copy_user`` and ``copy_kernel``
3588 callbacks for the data transfer, in addition to ``fill_silence``
3589 callback for playback. However, there is a drawback: it cannot be
3590 mmapped. The examples are GUS's GF1 PCM or emu8000's wavetable PCM.
3591
3592 The second case allows for mmap on the buffer, although you have to
3593 handle an interrupt or a tasklet to transfer the data from the
3594 intermediate buffer to the hardware buffer. You can find an example in
3595 the vxpocket driver.
3596
3597 Another case is when the chip uses a PCI memory-map region for the
3598 buffer instead of the host memory. In this case, mmap is available only
3599 on certain architectures like the Intel one. In non-mmap mode, the data
3600 cannot be transferred as in the normal way. Thus you need to define the
3601 ``copy_user``, ``copy_kernel`` and ``fill_silence`` callbacks as well,
3602 as in the cases above. The examples are found in ``rme32.c`` and
3603 ``rme96.c``.
3604
3605 The implementation of the ``copy_user``, ``copy_kernel`` and
3606 ``silence`` callbacks depends upon whether the hardware supports
3607 interleaved or non-interleaved samples. The ``copy_user`` callback is
3608 defined like below, a bit differently depending whether the direction
3609 is playback or capture:
3610
3611 ::
3612
3613   static int playback_copy_user(struct snd_pcm_substream *substream,
3614                int channel, unsigned long pos,
3615                void __user *src, unsigned long count);
3616   static int capture_copy_user(struct snd_pcm_substream *substream,
3617                int channel, unsigned long pos,
3618                void __user *dst, unsigned long count);
3619
3620 In the case of interleaved samples, the second argument (``channel``) is
3621 not used. The third argument (``pos``) points the current position
3622 offset in bytes.
3623
3624 The meaning of the fourth argument is different between playback and
3625 capture. For playback, it holds the source data pointer, and for
3626 capture, it's the destination data pointer.
3627
3628 The last argument is the number of bytes to be copied.
3629
3630 What you have to do in this callback is again different between playback
3631 and capture directions. In the playback case, you copy the given amount
3632 of data (``count``) at the specified pointer (``src``) to the specified
3633 offset (``pos``) on the hardware buffer. When coded like memcpy-like
3634 way, the copy would be like:
3635
3636 ::
3637
3638   my_memcpy_from_user(my_buffer + pos, src, count);
3639
3640 For the capture direction, you copy the given amount of data (``count``)
3641 at the specified offset (``pos``) on the hardware buffer to the
3642 specified pointer (``dst``).
3643
3644 ::
3645
3646   my_memcpy_to_user(dst, my_buffer + pos, count);
3647
3648 Here the functions are named as ``from_user`` and ``to_user`` because
3649 it's the user-space buffer that is passed to these callbacks.  That
3650 is, the callback is supposed to copy from/to the user-space data
3651 directly to/from the hardware buffer.
3652
3653 Careful readers might notice that these callbacks receive the
3654 arguments in bytes, not in frames like other callbacks.  It's because
3655 it would make coding easier like the examples above, and also it makes
3656 easier to unify both the interleaved and non-interleaved cases, as
3657 explained in the following.
3658
3659 In the case of non-interleaved samples, the implementation will be a bit
3660 more complicated.  The callback is called for each channel, passed by
3661 the second argument, so totally it's called for N-channels times per
3662 transfer.
3663
3664 The meaning of other arguments are almost same as the interleaved
3665 case.  The callback is supposed to copy the data from/to the given
3666 user-space buffer, but only for the given channel.  For the detailed
3667 implementations, please check ``isa/gus/gus_pcm.c`` or
3668 "pci/rme9652/rme9652.c" as examples.
3669
3670 The above callbacks are the copy from/to the user-space buffer.  There
3671 are some cases where we want copy from/to the kernel-space buffer
3672 instead.  In such a case, ``copy_kernel`` callback is called.  It'd
3673 look like:
3674
3675 ::
3676
3677   static int playback_copy_kernel(struct snd_pcm_substream *substream,
3678                int channel, unsigned long pos,
3679                void *src, unsigned long count);
3680   static int capture_copy_kernel(struct snd_pcm_substream *substream,
3681                int channel, unsigned long pos,
3682                void *dst, unsigned long count);
3683
3684 As found easily, the only difference is that the buffer pointer is
3685 without ``__user`` prefix; that is, a kernel-buffer pointer is passed
3686 in the fourth argument.  Correspondingly, the implementation would be
3687 a version without the user-copy, such as:
3688
3689 ::
3690
3691   my_memcpy(my_buffer + pos, src, count);
3692
3693 Usually for the playback, another callback ``fill_silence`` is
3694 defined.  It's implemented in a similar way as the copy callbacks
3695 above:
3696
3697 ::
3698
3699   static int silence(struct snd_pcm_substream *substream, int channel,
3700                      unsigned long pos, unsigned long count);
3701
3702 The meanings of arguments are the same as in the ``copy_user`` and
3703 ``copy_kernel`` callbacks, although there is no buffer pointer
3704 argument. In the case of interleaved samples, the channel argument has
3705 no meaning, as well as on ``copy_*`` callbacks.
3706
3707 The role of ``fill_silence`` callback is to set the given amount
3708 (``count``) of silence data at the specified offset (``pos``) on the
3709 hardware buffer. Suppose that the data format is signed (that is, the
3710 silent-data is 0), and the implementation using a memset-like function
3711 would be like: 
3712
3713 ::
3714
3715   my_memset(my_buffer + pos, 0, count);
3716
3717 In the case of non-interleaved samples, again, the implementation
3718 becomes a bit more complicated, as it's called N-times per transfer
3719 for each channel. See, for example, ``isa/gus/gus_pcm.c``.
3720
3721 Non-Contiguous Buffers
3722 ----------------------
3723
3724 If your hardware supports the page table as in emu10k1 or the buffer
3725 descriptors as in via82xx, you can use the scatter-gather (SG) DMA. ALSA
3726 provides an interface for handling SG-buffers. The API is provided in
3727 ``<sound/pcm.h>``.
3728
3729 For creating the SG-buffer handler, call
3730 :c:func:`snd_pcm_set_managed_buffer()` or
3731 :c:func:`snd_pcm_set_managed_buffer_all()` with
3732 ``SNDRV_DMA_TYPE_DEV_SG`` in the PCM constructor like other PCI
3733 pre-allocator. You need to pass ``&pci->dev``, where pci is
3734 the :c:type:`struct pci_dev <pci_dev>` pointer of the chip as
3735 well.
3736
3737 ::
3738
3739   snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
3740                                  &pci->dev, size, max);
3741
3742 The ``struct snd_sg_buf`` instance is created as
3743 ``substream->dma_private`` in turn. You can cast the pointer like:
3744
3745 ::
3746
3747   struct snd_sg_buf *sgbuf = (struct snd_sg_buf *)substream->dma_private;
3748
3749 Then in :c:func:`snd_pcm_lib_malloc_pages()` call, the common SG-buffer
3750 handler will allocate the non-contiguous kernel pages of the given size
3751 and map them onto the virtually contiguous memory. The virtual pointer
3752 is addressed in runtime->dma_area. The physical address
3753 (``runtime->dma_addr``) is set to zero, because the buffer is
3754 physically non-contiguous. The physical address table is set up in
3755 ``sgbuf->table``. You can get the physical address at a certain offset
3756 via :c:func:`snd_pcm_sgbuf_get_addr()`.
3757
3758 If you need to release the SG-buffer data explicitly, call the
3759 standard API function :c:func:`snd_pcm_lib_free_pages()` as usual.
3760
3761 Vmalloc'ed Buffers
3762 ------------------
3763
3764 It's possible to use a buffer allocated via :c:func:`vmalloc()`, for
3765 example, for an intermediate buffer. In the recent version of kernel,
3766 you can simply allocate it via standard
3767 :c:func:`snd_pcm_lib_malloc_pages()` and co after setting up the
3768 buffer preallocation with ``SNDRV_DMA_TYPE_VMALLOC`` type.
3769
3770 ::
3771
3772   snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_VMALLOC,
3773                                  NULL, 0, 0);
3774
3775 The NULL is passed to the device pointer argument, which indicates
3776 that the default pages (GFP_KERNEL and GFP_HIGHMEM) will be
3777 allocated.
3778
3779 Also, note that zero is passed to both the size and the max size
3780 arguments here.  Since each vmalloc call should succeed at any time,
3781 we don't need to pre-allocate the buffers like other continuous
3782 pages.
3783
3784 If you need the 32bit DMA allocation, pass the device pointer encoded
3785 by :c:func:`snd_dma_continuous_data()` with ``GFP_KERNEL|__GFP_DMA32``
3786 argument.
3787
3788 ::
3789
3790   snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_VMALLOC,
3791           snd_dma_continuous_data(GFP_KERNEL | __GFP_DMA32), 0, 0);
3792
3793 Proc Interface
3794 ==============
3795
3796 ALSA provides an easy interface for procfs. The proc files are very
3797 useful for debugging. I recommend you set up proc files if you write a
3798 driver and want to get a running status or register dumps. The API is
3799 found in ``<sound/info.h>``.
3800
3801 To create a proc file, call :c:func:`snd_card_proc_new()`.
3802
3803 ::
3804
3805   struct snd_info_entry *entry;
3806   int err = snd_card_proc_new(card, "my-file", &entry);
3807
3808 where the second argument specifies the name of the proc file to be
3809 created. The above example will create a file ``my-file`` under the
3810 card directory, e.g. ``/proc/asound/card0/my-file``.
3811
3812 Like other components, the proc entry created via
3813 :c:func:`snd_card_proc_new()` will be registered and released
3814 automatically in the card registration and release functions.
3815
3816 When the creation is successful, the function stores a new instance in
3817 the pointer given in the third argument. It is initialized as a text
3818 proc file for read only. To use this proc file as a read-only text file
3819 as it is, set the read callback with a private data via
3820 :c:func:`snd_info_set_text_ops()`.
3821
3822 ::
3823
3824   snd_info_set_text_ops(entry, chip, my_proc_read);
3825
3826 where the second argument (``chip``) is the private data to be used in
3827 the callbacks. The third parameter specifies the read buffer size and
3828 the fourth (``my_proc_read``) is the callback function, which is
3829 defined like
3830
3831 ::
3832
3833   static void my_proc_read(struct snd_info_entry *entry,
3834                            struct snd_info_buffer *buffer);
3835
3836 In the read callback, use :c:func:`snd_iprintf()` for output
3837 strings, which works just like normal :c:func:`printf()`. For
3838 example,
3839
3840 ::
3841
3842   static void my_proc_read(struct snd_info_entry *entry,
3843                            struct snd_info_buffer *buffer)
3844   {
3845           struct my_chip *chip = entry->private_data;
3846
3847           snd_iprintf(buffer, "This is my chip!\n");
3848           snd_iprintf(buffer, "Port = %ld\n", chip->port);
3849   }
3850
3851 The file permissions can be changed afterwards. As default, it's set as
3852 read only for all users. If you want to add write permission for the
3853 user (root as default), do as follows:
3854
3855 ::
3856
3857  entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
3858
3859 and set the write buffer size and the callback
3860
3861 ::
3862
3863   entry->c.text.write = my_proc_write;
3864
3865 For the write callback, you can use :c:func:`snd_info_get_line()`
3866 to get a text line, and :c:func:`snd_info_get_str()` to retrieve
3867 a string from the line. Some examples are found in
3868 ``core/oss/mixer_oss.c``, core/oss/and ``pcm_oss.c``.
3869
3870 For a raw-data proc-file, set the attributes as follows:
3871
3872 ::
3873
3874   static struct snd_info_entry_ops my_file_io_ops = {
3875           .read = my_file_io_read,
3876   };
3877
3878   entry->content = SNDRV_INFO_CONTENT_DATA;
3879   entry->private_data = chip;
3880   entry->c.ops = &my_file_io_ops;
3881   entry->size = 4096;
3882   entry->mode = S_IFREG | S_IRUGO;
3883
3884 For the raw data, ``size`` field must be set properly. This specifies
3885 the maximum size of the proc file access.
3886
3887 The read/write callbacks of raw mode are more direct than the text mode.
3888 You need to use a low-level I/O functions such as
3889 :c:func:`copy_from/to_user()` to transfer the data.
3890
3891 ::
3892
3893   static ssize_t my_file_io_read(struct snd_info_entry *entry,
3894                               void *file_private_data,
3895                               struct file *file,
3896                               char *buf,
3897                               size_t count,
3898                               loff_t pos)
3899   {
3900           if (copy_to_user(buf, local_data + pos, count))
3901                   return -EFAULT;
3902           return count;
3903   }
3904
3905 If the size of the info entry has been set up properly, ``count`` and
3906 ``pos`` are guaranteed to fit within 0 and the given size. You don't
3907 have to check the range in the callbacks unless any other condition is
3908 required.
3909
3910 Power Management
3911 ================
3912
3913 If the chip is supposed to work with suspend/resume functions, you need
3914 to add power-management code to the driver. The additional code for
3915 power-management should be ifdef-ed with ``CONFIG_PM``, or annotated
3916 with __maybe_unused attribute; otherwise the compiler will complain
3917 you.
3918
3919 If the driver *fully* supports suspend/resume that is, the device can be
3920 properly resumed to its state when suspend was called, you can set the
3921 ``SNDRV_PCM_INFO_RESUME`` flag in the pcm info field. Usually, this is
3922 possible when the registers of the chip can be safely saved and restored
3923 to RAM. If this is set, the trigger callback is called with
3924 ``SNDRV_PCM_TRIGGER_RESUME`` after the resume callback completes.
3925
3926 Even if the driver doesn't support PM fully but partial suspend/resume
3927 is still possible, it's still worthy to implement suspend/resume
3928 callbacks. In such a case, applications would reset the status by
3929 calling :c:func:`snd_pcm_prepare()` and restart the stream
3930 appropriately. Hence, you can define suspend/resume callbacks below but
3931 don't set ``SNDRV_PCM_INFO_RESUME`` info flag to the PCM.
3932
3933 Note that the trigger with SUSPEND can always be called when
3934 :c:func:`snd_pcm_suspend_all()` is called, regardless of the
3935 ``SNDRV_PCM_INFO_RESUME`` flag. The ``RESUME`` flag affects only the
3936 behavior of :c:func:`snd_pcm_resume()`. (Thus, in theory,
3937 ``SNDRV_PCM_TRIGGER_RESUME`` isn't needed to be handled in the trigger
3938 callback when no ``SNDRV_PCM_INFO_RESUME`` flag is set. But, it's better
3939 to keep it for compatibility reasons.)
3940
3941 In the earlier version of ALSA drivers, a common power-management layer
3942 was provided, but it has been removed. The driver needs to define the
3943 suspend/resume hooks according to the bus the device is connected to. In
3944 the case of PCI drivers, the callbacks look like below:
3945
3946 ::
3947
3948   static int __maybe_unused snd_my_suspend(struct device *dev)
3949   {
3950           .... /* do things for suspend */
3951           return 0;
3952   }
3953   static int __maybe_unused snd_my_resume(struct device *dev)
3954   {
3955           .... /* do things for suspend */
3956           return 0;
3957   }
3958
3959 The scheme of the real suspend job is as follows.
3960
3961 1. Retrieve the card and the chip data.
3962
3963 2. Call :c:func:`snd_power_change_state()` with
3964    ``SNDRV_CTL_POWER_D3hot`` to change the power status.
3965
3966 3. If AC97 codecs are used, call :c:func:`snd_ac97_suspend()` for
3967    each codec.
3968
3969 4. Save the register values if necessary.
3970
3971 5. Stop the hardware if necessary.
3972
3973 A typical code would be like:
3974
3975 ::
3976
3977   static int __maybe_unused mychip_suspend(struct device *dev)
3978   {
3979           /* (1) */
3980           struct snd_card *card = dev_get_drvdata(dev);
3981           struct mychip *chip = card->private_data;
3982           /* (2) */
3983           snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
3984           /* (3) */
3985           snd_ac97_suspend(chip->ac97);
3986           /* (4) */
3987           snd_mychip_save_registers(chip);
3988           /* (5) */
3989           snd_mychip_stop_hardware(chip);
3990           return 0;
3991   }
3992
3993
3994 The scheme of the real resume job is as follows.
3995
3996 1. Retrieve the card and the chip data.
3997
3998 2. Re-initialize the chip.
3999
4000 3. Restore the saved registers if necessary.
4001
4002 4. Resume the mixer, e.g. calling :c:func:`snd_ac97_resume()`.
4003
4004 5. Restart the hardware (if any).
4005
4006 6. Call :c:func:`snd_power_change_state()` with
4007    ``SNDRV_CTL_POWER_D0`` to notify the processes.
4008
4009 A typical code would be like:
4010
4011 ::
4012
4013   static int __maybe_unused mychip_resume(struct pci_dev *pci)
4014   {
4015           /* (1) */
4016           struct snd_card *card = dev_get_drvdata(dev);
4017           struct mychip *chip = card->private_data;
4018           /* (2) */
4019           snd_mychip_reinit_chip(chip);
4020           /* (3) */
4021           snd_mychip_restore_registers(chip);
4022           /* (4) */
4023           snd_ac97_resume(chip->ac97);
4024           /* (5) */
4025           snd_mychip_restart_chip(chip);
4026           /* (6) */
4027           snd_power_change_state(card, SNDRV_CTL_POWER_D0);
4028           return 0;
4029   }
4030
4031 Note that, at the time this callback gets called, the PCM stream has
4032 been already suspended via its own PM ops calling
4033 :c:func:`snd_pcm_suspend_all()` internally.
4034
4035 OK, we have all callbacks now. Let's set them up. In the initialization
4036 of the card, make sure that you can get the chip data from the card
4037 instance, typically via ``private_data`` field, in case you created the
4038 chip data individually.
4039
4040 ::
4041
4042   static int snd_mychip_probe(struct pci_dev *pci,
4043                               const struct pci_device_id *pci_id)
4044   {
4045           ....
4046           struct snd_card *card;
4047           struct mychip *chip;
4048           int err;
4049           ....
4050           err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
4051                              0, &card);
4052           ....
4053           chip = kzalloc(sizeof(*chip), GFP_KERNEL);
4054           ....
4055           card->private_data = chip;
4056           ....
4057   }
4058
4059 When you created the chip data with :c:func:`snd_card_new()`, it's
4060 anyway accessible via ``private_data`` field.
4061
4062 ::
4063
4064   static int snd_mychip_probe(struct pci_dev *pci,
4065                               const struct pci_device_id *pci_id)
4066   {
4067           ....
4068           struct snd_card *card;
4069           struct mychip *chip;
4070           int err;
4071           ....
4072           err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE,
4073                              sizeof(struct mychip), &card);
4074           ....
4075           chip = card->private_data;
4076           ....
4077   }
4078
4079 If you need a space to save the registers, allocate the buffer for it
4080 here, too, since it would be fatal if you cannot allocate a memory in
4081 the suspend phase. The allocated buffer should be released in the
4082 corresponding destructor.
4083
4084 And next, set suspend/resume callbacks to the pci_driver.
4085
4086 ::
4087
4088   static SIMPLE_DEV_PM_OPS(snd_my_pm_ops, mychip_suspend, mychip_resume);
4089
4090   static struct pci_driver driver = {
4091           .name = KBUILD_MODNAME,
4092           .id_table = snd_my_ids,
4093           .probe = snd_my_probe,
4094           .remove = snd_my_remove,
4095           .driver.pm = &snd_my_pm_ops,
4096   };
4097
4098 Module Parameters
4099 =================
4100
4101 There are standard module options for ALSA. At least, each module should
4102 have the ``index``, ``id`` and ``enable`` options.
4103
4104 If the module supports multiple cards (usually up to 8 = ``SNDRV_CARDS``
4105 cards), they should be arrays. The default initial values are defined
4106 already as constants for easier programming:
4107
4108 ::
4109
4110   static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
4111   static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
4112   static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
4113
4114 If the module supports only a single card, they could be single
4115 variables, instead. ``enable`` option is not always necessary in this
4116 case, but it would be better to have a dummy option for compatibility.
4117
4118 The module parameters must be declared with the standard
4119 ``module_param()``, ``module_param_array()`` and
4120 :c:func:`MODULE_PARM_DESC()` macros.
4121
4122 The typical coding would be like below:
4123
4124 ::
4125
4126   #define CARD_NAME "My Chip"
4127
4128   module_param_array(index, int, NULL, 0444);
4129   MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
4130   module_param_array(id, charp, NULL, 0444);
4131   MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
4132   module_param_array(enable, bool, NULL, 0444);
4133   MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
4134
4135 Also, don't forget to define the module description and the license.
4136 Especially, the recent modprobe requires to define the
4137 module license as GPL, etc., otherwise the system is shown as “tainted”.
4138
4139 ::
4140
4141   MODULE_DESCRIPTION("Sound driver for My Chip");
4142   MODULE_LICENSE("GPL");
4143
4144
4145 How To Put Your Driver Into ALSA Tree
4146 =====================================
4147
4148 General
4149 -------
4150
4151 So far, you've learned how to write the driver codes. And you might have
4152 a question now: how to put my own driver into the ALSA driver tree? Here
4153 (finally :) the standard procedure is described briefly.
4154
4155 Suppose that you create a new PCI driver for the card “xyz”. The card
4156 module name would be snd-xyz. The new driver is usually put into the
4157 alsa-driver tree, ``sound/pci`` directory in the case of PCI
4158 cards.
4159
4160 In the following sections, the driver code is supposed to be put into
4161 Linux kernel tree. The two cases are covered: a driver consisting of a
4162 single source file and one consisting of several source files.
4163
4164 Driver with A Single Source File
4165 --------------------------------
4166
4167 1. Modify sound/pci/Makefile
4168
4169    Suppose you have a file xyz.c. Add the following two lines
4170
4171 ::
4172
4173   snd-xyz-objs := xyz.o
4174   obj-$(CONFIG_SND_XYZ) += snd-xyz.o
4175
4176 2. Create the Kconfig entry
4177
4178    Add the new entry of Kconfig for your xyz driver. config SND_XYZ
4179    tristate "Foobar XYZ" depends on SND select SND_PCM help Say Y here
4180    to include support for Foobar XYZ soundcard. To compile this driver
4181    as a module, choose M here: the module will be called snd-xyz. the
4182    line, select SND_PCM, specifies that the driver xyz supports PCM. In
4183    addition to SND_PCM, the following components are supported for
4184    select command: SND_RAWMIDI, SND_TIMER, SND_HWDEP,
4185    SND_MPU401_UART, SND_OPL3_LIB, SND_OPL4_LIB, SND_VX_LIB,
4186    SND_AC97_CODEC. Add the select command for each supported
4187    component.
4188
4189    Note that some selections imply the lowlevel selections. For example,
4190    PCM includes TIMER, MPU401_UART includes RAWMIDI, AC97_CODEC
4191    includes PCM, and OPL3_LIB includes HWDEP. You don't need to give
4192    the lowlevel selections again.
4193
4194    For the details of Kconfig script, refer to the kbuild documentation.
4195
4196 Drivers with Several Source Files
4197 ---------------------------------
4198
4199 Suppose that the driver snd-xyz have several source files. They are
4200 located in the new subdirectory, sound/pci/xyz.
4201
4202 1. Add a new directory (``sound/pci/xyz``) in ``sound/pci/Makefile``
4203    as below
4204
4205 ::
4206
4207   obj-$(CONFIG_SND) += sound/pci/xyz/
4208
4209
4210 2. Under the directory ``sound/pci/xyz``, create a Makefile
4211
4212 ::
4213
4214          snd-xyz-objs := xyz.o abc.o def.o
4215          obj-$(CONFIG_SND_XYZ) += snd-xyz.o
4216
4217 3. Create the Kconfig entry
4218
4219    This procedure is as same as in the last section.
4220
4221
4222 Useful Functions
4223 ================
4224
4225 :c:func:`snd_printk()` and friends
4226 ----------------------------------
4227
4228 .. note:: This subsection describes a few helper functions for
4229    decorating a bit more on the standard :c:func:`printk()` & co.
4230    However, in general, the use of such helpers is no longer recommended.
4231    If possible, try to stick with the standard functions like
4232    :c:func:`dev_err()` or :c:func:`pr_err()`.
4233
4234 ALSA provides a verbose version of the :c:func:`printk()` function.
4235 If a kernel config ``CONFIG_SND_VERBOSE_PRINTK`` is set, this function
4236 prints the given message together with the file name and the line of the
4237 caller. The ``KERN_XXX`` prefix is processed as well as the original
4238 :c:func:`printk()` does, so it's recommended to add this prefix,
4239 e.g. snd_printk(KERN_ERR "Oh my, sorry, it's extremely bad!\\n");
4240
4241 There are also :c:func:`printk()`'s for debugging.
4242 :c:func:`snd_printd()` can be used for general debugging purposes.
4243 If ``CONFIG_SND_DEBUG`` is set, this function is compiled, and works
4244 just like :c:func:`snd_printk()`. If the ALSA is compiled without
4245 the debugging flag, it's ignored.
4246
4247 :c:func:`snd_printdd()` is compiled in only when
4248 ``CONFIG_SND_DEBUG_VERBOSE`` is set.
4249
4250 :c:func:`snd_BUG()`
4251 -------------------
4252
4253 It shows the ``BUG?`` message and stack trace as well as
4254 :c:func:`snd_BUG_ON()` at the point. It's useful to show that a
4255 fatal error happens there.
4256
4257 When no debug flag is set, this macro is ignored.
4258
4259 :c:func:`snd_BUG_ON()`
4260 ----------------------
4261
4262 :c:func:`snd_BUG_ON()` macro is similar with
4263 :c:func:`WARN_ON()` macro. For example, snd_BUG_ON(!pointer); or
4264 it can be used as the condition, if (snd_BUG_ON(non_zero_is_bug))
4265 return -EINVAL;
4266
4267 The macro takes an conditional expression to evaluate. When
4268 ``CONFIG_SND_DEBUG``, is set, if the expression is non-zero, it shows
4269 the warning message such as ``BUG? (xxx)`` normally followed by stack
4270 trace. In both cases it returns the evaluated value.
4271
4272 Acknowledgments
4273 ===============
4274
4275 I would like to thank Phil Kerr for his help for improvement and
4276 corrections of this document.
4277
4278 Kevin Conder reformatted the original plain-text to the DocBook format.
4279
4280 Giuliano Pochini corrected typos and contributed the example codes in
4281 the hardware constraints section.