~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/sound/kernel-api/writing-an-alsa-driver.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/sound/kernel-api/writing-an-alsa-driver.rst (Version linux-6.12-rc7) and /Documentation/sound/kernel-api/writing-an-alsa-driver.rst (Version linux-5.9.16)


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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php