http://linux-sound.bkbits.net/linux-sound
perex@suse.cz|ChangeSet|20040518115023|52046 perex

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/05/18 23:40:49-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# sound/pci/au88x0/au88x0_game.c
#   2004/05/18 23:40:46-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# include/linux/pci_ids.h
#   2004/05/18 23:40:46-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/05/18 14:26:58-07:00 akpm@bix.(none) 
#   Merge http://linux-sound.bkbits.net/linux-sound
#   into bix.(none):/usr/src/bk-alsa
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.c
#   2004/05/18 14:26:55-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# sound/isa/wavefront/wavefront_synth.c
#   2004/05/18 14:26:55-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# sound/isa/es1688/es1688.c
#   2004/05/18 14:26:55-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# include/linux/pci_ids.h
#   2004/05/18 14:26:55-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/05/18 14:25:56-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/05/18 14:25:53-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/05/18 13:50:23+02:00 perex@suse.cz 
#   ALSA CVS sync
# 
# include/sound/version.h
#   2004/05/18 13:50:09+02:00 perex@suse.cz +1 -1
#   ALSA CVS sync
# 
# ChangeSet
#   2004/05/17 15:35:07+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   PCM Midlevel
#   Call hwsync at the start of SYNC_PTR ioctl
# 
# sound/core/pcm_native.c
#   2004/05/17 01:58:42+02:00 perex@suse.cz +7 -5
#   ALSA CVS update
#   D:2004/05/17 07:58:42
#   C:PCM Midlevel
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:core/pcm_native.c:1.89->1.90 
#   L:Call hwsync at the start of SYNC_PTR ioctl
# 
# ChangeSet
#   2004/05/17 15:34:43+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   PCM Midlevel,ALSA Core
#   Added SYNC_PTR ioctl for the PCM interface.
# 
# sound/core/pcm_native.c
#   2004/05/17 01:47:18+02:00 perex@suse.cz +33 -0
#   ALSA CVS update
#   D:2004/05/17 07:47:18
#   C:PCM Midlevel,ALSA Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:core/pcm_native.c:1.88->1.89 
#   F:include/asound.h:1.38->1.39 
#   L:Added SYNC_PTR ioctl for the PCM interface.
# 
# include/sound/asound.h
#   2004/05/17 01:47:18+02:00 perex@suse.cz +16 -1
#   ALSA CVS update
#   D:2004/05/17 07:47:18
#   C:PCM Midlevel,ALSA Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:core/pcm_native.c:1.88->1.89 
#   F:include/asound.h:1.38->1.39 
#   L:Added SYNC_PTR ioctl for the PCM interface.
# 
# ChangeSet
#   2004/05/17 15:34:22+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   ICE1712 driver
#   <Dirk.Kalis@t-online.de>
#   ice1712 patch for dsp24 value cards
#   Without this patch in envy24control no controls for DAC and ADC
#   available because no number of dacs and adcs is given.
# 
# sound/pci/ice1712/hoontech.h
#   2004/05/16 08:40:00+02:00 perex@suse.cz +7 -0
#   ALSA CVS update
#   D:2004/05/16 14:40:00
#   C:ICE1712 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/ice1712/hoontech.c:1.6->1.7 
#   F:pci/ice1712/hoontech.h:1.4->1.5 
#   L:<Dirk.Kalis@t-online.de>
#   L:ice1712 patch for dsp24 value cards
#   L:Without this patch in envy24control no controls for DAC and ADC
#   L:available because no number of dacs and adcs is given.
# 
# sound/pci/ice1712/hoontech.c
#   2004/05/16 08:40:00+02:00 perex@suse.cz +73 -0
#   ALSA CVS update
#   D:2004/05/16 14:40:00
#   C:ICE1712 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/ice1712/hoontech.c:1.6->1.7 
#   F:pci/ice1712/hoontech.h:1.4->1.5 
#   L:<Dirk.Kalis@t-online.de>
#   L:ice1712 patch for dsp24 value cards
#   L:Without this patch in envy24control no controls for DAC and ADC
#   L:available because no number of dacs and adcs is given.
# 
# ChangeSet
#   2004/05/17 15:33:58+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ICE1712 driver
#   fixes by Christoph Haderer <chris_web@gmx.at>:
#   - added the support of DAC/ADC mute switches
#   - fixed the capture route enum.
# 
# sound/pci/ice1712/aureon.c
#   2004/05/14 08:08:15+02:00 perex@suse.cz +109 -14
#   ALSA CVS update
#   D:2004/05/14 14:08:15
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/aureon.c:1.8->1.9 
#   L:fixes by Christoph Haderer <chris_web@gmx.at>:
#   L:- added the support of DAC/ADC mute switches
#   L:- fixed the capture route enum.
# 
# ChangeSet
#   2004/05/17 15:33:36+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ICE1712 driver
#   Added the support of Aureon 7.1-Universe.
# 
# sound/pci/ice1712/aureon.h
#   2004/05/14 06:00:24+02:00 perex@suse.cz +3 -1
#   ALSA CVS update
#   D:2004/05/14 12:00:23
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/aureon.c:1.7->1.8 
#   F:pci/ice1712/aureon.h:1.2->1.3 
#   L:Added the support of Aureon 7.1-Universe.
# 
# sound/pci/ice1712/aureon.c
#   2004/05/14 06:00:23+02:00 perex@suse.cz +8 -0
#   ALSA CVS update
#   D:2004/05/14 12:00:23
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/aureon.c:1.7->1.8 
#   F:pci/ice1712/aureon.h:1.2->1.3 
#   L:Added the support of Aureon 7.1-Universe.
# 
# ChangeSet
#   2004/05/17 15:33:15+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ICE1712 driver
#   added headphone amplifier switch.
#   initial patch by Radoslaw 'AstralStorm' Szkodzinski.
# 
# sound/pci/ice1712/aureon.c
#   2004/05/14 05:49:26+02:00 perex@suse.cz +58 -0
#   ALSA CVS update
#   D:2004/05/14 11:49:26
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/aureon.c:1.6->1.7 
#   L:added headphone amplifier switch.
#   L:initial patch by Radoslaw 'AstralStorm' Szkodzinski.
# 
# ChangeSet
#   2004/05/17 15:32:48+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   RME HDSP driver,RME9652 driver
#   fixed invalid spin_lock/unlock_irq() in the prepare callback.
# 
# sound/pci/rme9652/rme9652.c
#   2004/05/14 05:31:00+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/05/14 11:30:59
#   C:RME HDSP driver,RME9652 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/rme9652/hdsp.c:1.57->1.58 
#   F:pci/rme9652/rme9652.c:1.44->1.45 
#   L:fixed invalid spin_lock/unlock_irq() in the prepare callback.
# 
# sound/pci/rme9652/hdsp.c
#   2004/05/14 05:30:59+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/05/14 11:30:59
#   C:RME HDSP driver,RME9652 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/rme9652/hdsp.c:1.57->1.58 
#   F:pci/rme9652/rme9652.c:1.44->1.45 
#   L:fixed invalid spin_lock/unlock_irq() in the prepare callback.
# 
# ChangeSet
#   2004/05/17 15:32:27+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   CS4236+ driver
#   Added the new pnp id for an Intel mobo.
# 
# sound/isa/cs423x/cs4236.c
#   2004/05/14 05:15:54+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/05/14 11:15:54
#   C:CS4236+ driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:isa/cs423x/cs4236.c:1.42->1.43 
#   L:Added the new pnp id for an Intel mobo.
# 
# ChangeSet
#   2004/05/17 15:32:03+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ATIIXP driver
#   - probe only audio codecs.
#   - use enums instead of embedded numbers.
#   - added KERN_ERR prefix to the error messages.
# 
# sound/pci/atiixp.c
#   2004/05/13 13:40:18+02:00 perex@suse.cz +36 -26
#   ALSA CVS update
#   D:2004/05/13 19:40:18
#   C:ATIIXP driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/atiixp.c:1.8->1.9 
#   L:- probe only audio codecs.
#   L:- use enums instead of embedded numbers.
#   L:- added KERN_ERR prefix to the error messages.
# 
# ChangeSet
#   2004/05/17 15:31:38+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PPC PMAC driver,PPC Tumbler driver
#   Giuliano Pochini <pochini@shiny.it>:
#   fixed the return value of interrupt handlers.
# 
# sound/ppc/tumbler.c
#   2004/05/13 13:38:56+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/13 19:38:56
#   C:PPC PMAC driver,PPC Tumbler driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/pmac.c:1.29->1.30 
#   F:ppc/tumbler.c:1.30->1.31 
#   L:Giuliano Pochini <pochini@shiny.it>:
#   L:fixed the return value of interrupt handlers.
# 
# sound/ppc/pmac.c
#   2004/05/13 13:38:56+02:00 perex@suse.cz +3 -3
#   ALSA CVS update
#   D:2004/05/13 19:38:56
#   C:PPC PMAC driver,PPC Tumbler driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/pmac.c:1.29->1.30 
#   F:ppc/tumbler.c:1.30->1.31 
#   L:Giuliano Pochini <pochini@shiny.it>:
#   L:fixed the return value of interrupt handlers.
# 
# ChangeSet
#   2004/05/17 15:31:16+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PCM Midlevel
#   fixed the buffer id confliction in the case of CONTINUOUS or ISA buffers.
# 
# sound/core/pcm_memory.c
#   2004/05/13 13:37:10+02:00 perex@suse.cz +5 -1
#   ALSA CVS update
#   D:2004/05/13 19:37:10
#   C:PCM Midlevel
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/pcm_memory.c:1.26->1.27 
#   L:fixed the buffer id confliction in the case of CONTINUOUS or ISA buffers.
# 
# ChangeSet
#   2004/05/17 15:30:56+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   fix typo
# 
# sound/usb/usbquirks.h
#   2004/05/12 01:29:22+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/05/12 07:29:22
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbquirks.h:1.32->1.33 
#   L:fix typo
# 
# ChangeSet
#   2004/05/17 15:30:31+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   Roland UA-1000 support
# 
# sound/usb/usbquirks.h
#   2004/05/11 06:58:11+02:00 perex@suse.cz +55 -0
#   ALSA CVS update
#   D:2004/05/11 12:58:11
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbquirks.h:1.31->1.32 
#   L:Roland UA-1000 support
# 
# ChangeSet
#   2004/05/17 15:30:09+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   AC97 Codec Core
#   STAC9758: stereo mutes, jack configuration
# 
# sound/pci/ac97/ac97_patch.c
#   2004/05/11 03:32:58+02:00 perex@suse.cz +162 -3
#   ALSA CVS update
#   D:2004/05/11 09:32:58
#   C:AC97 Codec Core
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:pci/ac97/ac97_patch.c:1.48->1.49 
#   L:STAC9758: stereo mutes, jack configuration
# 
# ChangeSet
#   2004/05/17 15:29:43+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PARISC Harmony driver
#   - fixed the buffer allocation with the new API.
#   - optimized the rate and format setting.
#   - removed redundant call of buffer release.
#   - removed invalid __devinit prefix.
# 
# sound/parisc/harmony.c
#   2004/05/07 12:04:31+02:00 perex@suse.cz +76 -99
#   ALSA CVS update
#   D:2004/05/07 18:04:31
#   C:PARISC Harmony driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:parisc/harmony.c:1.9->1.10 
#   L:- fixed the buffer allocation with the new API.
#   L:- optimized the rate and format setting.
#   L:- removed redundant call of buffer release.
#   L:- removed invalid __devinit prefix.
# 
# ChangeSet
#   2004/05/17 15:29:19+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,ICE1724 driver,ICE1712 driver
#   - added model module option to specify board model to snd-ice1712 and snd-ice1724
#     drivers.
#   - removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   - rewritten some struct init in C99 style.
#   - function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/revo.c
#   2004/05/07 05:19:00+02:00 perex@suse.cz +5 -4
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/prodigy.c
#   2004/05/07 05:19:00+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/ice1724.c
#   2004/05/07 05:19:00+02:00 perex@suse.cz +38 -24
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/ice1712.h
#   2004/05/07 05:19:00+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/ice1712.c
#   2004/05/07 05:18:59+02:00 perex@suse.cz +34 -21
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/hoontech.h
#   2004/05/07 05:18:59+02:00 perex@suse.cz +5 -3
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/hoontech.c
#   2004/05/07 05:18:59+02:00 perex@suse.cz +25 -20
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/ews.c
#   2004/05/07 05:18:59+02:00 perex@suse.cz +25 -20
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/envy24ht.h
#   2004/05/07 05:18:59+02:00 perex@suse.cz +3 -0
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/delta.c
#   2004/05/07 05:18:59+02:00 perex@suse.cz +58 -50
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/aureon.c
#   2004/05/07 05:18:59+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# sound/pci/ice1712/amp.c
#   2004/05/07 05:18:59+02:00 perex@suse.cz +5 -4
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# Documentation/sound/alsa/ALSA-Configuration.txt
#   2004/05/07 05:18:59+02:00 perex@suse.cz +7 -0
#   ALSA CVS update
#   D:2004/05/07 11:18:59
#   C:Documentation,ICE1724 driver,ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.43->1.44 
#   F:pci/ice1712/amp.c:1.4->1.5 
#   F:pci/ice1712/aureon.c:1.5->1.6 
#   F:pci/ice1712/delta.c:1.16->1.17 
#   F:pci/ice1712/envy24ht.h:1.3->1.4 
#   F:pci/ice1712/ews.c:1.16->1.17 
#   F:pci/ice1712/hoontech.c:1.5->1.6 
#   F:pci/ice1712/hoontech.h:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.51->1.52 
#   F:pci/ice1712/ice1712.h:1.19->1.20 
#   F:pci/ice1712/ice1724.c:1.29->1.30 
#   F:pci/ice1712/prodigy.c:1.4->1.5 
#   F:pci/ice1712/revo.c:1.5->1.6 
#   L:- added model module option to specify board model to snd-ice1712 and snd-ice1724
#   L:  drivers.
#   L:- removed ez8 option from ice1724.  this can be specified as 'model=ez8' option.
#   L:- rewritten some struct init in C99 style.
#   L:- function for accessing i2c of ice1724 (for future use).
# 
# ChangeSet
#   2004/05/17 15:28:56+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Sound Core PDAudioCF driver
#   - fixed the changed function decleration.
#   - fixed the return value from cast check.
# 
# sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
#   2004/05/07 05:10:26+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/07 11:10:26
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf_irq.c:1.4->1.5 
#   L:- fixed the changed function decleration.
#   L:- fixed the return value from cast check.
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.h
#   2004/05/07 05:10:26+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/07 11:10:26
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf_irq.c:1.4->1.5 
#   L:- fixed the changed function decleration.
#   L:- fixed the return value from cast check.
# 
# ChangeSet
#   2004/05/17 15:28:36+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   VIA82xx driver
#   renamed the elements of 'input source select' control to avoid confusion.
#   
#   formerly used words 'Line' and 'Mic', which have nothing to do with
#   the actual connections.
# 
# sound/pci/via82xx.c
#   2004/05/06 08:27:23+02:00 perex@suse.cz +4 -1
#   ALSA CVS update
#   D:2004/05/06 14:27:23
#   C:VIA82xx driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/via82xx.c:1.99->1.100 
#   L:renamed the elements of 'input source select' control to avoid confusion.
#   L:
#   L:formerly used words 'Line' and 'Mic', which have nothing to do with
#   L:the actual connections.
# 
# ChangeSet
#   2004/05/17 15:28:08+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,CMIPCI driver
#   make soft_ac3 option conditional again.
#   
#   this will make it possible for old chips to feed the IEC958 data
#   without conversion (sometimes useful, e.g. for apps using mmap).
# 
# sound/pci/cmipci.c
#   2004/05/06 08:17:02+02:00 perex@suse.cz +10 -4
#   ALSA CVS update
#   D:2004/05/06 14:17:02
#   C:Documentation,CMIPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.42->1.43 
#   F:Documentation/CMIPCI.txt:1.5->1.6 
#   F:pci/cmipci.c:1.64->1.65 
#   L:make soft_ac3 option conditional again.
#   L:
#   L:this will make it possible for old chips to feed the IEC958 data
#   L:without conversion (sometimes useful, e.g. for apps using mmap).
# 
# Documentation/sound/alsa/CMIPCI.txt
#   2004/05/06 08:17:02+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/05/06 14:17:02
#   C:Documentation,CMIPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.42->1.43 
#   F:Documentation/CMIPCI.txt:1.5->1.6 
#   F:pci/cmipci.c:1.64->1.65 
#   L:make soft_ac3 option conditional again.
#   L:
#   L:this will make it possible for old chips to feed the IEC958 data
#   L:without conversion (sometimes useful, e.g. for apps using mmap).
# 
# Documentation/sound/alsa/ALSA-Configuration.txt
#   2004/05/06 08:17:02+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/05/06 14:17:02
#   C:Documentation,CMIPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.42->1.43 
#   F:Documentation/CMIPCI.txt:1.5->1.6 
#   F:pci/cmipci.c:1.64->1.65 
#   L:make soft_ac3 option conditional again.
#   L:
#   L:this will make it possible for old chips to feed the IEC958 data
#   L:without conversion (sometimes useful, e.g. for apps using mmap).
# 
# ChangeSet
#   2004/05/17 15:27:42+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   Sound Core PDAudioCF driver
#   Updated interrupt function to 2.6 irq API
# 
# sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
#   2004/05/05 08:29:56+02:00 perex@suse.cz +3 -2
#   ALSA CVS update
#   D:2004/05/05 14:29:56
#   C:Sound Core PDAudioCF driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pcmcia/pdaudiocf/pdaudiocf_irq.c:1.3->1.4 
#   L:Updated interrupt function to 2.6 irq API
# 
# ChangeSet
#   2004/05/17 15:27:17+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   EMU10K1/EMU10K2 driver
#   Credits for SB Live (c) 2003
# 
# sound/pci/emu10k1/emumixer.c
#   2004/05/05 08:20:23+02:00 perex@suse.cz +5 -0
#   ALSA CVS update
#   D:2004/05/05 14:20:23
#   C:EMU10K1/EMU10K2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/emu10k1/emumixer.c:1.21->1.22 
#   L:Credits for SB Live (c) 2003
# 
# ChangeSet
#   2004/05/17 15:26:57+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   (Alan Stern) use altsetting number instead of index in messages
# 
# sound/usb/usbaudio.c
#   2004/05/05 03:50:45+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/05/05 09:50:45
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.99->1.100 
#   L:(Alan Stern) use altsetting number instead of index in messages
# 
# ChangeSet
#   2004/05/17 15:26:35+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation
#   added the document about Audigy mixer implementation by Peter Zubaj.
#   it is not target to users, rather to developers.
# 
# Documentation/sound/alsa/Audigy-mixer.txt
#   2004/05/17 13:27:25+02:00 perex@suse.cz +345 -0
#   ALSA CVS update
#   D:2004/05/04 16:51:39
#   C:Documentation
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/Audigy-mixer.txt:INITIAL->1.1 
#   L:added the document about Audigy mixer implementation by Peter Zubaj.
#   L:it is not target to users, rather to developers.
# 
# Documentation/sound/alsa/Audigy-mixer.txt
#   2004/05/17 13:27:25+02:00 perex@suse.cz +0 -0
#   BitKeeper file /home/perex/bk/linux-sound/work/Documentation/sound/alsa/Audigy-mixer.txt
# 
# ChangeSet
#   2004/05/17 15:26:10+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ATIIXP driver
#   - fixed the direct SPDIF playback mode.  (still experimental)
#   - use the different driver id name for the direct spdif mode, so that
#     alsa-lib can read another corresponding configuration.
# 
# sound/pci/atiixp.c
#   2004/05/04 10:24:29+02:00 perex@suse.cz +8 -8
#   ALSA CVS update
#   D:2004/05/04 16:24:29
#   C:ATIIXP driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/atiixp.c:1.7->1.8 
#   L:- fixed the direct SPDIF playback mode.  (still experimental)
#   L:- use the different driver id name for the direct spdif mode, so that
#   L:  alsa-lib can read another corresponding configuration.
# 
# ChangeSet
#   2004/05/17 15:25:49+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,CMIPCI driver
#   dropped the software encoding of AC3 stream in the driver.
#   this is done now in alsa-lib.
#   soft_ac3 module option is kept for backward compatibility but not
#   referred at all.
# 
# sound/pci/cmipci.c
#   2004/05/04 10:21:57+02:00 perex@suse.cz +53 -442
#   ALSA CVS update
#   D:2004/05/04 16:21:57
#   C:Documentation,CMIPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.41->1.42 
#   F:pci/cmipci.c:1.63->1.64 
#   L:dropped the software encoding of AC3 stream in the driver.
#   L:this is done now in alsa-lib.
#   L:soft_ac3 module option is kept for backward compatibility but not
#   L:referred at all.
# 
# Documentation/sound/alsa/ALSA-Configuration.txt
#   2004/05/04 10:21:57+02:00 perex@suse.cz +1 -2
#   ALSA CVS update
#   D:2004/05/04 16:21:57
#   C:Documentation,CMIPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.41->1.42 
#   F:pci/cmipci.c:1.63->1.64 
#   L:dropped the software encoding of AC3 stream in the driver.
#   L:this is done now in alsa-lib.
#   L:soft_ac3 module option is kept for backward compatibility but not
#   L:referred at all.
# 
# ChangeSet
#   2004/05/17 15:25:22+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,NM256 driver
#   - added a blacklist to avoid the possible hang-up at module loading.
#   - added notes about the hang-up problem to ALSA-Configuration.txt.
# 
# sound/pci/nm256/nm256.c
#   2004/05/04 10:19:25+02:00 perex@suse.cz +29 -0
#   ALSA CVS update
#   D:2004/05/04 16:19:25
#   C:Documentation,NM256 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.40->1.41 
#   F:pci/nm256/nm256.c:1.37->1.38 
#   L:- added a blacklist to avoid the possible hang-up at module loading.
#   L:- added notes about the hang-up problem to ALSA-Configuration.txt.
# 
# Documentation/sound/alsa/ALSA-Configuration.txt
#   2004/05/04 10:19:25+02:00 perex@suse.cz +19 -2
#   ALSA CVS update
#   D:2004/05/04 16:19:25
#   C:Documentation,NM256 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/ALSA-Configuration.txt:1.40->1.41 
#   F:pci/nm256/nm256.c:1.37->1.38 
#   L:- added a blacklist to avoid the possible hang-up at module loading.
#   L:- added notes about the hang-up problem to ALSA-Configuration.txt.
# 
# ChangeSet
#   2004/05/17 15:25:00+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PCM Midlevel
#   fixed the bit width of IEC958_SUBFRAME_* formats from 24 to 32.
# 
# sound/core/pcm_misc.c
#   2004/05/04 10:09:50+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/04 16:09:50
#   C:PCM Midlevel
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/pcm_misc.c:1.12->1.13 
#   L:fixed the bit width of IEC958_SUBFRAME_* formats from 24 to 32.
# 
# ChangeSet
#   2004/05/17 15:24:35+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   VIA82xx driver
#   fixed again the DXS entry for m680x to 48k-fixed rate.
# 
# sound/pci/via82xx.c
#   2004/05/04 10:09:08+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/04 16:09:08
#   C:VIA82xx driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/via82xx.c:1.98->1.99 
#   L:fixed again the DXS entry for m680x to 48k-fixed rate.
# 
# ChangeSet
#   2004/05/17 15:24:11+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   ALSA<-OSS emulation
#   don't return negative byte count from GET[IO]PTR ioctl
# 
# sound/core/oss/pcm_oss.c
#   2004/05/04 08:02:02+02:00 perex@suse.cz +3 -3
#   ALSA CVS update
#   D:2004/05/04 14:02:02
#   C:ALSA<-OSS emulation
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/oss/pcm_oss.c:1.68->1.69 
#   L:don't return negative byte count from GET[IO]PTR ioctl
# 
# ChangeSet
#   2004/05/17 15:23:52+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   ICE1712 driver
#   fix Hoontech DSP* box configuration
# 
# sound/pci/ice1712/hoontech.c
#   2004/05/04 01:46:29+02:00 perex@suse.cz +13 -8
#   ALSA CVS update
#   D:2004/05/04 07:46:29
#   C:ICE1712 driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:pci/ice1712/hoontech.c:1.4->1.5 
#   L:fix Hoontech DSP* box configuration
# 
# ChangeSet
#   2004/05/17 15:23:29+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation
#   - fixed some obsolete descriptions and typos.
#   - a bit more detailed description about addition of the new driver.
# 
# Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
#   2004/05/03 12:37:55+02:00 perex@suse.cz +13 -8
#   ALSA CVS update
#   D:2004/05/03 18:37:55
#   C:Documentation
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.27->1.28 
#   L:- fixed some obsolete descriptions and typos.
#   L:- a bit more detailed description about addition of the new driver.
# 
# ChangeSet
#   2004/05/17 15:23:08+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   SA11xx UDA1341 driver,UDA1341
#   - clean up PM codes using the new PM callback functions.
# 
# sound/arm/sa11xx-uda1341.c
#   2004/05/03 12:36:50+02:00 perex@suse.cz +10 -55
#   ALSA CVS update
#   D:2004/05/03 18:36:50
#   C:SA11xx UDA1341 driver,UDA1341
#   A:Takashi Iwai <tiwai@suse.de>
#   F:arm/sa11xx-uda1341.c:1.14->1.15 
#   F:include/uda1341.h:1.5->1.6 
#   L:- clean up PM codes using the new PM callback functions.
# 
# include/sound/uda1341.h
#   2004/05/03 12:36:50+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/03 18:36:50
#   C:SA11xx UDA1341 driver,UDA1341
#   A:Takashi Iwai <tiwai@suse.de>
#   F:arm/sa11xx-uda1341.c:1.14->1.15 
#   F:include/uda1341.h:1.5->1.6 
#   L:- clean up PM codes using the new PM callback functions.
# 
# ChangeSet
#   2004/05/17 15:22:44+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ALSA Core
#   - added the generic PM callback registration.
#   - rewritten ISA callbacks to use the new one.
# 
# sound/core/sound.c
#   2004/05/03 12:36:07+02:00 perex@suse.cz +1 -3
#   ALSA CVS update
#   D:2004/05/03 18:36:07
#   C:ALSA Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/init.c:1.45->1.46 
#   F:core/sound.c:1.61->1.62 
#   F:include/core.h:1.50->1.51 
#   L:- added the generic PM callback registration.
#   L:- rewritten ISA callbacks to use the new one.
# 
# sound/core/init.c
#   2004/05/03 12:36:07+02:00 perex@suse.cz +9 -9
#   ALSA CVS update
#   D:2004/05/03 18:36:07
#   C:ALSA Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/init.c:1.45->1.46 
#   F:core/sound.c:1.61->1.62 
#   F:include/core.h:1.50->1.51 
#   L:- added the generic PM callback registration.
#   L:- rewritten ISA callbacks to use the new one.
# 
# include/sound/core.h
#   2004/05/03 12:36:07+02:00 perex@suse.cz +4 -1
#   ALSA CVS update
#   D:2004/05/03 18:36:07
#   C:ALSA Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/init.c:1.45->1.46 
#   F:core/sound.c:1.61->1.62 
#   F:include/core.h:1.50->1.51 
#   L:- added the generic PM callback registration.
#   L:- rewritten ISA callbacks to use the new one.
# 
# ChangeSet
#   2004/05/17 15:22:22+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ES1968 driver
#   - set ACPI D3 at suspend.
#   - fixed the interrupt disabling at shutdown.
#   - enabled PM for compaq Armada.
# 
# sound/pci/es1968.c
#   2004/05/03 12:34:48+02:00 perex@suse.cz +7 -2
#   ALSA CVS update
#   D:2004/05/03 18:34:48
#   C:ES1968 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/es1968.c:1.65->1.66 
#   L:- set ACPI D3 at suspend.
#   L:- fixed the interrupt disabling at shutdown.
#   L:- enabled PM for compaq Armada.
# 
# ChangeSet
#   2004/05/17 15:21:59+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   AC97 Codec Core
#   try to mute and power down in the destructor (to shut up noises).
# 
# sound/pci/ac97/ac97_codec.c
#   2004/05/03 12:32:57+02:00 perex@suse.cz +25 -7
#   ALSA CVS update
#   D:2004/05/03 18:32:57
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.131->1.132 
#   L:try to mute and power down in the destructor (to shut up noises).
# 
# ChangeSet
#   2004/05/17 15:21:39+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   CS4231 driver
#   add missing closing brace
# 
# sound/isa/cs423x/cs4231_lib.c
#   2004/05/03 09:37:05+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/05/03 15:37:05
#   C:CS4231 driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:isa/cs423x/cs4231_lib.c:1.40->1.41 
#   L:add missing closing brace
# 
# ChangeSet
#   2004/05/17 15:21:16+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   RME HDSP driver
#   HDSP9632 has also firmware version 0x97
# 
# sound/pci/rme9652/hdsp.c
#   2004/05/03 04:01:17+02:00 perex@suse.cz +3 -0
#   ALSA CVS update
#   D:2004/05/03 10:01:17
#   C:RME HDSP driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/rme9652/hdsp.c:1.56->1.57 
#   L:HDSP9632 has also firmware version 0x97
# 
# ChangeSet
#   2004/05/17 15:20:55+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   Documentation,EMU10K1/EMU10K2 driver
#   Initial attempt to add support for SB Live 5.1 (c) 2003
# 
# sound/pci/emu10k1/emumixer.c
#   2004/05/03 03:43:04+02:00 perex@suse.cz +6 -0
#   ALSA CVS update
#   D:2004/05/03 09:43:04
#   C:Documentation,EMU10K1/EMU10K2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:Documentation/ALSA-Configuration.txt:1.39->1.40 
#   F:include/emu10k1.h:1.38->1.39 
#   F:pci/emu10k1/emu10k1_main.c:1.32->1.33 
#   F:pci/emu10k1/emufx.c:1.51->1.52 
#   F:pci/emu10k1/emumixer.c:1.20->1.21 
#   L:Initial attempt to add support for SB Live 5.1 (c) 2003
# 
# sound/pci/emu10k1/emufx.c
#   2004/05/03 03:43:04+02:00 perex@suse.cz +12 -8
#   ALSA CVS update
#   D:2004/05/03 09:43:04
#   C:Documentation,EMU10K1/EMU10K2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:Documentation/ALSA-Configuration.txt:1.39->1.40 
#   F:include/emu10k1.h:1.38->1.39 
#   F:pci/emu10k1/emu10k1_main.c:1.32->1.33 
#   F:pci/emu10k1/emufx.c:1.51->1.52 
#   F:pci/emu10k1/emumixer.c:1.20->1.21 
#   L:Initial attempt to add support for SB Live 5.1 (c) 2003
# 
# sound/pci/emu10k1/emu10k1_main.c
#   2004/05/03 03:43:04+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/05/03 09:43:04
#   C:Documentation,EMU10K1/EMU10K2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:Documentation/ALSA-Configuration.txt:1.39->1.40 
#   F:include/emu10k1.h:1.38->1.39 
#   F:pci/emu10k1/emu10k1_main.c:1.32->1.33 
#   F:pci/emu10k1/emufx.c:1.51->1.52 
#   F:pci/emu10k1/emumixer.c:1.20->1.21 
#   L:Initial attempt to add support for SB Live 5.1 (c) 2003
# 
# include/sound/emu10k1.h
#   2004/05/03 03:43:04+02:00 perex@suse.cz +8 -4
#   ALSA CVS update
#   D:2004/05/03 09:43:04
#   C:Documentation,EMU10K1/EMU10K2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:Documentation/ALSA-Configuration.txt:1.39->1.40 
#   F:include/emu10k1.h:1.38->1.39 
#   F:pci/emu10k1/emu10k1_main.c:1.32->1.33 
#   F:pci/emu10k1/emufx.c:1.51->1.52 
#   F:pci/emu10k1/emumixer.c:1.20->1.21 
#   L:Initial attempt to add support for SB Live 5.1 (c) 2003
# 
# Documentation/sound/alsa/ALSA-Configuration.txt
#   2004/05/03 03:43:04+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/05/03 09:43:04
#   C:Documentation,EMU10K1/EMU10K2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:Documentation/ALSA-Configuration.txt:1.39->1.40 
#   F:include/emu10k1.h:1.38->1.39 
#   F:pci/emu10k1/emu10k1_main.c:1.32->1.33 
#   F:pci/emu10k1/emufx.c:1.51->1.52 
#   F:pci/emu10k1/emumixer.c:1.20->1.21 
#   L:Initial attempt to add support for SB Live 5.1 (c) 2003
# 
# ChangeSet
#   2004/05/17 15:20:32+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   VIA82xx driver
#   added DXS whitelist for (eMachines) m680x.
# 
# sound/pci/via82xx.c
#   2004/05/02 05:15:40+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/05/02 11:15:40
#   C:VIA82xx driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/via82xx.c:1.97->1.98 
#   L:added DXS whitelist for (eMachines) m680x.
# 
# ChangeSet
#   2004/05/17 15:20:12+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   CS4231 driver
#   checks the PCM substream pointers to fix oops/panic in the interrupt
#   handler.
# 
# sound/isa/cs423x/cs4231_lib.c
#   2004/05/01 04:01:11+02:00 perex@suse.cz +15 -8
#   ALSA CVS update
#   D:2004/05/01 10:01:11
#   C:CS4231 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:isa/cs423x/cs4231_lib.c:1.39->1.40 
#   L:checks the PCM substream pointers to fix oops/panic in the interrupt
#   L:handler.
# 
# ChangeSet
#   2004/05/17 15:19:51+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   Intel8x0 driver
#   check that period interrupt really has occured;
#   clear only those interrupts that have been handled
# 
# sound/pci/intel8x0.c
#   2004/04/26 02:47:09+02:00 perex@suse.cz +7 -3
#   ALSA CVS update
#   D:2004/04/26 08:47:09
#   C:Intel8x0 driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:pci/intel8x0.c:1.136->1.137 
#   L:check that period interrupt really has occured;
#   L:clear only those interrupts that have been handled
# 
# ChangeSet
#   2004/05/17 15:19:27+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,OPL4
#   make some module parameters sysfs-writable, where appropriate
# 
# sound/drivers/opl4/opl4_seq.c
#   2004/04/26 02:31:23+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/26 08:31:22
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,OPL4
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/oss/pcm_oss.c:1.67->1.68 
#   F:core/seq/seq.c:1.11->1.12 
#   F:core/seq/seq_midi.c:1.19->1.20 
#   F:core/seq/oss/seq_oss.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.3->1.4 
#   L:make some module parameters sysfs-writable, where appropriate
# 
# sound/core/seq/seq_midi.c
#   2004/04/26 02:31:23+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/04/26 08:31:22
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,OPL4
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/oss/pcm_oss.c:1.67->1.68 
#   F:core/seq/seq.c:1.11->1.12 
#   F:core/seq/seq_midi.c:1.19->1.20 
#   F:core/seq/oss/seq_oss.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.3->1.4 
#   L:make some module parameters sysfs-writable, where appropriate
# 
# sound/core/seq/seq.c
#   2004/04/26 02:31:23+02:00 perex@suse.cz +6 -6
#   ALSA CVS update
#   D:2004/04/26 08:31:22
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,OPL4
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/oss/pcm_oss.c:1.67->1.68 
#   F:core/seq/seq.c:1.11->1.12 
#   F:core/seq/seq_midi.c:1.19->1.20 
#   F:core/seq/oss/seq_oss.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.3->1.4 
#   L:make some module parameters sysfs-writable, where appropriate
# 
# sound/core/seq/oss/seq_oss.c
#   2004/04/26 02:31:23+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/26 08:31:22
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,OPL4
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/oss/pcm_oss.c:1.67->1.68 
#   F:core/seq/seq.c:1.11->1.12 
#   F:core/seq/seq_midi.c:1.19->1.20 
#   F:core/seq/oss/seq_oss.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.3->1.4 
#   L:make some module parameters sysfs-writable, where appropriate
# 
# sound/core/oss/pcm_oss.c
#   2004/04/26 02:31:22+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/26 08:31:22
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,OPL4
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/oss/pcm_oss.c:1.67->1.68 
#   F:core/seq/seq.c:1.11->1.12 
#   F:core/seq/seq_midi.c:1.19->1.20 
#   F:core/seq/oss/seq_oss.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.3->1.4 
#   L:make some module parameters sysfs-writable, where appropriate
# 
# ChangeSet
#   2004/05/17 15:19:06+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PARISC Harmony driver
#   fixed compilation - using struct parisc_device for DMA allocation.
# 
# sound/parisc/harmony.c
#   2004/04/24 15:01:49+02:00 perex@suse.cz +7 -29
#   ALSA CVS update
#   D:2004/04/24 21:01:49
#   C:PARISC Harmony driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:parisc/harmony.c:1.8->1.9 
#   L:fixed compilation - using struct parisc_device for DMA allocation.
# 
# ChangeSet
#   2004/05/17 11:37:11+02:00 perex@suse.cz 
#   Merge suse.cz:/home/perex/bk/linux-sound/linux-2.5
#   into suse.cz:/home/perex/bk/linux-sound/linux-sound
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.c
#   2004/05/17 11:36:58+02:00 perex@suse.cz +0 -0
#   Auto merged
# 
# sound/isa/wavefront/wavefront_synth.c
#   2004/05/17 11:36:58+02:00 perex@suse.cz +0 -0
#   Auto merged
# 
# sound/isa/es1688/es1688.c
#   2004/05/17 11:36:57+02:00 perex@suse.cz +0 -0
#   Auto merged
# 
# include/linux/pci_ids.h
#   2004/05/17 11:36:57+02:00 perex@suse.cz +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/05/16 01:22:31-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/05/16 01:22:28-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/05/14 21:18:25-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/05/14 21:18:22-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/05/11 16:33:03-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/05/11 16:33:00-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/29 15:39:10-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/04/29 15:39:07-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/26 18:08:46-07:00 akpm@bix.(none) 
#   Merge http://linux-sound.bkbits.net/linux-sound
#   into bix.(none):/usr/src/bk-alsa
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.c
#   2004/04/26 18:08:43-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# sound/isa/wavefront/wavefront_synth.c
#   2004/04/26 18:08:43-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# sound/isa/es1688/es1688.c
#   2004/04/26 18:08:43-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# include/linux/pci_ids.h
#   2004/04/26 18:08:43-07:00 akpm@bix.(none) +0 -2
#   Auto merged
# 
# ChangeSet
#   2004/04/25 22:42:13-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/04/25 22:42:10-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/24 16:33:25+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   OPL3SA2 driver
#   Added YMH0801 ISA PnP ID - OPL3-SA2
# 
# sound/isa/opl3sa2.c
#   2004/04/24 07:07:50+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/04/24 13:07:50
#   C:OPL3SA2 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:isa/opl3sa2.c:1.34->1.35 
#   L:Added YMH0801 ISA PnP ID - OPL3-SA2
# 
# ChangeSet
#   2004/04/24 16:33:07+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   VIA82xx driver
#   - added the experimental PM support.
# 
# sound/pci/via82xx.c
#   2004/04/23 10:08:11+02:00 perex@suse.cz +94 -0
#   ALSA CVS update
#   D:2004/04/23 16:08:11
#   C:VIA82xx driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/via82xx.c:1.96->1.97 
#   L:- added the experimental PM support.
# 
# ChangeSet
#   2004/04/24 16:32:49+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PCI drivers,ATIIXP driver
#   - added IXP 300 to descriptions and comments.
#   - fixed the codec probing without the proper interrupts.
#   - added the experimental PM support.
# 
# sound/pci/atiixp.c
#   2004/04/23 10:07:54+02:00 perex@suse.cz +81 -7
#   ALSA CVS update
#   D:2004/04/23 16:07:54
#   C:PCI drivers,ATIIXP driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.26->1.27 
#   F:pci/atiixp.c:1.6->1.7 
#   L:- added IXP 300 to descriptions and comments.
#   L:- fixed the codec probing without the proper interrupts.
#   L:- added the experimental PM support.
# 
# sound/pci/Kconfig
#   2004/04/23 10:07:54+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/04/23 16:07:54
#   C:PCI drivers,ATIIXP driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.26->1.27 
#   F:pci/atiixp.c:1.6->1.7 
#   L:- added IXP 300 to descriptions and comments.
#   L:- fixed the codec probing without the proper interrupts.
#   L:- added the experimental PM support.
# 
# ChangeSet
#   2004/04/24 16:32:26+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   AC97 Codec Core
#   fixed the compilation without CONFIG_SND_DEBUG.
# 
# sound/pci/ac97/ac97_patch.c
#   2004/04/23 10:05:27+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/04/23 16:05:27
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_patch.c:1.47->1.48 
#   L:fixed the compilation without CONFIG_SND_DEBUG.
# 
# ChangeSet
#   2004/04/24 16:32:05+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PPC Keywest driver,PPC PMAC driver,PPC PowerMac driver
#   PPC Tumbler driver
#   fixed the oops on resume and the initialization of chip.
# 
# sound/ppc/tumbler.c
#   2004/04/23 09:18:25+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/04/23 15:18:25
#   C:PPC Keywest driver,PPC PMAC driver,PPC PowerMac driver
#   C:PPC Tumbler driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/keywest.c:1.16->1.17 
#   F:ppc/pmac.h:1.13->1.14 
#   F:ppc/powermac.c:1.16->1.17 
#   F:ppc/tumbler.c:1.29->1.30 
#   L:fixed the oops on resume and the initialization of chip.
# 
# sound/ppc/powermac.c
#   2004/04/23 09:18:25+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/23 15:18:25
#   C:PPC Keywest driver,PPC PMAC driver,PPC PowerMac driver
#   C:PPC Tumbler driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/keywest.c:1.16->1.17 
#   F:ppc/pmac.h:1.13->1.14 
#   F:ppc/powermac.c:1.16->1.17 
#   F:ppc/tumbler.c:1.29->1.30 
#   L:fixed the oops on resume and the initialization of chip.
# 
# sound/ppc/pmac.h
#   2004/04/23 09:18:25+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/23 15:18:25
#   C:PPC Keywest driver,PPC PMAC driver,PPC PowerMac driver
#   C:PPC Tumbler driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/keywest.c:1.16->1.17 
#   F:ppc/pmac.h:1.13->1.14 
#   F:ppc/powermac.c:1.16->1.17 
#   F:ppc/tumbler.c:1.29->1.30 
#   L:fixed the oops on resume and the initialization of chip.
# 
# sound/ppc/keywest.c
#   2004/04/23 09:18:25+02:00 perex@suse.cz +12 -6
#   ALSA CVS update
#   D:2004/04/23 15:18:25
#   C:PPC Keywest driver,PPC PMAC driver,PPC PowerMac driver
#   C:PPC Tumbler driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/keywest.c:1.16->1.17 
#   F:ppc/pmac.h:1.13->1.14 
#   F:ppc/powermac.c:1.16->1.17 
#   F:ppc/tumbler.c:1.29->1.30 
#   L:fixed the oops on resume and the initialization of chip.
# 
# ChangeSet
#   2004/04/24 16:31:45+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   AC97 Codec Core
#   ac97->pci might be null
# 
# sound/pci/ac97/ac97_patch.c
#   2004/04/21 13:50:52+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/04/21 19:50:52
#   C:AC97 Codec Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/ac97/ac97_patch.c:1.46->1.47 
#   L:ac97->pci might be null
# 
# ChangeSet
#   2004/04/24 16:31:21+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   AC97 Codec Core
#   patch_sigmatel_stac9758
#     - initialize with default values from datasheet
#     - apply old initialization only for Gateway M675 notebook
# 
# sound/pci/ac97/ac97_patch.c
#   2004/04/21 13:44:13+02:00 perex@suse.cz +28 -8
#   ALSA CVS update
#   D:2004/04/21 19:44:13
#   C:AC97 Codec Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/ac97/ac97_patch.c:1.45->1.46 
#   L:patch_sigmatel_stac9758
#   L:  - initialize with default values from datasheet
#   L:  - apply old initialization only for Gateway M675 notebook
# 
# ChangeSet
#   2004/04/24 16:31:02+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   Intel8x0 driver
#   From: Giridhar Pemmasani <giri@lmc.cs.sunysb.edu>
#   
#   It seems that pci config space is messed up after resume for Intel ICH4
#   audio controller (on Dell Latitude D600, but I notice that others also
#   complain about this problem).  Consequently resume from S3 causes oops with
#   snd_intel8x0 module.  If the module is removed before suspend and loaded
#   afterwards, I still get oops.  The following simple patch fixes the
#   problem.  With this, I can leave alsa untouched during suspend/resume.
# 
# sound/pci/intel8x0.c
#   2004/04/21 13:18:27+02:00 perex@suse.cz +6 -0
#   ALSA CVS update
#   D:2004/04/21 19:18:27
#   C:Intel8x0 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/intel8x0.c:1.135->1.136 
#   L:From: Giridhar Pemmasani <giri@lmc.cs.sunysb.edu>
#   L:
#   L:It seems that pci config space is messed up after resume for Intel ICH4
#   L:audio controller (on Dell Latitude D600, but I notice that others also
#   L:complain about this problem).  Consequently resume from S3 causes oops with
#   L:snd_intel8x0 module.  If the module is removed before suspend and loaded
#   L:afterwards, I still get oops.  The following simple patch fixes the
#   L:problem.  With this, I can leave alsa untouched during suspend/resume.
# 
# ChangeSet
#   2004/04/24 16:30:42+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   Opti9xx drivers
#   Fixed irq&dma initialization for <93x chips
# 
# sound/isa/opti9xx/opti92x-ad1848.c
#   2004/04/19 14:16:49+02:00 perex@suse.cz +4 -0
#   ALSA CVS update
#   D:2004/04/19 20:16:49
#   C:Opti9xx drivers
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:isa/opti9xx/opti92x-ad1848.c:1.43->1.44 
#   L:Fixed irq&dma initialization for <93x chips
# 
# ChangeSet
#   2004/04/24 16:30:24+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   AC97 Codec Core
#   Fixed AD18xx PCM bit handling
# 
# sound/pci/ac97/ac97_codec.c
#   2004/04/19 13:11:29+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/19 19:11:29
#   C:AC97 Codec Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/ac97/ac97_codec.c:1.130->1.131 
#   L:Fixed AD18xx PCM bit handling
# 
# ChangeSet
#   2004/04/24 16:30:01+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,AC97 Codec Core
#   added the write support to ac97#x-x+regs proc file.
#   
#   this is for debugging purpose, and enabled only when CONFIG_SND_DEBUG is set.
#   it allows the user to modify AC97 register bits without compiling the sources.
# 
# sound/pci/ac97/ac97_proc.c
#   2004/04/16 13:29:12+02:00 perex@suse.cz +22 -0
#   ALSA CVS update
#   D:2004/04/16 19:29:12
#   C:Documentation,AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/Procfile.txt:1.1->1.2 
#   F:pci/ac97/ac97_proc.c:1.6->1.7 
#   L:added the write support to ac97#x-x+regs proc file.
#   L:
#   L:this is for debugging purpose, and enabled only when CONFIG_SND_DEBUG is set.
#   L:it allows the user to modify AC97 register bits without compiling the sources.
# 
# Documentation/sound/alsa/Procfile.txt
#   2004/04/16 13:29:12+02:00 perex@suse.cz +6 -0
#   ALSA CVS update
#   D:2004/04/16 19:29:12
#   C:Documentation,AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/Procfile.txt:1.1->1.2 
#   F:pci/ac97/ac97_proc.c:1.6->1.7 
#   L:added the write support to ac97#x-x+regs proc file.
#   L:
#   L:this is for debugging purpose, and enabled only when CONFIG_SND_DEBUG is set.
#   L:it allows the user to modify AC97 register bits without compiling the sources.
# 
# ChangeSet
#   2004/04/24 16:29:42+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   AC97 Codec Core
#   added the mic/center sharing switch of cm9739 codec again.
# 
# sound/pci/ac97/ac97_patch.c
#   2004/04/16 13:25:15+02:00 perex@suse.cz +32 -3
#   ALSA CVS update
#   D:2004/04/16 19:25:15
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_patch.c:1.44->1.45 
#   L:added the mic/center sharing switch of cm9739 codec again.
# 
# ChangeSet
#   2004/04/24 16:29:18+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Control Midlevel
#   - fixed the compilation without CONFIG_PM.
#   - fixed the return value of POWER ioctl.
# 
# sound/core/control.c
#   2004/04/16 10:50:24+02:00 perex@suse.cz +3 -1
#   ALSA CVS update
#   D:2004/04/16 16:50:24
#   C:Control Midlevel
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/control.c:1.42->1.43 
#   L:- fixed the compilation without CONFIG_PM.
#   L:- fixed the return value of POWER ioctl.
# 
# ChangeSet
#   2004/04/24 16:29:00+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   AC97 Codec Core
#   - fixed the center/mic share switch on ALC65x.
#   - created AC97_SINGLE_VALUME() macro.
# 
# sound/pci/ac97/ac97_patch.c
#   2004/04/16 10:01:08+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/04/16 16:01:06
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.129->1.130 
#   F:pci/ac97/ac97_local.h:1.4->1.5 
#   F:pci/ac97/ac97_patch.c:1.43->1.44 
#   L:- fixed the center/mic share switch on ALC65x.
#   L:- created AC97_SINGLE_VALUME() macro.
# 
# sound/pci/ac97/ac97_local.h
#   2004/04/16 10:01:08+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/04/16 16:01:06
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.129->1.130 
#   F:pci/ac97/ac97_local.h:1.4->1.5 
#   F:pci/ac97/ac97_patch.c:1.43->1.44 
#   L:- fixed the center/mic share switch on ALC65x.
#   L:- created AC97_SINGLE_VALUME() macro.
# 
# sound/pci/ac97/ac97_codec.c
#   2004/04/16 10:01:06+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/16 16:01:06
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.129->1.130 
#   F:pci/ac97/ac97_local.h:1.4->1.5 
#   F:pci/ac97/ac97_patch.c:1.43->1.44 
#   L:- fixed the center/mic share switch on ALC65x.
#   L:- created AC97_SINGLE_VALUME() macro.
# 
# ChangeSet
#   2004/04/24 16:28:38+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ATIIXP driver
#   - added the PCI id entry for SB300.
#   - added the missing terminator to the PCI id list.
# 
# sound/pci/atiixp.c
#   2004/04/16 09:48:14+02:00 perex@suse.cz +3 -1
#   ALSA CVS update
#   D:2004/04/16 15:48:14
#   C:ATIIXP driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/atiixp.c:1.5->1.6 
#   L:- added the PCI id entry for SB300.
#   L:- added the missing terminator to the PCI id list.
# 
# ChangeSet
#   2004/04/24 16:28:19+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PPC PMAC driver
#   fixed the missing function declarations.
# 
# sound/ppc/pmac.c
#   2004/04/16 09:20:18+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/04/16 15:20:18
#   C:PPC PMAC driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/pmac.c:1.28->1.29 
#   L:fixed the missing function declarations.
# 
# ChangeSet
#   2004/04/24 16:27:55+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   ICE1712 driver
#   <Dirk.Kalis@t-online.de>
#   added a control for default rate in the ice1712 driver
# 
# sound/pci/ice1712/ice1712.c
#   2004/04/16 08:08:35+02:00 perex@suse.cz +71 -0
#   ALSA CVS update
#   D:2004/04/16 14:08:35
#   C:ICE1712 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/ice1712/ice1712.c:1.50->1.51 
#   L:<Dirk.Kalis@t-online.de>
#   L:added a control for default rate in the ice1712 driver
# 
# ChangeSet
#   2004/04/24 16:27:36+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PPC PMAC driver
#   another fix for the new suspend/resume.
# 
# sound/ppc/pmac.c
#   2004/04/16 04:25:56+02:00 perex@suse.cz +4 -10
#   ALSA CVS update
#   D:2004/04/16 10:25:56
#   C:PPC PMAC driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/pmac.c:1.27->1.28 
#   L:another fix for the new suspend/resume.
# 
# ChangeSet
#   2004/04/24 16:27:15+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Memalloc module
#   removed the obsolete hack for dev_alloc_coherent() with dev = 0.
# 
# sound/core/memalloc.c
#   2004/04/16 04:06:57+02:00 perex@suse.cz +0 -25
#   ALSA CVS update
#   D:2004/04/16 10:06:57
#   C:Memalloc module
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/memalloc.c:1.30->1.31 
#   L:removed the obsolete hack for dev_alloc_coherent() with dev = 0.
# 
# ChangeSet
#   2004/04/24 16:26:49+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PPC PMAC driver
#   fixed the suspend/resume with the new ALSA common callbacks.
# 
# sound/ppc/pmac.h
#   2004/04/15 11:23:18+02:00 perex@suse.cz +0 -1
#   ALSA CVS update
#   D:2004/04/15 17:23:18
#   C:PPC PMAC driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/pmac.c:1.26->1.27 
#   F:ppc/pmac.h:1.12->1.13 
#   L:fixed the suspend/resume with the new ALSA common callbacks.
# 
# sound/ppc/pmac.c
#   2004/04/15 11:23:18+02:00 perex@suse.cz +9 -36
#   ALSA CVS update
#   D:2004/04/15 17:23:18
#   C:PPC PMAC driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:ppc/pmac.c:1.26->1.27 
#   F:ppc/pmac.h:1.12->1.13 
#   L:fixed the suspend/resume with the new ALSA common callbacks.
# 
# ChangeSet
#   2004/04/24 15:59:07+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PCM Midlevel
#   fixed the deadlock of power_lock in suspend (by Terry Loftin)
# 
# sound/core/pcm_native.c
#   2004/04/15 04:16:13+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/15 10:16:13
#   C:PCM Midlevel
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/pcm_native.c:1.87->1.88 
#   L:fixed the deadlock of power_lock in suspend (by Terry Loftin)
# 
# ChangeSet
#   2004/04/24 15:58:48+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   - call snd_ac97_suspend() in the suspend callback.
#   - suspend/resume secondary codecs, too.
# 
# sound/pci/ymfpci/ymfpci_main.c
#   2004/04/14 12:27:06+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/trident/trident_main.c
#   2004/04/14 12:27:05+02:00 perex@suse.cz +7 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/nm256/nm256.c
#   2004/04/14 12:27:05+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/maestro3.c
#   2004/04/14 12:27:04+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/es1968.c
#   2004/04/14 12:27:04+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/cs46xx/cs46xx_lib.c
#   2004/04/14 12:27:05+02:00 perex@suse.cz +7 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/cs4281.c
#   2004/04/14 12:27:04+02:00 perex@suse.cz +5 -0
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# sound/pci/ali5451/ali5451.c
#   2004/04/14 12:27:05+02:00 perex@suse.cz +6 -2
#   ALSA CVS update
#   D:2004/04/14 18:27:04
#   C:CS4281 driver,ES1968 driver,Maestro3 driver,ALI5451 driver
#   C:CS46xx driver,NM256 driver,Trident driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/cs4281.c:1.53->1.54 
#   F:pci/es1968.c:1.64->1.65 
#   F:pci/maestro3.c:1.51->1.52 
#   F:pci/ali5451/ali5451.c:1.47->1.48 
#   F:pci/cs46xx/cs46xx_lib.c:1.72->1.73 
#   F:pci/nm256/nm256.c:1.36->1.37 
#   F:pci/trident/trident_main.c:1.56->1.57 
#   F:pci/ymfpci/ymfpci_main.c:1.50->1.51 
#   L:- call snd_ac97_suspend() in the suspend callback.
#   L:- suspend/resume secondary codecs, too.
# 
# ChangeSet
#   2004/04/24 15:58:26+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   AC97 Codec Core
#   - export snd_ac97_suspend().
#   - mute MASTER and HEADPHONE volumes in suspend to avoid possible clicks.
# 
# sound/pci/ac97/ac97_codec.c
#   2004/04/14 12:25:51+02:00 perex@suse.cz +9 -0
#   ALSA CVS update
#   D:2004/04/14 18:25:51
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.128->1.129 
#   L:- export snd_ac97_suspend().
#   L:- mute MASTER and HEADPHONE volumes in suspend to avoid possible clicks.
# 
# ChangeSet
#   2004/04/24 15:58:04+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Intel8x0 driver,Intel8x0-modem driver
#   - probe only audio (intel8x0) or modem (intel8x0m) codecs.
#   - call snd_ac97_suspend() in the suspend callback.
# 
# sound/pci/intel8x0m.c
#   2004/04/14 12:24:32+02:00 perex@suse.cz +3 -0
#   ALSA CVS update
#   D:2004/04/14 18:24:32
#   C:Intel8x0 driver,Intel8x0-modem driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/intel8x0.c:1.134->1.135 
#   F:pci/intel8x0m.c:1.4->1.5 
#   L:- probe only audio (intel8x0) or modem (intel8x0m) codecs.
#   L:- call snd_ac97_suspend() in the suspend callback.
# 
# sound/pci/intel8x0.c
#   2004/04/14 12:24:32+02:00 perex@suse.cz +6 -1
#   ALSA CVS update
#   D:2004/04/14 18:24:32
#   C:Intel8x0 driver,Intel8x0-modem driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/intel8x0.c:1.134->1.135 
#   F:pci/intel8x0m.c:1.4->1.5 
#   L:- probe only audio (intel8x0) or modem (intel8x0m) codecs.
#   L:- call snd_ac97_suspend() in the suspend callback.
# 
# ChangeSet
#   2004/04/24 15:57:44+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   Edirol UA-700 advanced modes support
# 
# sound/usb/usbquirks.h
#   2004/04/14 12:11:22+02:00 perex@suse.cz +24 -6
#   ALSA CVS update
#   D:2004/04/14 18:11:20
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.98->1.99 
#   F:usb/usbaudio.h:1.30->1.31 
#   F:usb/usbquirks.h:1.30->1.31 
#   L:Edirol UA-700 advanced modes support
# 
# sound/usb/usbaudio.h
#   2004/04/14 12:11:21+02:00 perex@suse.cz +3 -0
#   ALSA CVS update
#   D:2004/04/14 18:11:20
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.98->1.99 
#   F:usb/usbaudio.h:1.30->1.31 
#   F:usb/usbquirks.h:1.30->1.31 
#   L:Edirol UA-700 advanced modes support
# 
# sound/usb/usbaudio.c
#   2004/04/14 12:11:20+02:00 perex@suse.cz +79 -0
#   ALSA CVS update
#   D:2004/04/14 18:11:20
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.98->1.99 
#   F:usb/usbaudio.h:1.30->1.31 
#   F:usb/usbquirks.h:1.30->1.31 
#   L:Edirol UA-700 advanced modes support
# 
# ChangeSet
#   2004/04/24 15:57:23+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Memalloc module
#   fixed the allocation of coherent DMA pages under 32bit mask.
# 
# sound/core/memalloc.c
#   2004/04/14 04:44:16+02:00 perex@suse.cz +9 -2
#   ALSA CVS update
#   D:2004/04/14 10:44:16
#   C:Memalloc module
#   A:Takashi Iwai <tiwai@suse.de>
#   F:core/memalloc.c:1.29->1.30 
#   L:fixed the allocation of coherent DMA pages under 32bit mask.
# 
# ChangeSet
#   2004/04/24 15:57:05+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Intel8x0 driver
#   fixed MX440 workaround in suspend/resume.
# 
# sound/pci/intel8x0.c
#   2004/04/13 11:22:54+02:00 perex@suse.cz +17 -0
#   ALSA CVS update
#   D:2004/04/13 17:22:54
#   C:Intel8x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/intel8x0.c:1.133->1.134 
#   L:fixed MX440 workaround in suspend/resume.
# 
# ChangeSet
#   2004/04/24 15:56:47+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ICE1712 driver
#   added Event Electronics EZ8 support by Doug McLain <nostar@comcast.net>
# 
# sound/pci/ice1712/ice1712.h
#   2004/04/13 10:39:21+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/13 16:39:21
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/hoontech.c:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.49->1.50 
#   F:pci/ice1712/ice1712.h:1.18->1.19 
#   L:added Event Electronics EZ8 support by Doug McLain <nostar@comcast.net>
# 
# sound/pci/ice1712/ice1712.c
#   2004/04/13 10:39:21+02:00 perex@suse.cz +11 -2
#   ALSA CVS update
#   D:2004/04/13 16:39:21
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/hoontech.c:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.49->1.50 
#   F:pci/ice1712/ice1712.h:1.18->1.19 
#   L:added Event Electronics EZ8 support by Doug McLain <nostar@comcast.net>
# 
# sound/pci/ice1712/hoontech.c
#   2004/04/13 10:39:21+02:00 perex@suse.cz +14 -0
#   ALSA CVS update
#   D:2004/04/13 16:39:21
#   C:ICE1712 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ice1712/hoontech.c:1.3->1.4 
#   F:pci/ice1712/ice1712.c:1.49->1.50 
#   F:pci/ice1712/ice1712.h:1.18->1.19 
#   L:added Event Electronics EZ8 support by Doug McLain <nostar@comcast.net>
# 
# ChangeSet
#   2004/04/24 15:56:24+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   PCI drivers,au88x0 driver
#   bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0_synth.c
#   2004/04/13 10:26:28+02:00 perex@suse.cz +13 -11
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0_pcm.c
#   2004/04/13 10:26:28+02:00 perex@suse.cz +9 -14
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0_game.c
#   2004/04/13 10:26:28+02:00 perex@suse.cz +7 -5
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0_eq.c
#   2004/04/13 10:26:28+02:00 perex@suse.cz +3 -1
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0_core.c
#   2004/04/13 10:26:28+02:00 perex@suse.cz +27 -34
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0_a3d.c
#   2004/04/13 10:26:28+02:00 perex@suse.cz +6 -0
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0.h
#   2004/04/13 10:26:27+02:00 perex@suse.cz +9 -7
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au88x0.c
#   2004/04/13 10:26:27+02:00 perex@suse.cz +54 -44
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au8830.h
#   2004/04/13 10:26:27+02:00 perex@suse.cz +4 -4
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au8820.h
#   2004/04/13 10:26:27+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/au88x0/au8810.h
#   2004/04/13 10:26:27+02:00 perex@suse.cz +62 -44
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# sound/pci/Kconfig
#   2004/04/13 10:26:27+02:00 perex@suse.cz +8 -0
#   ALSA CVS update
#   D:2004/04/13 16:26:27
#   C:PCI drivers,au88x0 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/Kconfig:1.25->1.26 
#   F:pci/au88x0/au8810.h:1.2->1.3 
#   F:pci/au88x0/au8820.h:1.2->1.3 
#   F:pci/au88x0/au8830.h:1.2->1.3 
#   F:pci/au88x0/au88x0.c:1.8->1.9 
#   F:pci/au88x0/au88x0.h:1.3->1.4 
#   F:pci/au88x0/au88x0_a3d.c:1.2->1.3 
#   F:pci/au88x0/au88x0_core.c:1.3->1.4 
#   F:pci/au88x0/au88x0_eq.c:1.1->1.2 
#   F:pci/au88x0/au88x0_game.c:1.2->1.3 
#   F:pci/au88x0/au88x0_pcm.c:1.2->1.3 
#   F:pci/au88x0/au88x0_synth.c:1.1->1.2 
#   L:bugfixes and VIA/AMD chipset automatic workaround by Manuel Jander <manuel.jander@mat.utfsm.cl>
# 
# ChangeSet
#   2004/04/24 15:50:42+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   Trident driver,Digigram VX222 driver,YMFPCI driver
#   - removed superfluous warning messages after pci_module_init().
#     (2.6 kernel doesn't return the error anyway...)
#   - store card pointer in pci_drvdata instead of chip pointer.
#     this would make easier to add PM support.
# 
# sound/pci/ymfpci/ymfpci.c
#   2004/04/13 09:59:17+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/vx222/vx222.c
#   2004/04/13 09:59:17+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/via82xx.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/trident/trident.c
#   2004/04/13 09:59:17+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/sonicvibes.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/rme9652/rme9652.c
#   2004/04/13 09:59:17+02:00 perex@suse.cz +1 -8
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/rme9652/hdsp.c
#   2004/04/13 09:59:02+02:00 perex@suse.cz +1 -8
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/rme96.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/rme32.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/nm256/nm256.c
#   2004/04/13 09:59:02+02:00 perex@suse.cz +1 -8
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/mixart/mixart.c
#   2004/04/13 09:59:02+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/maestro3.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/korg1212/korg1212.c
#   2004/04/13 09:59:02+02:00 perex@suse.cz +3 -12
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/intel8x0m.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -10
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/intel8x0.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +2 -5
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/ice1712/ice1724.c
#   2004/04/13 09:59:01+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/ice1712/ice1712.c
#   2004/04/13 09:59:01+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/fm801.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/es1968.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -12
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/es1938.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/ens1370.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/emu10k1/emu10k1.c
#   2004/04/13 09:59:01+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/cs46xx/cs46xx.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/cs4281.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/cmipci.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/bt87x.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +3 -14
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/azt3328.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +8 -20
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/au88x0/au88x0.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +4 -21
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/atiixp.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -10
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/als4000.c
#   2004/04/13 09:58:59+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# sound/pci/ali5451/ali5451.c
#   2004/04/13 09:59:00+02:00 perex@suse.cz +1 -9
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
#   2004/04/13 09:58:59+02:00 perex@suse.cz +2 -20
#   ALSA CVS update
#   D:2004/04/13 15:58:59
#   C:Documentation,ALS4000 driver,ATIIXP driver,AZT3328 driver,BT87x driver
#   C:CMIPCI driver,CS4281 driver,ENS1370/1+ driver,ES1938 driver
#   C:ES1968 driver,FM801 driver,Intel8x0 driver,Intel8x0-modem driver
#   C:Maestro3 driver,RME32 driver,RME96 driver,SonicVibes driver
#   C:VIA82xx driver,ALI5451 driver,au88x0 driver,CS46xx driver
#   C:EMU10K1/EMU10K2 driver,ICE1712 driver,ICE1724 driver,KORG1212 driver
#   C:MIXART driver,NM256 driver,RME HDSP driver,RME9652 driver
#   C:Trident driver,Digigram VX222 driver,YMFPCI driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.26->1.27 
#   F:pci/als4000.c:1.32->1.33 
#   F:pci/atiixp.c:1.4->1.5 
#   F:pci/azt3328.c:1.12->1.13 
#   F:pci/bt87x.c:1.4->1.5 
#   F:pci/cmipci.c:1.62->1.63 
#   F:pci/cs4281.c:1.52->1.53 
#   F:pci/ens1370.c:1.59->1.60 
#   F:pci/es1938.c:1.34->1.35 
#   F:pci/es1968.c:1.63->1.64 
#   F:pci/fm801.c:1.44->1.45 
#   F:pci/intel8x0.c:1.132->1.133 
#   F:pci/intel8x0m.c:1.3->1.4 
#   F:pci/maestro3.c:1.50->1.51 
#   F:pci/rme32.c:1.32->1.33 
#   F:pci/rme96.c:1.34->1.35 
#   F:pci/sonicvibes.c:1.34->1.35 
#   F:pci/via82xx.c:1.95->1.96 
#   F:pci/ali5451/ali5451.c:1.46->1.47 
#   F:pci/au88x0/au88x0.c:1.7->1.8 
#   F:pci/cs46xx/cs46xx.c:1.26->1.27 
#   F:pci/emu10k1/emu10k1.c:1.23->1.24 
#   F:pci/ice1712/ice1712.c:1.48->1.49 
#   F:pci/ice1712/ice1724.c:1.28->1.29 
#   F:pci/korg1212/korg1212.c:1.37->1.38 
#   F:pci/mixart/mixart.c:1.7->1.8 
#   F:pci/nm256/nm256.c:1.35->1.36 
#   F:pci/rme9652/hdsp.c:1.55->1.56 
#   F:pci/rme9652/rme9652.c:1.43->1.44 
#   F:pci/trident/trident.c:1.23->1.24 
#   F:pci/vx222/vx222.c:1.4->1.5 
#   F:pci/ymfpci/ymfpci.c:1.35->1.36 
#   L:- removed superfluous warning messages after pci_module_init().
#   L:  (2.6 kernel doesn't return the error anyway...)
#   L:- store card pointer in pci_drvdata instead of chip pointer.
#   L:  this would make easier to add PM support.
# 
# ChangeSet
#   2004/04/24 15:50:18+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   use wrapper function for usb_control_msg()
#   to prevent DMA'ing from/to the stack
# 
# sound/usb/usbmixer.c
#   2004/04/13 02:56:34+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/04/13 08:56:23
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.97->1.98 
#   F:usb/usbaudio.h:1.29->1.30 
#   F:usb/usbmixer.c:1.26->1.27 
#   L:use wrapper function for usb_control_msg()
#   L:to prevent DMA'ing from/to the stack
# 
# sound/usb/usbaudio.h
#   2004/04/13 02:56:24+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/04/13 08:56:23
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.97->1.98 
#   F:usb/usbaudio.h:1.29->1.30 
#   F:usb/usbmixer.c:1.26->1.27 
#   L:use wrapper function for usb_control_msg()
#   L:to prevent DMA'ing from/to the stack
# 
# sound/usb/usbaudio.c
#   2004/04/13 02:56:23+02:00 perex@suse.cz +30 -4
#   ALSA CVS update
#   D:2004/04/13 08:56:23
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.97->1.98 
#   F:usb/usbaudio.h:1.29->1.30 
#   F:usb/usbmixer.c:1.26->1.27 
#   L:use wrapper function for usb_control_msg()
#   L:to prevent DMA'ing from/to the stack
# 
# ChangeSet
#   2004/04/24 15:49:59+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   ALSA sequencer
#   load snd-seq-dummy automatically, as documented in seq_dummy.c
# 
# sound/core/seq/seq.c
#   2004/04/13 02:40:44+02:00 perex@suse.cz +4 -0
#   ALSA CVS update
#   D:2004/04/13 08:40:44
#   C:ALSA sequencer
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:core/seq/seq.c:1.10->1.11 
#   L:load snd-seq-dummy automatically, as documented in seq_dummy.c
# 
# ChangeSet
#   2004/04/24 15:49:37+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   Trident driver,CS4231 driver,PARISC Harmony driver
#   Remove all old SNDRV_DMA_TYPE_PCI references
# 
# sound/parisc/harmony.c
#   2004/04/08 12:10:08+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/08 18:10:08
#   C:Trident driver,CS4231 driver,PARISC Harmony driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:include/trident.h:1.17->1.18 
#   F:isa/cs423x/cs4231_lib.c:1.38->1.39 
#   F:parisc/harmony.c:1.6->1.7 
#   L:Remove all old SNDRV_DMA_TYPE_PCI references
# 
# sound/isa/cs423x/cs4231_lib.c
#   2004/04/08 12:10:08+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/08 18:10:08
#   C:Trident driver,CS4231 driver,PARISC Harmony driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:include/trident.h:1.17->1.18 
#   F:isa/cs423x/cs4231_lib.c:1.38->1.39 
#   F:parisc/harmony.c:1.6->1.7 
#   L:Remove all old SNDRV_DMA_TYPE_PCI references
# 
# include/sound/trident.h
#   2004/04/08 12:10:08+02:00 perex@suse.cz +0 -7
#   ALSA CVS update
#   D:2004/04/08 18:10:08
#   C:Trident driver,CS4231 driver,PARISC Harmony driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:include/trident.h:1.17->1.18 
#   F:isa/cs423x/cs4231_lib.c:1.38->1.39 
#   F:parisc/harmony.c:1.6->1.7 
#   L:Remove all old SNDRV_DMA_TYPE_PCI references
# 
# ChangeSet
#   2004/04/24 15:49:19+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ALI5451 driver
#   Clean up of power-management codes.
#   
#   - moved commonly used codes to the core layer.
#   - using the unified suspend/resume callbacks for PCI and ISA
#   - added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#     as the registration functions.
# 
# sound/pci/ali5451/ali5451.c
#   2004/04/08 12:04:21+02:00 perex@suse.cz +11 -22
#   ALSA CVS update
#   D:2004/04/08 18:04:21
#   C:ALI5451 driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ali5451/ali5451.c:1.45->1.46 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# ChangeSet
#   2004/04/24 15:48:59+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   Sound Core PDAudioCF driver
#   Clean up of power-management codes.
#   
#   - moved commonly used codes to the core layer.
#   - using the unified suspend/resume callbacks for PCI and ISA
#   - added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#     as the registration functions.
# 
# sound/pcmcia/pdaudiocf/pdaudiocf_core.c
#   2004/04/08 11:35:01+02:00 perex@suse.cz +5 -28
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.h
#   2004/04/08 11:35:01+02:00 perex@suse.cz +2 -3
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +3 -6
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/ymfpci/ymfpci_main.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +6 -30
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/ymfpci/ymfpci.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +3 -23
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/trident/trident_main.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +10 -36
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/trident/trident.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +3 -23
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/nm256/nm256.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +9 -55
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/maestro3.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +13 -57
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/intel8x0m.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +9 -64
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/intel8x0.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +9 -63
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/es1968.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +12 -59
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/cs46xx/cs46xx_lib.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +6 -33
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/cs46xx/cs46xx.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +3 -23
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/cs4281.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +11 -55
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/atiixp.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +2 -4
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/pci/ali5451/ali5451.c
#   2004/04/08 11:35:00+02:00 perex@suse.cz +2 -4
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/isa/opl3sa2.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +11 -66
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/isa/es18xx.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +7 -58
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/isa/cs423x/cs4231_lib.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +17 -21
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/isa/ad1848/ad1848_lib.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +10 -55
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/core/sound.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +8 -0
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/core/init.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +97 -0
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# sound/core/control.c
#   2004/04/08 11:34:59+02:00 perex@suse.cz +27 -2
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# include/sound/ymfpci.h
#   2004/04/08 11:34:59+02:00 perex@suse.cz +0 -5
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# include/sound/trident.h
#   2004/04/08 11:34:59+02:00 perex@suse.cz +0 -6
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# include/sound/cs46xx.h
#   2004/04/08 11:34:59+02:00 perex@suse.cz +0 -8
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# include/sound/cs4231.h
#   2004/04/08 11:34:59+02:00 perex@suse.cz +0 -1
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# include/sound/core.h
#   2004/04/08 11:34:59+02:00 perex@suse.cz +21 -2
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# include/sound/ad1848.h
#   2004/04/08 11:34:59+02:00 perex@suse.cz +0 -3
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
#   2004/04/08 11:34:59+02:00 perex@suse.cz +36 -114
#   ALSA CVS update
#   D:2004/04/08 17:34:59
#   C:Documentation,Control Midlevel,ALSA Core,AD1848 driver,CS4231 driver
#   C:CS46xx driver,Trident driver,YMFPCI driver,ES18xx driver,OPL3SA2 driver
#   C:ATIIXP driver,CS4281 driver,ES1968 driver,Intel8x0 driver
#   C:Intel8x0-modem driver,Maestro3 driver,ALI5451 driver,NM256 driver
#   C:Sound Core PDAudioCF driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.25->1.26 
#   F:core/control.c:1.41->1.42 
#   F:core/init.c:1.44->1.45 
#   F:core/sound.c:1.60->1.61 
#   F:include/ad1848.h:1.9->1.10 
#   F:include/core.h:1.49->1.50 
#   F:include/cs4231.h:1.7->1.8 
#   F:include/cs46xx.h:1.18->1.19 
#   F:include/trident.h:1.16->1.17 
#   F:include/ymfpci.h:1.14->1.15 
#   F:isa/es18xx.c:1.45->1.46 
#   F:isa/opl3sa2.c:1.33->1.34 
#   F:isa/ad1848/ad1848_lib.c:1.34->1.35 
#   F:isa/cs423x/cs4231_lib.c:1.37->1.38 
#   F:pci/atiixp.c:1.3->1.4 
#   F:pci/cs4281.c:1.51->1.52 
#   F:pci/es1968.c:1.62->1.63 
#   F:pci/intel8x0.c:1.131->1.132 
#   F:pci/intel8x0m.c:1.2->1.3 
#   F:pci/maestro3.c:1.49->1.50 
#   F:pci/ali5451/ali5451.c:1.44->1.45 
#   F:pci/cs46xx/cs46xx.c:1.25->1.26 
#   F:pci/cs46xx/cs46xx_lib.c:1.71->1.72 
#   F:pci/nm256/nm256.c:1.34->1.35 
#   F:pci/trident/trident.c:1.22->1.23 
#   F:pci/trident/trident_main.c:1.55->1.56 
#   F:pci/ymfpci/ymfpci.c:1.34->1.35 
#   F:pci/ymfpci/ymfpci_main.c:1.49->1.50 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.5->1.6 
#   F:pcmcia/pdaudiocf/pdaudiocf.h:1.4->1.5 
#   F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.2->1.3 
#   L:Clean up of power-management codes.
#   L:
#   L:- moved commonly used codes to the core layer.
#   L:- using the unified suspend/resume callbacks for PCI and ISA
#   L:- added snd_card_set_pm_callbacks() and snd_card_set_isa_pm_callbacks()
#   L:  as the registration functions.
# 
# ChangeSet
#   2004/04/24 15:48:26+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   SPARC cs4231 driver,USB generic driver
#   use the new module_param*() functions.
# 
# sound/usb/usbaudio.c
#   2004/04/07 12:48:23+02:00 perex@suse.cz +9 -31
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/sparc/cs4231.c
#   2004/04/07 12:48:22+02:00 perex@suse.cz +5 -25
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/sparc/amd7930.c
#   2004/04/07 12:48:22+02:00 perex@suse.cz +5 -25
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/ppc/powermac.c
#   2004/04/07 12:48:22+02:00 perex@suse.cz +5 -28
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pcmcia/vx/vxpocket.c
#   2004/04/07 12:48:22+02:00 perex@suse.cz +8 -6
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pcmcia/pdaudiocf/pdaudiocf.c
#   2004/04/07 12:48:22+02:00 perex@suse.cz +7 -5
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/ymfpci/ymfpci.c
#   2004/04/07 12:48:21+02:00 perex@suse.cz +9 -32
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/vx222/vx222.c
#   2004/04/07 12:48:21+02:00 perex@suse.cz +7 -27
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/via82xx.c
#   2004/04/07 12:48:17+02:00 perex@suse.cz +10 -39
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/trident/trident.c
#   2004/04/07 12:48:21+02:00 perex@suse.cz +7 -30
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/sonicvibes.c
#   2004/04/07 12:48:17+02:00 perex@suse.cz +8 -32
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/rme9652/rme9652.c
#   2004/04/07 12:48:21+02:00 perex@suse.cz +6 -26
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/rme9652/hdsp.c
#   2004/04/07 12:48:20+02:00 perex@suse.cz +7 -27
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/rme96.c
#   2004/04/07 12:48:17+02:00 perex@suse.cz +5 -25
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/rme32.c
#   2004/04/07 12:48:17+02:00 perex@suse.cz +5 -23
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/nm256/nm256.c
#   2004/04/07 12:48:20+02:00 perex@suse.cz +11 -38
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/mixart/mixart.c
#   2004/04/07 12:48:20+02:00 perex@suse.cz +5 -25
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/maestro3.c
#   2004/04/07 12:48:17+02:00 perex@suse.cz +7 -29
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/korg1212/korg1212.c
#   2004/04/07 12:48:20+02:00 perex@suse.cz +5 -26
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/intel8x0m.c
#   2004/04/07 12:48:17+02:00 perex@suse.cz +6 -28
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/intel8x0.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +9 -38
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/ice1712/ice1724.c
#   2004/04/07 12:48:20+02:00 perex@suse.cz +5 -25
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/ice1712/ice1712.c
#   2004/04/07 12:48:20+02:00 perex@suse.cz +7 -27
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/fm801.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +6 -27
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/es1968.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +14 -52
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/es1938.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +5 -25
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/ens1370.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +7 -39
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/emu10k1/emu10k1.c
#   2004/04/07 12:48:19+02:00 perex@suse.cz +11 -34
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/cs46xx/cs46xx.c
#   2004/04/07 12:48:19+02:00 perex@suse.cz +8 -31
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/cs4281.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +6 -26
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/cmipci.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +9 -39
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/bt87x.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +6 -26
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/azt3328.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +6 -33
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/au88x0/au88x0.c
#   2004/04/07 12:48:19+02:00 perex@suse.cz +6 -23
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/atiixp.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +7 -30
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/als4000.c
#   2004/04/07 12:48:16+02:00 perex@suse.cz +6 -30
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/ali5451/ali5451.c
#   2004/04/07 12:48:19+02:00 perex@suse.cz +7 -30
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/pci/ac97/ac97_codec.c
#   2004/04/07 12:48:18+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/parisc/harmony.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +12 -1
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/wavefront/wavefront_synth.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +11 -10
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/wavefront/wavefront.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +16 -53
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/sscape.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +8 -34
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/sgalaxy.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +8 -34
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/sb/sb8.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +8 -32
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/sb/sb16.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +16 -72
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/sb/es968.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +8 -32
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/sb/emu8000_patch.c
#   2004/04/07 12:48:15+02:00 perex@suse.cz +3 -3
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/opti9xx/opti92x-ad1848.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +12 -56
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/opl3sa2.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +15 -53
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/gus/interwave.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +15 -60
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/gus/gusmax.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +12 -43
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/gus/gusextreme.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +16 -49
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/gus/gusclassic.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +12 -43
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/es18xx.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +12 -47
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/es1688/es1688.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +10 -38
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/dt019x.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +11 -39
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/cs423x/pc98.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +14 -44
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/cs423x/cs4236.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +15 -59
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/cs423x/cs4231.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +11 -41
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/cmi8330.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +13 -50
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/azt2320.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +13 -42
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/als100.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +12 -41
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/ad1848/ad1848.c
#   2004/04/07 12:48:14+02:00 perex@suse.cz +9 -34
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/isa/ad1816a/ad1816a.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +12 -41
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/virmidi.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +6 -27
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/serial-u16550.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +13 -43
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/opl4/opl4_seq.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/opl3/opl3_seq.c
#   2004/04/07 12:48:13+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/mtpav.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +6 -28
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/mpu401/mpu401.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +9 -40
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/drivers/dummy.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +8 -31
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/timer.c
#   2004/04/07 12:48:11+02:00 perex@suse.cz +2 -13
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/sound.c
#   2004/04/07 12:48:11+02:00 perex@suse.cz +4 -3
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/seq/seq_midi.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +3 -2
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/seq/seq_dummy.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +7 -4
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/seq/seq.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +9 -7
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/seq/oss/seq_oss_init.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +3 -2
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/seq/oss/seq_oss.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +2 -1
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/rtctimer.c
#   2004/04/07 12:48:11+02:00 perex@suse.cz +2 -13
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/rawmidi.c
#   2004/04/07 12:48:11+02:00 perex@suse.cz +4 -22
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/pcm_memory.c
#   2004/04/07 12:48:11+02:00 perex@suse.cz +3 -2
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/oss/pcm_oss.c
#   2004/04/07 12:48:12+02:00 perex@suse.cz +5 -24
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/core/memalloc.c
#   2004/04/07 12:48:11+02:00 perex@suse.cz +3 -20
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# sound/arm/sa11xx-uda1341.c
#   2004/04/07 12:48:10+02:00 perex@suse.cz +3 -2
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# include/sound/initval.h
#   2004/04/07 12:48:13+02:00 perex@suse.cz +0 -40
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
#   2004/04/07 12:48:10+02:00 perex@suse.cz +9 -37
#   ALSA CVS update
#   D:2004/04/07 18:48:10
#   C:Documentation,SA11xx UDA1341 driver,Memalloc module,PCM Midlevel
#   C:RawMidi Midlevel,RTC timer driver,ALSA Core,Timer Midlevel
#   C:ALSA<-OSS emulation,ALSA sequencer,ALSA<-OSS sequencer,Generic drivers
#   C:MPU401 UART,OPL3,OPL4,ALS100 driver,AZT2320 driver,CMI8330 driver
#   C:DT019x driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
#   C:Sound Scape driver,AD1816A driver,AD1848 driver,CS4231 driver
#   C:CS4236+ driver,PC98(CS423x) driver,ES1688 driver,GUS Classic driver
#   C:GUS Extreme driver,GUS MAX driver,AMD InterWave driver,Opti9xx drivers
#   C:EMU8000 driver,ES968 driver,SB16/AWE driver,SB8 driver
#   C:Wavefront drivers,PARISC Harmony driver,ALS4000 driver,ATIIXP driver
#   C:AZT3328 driver,BT87x driver,CMIPCI driver,CS4281 driver
#   C:ENS1370/1+ driver,ES1938 driver,ES1968 driver,FM801 driver
#   C:Intel8x0 driver,Intel8x0-modem driver,Maestro3 driver,RME32 driver
#   C:RME96 driver,SonicVibes driver,VIA82xx driver,AC97 Codec Core
#   C:ALI5451 driver,au88x0 driver,CS46xx driver,EMU10K1/EMU10K2 driver
#   C:ICE1712 driver,ICE1724 driver,KORG1212 driver,MIXART driver
#   C:NM256 driver,RME HDSP driver,RME9652 driver,Trident driver
#   C:Digigram VX222 driver,YMFPCI driver,Sound Core PDAudioCF driver
#   C:Digigram VX Pocket driver,PPC PowerMac driver,SPARC AMD7930 driver
#   C:SPARC cs4231 driver,USB generic driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.24->1.25 
#   F:arm/sa11xx-uda1341.c:1.13->1.14 
#   F:core/memalloc.c:1.28->1.29 
#   F:core/pcm_memory.c:1.25->1.26 
#   F:core/rawmidi.c:1.41->1.42 
#   F:core/rtctimer.c:1.19->1.20 
#   F:core/sound.c:1.59->1.60 
#   F:core/timer.c:1.56->1.57 
#   F:core/oss/pcm_oss.c:1.66->1.67 
#   F:core/seq/seq.c:1.9->1.10 
#   F:core/seq/seq_dummy.c:1.10->1.11 
#   F:core/seq/seq_midi.c:1.18->1.19 
#   F:core/seq/oss/seq_oss.c:1.11->1.12 
#   F:core/seq/oss/seq_oss_init.c:1.11->1.12 
#   F:drivers/dummy.c:1.26->1.27 
#   F:drivers/mtpav.c:1.26->1.27 
#   F:drivers/serial-u16550.c:1.25->1.26 
#   F:drivers/virmidi.c:1.11->1.12 
#   F:drivers/mpu401/mpu401.c:1.16->1.17 
#   F:drivers/opl3/opl3_seq.c:1.12->1.13 
#   F:drivers/opl4/opl4_seq.c:1.2->1.3 
#   F:include/initval.h:1.19->1.20 
#   F:isa/als100.c:1.24->1.25 
#   F:isa/azt2320.c:1.24->1.25 
#   F:isa/cmi8330.c:1.28->1.29 
#   F:isa/dt019x.c:1.18->1.19 
#   F:isa/es18xx.c:1.44->1.45 
#   F:isa/opl3sa2.c:1.32->1.33 
#   F:isa/sgalaxy.c:1.19->1.20 
#   F:isa/sscape.c:1.11->1.12 
#   F:isa/ad1816a/ad1816a.c:1.18->1.19 
#   F:isa/ad1848/ad1848.c:1.10->1.11 
#   F:isa/cs423x/cs4231.c:1.12->1.13 
#   F:isa/cs423x/cs4236.c:1.41->1.42 
#   F:isa/cs423x/pc98.c:1.7->1.8 
#   F:isa/es1688/es1688.c:1.14->1.15 
#   F:isa/gus/gusclassic.c:1.13->1.14 
#   F:isa/gus/gusextreme.c:1.15->1.16 
#   F:isa/gus/gusmax.c:1.14->1.15 
#   F:isa/gus/interwave.c:1.32->1.33 
#   F:isa/opti9xx/opti92x-ad1848.c:1.42->1.43 
#   F:isa/sb/emu8000_patch.c:1.8->1.9 
#   F:isa/sb/es968.c:1.24->1.25 
#   F:isa/sb/sb16.c:1.45->1.46 
#   F:isa/sb/sb8.c:1.18->1.19 
#   F:isa/wavefront/wavefront.c:1.27->1.28 
#   F:isa/wavefront/wavefront_synth.c:1.14->1.15 
#   F:parisc/harmony.c:1.5->1.6 
#   F:pci/als4000.c:1.31->1.32 
#   F:pci/atiixp.c:1.2->1.3 
#   F:pci/azt3328.c:1.11->1.12 
#   F:pci/bt87x.c:1.3->1.4 
#   F:pci/cmipci.c:1.61->1.62 
#   F:pci/cs4281.c:1.50->1.51 
#   F:pci/ens1370.c:1.58->1.59 
#   F:pci/es1938.c:1.33->1.34 
#   F:pci/es1968.c:1.61->1.62 
#   F:pci/fm801.c:1.43->1.44 
#   F:pci/intel8x0.c:1.130->1.131 
#   F:pci/intel8x0m.c:1.1->1.2 
#   F:pci/maestro3.c:1.48->1.49 
#   F:pci/rme32.c:1.31->1.32 
#   F:pci/rme96.c:1.33->1.34 
#   F:pci/sonicvibes.c:1.33->1.34 
#   F:pci/via82xx.c:1.94->1.95 
#   F:pci/ac97/ac97_codec.c:1.127->1.128 
#   F:pci/ali5451/ali5451.c:1.43->1.44 
#   F:pci/au88x0/au88x0.c:1.6->1.7 
#   F:pci/cs46xx/cs46xx.c:1.24->1.25 
#   F:pci/emu10k1/emu10k1.c:1.22->1.23 
#   F:pci/ice1712/ice1712.c:1.47->1.48 
#   F:pci/ice1712/ice1724.c:1.27->1.28 
#   F:pci/korg1212/korg1212.c:1.36->1.37 
#   F:pci/mixart/mixart.c:1.6->1.7 
#   F:pci/nm256/nm256.c:1.33->1.34 
#   F:pci/rme9652/hdsp.c:1.54->1.55 
#   F:pci/rme9652/rme9652.c:1.42->1.43 
#   F:pci/trident/trident.c:1.21->1.22 
#   F:pci/vx222/vx222.c:1.3->1.4 
#   F:pci/ymfpci/ymfpci.c:1.33->1.34 
#   F:pcmcia/pdaudiocf/pdaudiocf.c:1.4->1.5 
#   F:pcmcia/vx/vxpocket.c:1.3->1.4 
#   F:ppc/powermac.c:1.15->1.16 
#   F:sparc/amd7930.c:1.8->1.9 
#   F:sparc/cs4231.c:1.12->1.13 
#   F:usb/usbaudio.c:1.96->1.97 
#   L:use the new module_param*() functions.
# 
# ChangeSet
#   2004/04/24 15:47:52+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   AC97 Codec Core
#   fix AC'97 revision bits on AD1985
# 
# sound/pci/ac97/ac97_patch.c
#   2004/04/07 02:25:06+02:00 perex@suse.cz +2 -0
#   ALSA CVS update
#   D:2004/04/07 08:25:06
#   C:AC97 Codec Core
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:pci/ac97/ac97_patch.c:1.42->1.43 
#   L:fix AC'97 revision bits on AD1985
# 
# ChangeSet
#   2004/04/24 15:47:33+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   AC97 Codec Core
#   show AC'97 2.3 information in proc file
# 
# sound/pci/ac97/ac97_proc.c
#   2004/04/07 02:21:34+02:00 perex@suse.cz +57 -0
#   ALSA CVS update
#   D:2004/04/07 08:21:33
#   C:AC97 Codec Core
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:include/ac97_codec.h:1.43->1.44 
#   F:pci/ac97/ac97_proc.c:1.5->1.6 
#   L:show AC'97 2.3 information in proc file
# 
# include/sound/ac97_codec.h
#   2004/04/07 02:21:33+02:00 perex@suse.cz +19 -1
#   ALSA CVS update
#   D:2004/04/07 08:21:33
#   C:AC97 Codec Core
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:include/ac97_codec.h:1.43->1.44 
#   F:pci/ac97/ac97_proc.c:1.5->1.6 
#   L:show AC'97 2.3 information in proc file
# 
# ChangeSet
#   2004/04/24 15:47:10+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   Timer Midlevel,ALSA Core
#   Added early event flag and code to the timer interface.
# 
# sound/core/timer.c
#   2004/04/06 12:23:46+02:00 perex@suse.cz +29 -14
#   ALSA CVS update
#   D:2004/04/06 18:23:46
#   C:Timer Midlevel,ALSA Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:core/timer.c:1.55->1.56 
#   F:include/asound.h:1.37->1.38 
#   F:include/timer.h:1.16->1.17 
#   L:Added early event flag and code to the timer interface.
# 
# include/sound/timer.h
#   2004/04/06 12:23:47+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/06 18:23:46
#   C:Timer Midlevel,ALSA Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:core/timer.c:1.55->1.56 
#   F:include/asound.h:1.37->1.38 
#   F:include/timer.h:1.16->1.17 
#   L:Added early event flag and code to the timer interface.
# 
# include/sound/asound.h
#   2004/04/06 12:23:47+02:00 perex@suse.cz +3 -1
#   ALSA CVS update
#   D:2004/04/06 18:23:46
#   C:Timer Midlevel,ALSA Core
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:core/timer.c:1.55->1.56 
#   F:include/asound.h:1.37->1.38 
#   F:include/timer.h:1.16->1.17 
#   L:Added early event flag and code to the timer interface.
# 
# ChangeSet
#   2004/04/24 15:46:51+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   allow specification of rate_table in AUDIO_FIXED_ENDPOINT quirks
# 
# sound/usb/usbaudio.c
#   2004/04/06 09:20:21+02:00 perex@suse.cz +15 -0
#   ALSA CVS update
#   D:2004/04/06 15:20:21
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbaudio.c:1.95->1.96 
#   L:allow specification of rate_table in AUDIO_FIXED_ENDPOINT quirks
# 
# ChangeSet
#   2004/04/24 15:46:27+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   USB generic driver
#   remove superfluous address operator from literal arrays
# 
# sound/usb/usbquirks.h
#   2004/04/06 09:19:00+02:00 perex@suse.cz +5 -5
#   ALSA CVS update
#   D:2004/04/06 15:19:00
#   C:USB generic driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:usb/usbquirks.h:1.29->1.30 
#   L:remove superfluous address operator from literal arrays
# 
# ChangeSet
#   2004/04/24 15:46:08+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   Intel8x0 driver
#   20-bit sample format support
# 
# sound/pci/intel8x0.c
#   2004/04/05 05:29:05+02:00 perex@suse.cz +26 -11
#   ALSA CVS update
#   D:2004/04/05 11:29:05
#   C:Intel8x0 driver
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:pci/intel8x0.c:1.129->1.130 
#   L:20-bit sample format support
# 
# ChangeSet
#   2004/04/24 15:45:45+02:00 perex@suse.cz 
#   ALSA CVS update - Clemens Ladisch <clemens@ladisch.de>
#   AC97 Codec Core
#   fix access to wrong register when clearing powerdown bits
# 
# sound/pci/ac97/ac97_codec.c
#   2004/04/05 05:23:34+02:00 perex@suse.cz +2 -2
#   ALSA CVS update
#   D:2004/04/05 11:23:34
#   C:AC97 Codec Core
#   A:Clemens Ladisch <clemens@ladisch.de>
#   F:pci/ac97/ac97_codec.c:1.126->1.127 
#   L:fix access to wrong register when clearing powerdown bits
# 
# ChangeSet
#   2004/04/24 15:45:26+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   AC97 Codec Core
#   - fixed the possibl ac97 register cache mismatch.
#   - added the detection of spdif sample rates.
# 
# sound/pci/ac97/ac97_pcm.c
#   2004/04/04 11:03:59+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/04 17:03:58
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.125->1.126 
#   F:pci/ac97/ac97_pcm.c:1.12->1.13 
#   L:- fixed the possibl ac97 register cache mismatch.
#   L:- added the detection of spdif sample rates.
# 
# sound/pci/ac97/ac97_codec.c
#   2004/04/04 11:03:58+02:00 perex@suse.cz +44 -15
#   ALSA CVS update
#   D:2004/04/04 17:03:58
#   C:AC97 Codec Core
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/ac97/ac97_codec.c:1.125->1.126 
#   F:pci/ac97/ac97_pcm.c:1.12->1.13 
#   L:- fixed the possibl ac97 register cache mismatch.
#   L:- added the detection of spdif sample rates.
# 
# ChangeSet
#   2004/04/24 15:45:05+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   ATIIXP driver
#   - fixed SPDIF support.
#     restricted only 48k sample rate.
#   - fixed the address assignment for bigendian (not existing, though)
# 
# sound/pci/atiixp.c
#   2004/04/04 11:02:43+02:00 perex@suse.cz +82 -43
#   ALSA CVS update
#   D:2004/04/04 17:02:43
#   C:ATIIXP driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/atiixp.c:1.1->1.2 
#   L:- fixed SPDIF support.
#   L:  restricted only 48k sample rate.
#   L:- fixed the address assignment for bigendian (not existing, though)
# 
# ChangeSet
#   2004/04/24 15:44:47+02:00 perex@suse.cz 
#   ALSA CVS update - Takashi Iwai <tiwai@suse.de>
#   VIA82xx driver
#   added dxs_support and ac97_quirk entries for Amira notebook.
# 
# sound/pci/via82xx.c
#   2004/04/04 11:01:15+02:00 perex@suse.cz +7 -0
#   ALSA CVS update
#   D:2004/04/04 17:01:15
#   C:VIA82xx driver
#   A:Takashi Iwai <tiwai@suse.de>
#   F:pci/via82xx.c:1.93->1.94 
#   L:added dxs_support and ac97_quirk entries for Amira notebook.
# 
# ChangeSet
#   2004/04/24 15:44:24+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   ALSA Version
#   release: 1.0.4
# 
# include/sound/version.h
#   2004/04/03 03:40:57+02:00 perex@suse.cz +1 -1
#   ALSA CVS update
#   D:2004/04/03 10:40:57
#   C:ALSA Version
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:include/version.h:1.40->1.41 
#   L:release: 1.0.4
# 
# ChangeSet
#   2004/04/24 15:44:04+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   PCMCIA Kconfig
#   SND_PDAUDIOCF depends on SND_PCM
# 
# sound/pcmcia/Kconfig
#   2004/04/03 02:33:33+02:00 perex@suse.cz +1 -0
#   ALSA CVS update
#   D:2004/04/03 09:33:33
#   C:PCMCIA Kconfig
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pcmcia/Kconfig:1.6->1.7 
#   L:SND_PDAUDIOCF depends on SND_PCM
# 
# ChangeSet
#   2004/04/24 15:43:44+02:00 perex@suse.cz 
#   ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
#   CS4281 driver
#   Added retry_count
# 
# sound/pci/cs4281.c
#   2004/04/03 02:32:56+02:00 perex@suse.cz +4 -0
#   ALSA CVS update
#   D:2004/04/03 09:32:56
#   C:CS4281 driver
#   A:Jaroslav Kysela <perex@suse.cz>
#   F:pci/cs4281.c:1.49->1.50 
#   L:Added retry_count
# 
# ChangeSet
#   2004/04/24 14:33:02+02:00 perex@suse.cz 
#   Cleanups for Aureal PCI IDs.
# 
# include/linux/pci_ids.h
#   2004/04/24 14:32:50+02:00 perex@suse.cz +2 -3
#   Cleanups for Aureal PCI IDs.
# 
# ChangeSet
#   2004/04/16 12:26:24-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/04/16 12:26:21-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/14 18:18:38-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/04/14 18:18:35-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/13 17:03:26-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/04/13 17:03:23-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/12 20:38:27-07:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa
# 
# include/linux/pci_ids.h
#   2004/04/12 20:38:24-07:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2004/04/01 14:38:57-08:00 akpm@bix.(none) 
#   x
# 
# include/linux/pci_ids.h
#   2004/04/01 14:38:53-08:00 akpm@bix.(none) +2 -3
#   x
# 
# ChangeSet
#   2004/04/01 11:34:39+02:00 perex@suse.cz 
#   Fixed ALSA aureal driver compilation - wrong and missing PCI IDs
# 
# sound/pci/au88x0/au88x0.h
#   2004/04/01 11:34:27+02:00 perex@suse.cz +2 -2
#   sync with pci_ids.h
# 
# sound/pci/au88x0/au8830.c
#   2004/04/01 11:34:27+02:00 perex@suse.cz +1 -1
#   Sync with pci_ids.h
# 
# sound/pci/au88x0/au8820.c
#   2004/04/01 11:34:27+02:00 perex@suse.cz +1 -1
#   Sync with pci_ids.h
# 
# include/linux/pci_ids.h
#   2004/04/01 11:34:26+02:00 perex@suse.cz +1 -0
#   Added PCI_DEVICE_ID_AUREAL_ADVANTAGE
# 
diff -Nru a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
--- a/Documentation/sound/alsa/ALSA-Configuration.txt	Tue May 18 23:41:45 2004
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt	Tue May 18 23:41:45 2004
@@ -416,7 +416,8 @@
 	* Creative Card w/Digital out + Digital I/O 2	[0x0fc3/0x1f0f]
 	* Creative Card w/Digital CD in + Digital I/O 2	[0x0fcf/0x1f0f]
         * Creative Card 5.1/w Digital out + LiveDrive	[0x3fc3/0x1fff]
-        * Creative Card all ins and outs		[0x3fff/0x1fff]
+	* Creative Card 5.1 (c) 2003			[0x3fc3/0x7cff]
+        * Creative Card all ins and outs		[0x3fff/0x7fff]
     
   Module snd-ens1370
   ------------------
@@ -609,6 +610,10 @@
                         * Hoontech SoundTrack DSP 24 Media 7.1
                         * Digigram VX442
 
+    model       - Use the given board model, one of the following:
+		  delta1010, dio2496, delta66, delta44, audiophile, delta410,
+		  delta1010lt, vx442, ewx2496, ews88mt, ews88mt_new, ews88d,
+		  dmx6fire, dsp24, dsp24_71, ez8
     omni	- Omni I/O support for MidiMan M-Audio Delta44/66
     cs8427_timeout - reset timeout for the CS8427 chip (S/PDIF transciever)
                      in msec resolution, default value is 500 (0.5 sec)
@@ -625,6 +630,9 @@
 			* AMP Ltd AUDIO2000
 			* TerraTec Aureon Sky-5.1, Space-7.1
 
+    model       - Use the given board model, one of the following:
+		  revo71, amp2000, prodigy71, aureon51, aureon71
+
     Module supports up to 8 cards and autoprobe.
 
   Module snd-intel8x0
@@ -787,6 +795,8 @@
 
     Module supports autoprobe and multiple chips (max 8).
 
+    The power-management is supported.
+
     Note: on some notebooks the buffer address cannot be detected
     automatically, or causes hang-up during initialization.
     In such a case, specify the buffer top address explicity via
@@ -796,9 +806,24 @@
       Sony F270: buffer_top=0x272800
     The driver supports only ac97 codec.  It's possible to force
     to initialize/use ac97 although it's not detected.  In such a
-    case, use force_ac97=1 option.
+    case, use force_ac97=1 option - but *NO* guarantee whether it
+    works!
 
-    The power-management is supported.
+    Note: The NM256 chip can be linked internally with non-AC97
+    codecs.  This driver supports only the AC97 codec, and won't work
+    with machines with other (most likely CS423x or OPL3SAx) chips,
+    even though the device is detected in lspci.  In such a case, try
+    other drivers, e.g. snd-cs4232 or snd-opl3sa2.  Some has ISA-PnP
+    but some doesn't have ISA PnP.  You'll need to speicfy isapnp=0
+    and proper hardware parameters in the case without ISA PnP.
+
+    Note: This driver is really crappy.  It's a porting from the
+    OSS driver, which is a result of black-magic reverse engineering.
+    The detection of codec will fail if the driver is loaded *after*
+    X-server as described above.  You might be able to force to load
+    the module, but it may result in hang-up.   Hence, make sure that
+    you load this module *before* X if you encounter this kind of
+    problem.
 
   Module snd-opl3sa2
   ------------------
diff -Nru a/Documentation/sound/alsa/Audigy-mixer.txt b/Documentation/sound/alsa/Audigy-mixer.txt
--- /dev/null	Wed Dec 31 16:00:00 1969
+++ b/Documentation/sound/alsa/Audigy-mixer.txt	Tue May 18 23:41:45 2004
@@ -0,0 +1,345 @@
+
+		Sound Blaster Audigy mixer / default DSP code
+		===========================================
+
+This is based on SB-Live-mixer.txt.
+
+The EMU10K2 chips have a DSP part which can be programmed to support 
+various ways of sample processing, which is described here.
+(This acticle does not deal with the overall functionality of the 
+EMU10K2 chips. See the manuals section for further details.)
+
+The ALSA driver programs this portion of chip by default code
+(can be altered later) which offers the following functionality:
+
+
+1) Digital mixer controls
+-------------------------
+
+These controls are built using the DSP instructions. They offer extended
+functionality. Only the default build-in code in the ALSA driver is described
+here. Note that the controls work as attenuators: the maximum value is the 
+neutral position leaving the signal unchanged. Note that if the  same destination 
+is mentioned in multiple controls, the signal is accumulated and can be wrapped 
+(set to maximal or minimal value without checking of overflow).
+
+
+Explanation of used abbreviations:
+
+DAC    - digital to analog converter
+ADC    - analog to digital converter
+I2S    - one-way three wire serial bus for digital sound by Philips Semiconductors
+         (this standard is used for connecting standalone DAC and ADC converters)
+LFE    - low frequency effects (subwoofer signal)
+AC97   - a chip containing an analog mixer, DAC and ADC converters
+IEC958 - S/PDIF
+FX-bus - the EMU10K2 chip has an effect bus containing 64 accumulators.
+         Each of the synthesizer voices can feed its output to these accumulators
+         and the DSP microcontroller can operate with the resulting sum.
+
+name='PCM Front Playback Volume',index=0
+
+This control is used to attenuate samples for left and right front PCM FX-bus
+accumulators. ALSA uses accumulators 8 and 9 for left and right front PCM 
+samples for 5.1 playback. The result samples are forwarded to the front DAC PCM 
+slots of the Philips DAC.
+
+name='PCM Surround Playback Volume',index=0
+
+This control is used to attenuate samples for left and right surround PCM FX-bus
+accumulators. ALSA uses accumulators 2 and 3 for left and right surround PCM 
+samples for 5.1 playback. The result samples are forwarded to the surround DAC PCM 
+slots of the Philips DAC.
+
+name='PCM Center Playback Volume',index=0
+
+This control is used to attenuate samples for center PCM FX-bus accumulator.
+ALSA uses accumulator 6 for center PCM sample for 5.1 playback. The result sample
+is forwarded to the center DAC PCM slot of the Philips DAC.
+
+name='PCM LFE Playback Volume',index=0
+
+This control is used to attenuate sample for LFE PCM FX-bus accumulator. 
+ALSA uses accumulator 7 for LFE PCM sample for 5.1 playback. The result sample 
+is forwarded to the LFE DAC PCM slot of the Philips DAC.
+
+name='PCM Playback Volume',index=0
+
+This control is used to attenuate samples for left and right PCM FX-bus
+accumulators. ALSA uses accumulators 0 and 1 for left and right PCM samples for
+stereo playback. The result samples are forwarded to the front DAC PCM slots 
+of the Philips DAC.
+
+name='PCM Capture Volume',index=0
+
+This control is used to attenuate samples for left and right PCM FX-bus
+accumulator. ALSA uses accumulators 0 and 1 for left and right PCM.
+The result is forwarded to the ADC capture FIFO (thus to the standard capture
+PCM device).
+
+name='Music Playback Volume',index=0
+
+This control is used to attenuate samples for left and right MIDI FX-bus
+accumulators. ALSA uses accumulators 4 and 5 for left and right MIDI samples.
+The result samples are forwarded to the front DAC PCM slots of the AC97 codec.
+
+name='Music Capture Volume',index=0
+
+These controls are used to attenuate samples for left and right MIDI FX-bus
+accumulator. ALSA uses accumulators 4 and 5 for left and right PCM.
+The result is forwarded to the ADC capture FIFO (thus to the standard capture
+PCM device).
+
+name='Mic Playback Volume',index=0
+
+This control is used to attenuate samples for left and right Mic input.
+For Mic input is used AC97 codec. The result samples are forwarded to 
+the front DAC PCM slots of the Philips DAC. Samples are forwarded to Mic
+capture FIFO (device 1 - 16bit/8KHz mono) too without volume control.
+
+name='Mic Capture Volume',index=0
+
+This control is used to attenuate samples for left and right Mic input.
+The result is forwarded to the ADC capture FIFO (thus to the standard capture
+PCM device).
+
+name='Audigy CD Playback Volume',index=0
+
+This control is used to attenuate samples from left and right IEC958 TTL
+digital inputs (usually used by a CDROM drive). The result samples are
+forwarded to the front DAC PCM slots of the Philips DAC.
+
+name='Audigy CD Capture Volume',index=0
+
+This control is used to attenuate samples from left and right IEC958 TTL
+digital inputs (usually used by a CDROM drive). The result samples are
+forwarded to the ADC capture FIFO (thus to the standard capture PCM device).
+
+name='IEC958 Optical Playback Volume',index=0
+
+This control is used to attenuate samples from left and right IEC958 optical
+digital input. The result samples are forwarded to the front DAC PCM slots
+of the Philips DAC.
+
+name='IEC958 Optical Capture Volume',index=0
+
+This control is used to attenuate samples from left and right IEC958 optical
+digital inputs. The result samples are forwarded to the ADC capture FIFO
+(thus to the standard capture PCM device).
+
+name='Line2 Playback Volume',index=0
+
+This control is used to attenuate samples from left and right I2S ADC
+inputs (on the AudigyDrive). The result samples are forwarded to the front
+DAC PCM slots of the Philips DAC.
+
+name='Line2 Capture Volume',index=1
+
+This control is used to attenuate samples from left and right I2S ADC
+inputs (on the AudigyDrive). The result samples are forwarded to the ADC
+capture FIFO (thus to the standard capture PCM device).
+
+name='Analog Mix Playback Volume',index=0
+
+This control is used to attenuate samples from left and right I2S ADC
+inputs from Philips ADC. The result samples are forwarded to the front
+DAC PCM slots of the Philips DAC. This contains mix from analog sources
+like CD, Line In, Aux, ....
+
+name='Analog Mix Capture Volume',index=1
+
+This control is used to attenuate samples from left and right I2S ADC
+inputs Philips ADC. The result samples are forwarded to the ADC
+capture FIFO (thus to the standard capture PCM device).
+
+name='Aux2 Playback Volume',index=0
+
+This control is used to attenuate samples from left and right I2S ADC
+inputs (on the AudigyDrive). The result samples are forwarded to the front
+DAC PCM slots of the Philips DAC.
+
+name='Aux2 Capture Volume',index=1
+
+This control is used to attenuate samples from left and right I2S ADC
+inputs (on the AudigyDrive). The result samples are forwarded to the ADC
+capture FIFO (thus to the standard capture PCM device).
+
+name='Front Playback Volume',index=0
+
+All stereo signals are mixed together and mirrored to surround, center and LFE.
+This control is used to attenuate samples for left and right front speakers of
+this mix.
+
+name='Surround Playback Volume',index=0
+
+All stereo signals are mixed together and mirrored to surround, center and LFE.
+This control is used to attenuate samples for left and right surround speakers of
+this mix.
+
+name='Center Playback Volume',index=0
+
+All stereo signals are mixed together and mirrored to surround, center and LFE.
+This control is used to attenuate sample for center speaker of this mix.
+
+name='LFE Playback Volume',index=0
+
+All stereo signals are mixed together and mirrored to surround, center and LFE.
+This control is used to attenuate sample for LFE speaker of this mix.
+
+name='Tone Control - Switch',index=0
+
+This control turns the tone control on or off. The samples for front, rear
+and center / LFE outputs are affected.
+
+name='Tone Control - Bass',index=0
+
+This control sets the bass intensity. There is no neutral value!!
+When the tone control code is activated, the samples are always modified.
+The closest value to pure signal is 20.
+
+name='Tone Control - Treble',index=0
+
+This control sets the treble intensity. There is no neutral value!!
+When the tone control code is activated, the samples are always modified.
+The closest value to pure signal is 20.
+
+name='Master Playback Volume',index=0
+
+This control is used to attenuate samples for front, surround, center and 
+LFE outputs.
+
+name='IEC958 Optical Raw Playback Switch',index=0
+
+If this switch is on, then the samples for the IEC958 (S/PDIF) digital
+output are taken only from the raw FX8010 PCM, otherwise standard front
+PCM samples are taken.
+
+
+2) PCM stream related controls
+------------------------------
+
+name='EMU10K1 PCM Volume',index 0-31
+
+Channel volume attenuation in range 0-0xffff. The maximum value (no
+attenuation) is default. The channel mapping for three values is
+as follows:
+
+	0 - mono, default 0xffff (no attenuation)
+	1 - left, default 0xffff (no attenuation)
+	2 - right, default 0xffff (no attenuation)
+
+name='EMU10K1 PCM Send Routing',index 0-31
+
+This control specifies the destination - FX-bus accumulators. There 24
+values with this mapping:
+
+	 0 -  mono, A destination (FX-bus 0-63), default 0
+	 1 -  mono, B destination (FX-bus 0-63), default 1
+	 2 -  mono, C destination (FX-bus 0-63), default 2
+	 3 -  mono, D destination (FX-bus 0-63), default 3
+	 4 -  mono, E destination (FX-bus 0-63), default 0
+	 5 -  mono, F destination (FX-bus 0-63), default 0
+	 6 -  mono, G destination (FX-bus 0-63), default 0
+	 7 -  mono, H destination (FX-bus 0-63), default 0
+	 8 -  left, A destination (FX-bus 0-63), default 0
+	 9 -  left, B destination (FX-bus 0-63), default 1
+	10 -  left, C destination (FX-bus 0-63), default 2
+	11 -  left, D destination (FX-bus 0-63), default 3
+	12 -  left, E destination (FX-bus 0-63), default 0
+	13 -  left, F destination (FX-bus 0-63), default 0
+	14 -  left, G destination (FX-bus 0-63), default 0
+	15 -  left, H destination (FX-bus 0-63), default 0
+	16 - right, A destination (FX-bus 0-63), default 0
+	17 - right, B destination (FX-bus 0-63), default 1
+	18 - right, C destination (FX-bus 0-63), default 2
+	19 - right, D destination (FX-bus 0-63), default 3
+	20 - right, E destination (FX-bus 0-63), default 0
+	21 - right, F destination (FX-bus 0-63), default 0
+	22 - right, G destination (FX-bus 0-63), default 0
+	23 - right, H destination (FX-bus 0-63), default 0
+
+Don't forget that it's illegal to assign a channel to the same FX-bus accumulator 
+more than once (it means 0=0 && 1=0 is an invalid combination).
+ 
+name='EMU10K1 PCM Send Volume',index 0-31
+
+It specifies the attenuation (amount) for given destination in range 0-255.
+The channel mapping is following:
+
+	 0 -  mono, A destination attn, default 255 (no attenuation)
+	 1 -  mono, B destination attn, default 255 (no attenuation)
+	 2 -  mono, C destination attn, default 0 (mute)
+	 3 -  mono, D destination attn, default 0 (mute)
+	 4 -  mono, E destination attn, default 0 (mute)
+	 5 -  mono, F destination attn, default 0 (mute)
+	 6 -  mono, G destination attn, default 0 (mute)
+	 7 -  mono, H destination attn, default 0 (mute)
+	 8 -  left, A destination attn, default 255 (no attenuation)
+	 9 -  left, B destination attn, default 0 (mute)
+	10 -  left, C destination attn, default 0 (mute)
+	11 -  left, D destination attn, default 0 (mute)
+	12 -  left, E destination attn, default 0 (mute)
+	13 -  left, F destination attn, default 0 (mute)
+	14 -  left, G destination attn, default 0 (mute)
+	15 -  left, H destination attn, default 0 (mute)
+	16 - right, A destination attn, default 0 (mute)
+	17 - right, B destination attn, default 255 (no attenuation)
+	18 - right, C destination attn, default 0 (mute)
+	19 - right, D destination attn, default 0 (mute)
+	20 - right, E destination attn, default 0 (mute)
+	21 - right, F destination attn, default 0 (mute)
+	22 - right, G destination attn, default 0 (mute)
+	23 - right, H destination attn, default 0 (mute)
+
+
+
+4) MANUALS/PATENTS:
+-------------------
+
+ftp://opensource.creative.com/pub/doc
+-------------------------------------
+
+        Files:
+        LM4545.pdf      AC97 Codec
+
+        m2049.pdf       The EMU10K1 Digital Audio Processor
+
+        hog63.ps        FX8010 - A DSP Chip Architecture for Audio Effects
+
+
+WIPO Patents
+------------
+        Patent numbers:
+        WO 9901813 (A1) Audio Effects Processor with multiple asynchronous (Jan. 14, 1999)
+                        streams
+
+        WO 9901814 (A1) Processor with Instruction Set for Audio Effects (Jan. 14, 1999)
+
+        WO 9901953 (A1) Audio Effects Processor having Decoupled Instruction
+                        Execution and Audio Data Sequencing (Jan. 14, 1999)
+
+
+US Patents (http://www.uspto.gov/)
+----------------------------------
+
+        US 5925841      Digital Sampling Instrument employing cache memory (Jul. 20, 1999)
+
+        US 5928342      Audio Effects Processor integrated on a single chip (Jul. 27, 1999)
+                        with a multiport memory onto which multiple asynchronous
+                        digital sound samples can be concurrently loaded
+
+        US 5930158      Processor with Instruction Set for Audio Effects (Jul. 27, 1999)
+
+        US 6032235      Memory initialization circuit (Tram) (Feb. 29, 2000)
+
+        US 6138207      Interpolation looping of audio samples in cache connected to    (Oct. 24, 2000)
+                        system bus with prioritization and modification of bus transfers
+                        in accordance with loop ends and minimum block sizes
+
+        US 6151670      Method for conserving memory storage using a (Nov. 21, 2000)
+                        pool of  short term memory registers
+
+        US 6195715      Interrupt control for multiple programs communicating with      (Feb. 27, 2001)
+                        a common interrupt by associating programs to GP registers,
+                        defining interrupt register, polling GP registers, and invoking
+                        callback routine associated with defined interrupt register
diff -Nru a/Documentation/sound/alsa/CMIPCI.txt b/Documentation/sound/alsa/CMIPCI.txt
--- a/Documentation/sound/alsa/CMIPCI.txt	Tue May 18 23:41:45 2004
+++ b/Documentation/sound/alsa/CMIPCI.txt	Tue May 18 23:41:45 2004
@@ -180,8 +180,8 @@
 device automatically to the previous state.
 
 On the model 033, AC3 is implemented by the software conversion in
-the driver.  This prevents the mmap support.  If you need mmap
-support, pass the "soft_ac3=0" module option.  This doesn't matter
+the alsa-lib.  If you need to bypass the software conversion of IEC958
+subframes, pass the "soft_ac3=0" module option.  This doesn't matter
 on the newer models.
 
 
diff -Nru a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl	Tue May 18 23:41:45 2004
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl	Tue May 18 23:41:45 2004
@@ -511,7 +511,7 @@
           }
 
           // (7)
-          pci_set_drvdata(pci, chip);
+          pci_set_drvdata(pci, card);
           dev++;
           return 0;
   }
@@ -519,10 +519,7 @@
   // destructor -- see "Destructor" sub-section
   static void __devexit snd_mychip_remove(struct pci_dev *pci)
   {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                                     pci_get_drvdata(pci), return);
-          if (chip)
-                  snd_card_free(chip->card);
+          snd_card_free(pci_get_drvdata(pci));
           pci_set_drvdata(pci, NULL);
   }
 ]]>
@@ -691,21 +688,16 @@
           <informalexample>
             <programlisting>
 <![CDATA[
-        pci_set_drvdata(pci, chip);
+        pci_set_drvdata(pci, card);
         dev++;
         return 0;
 ]]>
             </programlisting>
           </informalexample>
 
-          In the above, the chip record is stored. This pointer is
+          In the above, the card record is stored. This pointer is
         referred in the remove callback and power-management
         callbacks, too. 
-	If the card doesn't support the suspend/resume, you can store
-        the card pointer instead of the chip pointer, so that
-        <function>snd_card_free</function> can be called directly
-        without cast in the remove callback.  But anyway, be sure
-        which pointer is used.
         </para>
       </section>
     </section>
@@ -726,21 +718,15 @@
 <![CDATA[
   static void __devexit snd_mychip_remove(struct pci_dev *pci)
   {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                                    pci_get_drvdata(pci), return);
-          if (chip)
-                  snd_card_free(chip->card);
+          snd_card_free(pci_get_drvdata(pci));
           pci_set_drvdata(pci, NULL);
   }
 ]]>
           </programlisting>
         </informalexample>
 
-        The above code assumes that the chip is allocated
-	with snd_magic stuff and
-      has the field to hold the card pointer (see <link
-      linkend="card-management"><citetitle>the next
-      section</citetitle></link>). 
+        The above code assumes that the card pointer is set to the PCI
+	driver data.
       </para>
     </section>
 
@@ -1355,16 +1341,7 @@
   // initialization of the module
   static int __init alsa_card_mychip_init(void)
   {
-          int err;
-
-          if ((err = pci_module_init(&driver)) < 0) {
-  #ifdef MODULE
-                  printk(KERN_ERR "My chip soundcard not found "
-                                  "or device busy\n");
-  #endif
-                  return err;
-          }
-          return 0;
+          return pci_module_init(&driver);
   }
 
   // clean up the module
@@ -1781,16 +1758,7 @@
 <![CDATA[
   static int __init alsa_card_mychip_init(void)
   {
-          int err;
-
-          if ((err = pci_module_init(&driver)) < 0) {
-  #ifdef MODULE
-                  printk(KERN_ERR "My chip soundcard not found"
-                                  " or device busy\n");
-  #endif
-                  return err;
-          }
-          return 0;
+          return pci_module_init(&driver);
   }
 
   static void __exit alsa_card_mychip_exit(void)
@@ -5254,47 +5222,23 @@
     </para>
 
     <para>
-      Basic jobs of suspend/resume are done in
-      <structfield>suspend</structfield> and
-      <structfield>resume</structfield> callbacks of
-      <structname>pci_driver</structname> struct. Unfortunately, the
-      API of these callbacks was changed at the middle time of Linux
-      2.4.x, if you want to keep the support for older kernels, you
-      have to write two different callbacks. The example below is the
-      skeleton callbacks which just call the real suspend and resume
-      functions. 
+      ALSA provides the common power-management layer. Each card driver
+      needs to have only low-level suspend and resume callbacks.
 
       <informalexample>
         <programlisting>
 <![CDATA[
-  #ifndef PCI_OLD_SUSPEND
-  static int snd_my_suspend(struct pci_dev *dev, u32 state)
+  #ifdef CONFIG_PM
+  static int snd_my_suspend(snd_card_t *card, unsigned int state)
   {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                             pci_get_drvdata(dev), return -ENXIO);
-          mychip_suspend(chip);
+          .... // do things for suspsend
           return 0;
   }
-  static int snd_my_resume(struct pci_dev *dev)
+  static int snd_my_resume(snd_card_t *card, unsigned int state)
   {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                             pci_get_drvdata(dev), return -ENXIO);
-          mychip_resume(chip);
+          .... // do things for suspsend
           return 0;
   }
-  #else
-  static void snd_my_suspend(struct pci_dev *dev)
-  {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                             pci_get_drvdata(dev), return);
-          mychip_suspend(chip);
-  }
-  static void snd_mychip_resume(struct pci_dev *dev)
-  {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                             pci_get_drvdata(dev), return);
-          mychip_resume(chip);
-  }
   #endif
 ]]>
         </programlisting>
@@ -5302,17 +5246,10 @@
     </para>
 
     <para>
-      For keeping the readability of 2.6 source code, it's recommended to
-      separate the above ifdef condition as the patch file in alsa-driver
-      directory.
-      See <filename>alsa-driver/pci/ali5451.c</filename> for example.
-   </para>
-
-    <para>
       The scheme of the real suspend job is as following.
 
       <orderedlist>
-        <listitem><para>Check whether the power-state is already D3hot. If yes, skip the job.</para></listitem>
+        <listitem><para>Retrieve the chip data from pm_private_data field.</para></listitem>
         <listitem><para>Call <function>snd_pcm_suspend_all()</function> to suspend the running PCM streams.</para></listitem>
         <listitem><para>Save the register values if necessary.</para></listitem>
         <listitem><para>Stop the hardware if necessary.</para></listitem>
@@ -5326,12 +5263,11 @@
       <informalexample>
         <programlisting>
 <![CDATA[
-  static void mychip_suspend(mychip_t *chip)
+  static int mychip_suspend(snd_card_t *card, unsigned int state)
   {
-          snd_card_t *card = chip->card;
           // (1)
-          if (card->power_state == SNDRV_CTL_POWER_D3hot)
-                  return;
+          mychip_t *chip = snd_magic_cast(mychip_t, card->pm_private_data,
+                                          return -ENXIO);
           // (2)
           snd_pcm_suspend_all(chip->pcm);
           // (3)
@@ -5340,6 +5276,7 @@
           snd_mychip_stop_hardware(chip);
           // (5)
           snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+          return 0;
   }
 ]]>
         </programlisting>
@@ -5350,8 +5287,7 @@
     The scheme of the real resume job is as following.
 
     <orderedlist>
-    <listitem><para>Check whether the power-state is already D0.
-    If yes, skip the job.</para></listitem>
+    <listitem><para>Retrieve the chip data from pm_private_data field.</para></listitem>
     <listitem><para>Enable the pci device again by calling
     <function>pci_enable_device()</function>.</para></listitem>
     <listitem><para>Re-initialize the chip.</para></listitem>
@@ -5372,10 +5308,9 @@
 <![CDATA[
   static void mychip_resume(mychip_t *chip)
   {
-          snd_card_t *card = chip->card;
           // (1)
-          if (card->power_state == SNDRV_CTL_POWER_D0)
-                  return;
+          mychip_t *chip = snd_magic_cast(mychip_t, card->pm_private_data,
+                                          return -ENXIO);
           // (2)
           pci_enable_device(chip->pci);
           // (3)
@@ -5388,38 +5323,6 @@
           snd_mychip_restart_chip(chip);
           // (7)
           snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-  }
-]]>
-        </programlisting>
-      </informalexample>
-    </para>
-
-    <para>
-      In addition to the callbacks above, you should define a callback
-      for the changes via the ALSA control interface. It's defined
-      like below: 
-
-      <informalexample>
-        <programlisting>
-<![CDATA[
-  static int snd_mychip_set_power_state(snd_card_t *card,
-                                        unsigned int power_state)
-  {
-          mychip_t *chip = snd_magic_cast(mychip_t,
-                   card->power_state_private_data, return -ENXIO);
-          switch (power_state) {
-          case SNDRV_CTL_POWER_D0:
-          case SNDRV_CTL_POWER_D1:
-          case SNDRV_CTL_POWER_D2:
-                  mychip_resume(chip);
-                  break;
-          case SNDRV_CTL_POWER_D3hot:
-          case SNDRV_CTL_POWER_D3cold:
-                  mychip_suspend(chip);
-                  break;
-          default:
-                  return -EINVAL;
-          }
           return 0;
   }
 ]]>
@@ -5439,41 +5342,42 @@
   {
           ....
           snd_card_t *card;
+          mychip_t *chip;
           ....
-  #ifdef CONFIG_PM
-          card->set_power_state = snd_mychip_set_power_state;
-          card->power_state_private_data = chip;
-  #endif
+          snd_card_set_pm_callback(card, snd_my_suspend, snd_my_resume, chip);
           ....
   }
 ]]>
         </programlisting>
       </informalexample>
+
+    Here you don't have to put ifdef CONFIG_PM around, since it's already
+    checked in the header and expanded to empty if not needed.
     </para>
 
     <para>
       If you need a space for saving the registers, you'll need to
-    allocate the buffer for it here, too, since you cannot call
-    <function>kmalloc()</function> with
-    <constant>GFP_KERNEL</constant> flag or
-    <function>vmalloc()</function> in the suspend callback.
+    allocate the buffer for it here, too, since it would be fatal
+    if you cannot allocate a memory in the suspend phase.
     The allocated buffer should be released in the corresponding
     destructor.
     </para>
 
     <para>
       And next, set suspend/resume callbacks to the pci_driver,
+      This can be done by passing a macro SND_PCI_PM_CALLBACKS
+      in the pci_driver struct.  This macro is expanded to the correct
+      (global) callbacks if CONFIG_PM is set.
 
       <informalexample>
         <programlisting>
 <![CDATA[
   static struct pci_driver driver = {
           .name = "My Chip",
-          ....
-  #ifdef CONFIG_PM
-          .suspend = snd_mychip_suspend,
-          .resume = snd_mychip_resume,
-  #endif
+          .id_table = snd_my_ids,
+          .probe = snd_my_probe,
+          .remove = __devexit_p(snd_my_remove),
+          SND_PCI_PM_CALLBACKS
   };
 ]]>
         </programlisting>
@@ -5521,7 +5425,8 @@
 
     <para>
       The module parameters must be declared with the standard
-    <function>MODULE_PARM()</function> and
+    <function>module_param()()</function>,
+    <function>module_param_array()()</function> and
     <function>MODULE_PARM_DESC()</function> macros. The ALSA provides
     an additional macro, <function>MODULE_PARM_SYNTAX()</function>,
     for describing its syntax. The strings will be written to
@@ -5545,18 +5450,22 @@
 <![CDATA[
   #define CARD_NAME "My Chip"
 
-  MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+  static int boot_devs;
+  module_param_array(index, int, boot_devs, 0444);
   MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
   MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-  MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+  module_param_array(id, charp, boot_devs, 0444);
   MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
   MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-  MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+  module_param_array(enable, bool, boot_devs, 0444);
   MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
   MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 ]]>
         </programlisting>
       </informalexample>
+
+    Here boot_devs is passed but simply ignored since we don't care
+    the number of parsed parameters.
     </para>
 
     <para>
@@ -5577,39 +5486,6 @@
       </informalexample>
     </para>
 
-    <para>
-      For building the driver into kernel, you should define the
-      <function>setup()</function> function in addition, too. 
-      ALSA provides <function>get_id()</function> function to retrieve
-      a string argument from the kernel boot parameters.
-
-      <informalexample>
-        <programlisting>
-<![CDATA[
-  #ifndef MODULE
-
-  /* format is: snd-mychip=enable,index,id */
-
-  static int __init alsa_card_mychip_setup(char *str)
-  {
-          static unsigned __initdata nr_dev = 0;
-
-          if (nr_dev >= SNDRV_CARDS)
-                  return 0;
-          (void)(get_option(&str,&enable[nr_dev]) == 2 &&
-                 get_option(&str,&index[nr_dev]) == 2 &&
-                 get_id(&str,&id[nr_dev]) == 2);
-          nr_dev++;
-          return 1;
-  }
-
-  __setup("snd-mychip=", alsa_card_mychip_setup);
-
-  #endif /* ifndef MODULE */
-]]>
-        </programlisting>
-      </informalexample>
-    </para>
   </chapter>
 
 
@@ -5631,10 +5507,14 @@
 	Suppose that you'll create a new PCI driver for the card
 	<quote>xyz</quote>.  The card module name would be
 	snd-xyz.  The new driver is usually put into alsa-driver
-	tree.  Then the driver is evaluated, audited and tested
+	tree, <filename>alsa-driver/pci</filename> directory in
+	the case of PCI cards.
+	Then the driver is evaluated, audited and tested
 	by developers and users.  After a certain time, the driver
-	will go to alsa-kernel tree and eventually integrated into
-	Linux 2.6 tree.
+	will go to alsa-kernel tree (to the corresponding directory,
+	such as <filename>alsa-kernel/pci</filename>) and eventually
+	integrated into Linux 2.6 tree (the directory would be
+	<filename>linux/sound/pci</filename>).
 	</para>
 
 	<para>
@@ -5661,7 +5541,7 @@
         <programlisting>
 <![CDATA[
   snd-xyz-objs := xyz.o
-  extra-obj-$(CONFIG_SND_XYZ) += snd-xyz.o
+  obj-$(CONFIG_SND_XYZ) += snd-xyz.o
 ]]>
         </programlisting>
       </informalexample>
@@ -5678,8 +5558,8 @@
       <informalexample>
         <programlisting>
 <![CDATA[
-  config SND_BT87X
-          tristate "Foobar XYX"
+  config SND_XYZ
+          tristate "Foobar XYZ"
           depends on SND
           select SND_PCM
           help
@@ -5730,7 +5610,8 @@
 	<orderedlist>
 	<listitem>
 	<para>
-	Add a new directory (xyz) to extra-subdir-y list in alsa-driver/pci/Makefile
+	Add a new directory (<filename>xyz</filename>) in
+	<filename>alsa-driver/pci/Makefile</filename> like below
 
       <informalexample>
         <programlisting>
@@ -5744,7 +5625,7 @@
 
 	<listitem>
 	<para>
-	Under the directory xyz, create a Makefile
+	Under the directory <filename>xyz</filename>, create a Makefile
 
       <example>
 	<title>Sample Makefile for a driver xyz</title>
diff -Nru a/Documentation/sound/alsa/Procfile.txt b/Documentation/sound/alsa/Procfile.txt
--- a/Documentation/sound/alsa/Procfile.txt	Tue May 18 23:41:45 2004
+++ b/Documentation/sound/alsa/Procfile.txt	Tue May 18 23:41:45 2004
@@ -131,6 +131,12 @@
 card*/codec97#0/ac97#?-?+regs
 	Shows the AC97 register dump.  Useful for debugging.
 
+	When CONFIG_SND_DEBUG is enabled, you can write to this file for
+	changing an AC97 register directly.  Pass two hex numbers.
+	For example,
+
+	# echo 02 9f1f > /proc/asound/card0/codec97#0/ac97#0-0+regs
+
 
 Sequencer Information
 ---------------------
diff -Nru a/include/linux/pci_ids.h b/include/linux/pci_ids.h
--- a/include/linux/pci_ids.h	Tue May 18 23:41:45 2004
+++ b/include/linux/pci_ids.h	Tue May 18 23:41:45 2004
@@ -1643,8 +1643,8 @@
 #define PCI_SUBDEVICE_ID_CHASE_PCIRAS8		0xF010
 
 #define PCI_VENDOR_ID_AUREAL		0x12eb
-#define PCI_DEVICE_ID_AUREAL_VORTEX	0x0001
-#define PCI_DEVICE_ID_AUREAL_VORTEX2	0x0002
+#define PCI_DEVICE_ID_AUREAL_VORTEX_1	0x0001
+#define PCI_DEVICE_ID_AUREAL_VORTEX_2	0x0002
 #define PCI_DEVICE_ID_AUREAL_ADVANTAGE	0x0003
 
 #define PCI_VENDOR_ID_ELECTRONICDESIGNGMBH 0x12f8
diff -Nru a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
--- a/include/sound/ac97_codec.h	Tue May 18 23:41:45 2004
+++ b/include/sound/ac97_codec.h	Tue May 18 23:41:45 2004
@@ -51,7 +51,7 @@
 #define AC97_REC_GAIN_MIC	0x1e	/* Record Gain MIC (optional) */
 #define AC97_GENERAL_PURPOSE	0x20	/* General Purpose (optional) */
 #define AC97_3D_CONTROL		0x22	/* 3D Control (optional) */
-#define AC97_RESERVED		0x24	/* Reserved */
+#define AC97_INT_PAGING		0x24	/* Audio Interrupt & Paging (AC'97 2.3) */
 #define AC97_POWERDOWN		0x26	/* Powerdown control / status */
 /* range 0x28-0x3a - AUDIO AC'97 2.0 extensions */
 #define AC97_EXTENDED_ID	0x28	/* Extended Audio ID */
@@ -82,6 +82,13 @@
 /* range 0x5a-0x7b - Vendor Specific */
 #define AC97_VENDOR_ID1		0x7c	/* Vendor ID1 */
 #define AC97_VENDOR_ID2		0x7e	/* Vendor ID2 / revision */
+/* range 0x60-0x6f (page 1) - extended codec registers */
+#define AC97_CODEC_CLASS_REV	0x60	/* Codec Class/Revision */
+#define AC97_PCI_SVID		0x62	/* PCI Subsystem Vendor ID */
+#define AC97_PCI_SID		0x64	/* PCI Subsystem ID */
+#define AC97_FUNC_SELECT	0x66	/* Function Select */
+#define AC97_FUNC_INFO		0x68	/* Function Information */
+#define AC97_SENSE_INFO		0x6a	/* Sense Details */
 
 /* slot allocation */
 #define AC97_SLOT_TAG		0
@@ -139,6 +146,7 @@
 #define AC97_EI_AMAP		0x0200	/* indicates optional slot/DAC mapping based on codec ID */
 #define AC97_EI_REV_MASK	0x0c00	/* AC'97 revision mask */
 #define AC97_EI_REV_22		0x0400	/* AC'97 revision 2.2 */
+#define AC97_EI_REV_23		0x0800	/* AC'97 revision 2.3 */
 #define AC97_EI_REV_SHIFT	10
 #define AC97_EI_ADDR_MASK	0xc000	/* physical codec ID (address) */
 #define AC97_EI_ADDR_SHIFT	14
@@ -179,6 +187,16 @@
 #define AC97_SC_SPSR_32K	0x3000	/* Use 32kHz Sample rate */
 #define AC97_SC_DRS		0x4000	/* Double Rate S/PDIF */
 #define AC97_SC_V		0x8000	/* Validity status */
+
+/* Interrupt and Paging bit defines (AC'97 2.3) */
+#define AC97_PAGE_MASK		0x000f	/* Page Selector */
+#define AC97_PAGE_VENDOR	0	/* Vendor-specific registers */
+#define AC97_PAGE_1		1	/* Extended Codec Registers page 1 */
+#define AC97_INT_ENABLE		0x0800	/* Interrupt Enable */
+#define AC97_INT_SENSE		0x1000	/* Sense Cycle */
+#define AC97_INT_CAUSE_SENSE	0x2000	/* Sense Cycle Completed (RO) */
+#define AC97_INT_CAUSE_GPIO	0x4000	/* GPIO bits changed (RO) */
+#define AC97_INT_STATUS		0x8000	/* Interrupt Status */
 
 /* extended modem ID bit defines */
 #define AC97_MEI_LINE1		0x0001	/* Line1 present */
diff -Nru a/include/sound/ad1848.h b/include/sound/ad1848.h
--- a/include/sound/ad1848.h	Tue May 18 23:41:45 2004
+++ b/include/sound/ad1848.h	Tue May 18 23:41:45 2004
@@ -147,9 +147,6 @@
 	int calibrate_mute;
 	int dma_size;
 	int thinkpad_flag;		/* Thinkpad CS4248 needs some extra help */
-#ifdef CONFIG_PM
-	struct pm_dev *thinkpad_pmstate;
-#endif
 
 	spinlock_t reg_lock;
 	struct semaphore open_mutex;
diff -Nru a/include/sound/asound.h b/include/sound/asound.h
--- a/include/sound/asound.h	Tue May 18 23:41:45 2004
+++ b/include/sound/asound.h	Tue May 18 23:41:45 2004
@@ -153,7 +153,7 @@
  *                                                                           *
  *****************************************************************************/
 
-#define SNDRV_PCM_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 6)
+#define SNDRV_PCM_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 7)
 
 typedef unsigned long sndrv_pcm_uframes_t;
 typedef long sndrv_pcm_sframes_t;
@@ -428,6 +428,20 @@
 	sndrv_pcm_uframes_t avail_min;	/* RW: min available frames for wakeup */
 };
 
+#define SNDRV_PCM_SYNC_PTR_HWSYNC	(1<<0)	/* execute hwsync */
+
+struct sndrv_pcm_sync_ptr {
+	unsigned int flags;
+	union {
+		struct sndrv_pcm_mmap_status status;
+		unsigned char reserved[64];
+	} s;
+	union {
+		struct sndrv_pcm_mmap_control control;
+		unsigned char reserved[64];
+	} c;
+};
+
 struct sndrv_xferi {
 	sndrv_pcm_sframes_t result;
 	void *buf;
@@ -451,6 +465,7 @@
 	SNDRV_PCM_IOCTL_STATUS = _IOR('A', 0x20, struct sndrv_pcm_status),
 	SNDRV_PCM_IOCTL_DELAY = _IOR('A', 0x21, sndrv_pcm_sframes_t),
 	SNDRV_PCM_IOCTL_HWSYNC = _IO('A', 0x22),
+	SNDRV_PCM_IOCTL_SYNC_PTR = _IOWR('A', 0x23, struct sndrv_pcm_sync_ptr),
 	SNDRV_PCM_IOCTL_CHANNEL_INFO = _IOR('A', 0x32, struct sndrv_pcm_channel_info),
 	SNDRV_PCM_IOCTL_PREPARE = _IO('A', 0x40),
 	SNDRV_PCM_IOCTL_RESET = _IO('A', 0x41),
@@ -538,7 +553,7 @@
  *  Timer section - /dev/snd/timer
  */
 
-#define SNDRV_TIMER_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 1)
+#define SNDRV_TIMER_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 2)
 
 enum sndrv_timer_class {
 	SNDRV_TIMER_CLASS_NONE = -1,
@@ -619,6 +634,7 @@
 
 #define SNDRV_TIMER_PSFLG_AUTO		(1<<0)	/* auto start, otherwise one-shot */
 #define SNDRV_TIMER_PSFLG_EXCLUSIVE	(1<<1)	/* exclusive use, precise start/stop/pause/continue */
+#define SNDRV_TIMER_PSFLG_EARLY_EVENT	(1<<2)	/* write early event to the poll queue */
 
 struct sndrv_timer_params {
 	unsigned int flags;		/* flags - SNDRV_MIXER_PSFLG_* */
@@ -667,6 +683,7 @@
 	SNDRV_TIMER_EVENT_STOP,			/* val = 0 */
 	SNDRV_TIMER_EVENT_CONTINUE,		/* val = resolution in ns */
 	SNDRV_TIMER_EVENT_PAUSE,		/* val = 0 */
+	SNDRV_TIMER_EVENT_EARLY,		/* val = 0, early event */
 	/* master timer events for slave timer instances */
 	SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
 	SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
diff -Nru a/include/sound/core.h b/include/sound/core.h
--- a/include/sound/core.h	Tue May 18 23:41:45 2004
+++ b/include/sound/core.h	Tue May 18 23:41:45 2004
@@ -163,8 +163,10 @@
 	struct device *dev;
 
 #ifdef CONFIG_PM
-	int (*set_power_state) (snd_card_t *card, unsigned int state);
-	void *power_state_private_data;
+	int (*pm_suspend)(snd_card_t *card, unsigned int state);
+	int (*pm_resume)(snd_card_t *card, unsigned int state);
+	struct pm_dev *pm_dev;		/* for ISA */
+	void *pm_private_data;
 	unsigned int power_state;	/* power state */
 	struct semaphore power_lock;	/* power lock */
 	wait_queue_head_t power_sleep;
@@ -199,12 +201,32 @@
 	card->power_state = state;
 	wake_up(&card->power_sleep);
 }
+int snd_card_set_pm_callback(snd_card_t *card,
+			     int (*suspend)(snd_card_t *, unsigned int),
+			     int (*resume)(snd_card_t *, unsigned int),
+			     void *private_data);
+int snd_card_set_dev_pm_callback(snd_card_t *card, int type,
+				 int (*suspend)(snd_card_t *, unsigned int),
+				 int (*resume)(snd_card_t *, unsigned int),
+				 void *private_data);
+#define snd_card_set_isa_pm_callback(card,suspend,resume,data) \
+	snd_card_set_dev_pm_callback(card, PM_ISA_DEV, suspend, resume, data)
+#ifndef SND_PCI_PM_CALLBACKS
+int snd_card_pci_suspend(struct pci_dev *dev, u32 state);
+int snd_card_pci_resume(struct pci_dev *dev);
+#define SND_PCI_PM_CALLBACKS \
+	.suspend = snd_card_pci_suspend,  .resume = snd_card_pci_resume
+#endif
 #else
 #define snd_power_lock(card)		do { (void)(card); } while (0)
 #define snd_power_unlock(card)		do { (void)(card); } while (0)
 static inline int snd_power_wait(snd_card_t *card, unsigned int state, struct file *file) { return 0; }
 #define snd_power_get_state(card)	SNDRV_CTL_POWER_D0
 #define snd_power_change_state(card, state)	do { (void)(card); } while (0)
+#define snd_card_set_pm_callback(card,suspend,resume,data) -EINVAL
+#define snd_card_set_dev_pm_callback(card,suspend,resume,data) -EINVAL
+#define snd_card_set_isa_pm_callback(card,suspend,resume,data) -EINVAL
+#define SND_PCI_PM_CALLBACKS
 #endif
 
 /* device.c */
diff -Nru a/include/sound/cs4231.h b/include/sound/cs4231.h
--- a/include/sound/cs4231.h	Tue May 18 23:41:45 2004
+++ b/include/sound/cs4231.h	Tue May 18 23:41:45 2004
@@ -295,7 +295,6 @@
 	void (*set_capture_format) (cs4231_t *chip, snd_pcm_hw_params_t *hw_params, unsigned char cdfr);
 	void (*trigger) (cs4231_t *chip, unsigned int what, int start);
 #ifdef CONFIG_PM
-	struct pm_dev *pm_dev;
 	void (*suspend) (cs4231_t *chip);
 	void (*resume) (cs4231_t *chip);
 #endif
diff -Nru a/include/sound/cs46xx.h b/include/sound/cs46xx.h
--- a/include/sound/cs46xx.h	Tue May 18 23:41:45 2004
+++ b/include/sound/cs46xx.h	Tue May 18 23:41:45 2004
@@ -1737,9 +1737,6 @@
 
 	struct snd_cs46xx_gameport *gameport;
 
-#ifdef CONFIG_PM
-	struct pm_dev *pm_dev;
-#endif
 #ifdef CONFIG_SND_CS46XX_DEBUG_GPIO
 	int current_gpio;
 #endif
@@ -1770,10 +1767,5 @@
 int snd_cs46xx_midi(cs46xx_t *chip, int device, snd_rawmidi_t **rmidi);
 int snd_cs46xx_start_dsp(cs46xx_t *chip);
 void snd_cs46xx_gameport(cs46xx_t *chip);
-
-#ifdef CONFIG_PM
-void snd_cs46xx_suspend(cs46xx_t *chip);
-void snd_cs46xx_resume(cs46xx_t *chip);
-#endif
 
 #endif /* __SOUND_CS46XX_H */
diff -Nru a/include/sound/emu10k1.h b/include/sound/emu10k1.h
--- a/include/sound/emu10k1.h	Tue May 18 23:41:45 2004
+++ b/include/sound/emu10k1.h	Tue May 18 23:41:45 2004
@@ -650,7 +650,8 @@
 #define SPBYPASS_FORMAT		0x00000f00      /* If 1, SPDIF XX uses 24 bit, if 0 - 20 bit	*/
 
 #define AC97SLOT		0x5f            /* additional AC97 slots enable bits		*/
-#define AC97SLOT_10K2		0x03
+#define AC97SLOT_REAR_RIGHT	0x01		/* Rear left */
+#define AC97SLOT_REAR_LEFT	0x02		/* Rear right */
 #define AC97SLOT_CNTR		0x10            /* Center enable */
 #define AC97SLOT_LFE		0x20            /* LFE enable */
 
@@ -937,7 +938,8 @@
 	struct resource *res_port;
 	int APS: 1,				/* APS flag */
 	    no_ac97: 1,				/* no AC'97 */
-	    tos_link: 1;			/* tos link detected */
+	    tos_link: 1,			/* tos link detected */
+	    rear_ac97: 1;			/* rear channels are on AC'97 */
 	unsigned int audigy;			/* is Audigy? */
 	unsigned int revision;			/* chip revision */
 	unsigned int serial;			/* serial number */
@@ -1184,8 +1186,8 @@
 #define EXTOUT_AC97_R	   0x01	/* AC'97 playback channel - right */
 #define EXTOUT_TOSLINK_L   0x02	/* LiveDrive - TOSLink Optical - left */
 #define EXTOUT_TOSLINK_R   0x03	/* LiveDrive - TOSLink Optical - right */
-#define EXTOUT_CENTER      0x04	/* SB Live 5.1 - center */
-#define EXTOUT_LFE         0x05 /* SB Live 5.1 - LFE */
+#define EXTOUT_AC97_CENTER 0x04	/* SB Live 5.1 - center */
+#define EXTOUT_AC97_LFE	   0x05 /* SB Live 5.1 - LFE */
 #define EXTOUT_HEADPHONE_L 0x06	/* LiveDrive - Headphone - left */
 #define EXTOUT_HEADPHONE_R 0x07	/* LiveDrive - Headphone - right */
 #define EXTOUT_REAR_L	   0x08	/* Rear channel - left */
@@ -1193,6 +1195,8 @@
 #define EXTOUT_ADC_CAP_L   0x0a	/* ADC Capture buffer - left */
 #define EXTOUT_ADC_CAP_R   0x0b	/* ADC Capture buffer - right */
 #define EXTOUT_MIC_CAP	   0x0c	/* MIC Capture buffer */
+#define EXTOUT_AC97_REAR_L 0x0d	/* SB Live 5.1 (c) 2003 - Rear Left */
+#define EXTOUT_AC97_REAR_R 0x0e	/* SB Live 5.1 (c) 2003 - Rear Right */
 #define EXTOUT_ACENTER	   0x11 /* Analog Center */
 #define EXTOUT_ALFE	   0x12 /* Analog LFE */
 
diff -Nru a/include/sound/initval.h b/include/sound/initval.h
--- a/include/sound/initval.h	Tue May 18 23:41:45 2004
+++ b/include/sound/initval.h	Tue May 18 23:41:45 2004
@@ -133,44 +133,4 @@
 }
 #endif
 
-#if defined(SNDRV_GET_ID) && !defined(MODULE)
-#include <linux/ctype.h>
-#include <linux/init.h>
-#include <linux/bootmem.h>
-static int __init get_id(char **str, char **dst)
-{
-	char *s;
-
-	if (!(*str) || !(**str))
-		return 0;
-	for (s = *str; isalpha(*s) || isdigit(*s) || *s == '_'; s++);
-	if (s != *str) {
-		int len = s - *str;
-		char *d = (char *)alloc_bootmem(len + 1);
-		if (d != NULL) {
-			memcpy(*dst = d, *str, len);
-			d[len] = '\0';
-		}
-	}
-	if (*s == ',') {
-		*str = s + 1;
-		return 2;
-	}
-	*str = s;
-	return 1;
-}
-#endif
-
-/* simple wrapper for long variable.
- * the value more than 32bit won't work!
- */
-inline static int get_option_long(char **str, long *valp)
-{
-	int val, ret;
-	ret = get_option(str, &val);
-	if (ret)
-		*valp = val;
-	return ret;
-}
-
 #endif /* __SOUND_INITVAL_H */
diff -Nru a/include/sound/timer.h b/include/sound/timer.h
--- a/include/sound/timer.h	Tue May 18 23:41:45 2004
+++ b/include/sound/timer.h	Tue May 18 23:41:45 2004
@@ -60,6 +60,7 @@
 #define SNDRV_TIMER_IFLG_FAST	  0x00000010	/* fast callback (do not use tasklet) */
 #define SNDRV_TIMER_IFLG_CALLBACK 0x00000020	/* timer callback is active */
 #define SNDRV_TIMER_IFLG_EXCLUSIVE 0x00000040	/* exclusive owner - no more instances */
+#define SNDRV_TIMER_IFLG_EARLY_EVENT 0x00000080	/* write early event to the poll queue */
 
 #define SNDRV_TIMER_FLG_CHANGE	0x00000001
 #define SNDRV_TIMER_FLG_RESCHED	0x00000002	/* need reschedule */
diff -Nru a/include/sound/trident.h b/include/sound/trident.h
--- a/include/sound/trident.h	Tue May 18 23:41:45 2004
+++ b/include/sound/trident.h	Tue May 18 23:41:45 2004
@@ -54,13 +54,6 @@
 #define TRIDENT_DEVICE_ID_NX		((PCI_VENDOR_ID_TRIDENT<<16)|PCI_DEVICE_ID_TRIDENT_4DWAVE_NX)
 #define TRIDENT_DEVICE_ID_SI7018	((PCI_VENDOR_ID_SI<<16)|PCI_DEVICE_ID_SI_7018)
 
-/* Trident chipsets have 1GB memory limit */
-#ifdef __alpha__
-#define TRIDENT_DMA_TYPE        SNDRV_DMA_TYPE_PCI_16MB
-#else
-#define TRIDENT_DMA_TYPE        SNDRV_DMA_TYPE_PCI
-#endif
-
 #define SNDRV_SEQ_DEV_ID_TRIDENT			"trident-synth"
 
 #define SNDRV_TRIDENT_VOICE_TYPE_PCM		0
@@ -487,11 +480,5 @@
 int snd_trident_synth_free(trident_t *trident, snd_util_memblk_t *blk);
 int snd_trident_synth_bzero(trident_t *trident, snd_util_memblk_t *blk, int offset, int size);
 int snd_trident_synth_copy_from_user(trident_t *trident, snd_util_memblk_t *blk, int offset, const char *data, int size);
-
-/* Power Management */
-#ifdef CONFIG_PM
-void snd_trident_suspend(trident_t *trident);
-void snd_trident_resume(trident_t *trident);
-#endif
 
 #endif /* __SOUND_TRIDENT_H */
diff -Nru a/include/sound/uda1341.h b/include/sound/uda1341.h
--- a/include/sound/uda1341.h	Tue May 18 23:41:45 2004
+++ b/include/sound/uda1341.h	Tue May 18 23:41:45 2004
@@ -15,7 +15,7 @@
  *                           features support
  */
 
-/* $Id: uda1341.h,v 1.5 2003/04/19 13:34:32 perex Exp $ */
+/* $Id: uda1341.h,v 1.6 2004/05/03 17:36:50 tiwai Exp $ */
 
 #define UDA1341_ALSA_NAME "snd-uda1341"
 
diff -Nru a/include/sound/version.h b/include/sound/version.h
--- a/include/sound/version.h	Tue May 18 23:41:45 2004
+++ b/include/sound/version.h	Tue May 18 23:41:45 2004
@@ -1,3 +1,3 @@
 /* include/version.h.  Generated by configure.  */
-#define CONFIG_SND_VERSION "1.0.4rc2"
-#define CONFIG_SND_DATE " (Tue Mar 30 08:19:30 2004 UTC)"
+#define CONFIG_SND_VERSION "1.0.4"
+#define CONFIG_SND_DATE " (Mon May 17 14:31:44 2004 UTC)"
diff -Nru a/include/sound/ymfpci.h b/include/sound/ymfpci.h
--- a/include/sound/ymfpci.h	Tue May 18 23:41:45 2004
+++ b/include/sound/ymfpci.h	Tue May 18 23:41:45 2004
@@ -393,11 +393,6 @@
 int snd_ymfpci_voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int pair, ymfpci_voice_t **rvoice);
 int snd_ymfpci_voice_free(ymfpci_t *chip, ymfpci_voice_t *pvoice);
 
-#ifdef CONFIG_PM
-void snd_ymfpci_suspend(ymfpci_t *chip);
-void snd_ymfpci_resume(ymfpci_t *chip);
-#endif
-
 #if defined(CONFIG_GAMEPORT) || (defined(MODULE) && defined(CONFIG_GAMEPORT_MODULE))
 #define SUPPORT_JOYSTICK
 #endif
diff -Nru a/sound/arm/sa11xx-uda1341.c b/sound/arm/sa11xx-uda1341.c
--- a/sound/arm/sa11xx-uda1341.c	Tue May 18 23:41:45 2004
+++ b/sound/arm/sa11xx-uda1341.c	Tue May 18 23:41:45 2004
@@ -21,7 +21,7 @@
  *                              merged HAL layer (patches from Brian)
  */
 
-/* $Id: sa11xx-uda1341.c,v 1.13 2004/03/02 15:32:35 perex Exp $ */
+/* $Id: sa11xx-uda1341.c,v 1.15 2004/05/03 17:36:50 tiwai Exp $ */
 
 /***************************************************************************************************
 *
@@ -62,6 +62,7 @@
 #include <linux/config.h>
 #include <sound/driver.h>
 #include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/init.h>
 #include <linux/errno.h>
 #include <linux/ioctl.h>
@@ -112,7 +113,7 @@
 
 static char *id = NULL;	/* ID for this card */
 
-MODULE_PARM(id, "s");
+module_param(id, charp, 0444);
 MODULE_PARM_DESC(id, "ID string for SA1100/SA1111 + UDA1341TS soundcard.");
 
 #define chip_t sa11xx_uda1341_t
@@ -136,7 +137,6 @@
 }audio_stream_t;
 
 typedef struct snd_card_sa11xx_uda1341 {
-	struct pm_dev *pm_dev;        
 	snd_card_t *card;
 	struct l3_client *uda1341;
 	snd_pcm_t *pcm;
@@ -867,12 +867,10 @@
 
 #ifdef CONFIG_PM
 
-static void snd_sa11xx_uda1341_suspend(sa11xx_uda1341_t *chip)
+static int snd_sa11xx_uda1341_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	sa11xx_uda1341_t *chip = snd_magic_cast(sa11x_uda1341_t, card->pm_private_data, return -EINVAL);
 
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
 	snd_pcm_suspend_all(chip->pcm);
 #ifdef HH_VERSION	
 	sa1100_dma_sleep(chip->s[SNDRV_PCM_STREAM_PLAYBACK].dmach);
@@ -883,14 +881,13 @@
 	l3_command(chip->uda1341, CMD_SUSPEND, NULL);
 	sa11xx_uda1341_audio_shutdown(chip);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void snd_sa11xx_uda1341_resume(sa11xx_uda1341_t *chip)
+static int snd_sa11xx_uda1341_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	sa11xx_uda1341_t *chip = snd_magic_cast(sa11x_uda1341_t, card->pm_private_data, return -EINVAL);
 
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
 	sa11xx_uda1341_audio_init(chip);
 	l3_command(chip->uda1341, CMD_RESUME, NULL);
 #ifdef HH_VERSION	
@@ -900,50 +897,14 @@
 	//FIXME
 #endif
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int sa11xx_uda1341_pm_callback(struct pm_dev *pm_dev, pm_request_t req, void *data)
-{
-	sa11xx_uda1341_t *chip = pm_dev->data;
-        
-	switch (req) {
-	case PM_SUSPEND: /* enter D1-D3 */
-		snd_sa11xx_uda1341_suspend(chip);
-		break;
-	case PM_RESUME:  /* enter D0 */
-		snd_sa11xx_uda1341_resume(chip);
-		break;
-	}
-	return 0;
-}
-
-static int sa11xx_uda1341_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	sa11xx_uda1341_t *chip = snd_magic_cast(sa11xx_uda1341_t, card->power_state_private_data, return);
-
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_sa11xx_uda1341_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_sa11xx_uda1341_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
-
 #endif /* COMFIG_PM */
 
 void snd_sa11xx_uda1341_free(snd_card_t *card)
 {
 	sa11xx_uda1341_t *chip = snd_magic_cast(sa11xx_uda1341_t, card->private_data, return);
 
-	pm_unregister(chip->pm_dev);
 	audio_dma_free(&chip->s[SNDRV_PCM_STREAM_PLAYBACK]);
 	audio_dma_free(&chip->s[SNDRV_PCM_STREAM_CAPTURE]);
 	sa11xx_uda1341 = NULL;
@@ -984,15 +945,10 @@
 	if ((err = snd_card_sa11xx_uda1341_pcm(sa11xx_uda1341, 0)) < 0)
 		goto nodev;
         
-       
-#ifdef CONFIG_PM
-	card->power_state_private_data = sa11xx_uda1341;
-	card->set_power_state = sa11xx_uda1341_set_power_state;
-	sa11xx_uda1341->pm_dev = pm_register(PM_SYS_DEV, 0, sa11xx_uda1341_pm_callback);
-	if (sa11xx_uda1341->pm_dev)
-		sa11xx_uda1341->pm_dev->data = sa11xx_uda1341;
-#endif
-        
+	snd_card_set_dev_pm_callback(card, PM_SYS_DEV,
+				     snd_sa11xx_uda1341_suspend, snd_sa11_uda1341_resume,
+				     sa11xx_uda1341);
+
 	strcpy(card->driver, "UDA1341");
 	strcpy(card->shortname, "H3600 UDA1341TS");
 	sprintf(card->longname, "Compaq iPAQ H3600 with Philips UDA1341TS");
diff -Nru a/sound/core/control.c b/sound/core/control.c
--- a/sound/core/control.c	Tue May 18 23:41:45 2004
+++ b/sound/core/control.c	Tue May 18 23:41:45 2004
@@ -995,6 +995,33 @@
 	return 0;
 }
 
+#ifdef CONFIG_PM
+/*
+ * change the power state
+ */
+static int snd_ctl_set_power_state(snd_card_t *card, unsigned int power_state)
+{
+	switch (power_state) {
+	case SNDRV_CTL_POWER_D0:
+	case SNDRV_CTL_POWER_D1:
+	case SNDRV_CTL_POWER_D2:
+		if (card->power_state != power_state)
+			/* FIXME: pass the correct state value */
+			card->pm_resume(card, 0);
+		break;
+	case SNDRV_CTL_POWER_D3hot:
+	case SNDRV_CTL_POWER_D3cold:
+		if (card->power_state != power_state)
+			/* FIXME: pass the correct state value */
+			card->pm_suspend(card, 0);
+		break;
+	default:
+		return -EINVAL;
+	}
+	return 0;
+}
+#endif
+
 static int snd_ctl_ioctl(struct inode *inode, struct file *file,
 			 unsigned int cmd, unsigned long arg)
 {
@@ -1038,9 +1065,9 @@
 		if (!capable(CAP_SYS_ADMIN))
 			return -EPERM;
 #ifdef CONFIG_PM
-		if (card->set_power_state) {
+		if (card->pm_suspend && card->pm_resume) {
 			snd_power_lock(card);
-			err = card->set_power_state(card, err);
+			err = snd_ctl_set_power_state(card, err);
 			snd_power_unlock(card);
 		} else
 #endif
diff -Nru a/sound/core/init.c b/sound/core/init.c
--- a/sound/core/init.c	Tue May 18 23:41:45 2004
+++ b/sound/core/init.c	Tue May 18 23:41:45 2004
@@ -26,6 +26,8 @@
 #include <linux/slab.h>
 #include <linux/time.h>
 #include <linux/ctype.h>
+#include <linux/pci.h>
+#include <linux/pm.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/info.h>
@@ -254,6 +256,12 @@
 
 #ifdef CONFIG_PM
 	wake_up(&card->power_sleep);
+#ifdef CONFIG_ISA
+	if (card->pm_dev) {
+		pm_unregister(card->pm_dev);
+		card->pm_dev = NULL;
+	}
+#endif
 #endif
 
 	/* wait, until all devices are ready for the free operation */
@@ -708,4 +716,93 @@
 	remove_wait_queue(&card->power_sleep, &wait);
 	return result;
 }
+
+/**
+ * snd_card_set_pm_callback - set the PCI power-management callbacks
+ * @card: soundcard structure
+ * @suspend: suspend callback function
+ * @resume: resume callback function
+ * @private_data: private data to pass to the callback functions
+ *
+ * Sets the power-management callback functions of the card.
+ * These callbacks are called from ALSA's common PCI suspend/resume
+ * handler and from the control API.
+ */
+int snd_card_set_pm_callback(snd_card_t *card,
+			     int (*suspend)(snd_card_t *, unsigned int),
+			     int (*resume)(snd_card_t *, unsigned int),
+			     void *private_data)
+{
+	card->pm_suspend = suspend;
+	card->pm_resume = resume;
+	card->pm_private_data = private_data;
+	return 0;
+}
+
+static int snd_generic_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
+{
+	snd_card_t *card = dev->data;
+
+	switch (rqst) {
+	case PM_SUSPEND:
+		/* FIXME: the correct state value? */
+		card->pm_suspend(card, 0);
+		break;
+	case PM_RESUME:
+		/* FIXME: the correct state value? */
+		card->pm_resume(card, 0);
+		break;
+	}
+	return 0;
+}
+
+/**
+ * snd_card_set_dev_pm_callback - set the generic power-management callbacks
+ * @card: soundcard structure
+ * @type: PM device type (PM_XXX)
+ * @suspend: suspend callback function
+ * @resume: resume callback function
+ * @private_data: private data to pass to the callback functions
+ *
+ * Registers the power-management and sets the lowlevel callbacks for
+ * the given card with the given PM type.  These callbacks are called
+ * from the ALSA's common PM handler and from the control API.
+ */
+int snd_card_set_dev_pm_callback(snd_card_t *card, int type,
+				 int (*suspend)(snd_card_t *, unsigned int),
+				 int (*resume)(snd_card_t *, unsigned int),
+				 void *private_data)
+{
+	card->pm_dev = pm_register(type, 0, snd_generic_pm_callback);
+	if (! card->pm_dev)
+		return -ENOMEM;
+	card->pm_dev->data = card;
+	snd_card_set_pm_callback(card, suspend, resume, private_data);
+	return 0;
+}
+
+#ifdef CONFIG_PCI
+int snd_card_pci_suspend(struct pci_dev *dev, u32 state)
+{
+	snd_card_t *card = pci_get_drvdata(dev);
+	if (! card || ! card->pm_suspend)
+		return 0;
+	if (card->power_state == SNDRV_CTL_POWER_D3hot)
+		return 0;
+	/* FIXME: correct state value? */
+	return card->pm_suspend(card, 0);
+}
+
+int snd_card_pci_resume(struct pci_dev *dev)
+{
+	snd_card_t *card = pci_get_drvdata(dev);
+	if (! card || ! card->pm_resume)
+		return 0;
+	if (card->power_state == SNDRV_CTL_POWER_D0)
+		return 0;
+	/* FIXME: correct state value? */
+	return card->pm_resume(card, 0);
+}
+#endif
+
 #endif /* CONFIG_PM */
diff -Nru a/sound/core/memalloc.c b/sound/core/memalloc.c
--- a/sound/core/memalloc.c	Tue May 18 23:41:45 2004
+++ b/sound/core/memalloc.c	Tue May 18 23:41:45 2004
@@ -29,6 +29,7 @@
 #include <linux/slab.h>
 #include <linux/mm.h>
 #include <linux/dma-mapping.h>
+#include <linux/moduleparam.h>
 #include <asm/semaphore.h>
 #include <sound/memalloc.h>
 #ifdef CONFIG_SBUS
@@ -45,7 +46,8 @@
 #define SNDRV_CARDS	8
 #endif
 static int enable[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 1};
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+static int boot_devs;
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable cards to allocate buffers.");
 
 /*
@@ -89,32 +91,7 @@
  *  Hacks
  */
 
-static void *snd_dma_alloc_coherent1(struct device *dev, size_t size,
-				     dma_addr_t *dma_handle, int flags)
-{
-	if (dev)
-		return dma_alloc_coherent(dev, size, dma_handle, flags);
-	else /* FIXME: dma_alloc_coherent does't always accept dev=NULL */
-		return pci_alloc_consistent(NULL, size, dma_handle);
-}
-
-static void snd_dma_free_coherent1(struct device *dev, size_t size, void *dma_addr,
-				   dma_addr_t dma_handle)
-{
-	if (dev)
-		return dma_free_coherent(dev, size, dma_addr, dma_handle);
-	else
-		return pci_free_consistent(NULL, size, dma_addr, dma_handle);
-}
-
-#undef dma_alloc_coherent
-#define dma_alloc_coherent snd_dma_alloc_coherent1
-#undef dma_free_coherent
-#define dma_free_coherent snd_dma_free_coherent1
-
-
 #if defined(__i386__) || defined(__ppc__) || defined(__x86_64__)
-
 /*
  * A hack to allocate large buffers via dma_alloc_coherent()
  *
@@ -135,14 +112,17 @@
 					 dma_addr_t *dma_handle, int flags)
 {
 	void *ret;
-	u64 dma_mask;
+	u64 dma_mask, coherent_dma_mask;
 
 	if (dev == NULL || !dev->dma_mask)
 		return dma_alloc_coherent(dev, size, dma_handle, flags);
 	dma_mask = *dev->dma_mask;
+	coherent_dma_mask = dev->coherent_dma_mask;
 	*dev->dma_mask = 0xffffffff; 	/* do without masking */
+	dev->coherent_dma_mask = 0xffffffff; 	/* do without masking */
 	ret = dma_alloc_coherent(dev, size, dma_handle, flags);
 	*dev->dma_mask = dma_mask;	/* restore */
+	dev->coherent_dma_mask = coherent_dma_mask;	/* restore */
 	if (ret) {
 		/* obtained address is out of range? */
 		if (((unsigned long)*dma_handle + size - 1) & ~dma_mask) {
@@ -152,8 +132,12 @@
 		}
 	} else {
 		/* wish to success now with the proper mask... */
-		if (dma_mask != 0xffffffffUL)
+		if (dma_mask != 0xffffffffUL) {
+			/* allocation with GFP_ATOMIC to avoid the long stall */
+			flags &= ~GFP_KERNEL;
+			flags |= GFP_ATOMIC;
 			ret = dma_alloc_coherent(dev, size, dma_handle, flags);
+		}
 	}
 	return ret;
 }
@@ -841,25 +825,6 @@
 module_init(snd_mem_init)
 module_exit(snd_mem_exit)
 
-
-#ifndef MODULE
-
-/* format is: snd-page-alloc=enable */
-
-static int __init snd_mem_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-page-alloc=", snd_mem_setup);
-
-#endif
 
 /*
  * exports
diff -Nru a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
--- a/sound/core/oss/pcm_oss.c	Tue May 18 23:41:45 2004
+++ b/sound/core/oss/pcm_oss.c	Tue May 18 23:41:45 2004
@@ -31,6 +31,7 @@
 #include <linux/slab.h>
 #include <linux/time.h>
 #include <linux/vmalloc.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/minors.h>
 #include <sound/pcm.h>
@@ -45,17 +46,18 @@
 static int dsp_map[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 0};
 static int adsp_map[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 1};
 static int nonblock_open;
+static int boot_devs;
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>, Abramo Bagnara <abramo@alsa-project.org>");
 MODULE_DESCRIPTION("PCM OSS emulation for ALSA.");
 MODULE_LICENSE("GPL");
-MODULE_PARM(dsp_map, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dsp_map, int, boot_devs, 0444);
 MODULE_PARM_DESC(dsp_map, "PCM device number assigned to 1st OSS device.");
 MODULE_PARM_SYNTAX(dsp_map, "default:0,skill:advanced");
-MODULE_PARM(adsp_map, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(adsp_map, int, boot_devs, 0444);
 MODULE_PARM_DESC(adsp_map, "PCM device number assigned to 2nd OSS device.");
 MODULE_PARM_SYNTAX(adsp_map, "default:1,skill:advanced");
-MODULE_PARM(nonblock_open, "i");
+module_param(nonblock_open, bool, 0644);
 MODULE_PARM_DESC(nonblock_open, "Don't block opening busy PCM devices.");
 MODULE_PARM_SYNTAX(nonblock_open, "default:0,skill:advanced");
 MODULE_ALIAS_SNDRV_MINOR(SNDRV_MINOR_OSS_PCM);
@@ -1514,14 +1516,14 @@
 		runtime->oss.prev_hw_ptr_interrupt = delay;
 		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
 			snd_pcm_oss_simulate_fill(substream, delay);
-		info.bytes = snd_pcm_oss_bytes(substream, runtime->status->hw_ptr);
+		info.bytes = snd_pcm_oss_bytes(substream, runtime->status->hw_ptr) & INT_MAX;
 	} else {
 		delay = snd_pcm_oss_bytes(substream, delay) + fixup;
 		info.blocks = delay / runtime->oss.period_bytes;
 		if (stream == SNDRV_PCM_STREAM_PLAYBACK)
-			info.bytes = runtime->oss.bytes - delay;
+			info.bytes = (runtime->oss.bytes - delay) & INT_MAX;
 		else
-			info.bytes = runtime->oss.bytes + delay;
+			info.bytes = (runtime->oss.bytes + delay) & INT_MAX;
 	}
 	if (copy_to_user(_info, &info, sizeof(info)))
 		return -EFAULT;
@@ -2510,24 +2512,3 @@
 
 module_init(alsa_pcm_oss_init)
 module_exit(alsa_pcm_oss_exit)
-
-#ifndef MODULE
-
-/* format is: snd-pcm-oss=dsp_map,adsp_map[,nonblock_open] */
-
-static int __init alsa_pcm_oss_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&dsp_map[nr_dev]) == 2 &&
-	       get_option(&str,&adsp_map[nr_dev]) == 2);
-	(void)(get_option(&str,&nonblock_open) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-pcm-oss=", alsa_pcm_oss_setup);
-
-#endif /* !MODULE */
diff -Nru a/sound/core/pcm_memory.c b/sound/core/pcm_memory.c
--- a/sound/core/pcm_memory.c	Tue May 18 23:41:45 2004
+++ b/sound/core/pcm_memory.c	Tue May 18 23:41:45 2004
@@ -23,18 +23,19 @@
 #include <asm/io.h>
 #include <linux/time.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/info.h>
 #include <sound/initval.h>
 
 static int preallocate_dma = 1;
-MODULE_PARM(preallocate_dma, "i");
+module_param(preallocate_dma, int, 0444);
 MODULE_PARM_DESC(preallocate_dma, "Preallocate DMA memory when the PCM devices are initialized.");
 MODULE_PARM_SYNTAX(preallocate_dma, SNDRV_BOOLEAN_TRUE_DESC);
 
 static int maximum_substreams = 4;
-MODULE_PARM(maximum_substreams, "i");
+module_param(maximum_substreams, int, 0444);
 MODULE_PARM_DESC(maximum_substreams, "Maximum substreams with preallocated DMA memory.");
 MODULE_PARM_SYNTAX(maximum_substreams, SNDRV_BOOLEAN_TRUE_DESC);
 
@@ -223,9 +224,13 @@
  */
 static inline void setup_pcm_id(snd_pcm_substream_t *subs)
 {
-	if (! subs->dma_device.id)
+	if (! subs->dma_device.id) {
 		subs->dma_device.id = subs->pcm->device << 16 |
 			subs->stream << 8 | (subs->number + 1);
+		if (subs->dma_device.type == SNDRV_DMA_TYPE_CONTINUOUS ||
+		    subs->dma_device.dev == NULL)
+			subs->dma_device.id |= (subs->pcm->card->number + 1) << 24;
+	}
 }
 
 /**
diff -Nru a/sound/core/pcm_misc.c b/sound/core/pcm_misc.c
--- a/sound/core/pcm_misc.c	Tue May 18 23:41:45 2004
+++ b/sound/core/pcm_misc.c	Tue May 18 23:41:45 2004
@@ -230,7 +230,7 @@
 		return 64;
 	case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE:
 	case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE:
-		return 24;
+		return 32;
 	case SNDRV_PCM_FORMAT_MU_LAW:
 	case SNDRV_PCM_FORMAT_A_LAW:
 		return 8;
diff -Nru a/sound/core/pcm_native.c b/sound/core/pcm_native.c
--- a/sound/core/pcm_native.c	Tue May 18 23:41:45 2004
+++ b/sound/core/pcm_native.c	Tue May 18 23:41:45 2004
@@ -1038,7 +1038,7 @@
 
 	snd_power_lock(card);
 	if ((res = snd_power_wait(card, SNDRV_CTL_POWER_D0, substream->ffile)) >= 0)
-		return snd_pcm_action_lock_irq(&snd_pcm_action_resume, substream, 0, 0);
+		res = snd_pcm_action_lock_irq(&snd_pcm_action_resume, substream, 0, 0);
 	snd_power_unlock(card);
 	return res;
 }
@@ -2335,6 +2335,39 @@
 	return err;
 }
 		
+static int snd_pcm_sync_ptr(snd_pcm_substream_t *substream, struct sndrv_pcm_sync_ptr *_sync_ptr)
+{
+	snd_pcm_runtime_t *runtime = substream->runtime;
+	struct sndrv_pcm_sync_ptr sync_ptr;
+	volatile struct sndrv_pcm_mmap_status *status;
+	volatile struct sndrv_pcm_mmap_control *control;
+	int err;
+
+	memset(&sync_ptr, 0, sizeof(sync_ptr));
+	if (get_user(sync_ptr.flags, (unsigned int *) &(_sync_ptr->flags)))
+		return -EFAULT;
+	if (copy_from_user(&sync_ptr.c.control, &(_sync_ptr->c.control), sizeof(struct sndrv_pcm_mmap_control)))
+		return -EFAULT;	
+	status = runtime->status;
+	control = runtime->control;
+	if (sync_ptr.flags & SNDRV_PCM_SYNC_PTR_HWSYNC) {
+		err = snd_pcm_hwsync(substream);
+		if (err < 0)
+			return err;
+	}
+	snd_pcm_stream_lock_irq(substream);
+	control->appl_ptr = sync_ptr.c.control.appl_ptr;
+	control->avail_min = sync_ptr.c.control.avail_min;
+	sync_ptr.s.status.state = status->state;
+	sync_ptr.s.status.hw_ptr = status->hw_ptr;
+	sync_ptr.s.status.tstamp = status->tstamp;
+	sync_ptr.s.status.suspended_state = status->suspended_state;
+	snd_pcm_stream_unlock_irq(substream);
+	if (copy_to_user(_sync_ptr, &sync_ptr, sizeof(sync_ptr)))
+		return -EFAULT;
+	return 0;
+}
+		
 static int snd_pcm_playback_ioctl1(snd_pcm_substream_t *substream,
 				   unsigned int cmd, void *arg);
 static int snd_pcm_capture_ioctl1(snd_pcm_substream_t *substream,
@@ -2388,6 +2421,8 @@
 		return snd_pcm_hwsync(substream);
 	case SNDRV_PCM_IOCTL_DELAY:
 		return snd_pcm_delay(substream, (snd_pcm_sframes_t *) arg);
+	case SNDRV_PCM_IOCTL_SYNC_PTR:
+		return snd_pcm_sync_ptr(substream, (struct sndrv_pcm_sync_ptr *) arg);
 	case SNDRV_PCM_IOCTL_HW_REFINE_OLD:
 		return snd_pcm_hw_refine_old_user(substream, (struct sndrv_pcm_hw_params_old *) arg);
 	case SNDRV_PCM_IOCTL_HW_PARAMS_OLD:
diff -Nru a/sound/core/rawmidi.c b/sound/core/rawmidi.c
--- a/sound/core/rawmidi.c	Tue May 18 23:41:45 2004
+++ b/sound/core/rawmidi.c	Tue May 18 23:41:45 2004
@@ -27,6 +27,7 @@
 #include <linux/slab.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/rawmidi.h>
 #include <sound/info.h>
 #include <sound/control.h>
@@ -40,10 +41,11 @@
 #ifdef CONFIG_SND_OSSEMUL
 static int midi_map[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 0};
 static int amidi_map[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 1};
-MODULE_PARM(midi_map, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+static int boot_devs;
+module_param_array(midi_map, int, boot_devs, 0444);
 MODULE_PARM_DESC(midi_map, "Raw MIDI device number assigned to 1st OSS device.");
 MODULE_PARM_SYNTAX(midi_map, "default:0,skill:advanced");
-MODULE_PARM(amidi_map, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(amidi_map, int, boot_devs, 0444);
 MODULE_PARM_DESC(amidi_map, "Raw MIDI device number assigned to 2nd OSS device.");
 MODULE_PARM_SYNTAX(amidi_map, "default:1,skill:advanced");
 #endif /* CONFIG_SND_OSSEMUL */
@@ -1636,26 +1638,6 @@
 
 module_init(alsa_rawmidi_init)
 module_exit(alsa_rawmidi_exit)
-
-#ifndef MODULE
-#ifdef CONFIG_SND_OSSEMUL
-/* format is: snd-rawmidi=midi_map,amidi_map */
-
-static int __init alsa_rawmidi_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&midi_map[nr_dev]) == 2 &&
-	       get_option(&str,&amidi_map[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-rawmidi=", alsa_rawmidi_setup);
-#endif /* CONFIG_SND_OSSEMUL */
-#endif /* ifndef MODULE */
 
 EXPORT_SYMBOL(snd_rawmidi_output_params);
 EXPORT_SYMBOL(snd_rawmidi_input_params);
diff -Nru a/sound/core/rtctimer.c b/sound/core/rtctimer.c
--- a/sound/core/rtctimer.c	Tue May 18 23:41:45 2004
+++ b/sound/core/rtctimer.c	Tue May 18 23:41:45 2004
@@ -25,6 +25,7 @@
 #include <linux/time.h>
 #include <linux/threads.h>
 #include <linux/interrupt.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/timer.h>
 #include <sound/info.h>
@@ -177,21 +178,9 @@
 module_init(rtctimer_init)
 module_exit(rtctimer_exit)
 
-MODULE_PARM(rtctimer_freq, "i");
+module_param(rtctimer_freq, int, 0444);
 MODULE_PARM_DESC(rtctimer_freq, "timer frequency in Hz");
 
 MODULE_LICENSE("GPL");
-
-#ifndef MODULE
-/* format is: snd-rtctimer=freq */
-
-static int __init rtctimer_setup(char *str)
-{
-	(void)(get_option(&str,&rtctimer_freq) == 2);
-	return 1;
-}
-
-__setup("snd-rtctimer=", rtctimer_setup);
-#endif /* ifndef MODULE */
 
 #endif /* CONFIG_RTC || CONFIG_RTC_MODULE */
diff -Nru a/sound/core/seq/oss/seq_oss.c b/sound/core/seq/oss/seq_oss.c
--- a/sound/core/seq/oss/seq_oss.c	Tue May 18 23:41:45 2004
+++ b/sound/core/seq/oss/seq_oss.c	Tue May 18 23:41:45 2004
@@ -22,6 +22,7 @@
 
 #include <sound/driver.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/minors.h>
 #include <sound/initval.h>
@@ -40,7 +41,7 @@
 MODULE_ALIAS_SNDRV_MINOR(SNDRV_MINOR_OSS_MUSIC);
 
 #ifdef SNDRV_SEQ_OSS_DEBUG
-MODULE_PARM(seq_oss_debug, "i");
+module_param(seq_oss_debug, int, 0644);
 MODULE_PARM_DESC(seq_oss_debug, "debug option");
 int seq_oss_debug = 0;
 #endif
diff -Nru a/sound/core/seq/oss/seq_oss_init.c b/sound/core/seq/oss/seq_oss_init.c
--- a/sound/core/seq/oss/seq_oss_init.c	Tue May 18 23:41:45 2004
+++ b/sound/core/seq/oss/seq_oss_init.c	Tue May 18 23:41:45 2004
@@ -28,17 +28,18 @@
 #include "seq_oss_timer.h"
 #include "seq_oss_event.h"
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 
 /*
  * common variables
  */
-MODULE_PARM(maxqlen, "i");
+static int maxqlen = SNDRV_SEQ_OSS_MAX_QLEN;
+module_param(maxqlen, int, 0444);
 MODULE_PARM_DESC(maxqlen, "maximum queue length");
 
 static int system_client = -1; /* ALSA sequencer client number */
 static int system_port = -1;
 
-int maxqlen = SNDRV_SEQ_OSS_MAX_QLEN;
 static int num_clients;
 static seq_oss_devinfo_t *client_table[SNDRV_SEQ_OSS_MAX_CLIENTS];
 
diff -Nru a/sound/core/seq/seq.c b/sound/core/seq/seq.c
--- a/sound/core/seq/seq.c	Tue May 18 23:41:45 2004
+++ b/sound/core/seq/seq.c	Tue May 18 23:41:45 2004
@@ -21,6 +21,7 @@
 
 #include <sound/driver.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/initval.h>
 
@@ -34,7 +35,11 @@
 #include "seq_info.h"
 #include <sound/seq_device.h>
 
+#if defined(CONFIG_SND_SEQ_DUMMY_MODULE)
+int seq_client_load[64] = {[0] = SNDRV_SEQ_CLIENT_DUMMY, [1 ... 63] = -1};
+#else
 int seq_client_load[64] = {[0 ... 63] = -1};
+#endif
 int seq_default_timer_class = SNDRV_TIMER_CLASS_GLOBAL;
 int seq_default_timer_sclass = SNDRV_TIMER_SCLASS_NONE;
 int seq_default_timer_card = -1;
@@ -48,19 +53,20 @@
 MODULE_CLASSES("{sound}");
 MODULE_SUPPORTED_DEVICE("sound");
 
-MODULE_PARM(seq_client_load, "1-64i");
+static int boot_devs;
+module_param_array(seq_client_load, int, boot_devs, 0444);
 MODULE_PARM_DESC(seq_client_load, "The numbers of global (system) clients to load through kmod.");
-MODULE_PARM(seq_default_timer_class, "i");
+module_param(seq_default_timer_class, int, 0644);
 MODULE_PARM_DESC(seq_default_timer_class, "The default timer class.");
-MODULE_PARM(seq_default_timer_sclass, "i");
+module_param(seq_default_timer_sclass, int, 0644);
 MODULE_PARM_DESC(seq_default_timer_sclass, "The default timer slave class.");
-MODULE_PARM(seq_default_timer_card, "i");
+module_param(seq_default_timer_card, int, 0644);
 MODULE_PARM_DESC(seq_default_timer_card, "The default timer card number.");
-MODULE_PARM(seq_default_timer_device, "i");
+module_param(seq_default_timer_device, int, 0644);
 MODULE_PARM_DESC(seq_default_timer_device, "The default timer device number.");
-MODULE_PARM(seq_default_timer_subdevice, "i");
+module_param(seq_default_timer_subdevice, int, 0644);
 MODULE_PARM_DESC(seq_default_timer_subdevice, "The default timer subdevice number.");
-MODULE_PARM(seq_default_timer_resolution, "i");
+module_param(seq_default_timer_resolution, int, 0644);
 MODULE_PARM_DESC(seq_default_timer_resolution, "The default timer resolution in Hz.");
 
 /*
diff -Nru a/sound/core/seq/seq_dummy.c b/sound/core/seq/seq_dummy.c
--- a/sound/core/seq/seq_dummy.c	Tue May 18 23:41:45 2004
+++ b/sound/core/seq/seq_dummy.c	Tue May 18 23:41:45 2004
@@ -21,6 +21,7 @@
 #include <sound/driver.h>
 #include <linux/init.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include "seq_clientmgr.h"
 #include <sound/initval.h>
@@ -64,12 +65,14 @@
 MODULE_LICENSE("GPL");
 MODULE_CLASSES("{sound}");
 MODULE_SUPPORTED_DEVICE("sound");
-MODULE_PARM(ports, "i");
+
+static int ports = 1;
+static int duplex = 0;
+
+module_param(ports, int, 0444);
 MODULE_PARM_DESC(ports, "number of ports to be created");
-MODULE_PARM(duplex, "i");
+module_param(duplex, bool, 0444);
 MODULE_PARM_DESC(duplex, "create DUPLEX ports");
-int ports = 1;
-int duplex = 0;
 
 typedef struct snd_seq_dummy_port {
 	int client;
diff -Nru a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c
--- a/sound/core/seq/seq_midi.c	Tue May 18 23:41:45 2004
+++ b/sound/core/seq/seq_midi.c	Tue May 18 23:41:45 2004
@@ -31,6 +31,7 @@
 #include <linux/slab.h>
 #include <linux/errno.h>
 #include <linux/string.h>
+#include <linux/moduleparam.h>
 #include <asm/semaphore.h>
 #include <sound/core.h>
 #include <sound/rawmidi.h>
@@ -45,10 +46,10 @@
 MODULE_CLASSES("{sound}");
 MODULE_SUPPORTED_DEVICE("sound");
 int output_buffer_size = PAGE_SIZE;
-MODULE_PARM(output_buffer_size, "i");
+module_param(output_buffer_size, int, 0644);
 MODULE_PARM_DESC(output_buffer_size, "Output buffer size in bytes.");
 int input_buffer_size = PAGE_SIZE;
-MODULE_PARM(input_buffer_size, "i");
+module_param(input_buffer_size, int, 0644);
 MODULE_PARM_DESC(input_buffer_size, "Input buffer size in bytes.");
 
 /* data for this midi synth driver */
diff -Nru a/sound/core/sound.c b/sound/core/sound.c
--- a/sound/core/sound.c	Tue May 18 23:41:45 2004
+++ b/sound/core/sound.c	Tue May 18 23:41:45 2004
@@ -23,6 +23,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/minors.h>
 #include <sound/info.h>
@@ -45,15 +46,15 @@
 MODULE_LICENSE("GPL");
 MODULE_CLASSES("{sound}");
 MODULE_SUPPORTED_DEVICE("sound");
-MODULE_PARM(major, "i");
+module_param(major, int, 0444);
 MODULE_PARM_DESC(major, "Major # for sound driver.");
 MODULE_PARM_SYNTAX(major, "default:116,skill:devel");
-MODULE_PARM(cards_limit, "i");
+module_param(cards_limit, int, 0444);
 MODULE_PARM_DESC(cards_limit, "Count of auto-loadable soundcards.");
 MODULE_PARM_SYNTAX(cards_limit, "default:8,skill:advanced");
 MODULE_ALIAS_CHARDEV_MAJOR(CONFIG_SND_MAJOR);
 #ifdef CONFIG_DEVFS_FS
-MODULE_PARM(device_mode, "i");
+module_param(device_mode, int, 0444);
 MODULE_PARM_DESC(device_mode, "Device file permission mask for devfs.");
 MODULE_PARM_SYNTAX(device_mode, "default:0666,base:8");
 #endif
@@ -465,6 +466,12 @@
 EXPORT_SYMBOL(snd_card_file_remove);
 #ifdef CONFIG_PM
 EXPORT_SYMBOL(snd_power_wait);
+EXPORT_SYMBOL(snd_card_set_pm_callback);
+EXPORT_SYMBOL(snd_card_set_dev_pm_callback);
+#ifdef CONFIG_PCI
+EXPORT_SYMBOL(snd_card_pci_suspend);
+EXPORT_SYMBOL(snd_card_pci_resume);
+#endif
 #endif
   /* device.c */
 EXPORT_SYMBOL(snd_device_new);
diff -Nru a/sound/core/timer.c b/sound/core/timer.c
--- a/sound/core/timer.c	Tue May 18 23:41:45 2004
+++ b/sound/core/timer.c	Tue May 18 23:41:45 2004
@@ -24,6 +24,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/timer.h>
 #include <sound/control.h>
@@ -46,7 +47,7 @@
 MODULE_DESCRIPTION("ALSA timer interface");
 MODULE_LICENSE("GPL");
 MODULE_CLASSES("{sound}");
-MODULE_PARM(timer_limit, "i");
+module_param(timer_limit, int, 0444);
 MODULE_PARM_DESC(timer_limit, "Maximum global timers in system.");
 
 typedef struct {
@@ -1512,7 +1513,6 @@
 
 static int snd_timer_user_params(struct file *file, snd_timer_params_t *_params)
 {
-	unsigned long flags;
 	snd_timer_user_t *tu;
 	snd_timer_params_t params;
 	snd_timer_t *t;
@@ -1548,18 +1548,17 @@
 		goto _end;
 	}
 	snd_timer_stop(tu->timeri);
-	spin_lock_irqsave(&t->lock, flags);
-	if (params.flags & SNDRV_TIMER_PSFLG_AUTO) {
+	spin_lock_irq(&t->lock);
+	tu->timeri->flags &= ~(SNDRV_TIMER_IFLG_AUTO|
+			       SNDRV_TIMER_IFLG_EXCLUSIVE|
+			       SNDRV_TIMER_IFLG_EARLY_EVENT);
+	if (params.flags & SNDRV_TIMER_PSFLG_AUTO)
 		tu->timeri->flags |= SNDRV_TIMER_IFLG_AUTO;
-	} else {
-		tu->timeri->flags &= ~SNDRV_TIMER_IFLG_AUTO;
-	}
-	if (params.flags & SNDRV_TIMER_PSFLG_EXCLUSIVE) {
+	if (params.flags & SNDRV_TIMER_PSFLG_EXCLUSIVE)
 		tu->timeri->flags |= SNDRV_TIMER_IFLG_EXCLUSIVE;
-	} else {
-		tu->timeri->flags &= ~SNDRV_TIMER_IFLG_EXCLUSIVE;
-	}
-	spin_unlock_irqrestore(&t->lock, flags);
+	if (params.flags & SNDRV_TIMER_PSFLG_EARLY_EVENT)
+		tu->timeri->flags |= SNDRV_TIMER_IFLG_EARLY_EVENT;
+	spin_unlock_irq(&t->lock);
 	if (params.queue_size > 0 && (unsigned int)tu->queue_size != params.queue_size) {
 		if (tu->tread) {
 			ttr = (snd_timer_tread_t *)kmalloc(params.queue_size * sizeof(snd_timer_tread_t), GFP_KERNEL);
@@ -1577,6 +1576,24 @@
 			}
 		}
 	}
+	tu->qhead = tu->qtail = tu->qused = 0;
+	if (tu->timeri->flags & SNDRV_TIMER_IFLG_EARLY_EVENT) {
+		if (tu->tread) {
+			snd_timer_tread_t tread;
+			tread.event = SNDRV_TIMER_EVENT_EARLY;
+			tread.tstamp.tv_sec = 0;
+			tread.tstamp.tv_nsec = 0;
+			tread.val = 0;
+			snd_timer_user_append_to_tqueue(tu, &tread);
+		} else {
+			snd_timer_read_t *r = &tu->queue[0];
+			r->resolution = 0;
+			r->ticks = 0;
+			tu->qused++;
+			tu->qtail++;
+		}
+		
+	}
 	tu->filter = params.filter;
 	tu->ticks = params.ticks;
 	err = 0;
@@ -1588,7 +1605,6 @@
 
 static int snd_timer_user_status(struct file *file, snd_timer_status_t *_status)
 {
-	unsigned long flags;
 	snd_timer_user_t *tu;
 	snd_timer_status_t status;
 	
@@ -1599,9 +1615,9 @@
 	status.resolution = snd_timer_resolution(tu->timeri);
 	status.lost = tu->timeri->lost;
 	status.overrun = tu->overrun;
-	spin_lock_irqsave(&tu->qlock, flags);
+	spin_lock_irq(&tu->qlock);
 	status.queue = tu->qused;
-	spin_unlock_irqrestore(&tu->qlock, flags);
+	spin_unlock_irq(&tu->qlock);
 	if (copy_to_user(_status, &status, sizeof(status)))
 		return -EFAULT;
 	return 0;
@@ -1847,18 +1863,6 @@
 
 module_init(alsa_timer_init)
 module_exit(alsa_timer_exit)
-
-#ifndef MODULE
-/* format is: snd-timer=timer_limit */
-
-static int __init alsa_timer_setup(char *str)
-{
-	(void)(get_option(&str,&timer_limit) == 2);
-	return 1;
-}
-
-__setup("snd-timer=", alsa_timer_setup);
-#endif /* ifndef MODULE */
 
 EXPORT_SYMBOL(snd_timer_open);
 EXPORT_SYMBOL(snd_timer_close);
diff -Nru a/sound/drivers/dummy.c b/sound/drivers/dummy.c
--- a/sound/drivers/dummy.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/dummy.c	Tue May 18 23:41:45 2004
@@ -24,11 +24,11 @@
 #include <linux/slab.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/rawmidi.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -129,23 +129,24 @@
 static int pcm_devs[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
 static int pcm_substreams[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 8};
 //static int midi_devs[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for dummy soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for dummy soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable this dummy soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(pcm_devs, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_devs, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_devs, "PCM devices # (0-4) for dummy driver.");
 MODULE_PARM_SYNTAX(pcm_devs, SNDRV_ENABLED ",allows:{{0,4}},default:1,dialog:list");
-MODULE_PARM(pcm_substreams, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_substreams, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-16) for dummy driver.");
 MODULE_PARM_SYNTAX(pcm_substreams, SNDRV_ENABLED ",allows:{{1,16}},default:8,dialog:list");
-//MODULE_PARM(midi_devs, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+//module_param_array(midi_devs, int, boot_devs, 0444);
 //MODULE_PARM_DESC(midi_devs, "MIDI devices # (0-2) for dummy driver.");
 //MODULE_PARM_SYNTAX(midi_devs, SNDRV_ENABLED ",allows:{{0,2}},default:8,dialog:list");
 
@@ -661,27 +662,3 @@
 
 module_init(alsa_card_dummy_init)
 module_exit(alsa_card_dummy_exit)
-
-#ifndef MODULE
-
-/* format is: snd-dummy=enable,index,id,
-			pcm_devs,pcm_substreams */
-
-static int __init alsa_card_dummy_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_devs[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_substreams[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-dummy=", alsa_card_dummy_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/drivers/mpu401/mpu401.c b/sound/drivers/mpu401/mpu401.c
--- a/sound/drivers/mpu401/mpu401.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/mpu401/mpu401.c	Tue May 18 23:41:45 2004
@@ -30,9 +30,9 @@
 #ifdef CONFIG_ACPI_BUS
 #include <acpi/acpi_bus.h>
 #endif
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #ifdef CONFIG_ACPI_BUS
@@ -55,29 +55,30 @@
 #ifdef CONFIG_X86_PC9800
 static int pc98ii[SNDRV_CARDS];				/* PC98-II dauther board */
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for MPU-401 device.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for MPU-401 device.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable MPU-401 device.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef USE_ACPI_PNP
-MODULE_PARM(acpipnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(acpipnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(acpipnp, "ACPI PnP detection for MPU-401 device.");
 MODULE_PARM_SYNTAX(acpipnp, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for MPU-401 device.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for MPU-401 device.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
 #ifdef CONFIG_X86_PC9800
-MODULE_PARM(pc98ii, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pc98ii, bool, boot_devs, 0444);
 MODULE_PARM_DESC(pc98ii, "Roland MPU-PC98II support.");
 MODULE_PARM_SYNTAX(pc98ii, SNDRV_BOOLEAN_FALSE_DESC);
 #endif
@@ -303,35 +304,3 @@
 
 module_init(alsa_card_mpu401_init)
 module_exit(alsa_card_mpu401_exit)
-
-#ifndef MODULE
-
-/* format is: snd-mpu401=enable,index,id,acpipnp[,pc98ii],port,irq */
-
-static int __init alsa_card_mpu401_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-#ifdef CONFIG_X86_PC9800
-	       get_option(&str,&pc98ii[nr_dev]) == 2 &&
-#endif
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2);
-#ifdef USE_ACPI_PNP
-	if (pnp != INT_MAX)
-		acpipnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-mpu401=", alsa_card_mpu401_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/drivers/mtpav.c b/sound/drivers/mtpav.c
--- a/sound/drivers/mtpav.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/mtpav.c	Tue May 18 23:41:45 2004
@@ -55,8 +55,8 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/ioport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/rawmidi.h>
 #include <linux/delay.h>
@@ -83,19 +83,19 @@
 static int irq = MTPAV_IRQ;		/* 7, 5 */
 static int hwports = MTPAV_MAX_PORTS;	/* use hardware ports 1-8 */
 
-MODULE_PARM(index, "i");
+module_param(index, int, 0444);
 MODULE_PARM_DESC(index, "Index value for MotuMTPAV MIDI.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "s");
+module_param(id, charp, 0444);
 MODULE_PARM_DESC(id, "ID string for MotuMTPAV MIDI.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(port, "l");
+module_param(port, long, 0444);
 MODULE_PARM_DESC(port, "Parallel port # for MotuMTPAV MIDI.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x378},{0x278}},dialog:list");
-MODULE_PARM(irq, "i");
+module_param(irq, int, 0444);
 MODULE_PARM_DESC(irq, "Parallel IRQ # for MotuMTPAV MIDI.");
 MODULE_PARM_SYNTAX(irq,  SNDRV_ENABLED ",allows:{{7},{5}},dialog:list");
-MODULE_PARM(hwports, "i");
+module_param(hwports, int, 0444);
 MODULE_PARM_DESC(hwports, "Hardware ports # for MotuMTPAV MIDI.");
 MODULE_PARM_SYNTAX(hwports, SNDRV_ENABLED ",allows:{{1,8}},dialog:list");
 
@@ -800,25 +800,3 @@
 
 module_init(alsa_card_mtpav_init)
 module_exit(alsa_card_mtpav_exit)
-
-#ifndef MODULE
-
-/* format is: snd-mtpav=enable,index,id,
-			port,irq,hwports */
-
-static int __init alsa_card_mtpav_setup(char *str)
-{
-        int __attribute__ ((__unused__)) enable = 1;
-
-	(void)(get_option(&str,&enable) == 2 &&
-	       get_option(&str,&index) == 2 &&
-	       get_id(&str,&id) == 2 &&
-	       get_option_long(&str,&port) == 2 &&
-	       get_option(&str,&irq) == 2 &&
-	       get_option(&str,&hwports) == 2);
-	return 1;
-}
-
-__setup("snd-mtpav=", alsa_card_mtpav_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/drivers/opl3/opl3_seq.c b/sound/drivers/opl3/opl3_seq.c
--- a/sound/drivers/opl3/opl3_seq.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/opl3/opl3_seq.c	Tue May 18 23:41:45 2004
@@ -24,6 +24,7 @@
 
 #include "opl3_voice.h"
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Uros Bizjak <uros@kss-loka.si>");
@@ -32,7 +33,7 @@
 MODULE_CLASSES("{sound}");
 
 int use_internal_drums = 0;
-MODULE_PARM(use_internal_drums, "i");
+module_param(use_internal_drums, bool, 0444);
 MODULE_PARM_DESC(use_internal_drums, "Enable internal OPL2/3 drums.");
 
 int snd_opl3_synth_use_inc(opl3_t * opl3)
diff -Nru a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c
--- a/sound/drivers/opl4/opl4_seq.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/opl4/opl4_seq.c	Tue May 18 23:41:45 2004
@@ -33,6 +33,7 @@
 
 #include "opl4_local.h"
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
@@ -42,7 +43,7 @@
 
 int volume_boost = 8;
 
-MODULE_PARM(volume_boost, "i");
+module_param(volume_boost, int, 0644);
 MODULE_PARM_DESC(volume_boost, "Additional volume for OPL4 wavetable sounds.");
 MODULE_PARM_SYNTAX(volume_boost, "default:8");
 
diff -Nru a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c
--- a/sound/drivers/serial-u16550.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/serial-u16550.c	Tue May 18 23:41:45 2004
@@ -35,9 +35,9 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/ioport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/rawmidi.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <linux/serial_reg.h>
@@ -77,39 +77,40 @@
 static int ins[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};	/* 1 to 16 */
 static int adaptor[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = SNDRV_SERIAL_SOUNDCANVAS};
 static int droponfull[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS -1)] = SNDRV_SERIAL_NORMALBUFF };
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Serial MIDI.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Serial MIDI.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable UART16550A chip.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for UART16550A chip.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for UART16550A chip.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(speed, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(speed, int, boot_devs, 0444);
 MODULE_PARM_DESC(speed, "Speed in bauds.");
 MODULE_PARM_SYNTAX(speed, SNDRV_ENABLED ",allows:{9600,19200,38400,57600,115200},dialog:list");
-MODULE_PARM(base, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(base, int, boot_devs, 0444);
 MODULE_PARM_DESC(base, "Base for divisor in bauds.");
 MODULE_PARM_SYNTAX(base, SNDRV_ENABLED ",allows:{57600,115200,230400,460800},dialog:list");
-MODULE_PARM(outs, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(outs, int, boot_devs, 0444);
 MODULE_PARM_DESC(outs, "Number of MIDI outputs.");
-MODULE_PARM(ins, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ins, int, boot_devs, 0444);
 MODULE_PARM_DESC(ins, "Number of MIDI inputs.");
-MODULE_PARM(droponfull, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(droponfull, bool, boot_devs, 0444);
 MODULE_PARM_DESC(droponfull, "Flag to enable drop-on-full buffer mode");
 MODULE_PARM_SYNTAX(droponfull, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 
 MODULE_PARM_SYNTAX(outs, SNDRV_ENABLED ",allows:{{1,16}},dialog:list");
 MODULE_PARM_SYNTAX(ins, SNDRV_ENABLED ",allows:{{1,16}},dialog:list");
-MODULE_PARM(adaptor, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(adaptor, int, boot_devs, 0444);
 MODULE_PARM_DESC(adaptor, "Type of adaptor.");
 MODULE_PARM_SYNTAX(adaptor, SNDRV_ENABLED ",allows:{{0=Soundcanvas,1=MS-124T,2=MS-124W S/A,3=MS-124W M/B,4=Generic}},dialog:list");
 
@@ -987,34 +988,3 @@
 
 module_init(alsa_card_serial_init)
 module_exit(alsa_card_serial_exit)
-
-#ifndef MODULE
-
-/* format is: snd-serial=enable,index,id,
-			 port,irq,speed,base,outs,
- 			 ins,adaptor,droponfull */
-
-static int __init alsa_card_serial_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&speed[nr_dev]) == 2 &&
-	       get_option(&str,&base[nr_dev]) == 2 &&
-	       get_option(&str,&outs[nr_dev]) == 2 &&
-	       get_option(&str,&ins[nr_dev]) == 2 &&
-	       get_option(&str,&adaptor[nr_dev]) == 2 &&
-	       get_option(&str,&droponfull[nr_dev]) == 2 );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-serial=", alsa_card_serial_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/drivers/virmidi.c b/sound/drivers/virmidi.c
--- a/sound/drivers/virmidi.c	Tue May 18 23:41:45 2004
+++ b/sound/drivers/virmidi.c	Tue May 18 23:41:45 2004
@@ -45,10 +45,10 @@
 #include <linux/init.h>
 #include <linux/wait.h>
 #include <linux/sched.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/seq_kernel.h>
 #include <sound/seq_virmidi.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 /* hack: OSS defines midi_devs, so undefine it (versioned symbols) */
@@ -66,17 +66,18 @@
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0};
 static int midi_devs[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 4};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for virmidi soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for virmidi soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable this soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(midi_devs, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(midi_devs, int, boot_devs, 0444);
 MODULE_PARM_DESC(midi_devs, "MIDI devices # (1-8)");
 MODULE_PARM_SYNTAX(midi_devs, SNDRV_ENABLED ",allows:{{1,8}}");
 
@@ -162,25 +163,3 @@
 
 module_init(alsa_card_virmidi_init)
 module_exit(alsa_card_virmidi_exit)
-
-#ifndef MODULE
-
-/* format is: snd-virmidi=enable,index,id,midi_devs */
-
-static int __init alsa_card_virmidi_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&midi_devs[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-virmidi=", alsa_card_virmidi_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/ad1816a/ad1816a.c b/sound/isa/ad1816a/ad1816a.c
--- a/sound/isa/ad1816a/ad1816a.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/ad1816a/ad1816a.c	Tue May 18 23:41:45 2004
@@ -23,8 +23,8 @@
 #include <linux/time.h>
 #include <linux/wait.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/ad1816a.h>
 #include <sound/mpu401.h>
@@ -56,35 +56,36 @@
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* Pnp setup */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ad1816a based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ad1816a based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ad1816a based soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for ad1816a driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ad1816a driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for ad1816a driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for ad1816a driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for ad1816a driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "1st DMA # for ad1816a driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "2nd DMA # for ad1816a driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 
@@ -323,33 +324,3 @@
 
 module_init(alsa_card_ad1816a_init)
 module_exit(alsa_card_ad1816a_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ad1816a=enable,index,id,port,
-			  mpu_port,fm_port,irq,mpu_irq,
-			  dma1,dma2 */
-
-static int __init alsa_card_ad1816a_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-ad1816a=", alsa_card_ad1816a_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c
--- a/sound/isa/ad1848/ad1848.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/ad1848/ad1848.c	Tue May 18 23:41:45 2004
@@ -25,9 +25,9 @@
 #include <linux/init.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/ad1848.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t ad1848_t
@@ -47,26 +47,27 @@
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 5,7,9,11,12,15 */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
 static int thinkpad[SNDRV_CARDS];			/* Thinkpad special case */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for AD1848 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for AD1848 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable AD1848 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for AD1848 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for AD1848 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for AD1848 driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(thinkpad, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(thinkpad, bool, boot_devs, 0444);
 MODULE_PARM_DESC(thinkpad, "Enable only for the onboard CS4248 of IBM Thinkpad 360/750/755 series.");
 MODULE_PARM_SYNTAX(thinkpad,  SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -159,29 +160,3 @@
 
 module_init(alsa_card_ad1848_init)
 module_exit(alsa_card_ad1848_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ad1848=enable,index,id,port,
-			 irq,dma1 */
-
-static int __init alsa_card_ad1848_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&thinkpad[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-ad1848=", alsa_card_ad1848_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/ad1848/ad1848_lib.c b/sound/isa/ad1848/ad1848_lib.c
--- a/sound/isa/ad1848/ad1848_lib.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/ad1848/ad1848_lib.c	Tue May 18 23:41:45 2004
@@ -647,12 +647,12 @@
 }
 
 #ifdef CONFIG_PM
-static void snd_ad1848_suspend(ad1848_t *chip) {
-
-	snd_card_t *card = chip->card;
+static int snd_ad1848_suspend(snd_card_t *card, unsigned int state)
+{
+	ad1848_t *chip = snd_magic_cast(ad1848_t, card->pm_private_data, return -EINVAL);
 
 	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+		return 0;
 
 	snd_pcm_suspend_all(chip->pcm);
 	/* FIXME: save registers? */
@@ -661,14 +661,15 @@
 		snd_ad1848_thinkpad_twiddle(chip, 0);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void snd_ad1848_resume(ad1848_t *chip) {
-
-	snd_card_t *card = chip->card;
+static int snd_ad1848_resume(snd_card_t *card, unsigned int state)
+{
+	ad1848_t *chip = snd_magic_cast(ad1848_t, card->pm_private_data, return -EINVAL);
 
 	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+		return 0;
 
 	if (chip->thinkpad_flag)
 		snd_ad1848_thinkpad_twiddle(chip, 1);
@@ -676,43 +677,8 @@
 	/* FIXME: restore registers? */
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-/* callback for control API */
-static int snd_ad1848_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	ad1848_t *chip = (ad1848_t *) card->power_state_private_data;
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_ad1848_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_ad1848_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
-
-static int snd_ad1848_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
-{
-	ad1848_t *chip = snd_magic_cast(ad1848_t, dev->data, return 0);
-
-	switch (rqst) {
-	case PM_SUSPEND:
-		snd_ad1848_suspend(chip);
-		break;
-	case PM_RESUME:
-		snd_ad1848_resume(chip);
-		break;
-	}
-	return 0;
-}
-
 #endif /* CONFIG_PM */
 
 static int snd_ad1848_probe(ad1848_t * chip)
@@ -891,10 +857,6 @@
 
 static int snd_ad1848_free(ad1848_t *chip)
 {
-#ifdef CONFIG_PM
-        if (chip->thinkpad_pmstate)
-                pm_unregister(chip->thinkpad_pmstate);
-#endif
 	if (chip->res_port) {
 		release_resource(chip->res_port);
 		kfree_nocheck(chip->res_port);
@@ -973,14 +935,7 @@
 		chip->thinkpad_flag = 1;
 		chip->hardware = AD1848_HW_DETECT; /* reset */
 		snd_ad1848_thinkpad_twiddle(chip, 1);
-#ifdef CONFIG_PM
-		chip->thinkpad_pmstate = pm_register(PM_ISA_DEV, 0, snd_ad1848_pm_callback);
-		if (chip->thinkpad_pmstate) {
-			chip->thinkpad_pmstate->data = chip;
-			card->set_power_state = snd_ad1848_set_power_state; /* callback */
-			card->power_state_private_data = chip;
-		}
-#endif
+		snd_card_set_isa_pm_callback(card, snd_ad1848_suspend, snd_ad1848_resume, chip);
 	}
 
 	if (snd_ad1848_probe(chip) < 0) {
diff -Nru a/sound/isa/als100.c b/sound/isa/als100.c
--- a/sound/isa/als100.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/als100.c	Tue May 18 23:41:45 2004
@@ -25,8 +25,8 @@
 #include <linux/wait.h>
 #include <linux/time.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
@@ -59,35 +59,36 @@
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* PnP setup */
 static int dma8[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
 static int dma16[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for als100 based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for als100 based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable als100 based soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for als100 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for als100 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for als100 driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for als100 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for als100 driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for als100 driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
-MODULE_PARM(dma16, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma16, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma16, "16-bit DMA # for als100 driver.");
 MODULE_PARM_SYNTAX(dma16, SNDRV_DMA16_DESC);
 
@@ -345,33 +346,3 @@
 
 module_init(alsa_card_als100_init)
 module_exit(alsa_card_als100_exit)
-
-#ifndef MODULE
-
-/* format is: snd-als100=enable,index,id,port,
-			 mpu_port,fm_port,irq,mpu_irq,
-			 dma8,dma16 */
-
-static int __init alsa_card_als100_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2 &&
-	       get_option(&str,&dma16[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-als100=", alsa_card_als100_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/azt2320.c b/sound/isa/azt2320.c
--- a/sound/isa/azt2320.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/azt2320.c	Tue May 18 23:41:45 2004
@@ -36,8 +36,8 @@
 #include <linux/time.h>
 #include <linux/wait.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
@@ -68,38 +68,39 @@
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* Pnp setup */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for azt2320 based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for azt2320 based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable azt2320 based soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(wss_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(wss_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(wss_port, "WSS Port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(wss_port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for azt2320 driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for azt2320 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for azt2320 driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "1st DMA # for azt2320 driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "2nd DMA # for azt2320 driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 
@@ -378,33 +379,3 @@
 
 module_init(alsa_card_azt2320_init)
 module_exit(alsa_card_azt2320_exit)
-
-#ifndef MODULE
-
-/* format is: snd-azt2320=enable,index,id,port,
-			  wss_port,mpu_port,fm_port,
-			  irq,mpu_irq,dma1,dma2 */
-
-static int __init alsa_card_azt2320_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&wss_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-azt2320=", alsa_card_azt2320_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
--- a/sound/isa/cmi8330.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/cmi8330.c	Tue May 18 23:41:45 2004
@@ -47,10 +47,10 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/ad1848.h>
 #include <sound/sb.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 /*
@@ -79,42 +79,43 @@
 static long wssport[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;
 static int wssirq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;
 static int wssdma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for CMI8330 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string  for CMI8330 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable CMI8330 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
 
-MODULE_PARM(sbport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(sbport, long, boot_devs, 0444);
 MODULE_PARM_DESC(sbport, "Port # for CMI8330 SB driver.");
 MODULE_PARM_SYNTAX(sbport, SNDRV_ENABLED ",allows:{{0x220,0x280,0x20}},prefers:{0x220},base:16,dialog:list");
-MODULE_PARM(sbirq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(sbirq, int, boot_devs, 0444);
 MODULE_PARM_DESC(sbirq, "IRQ # for CMI8330 SB driver.");
 MODULE_PARM_SYNTAX(sbirq, SNDRV_ENABLED ",allows:{{5},{7},{9},{10},{11},{12}},prefers:{5},dialog:list");
-MODULE_PARM(sbdma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(sbdma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(sbdma8, "DMA8 for CMI8330 SB driver.");
 MODULE_PARM_SYNTAX(sbdma8, SNDRV_DMA8_DESC ",prefers:{1}");
-MODULE_PARM(sbdma16, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(sbdma16, int, boot_devs, 0444);
 MODULE_PARM_DESC(sbdma16, "DMA16 for CMI8330 SB driver.");
 MODULE_PARM_SYNTAX(sbdma16, SNDRV_ENABLED ",allows:{{5},{7}},prefers:{5},dialog:list");
 
-MODULE_PARM(wssport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(wssport, long, boot_devs, 0444);
 MODULE_PARM_DESC(wssport, "Port # for CMI8330 WSS driver.");
 MODULE_PARM_SYNTAX(wssport, SNDRV_ENABLED ",allows:{{0x530},{0xe80,0xf40,0xc0}},prefers:{0x530},base:16,dialog:list");
-MODULE_PARM(wssirq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(wssirq, int, boot_devs, 0444);
 MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330 WSS driver.");
 MODULE_PARM_SYNTAX(wssirq, SNDRV_ENABLED ",allows:{{5},{7},{9},{10},{11},{12}},prefers:{11},dialog:list");
-MODULE_PARM(wssdma, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(wssdma, int, boot_devs, 0444);
 MODULE_PARM_DESC(wssdma, "DMA for CMI8330 WSS driver.");
 MODULE_PARM_SYNTAX(wssdma, SNDRV_DMA8_DESC ",prefers:{0}");
 
@@ -643,41 +644,3 @@
 
 module_init(alsa_card_cmi8330_init)
 module_exit(alsa_card_cmi8330_exit)
-
-#ifndef MODULE
-
-/* format is: snd-cmi8330=enable,index,id,isapnp,
-			  sbport,sbirq,
-			  sbdma8,sbdma16,
-			  wssport,wssirq,
-			  wssdma */
-
-static int __init alsa_card_cmi8330_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&sbport[nr_dev]) == 2 &&
-	       get_option(&str,&sbirq[nr_dev]) == 2 &&
-	       get_option(&str,&sbdma8[nr_dev]) == 2 &&
-	       get_option(&str,&sbdma16[nr_dev]) == 2 &&
-	       get_option_long(&str,&wssport[nr_dev]) == 2 &&
-	       get_option(&str,&wssirq[nr_dev]) == 2 &&
-	       get_option(&str,&wssdma[nr_dev]) == 2);
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-cmi8330=", alsa_card_cmi8330_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c
--- a/sound/isa/cs423x/cs4231.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/cs423x/cs4231.c	Tue May 18 23:41:45 2004
@@ -24,10 +24,10 @@
 #include <linux/init.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t cs4231_t
@@ -47,32 +47,33 @@
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 9,11,12,15 */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for CS4231 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for CS4231 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable CS4231 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for CS4231 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for CS4231 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for CS4231 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for CS4231 driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for CS4231 driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for CS4231 driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 
@@ -179,34 +180,3 @@
 
 module_init(alsa_card_cs4231_init)
 module_exit(alsa_card_cs4231_exit)
-
-#ifndef MODULE
-
-/* format is: snd-cs4231=enable,index,id,
-			 port,mpu_port,irq,mpu_irq,
-			 dma1,dma2 */
-
-static int __init alsa_card_cs4231_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-cs4231=", alsa_card_cs4231_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/cs423x/cs4231_lib.c b/sound/isa/cs423x/cs4231_lib.c
--- a/sound/isa/cs423x/cs4231_lib.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/cs423x/cs4231_lib.c	Tue May 18 23:41:45 2004
@@ -979,19 +979,27 @@
 	}		
 	if (chip->single_dma && chip->hardware != CS4231_HW_INTERWAVE) {
 		if (status & CS4231_PLAYBACK_IRQ) {
-			if (chip->mode & CS4231_MODE_PLAY)
-				snd_pcm_period_elapsed(chip->playback_substream);
+			if (chip->mode & CS4231_MODE_PLAY) {
+				if (chip->playback_substream)
+					snd_pcm_period_elapsed(chip->playback_substream);
+			}
 			if (chip->mode & CS4231_MODE_RECORD) {
-				snd_cs4231_overrange(chip);
-				snd_pcm_period_elapsed(chip->capture_substream);
+				if (chip->capture_substream) {
+					snd_cs4231_overrange(chip);
+					snd_pcm_period_elapsed(chip->capture_substream);
+				}
 			}
 		}
 	} else {
-		if (status & CS4231_PLAYBACK_IRQ)
-			snd_pcm_period_elapsed(chip->playback_substream);
+		if (status & CS4231_PLAYBACK_IRQ) {
+			if (chip->playback_substream)
+				snd_pcm_period_elapsed(chip->playback_substream);
+		}
 		if (status & CS4231_RECORD_IRQ) {
-			snd_cs4231_overrange(chip);
-			snd_pcm_period_elapsed(chip->capture_substream);
+			if (chip->capture_substream) {
+				snd_cs4231_overrange(chip);
+				snd_pcm_period_elapsed(chip->capture_substream);
+			}
 		}
 	}
 
@@ -1343,6 +1351,7 @@
 
 #ifdef CONFIG_PM
 
+/* lowlevel suspend callback for CS4231 */
 static void snd_cs4231_suspend(cs4231_t *chip)
 {
 	int reg;
@@ -1354,6 +1363,7 @@
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 }
 
+/* lowlevel resume callback for CS4231 */
 static void snd_cs4231_resume(cs4231_t *chip)
 {
 	int reg;
@@ -1395,25 +1405,25 @@
 #endif
 }
 
-static int snd_cs4231_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
+static int snd_cs4231_pm_suspend(snd_card_t *card, unsigned int state)
 {
-	cs4231_t *chip = snd_magic_cast(cs4231_t, dev->data, return 0);
-
-	switch (rqst) {
-	case PM_SUSPEND:
-		if (chip->suspend) {
-			snd_pcm_suspend_all(chip->pcm);
-			(*chip->suspend)(chip);
-		}
-		break;
-	case PM_RESUME:
-		if (chip->resume)
-			(*chip->resume)(chip);
-		break;
+	cs4231_t *chip = snd_magic_cast(cs4231_t, card->pm_private_data, return -EINVAL);
+	if (chip->suspend) {
+		chip->suspend(chip);
+		snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
 	}
 	return 0;
 }
 
+static int snd_cs4231_pm_resume(snd_card_t *card, unsigned int state)
+{
+	cs4231_t *chip = snd_magic_cast(cs4231_t, card->pm_private_data, return -EINVAL);
+	if (chip->resume) {
+		chip->resume(chip);
+		snd_power_change_state(card, SNDRV_CTL_POWER_D0);
+	}
+	return 0;
+}
 #endif /* CONFIG_PM */
 
 #ifdef LEGACY_SUPPORT
@@ -1441,10 +1451,6 @@
 		snd_dma_disable(chip->dma2);
 		free_dma(chip->dma2);
 	}
-#ifdef CONFIG_PM
-	if (chip->pm_dev)
-		pm_unregister(chip->pm_dev);
-#endif
 	if (chip->timer)
 		snd_device_free(chip->card, chip->timer);
 	snd_magic_kfree(chip);
@@ -1587,9 +1593,7 @@
 	/* Power Management */
 	chip->suspend = snd_cs4231_suspend;
 	chip->resume = snd_cs4231_resume;
-	chip->pm_dev = pm_register(PM_ISA_DEV, 0, snd_cs4231_pm_callback);
-	if (chip->pm_dev)
-		chip->pm_dev->data = chip;
+	snd_card_set_isa_pm_callback(card, snd_cs4231_pm_suspend, snd_cs4231_pm_resume, chip);
 #endif
 
 	*rchip = chip;
@@ -1659,7 +1663,7 @@
 #else
 #  ifdef EBUS_SUPPORT
         if (chip->ebus_flag) {
-                snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_PCI,
+                snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
                 				      chip->dev_u.pdev,
 						      64*1024, 128*1024);
         } else {
diff -Nru a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
--- a/sound/isa/cs423x/cs4236.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/cs423x/cs4236.c	Tue May 18 23:41:45 2004
@@ -23,11 +23,11 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t cs4231_t
@@ -95,46 +95,47 @@
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 9,11,12,15 */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " IDENT " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " IDENT " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable " IDENT " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(cport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(cport, long, boot_devs, 0444);
 MODULE_PARM_DESC(cport, "Control port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(cport, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(sb_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(sb_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(sb_port, "SB port # for " IDENT " driver (optional).");
 MODULE_PARM_SYNTAX(sb_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 
@@ -198,6 +199,8 @@
 	{ .id = "CSC0225", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
 	/* Intel Marlin Spike Motherboard (#2) - CS4235 */
 	{ .id = "CSC0225", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },
+	/* Unknown Intel mainboard - CS4235 */
+	{ .id = "CSC0225", .devs = { { "CSC0100" }, { "CSC0110" } } },
 	/* Genius Sound Maker 3DJ - CS4237B */
 	{ .id = "CSC0437", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
 	/* Digital PC 5000 Onboard - CS4236B */
@@ -618,48 +621,3 @@
 
 module_init(alsa_card_cs423x_init)
 module_exit(alsa_card_cs423x_exit)
-
-#ifndef MODULE
-
-/* format is: snd-cs4232=enable,index,id,isapnp,port,
-			 cport,mpu_port,fm_port,sb_port,
-			 irq,mpu_irq,dma1,dma2 */
-/* format is: snd-cs4236=enable,index,id,isapnp,port,
-			 cport,mpu_port,fm_port,sb_port,
-			 irq,mpu_irq,dma1,dma2 */
-
-static int __init alsa_card_cs423x_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&cport[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&sb_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-#ifdef CS4232
-__setup("snd-cs4232=", alsa_card_cs423x_setup);
-#else /* CS4236 */
-__setup("snd-cs4236=", alsa_card_cs423x_setup);
-#endif
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/cs423x/pc98.c b/sound/isa/cs423x/pc98.c
--- a/sound/isa/cs423x/pc98.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/cs423x/pc98.c	Tue May 18 23:41:45 2004
@@ -25,11 +25,11 @@
 #include <sound/driver.h>
 #include <linux/init.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include "sound_pc9800.h"
 
@@ -57,43 +57,44 @@
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3,5,6,7 */
 static int pc98ii[SNDRV_CARDS];				/* PC98II */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " IDENT " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " IDENT " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable " IDENT " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
 #if 0 /* NOT USED */
-MODULE_PARM(cport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(cport, long, boot_devs, 0444);
 MODULE_PARM_DESC(cport, "Control port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(cport, SNDRV_PORT12_DESC);
 #endif
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
-MODULE_PARM(pc98ii, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pc98ii, bool, boot_devs, 0444);
 MODULE_PARM_DESC(pc98ii, "Roland MPU-PC98II support.");
 MODULE_PARM_SYNTAX(pc98ii, SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -435,34 +436,3 @@
 
 module_init(alsa_card_pc98_init)
 module_exit(alsa_card_pc98_exit)
-
-#ifndef MODULE
-
-/* format is: snd-pc98-cs4232=enable,index,id,port,
-			 mpu_port,fm_port,
-			 irq,mpu_irq,dma1,dma2,pc98ii */
-
-static int __init alsa_card_pc98_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2 &&
-	       get_option(&str,&pc98ii[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-pc98-cs4232=", alsa_card_pc98_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/dt019x.c b/sound/isa/dt019x.c
--- a/sound/isa/dt019x.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/dt019x.c	Tue May 18 23:41:45 2004
@@ -26,8 +26,8 @@
 #include <linux/sched.h>
 #include <linux/wait.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
@@ -53,32 +53,33 @@
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* PnP setup */
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* PnP setup */
 static int dma8[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for DT-019X based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for DT-019X based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable DT-019X based soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for dt019x driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for dt019x driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for dt019x driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for dt019x driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for dt019x driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for dt019x driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
 
@@ -337,32 +338,3 @@
 
 module_init(alsa_card_dt019x_init)
 module_exit(alsa_card_dt019x_exit)
-
-#ifndef MODULE
-
-/* format is: snd-dt019x=enable,index,id,
-			  port,mpu_port,fm_port,
-			  irq,mpu_irq,dma8,dma8_size */
-
-static int __init alsa_card_dt019x_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-dt019x=", alsa_card_dt019x_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c
--- a/sound/isa/es1688/es1688.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/es1688/es1688.c	Tue May 18 23:41:45 2004
@@ -24,6 +24,7 @@
 #include <linux/init.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/es1688.h>
 #include <sound/mpu401.h>
@@ -31,7 +32,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -51,29 +51,30 @@
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 5,7,9,10 */
 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 5,7,9,10 */
 static int dma8[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ESx688 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ESx688 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ESx688 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for ESx688 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ESx688 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for ESx688 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for ESx688 driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for ESx688 driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
 
@@ -211,32 +212,3 @@
 
 module_init(alsa_card_es1688_init)
 module_exit(alsa_card_es1688_exit)
-
-#ifndef MODULE
-
-/* format is: snd-es1688=enable,index,id,
-			 port,mpu_port,
-			 irq,mpu_irq,
-			 dma8 */
-
-static int __init alsa_card_es1688_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-es1688=", alsa_card_es1688_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/es18xx.c b/sound/isa/es18xx.c
--- a/sound/isa/es18xx.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/es18xx.c	Tue May 18 23:41:45 2004
@@ -72,6 +72,7 @@
 #include <linux/slab.h>
 #include <linux/pnp.h>
 #include <linux/isapnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
@@ -81,7 +82,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define PFX "es18xx: "
@@ -124,7 +124,6 @@
 	spinlock_t mixer_lock;
 	spinlock_t ctrl_lock;
 #ifdef CONFIG_PM
-	struct pm_dev *pm_dev;
 	unsigned char pm_reg;
 #endif
 };
@@ -1610,12 +1609,9 @@
 
 /* Power Management support functions */
 #ifdef CONFIG_PM
-static void snd_es18xx_suspend(es18xx_t *chip)
+static int snd_es18xx_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+	es18xx_t *chip = snd_magic_cast(es18xx_t, card->pm_private_data, return -EINVAL);
 
 	snd_pcm_suspend_all(chip->pcm);
 
@@ -1626,63 +1622,23 @@
 	snd_es18xx_write(chip, ES18XX_PM, chip->pm_reg ^= ES18XX_PM_SUS);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void snd_es18xx_resume(es18xx_t *chip)
+static int snd_es18xx_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+	es18xx_t *chip = snd_magic_cast(es18xx_t, card->pm_private_data, return -EINVAL);
 
 	/* restore PM register, we won't wake till (not 0x07) i/o activity though */
 	snd_es18xx_write(chip, ES18XX_PM, chip->pm_reg ^= ES18XX_PM_FM);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-/* callback for control API */
-static int snd_es18xx_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	es18xx_t *chip = (es18xx_t *) card->power_state_private_data;
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_es18xx_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_es18xx_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
-	return 0;
-}
-
-static int snd_es18xx_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
-{
-	es18xx_t *chip = snd_magic_cast(es18xx_t, dev->data, return 0);
-
-	switch (rqst) {
-	case PM_SUSPEND:
-		snd_es18xx_suspend(chip);
-		break;
-	case PM_RESUME:
-		snd_es18xx_resume(chip);
-		break;
-	}
 	return 0;
 }
 #endif /* CONFIG_PM */
 
 static int snd_es18xx_free(es18xx_t *chip)
 {
-#ifdef CONFIG_PM
-	if (chip->pm_dev)
-		pm_unregister(chip->pm_dev);
-#endif
 	if (chip->res_port) {
 		release_resource(chip->res_port);
 		kfree_nocheck(chip->res_port);
@@ -1900,37 +1856,38 @@
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 5,7,9,10 */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ES18xx soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ES18xx soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ES18xx soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for ES18xx driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220,0x280,0x20}},prefers:{0x220},base:16,dialog:list");
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ES18xx driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0x300,0x330,0x30},{0x800,0xffe,0x2}},prefers:{0x330,0x300},base:16,dialog:combo");
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for ES18xx driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED ",allows:{{0x388},{0x800,0xffc,0x4}},prefers:{0x388},base:16,dialog:combo");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for ES18xx driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC ",prefers:{5}");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA 1 # for ES18xx driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA8_DESC ",prefers:{1}");
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_ENABLED ",allows:{{0},{1},{3},{5}},dialog:list,prefers:{0}");
 
@@ -2149,16 +2106,9 @@
 		chip->rmidi = rmidi;
 	}
 
-#ifdef CONFIG_PM
 	/* Power Management */
-	chip->pm_dev = pm_register(PM_ISA_DEV, 0, snd_es18xx_pm_callback);
-	if (chip->pm_dev) {
-		chip->pm_dev->data = chip;
-		/* set control api callback */
-		card->set_power_state = snd_es18xx_set_power_state;
-		card->power_state_private_data = chip;
-	}
-#endif
+	snd_card_set_isa_pm_callback(card, snd_es18xx_suspend, snd_es18xx_resume, chip);
+
 	if ((err = snd_card_register(card)) < 0) {
 		snd_card_free(card);
 		return err;
@@ -2283,39 +2233,3 @@
 
 module_init(alsa_card_es18xx_init)
 module_exit(alsa_card_es18xx_exit)
-
-
-#ifndef MODULE
-
-/* format is: snd-es18xx=enable,index,id,isapnp,
-			 port,mpu_port,fm_port,irq,
-			 dma1,dma2 */
-
-static int __init alsa_card_es18xx_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2);
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-es18xx=", alsa_card_es18xx_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c
--- a/sound/isa/gus/gusclassic.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/gus/gusclassic.c	Tue May 18 23:41:45 2004
@@ -24,12 +24,12 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/gus.h>
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -49,35 +49,36 @@
 				/* 0 to 31, (0.59V-4.52V or 0.389V-2.98V) */
 static int channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 24};
 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for GUS Classic soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for GUS Classic soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable GUS Classic soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for GUS Classic driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220,0x260,0x10}},dialog:list");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for GUS Classic driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_ENABLED ",allows:{{3},{5},{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for GUS Classic driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_ENABLED ",allows:{{1},{3},{5},{6},{7}},dialog:list");
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for GUS Classic driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_ENABLED ",allows:{{1},{3},{5},{6},{7}},dialog:list");
-MODULE_PARM(joystick_dac, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_dac, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for GUS Classic driver.");
 MODULE_PARM_SYNTAX(joystick_dac, SNDRV_ENABLED ",allows:{{0,31}}");
-MODULE_PARM(channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(channels, "GF1 channels for GUS Classic driver.");
 MODULE_PARM_SYNTAX(channels,  SNDRV_ENABLED ",allows:{{14,32}}");
-MODULE_PARM(pcm_channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_channels, "Reserved PCM channels for GUS Classic driver.");
 MODULE_PARM_SYNTAX(pcm_channels, SNDRV_ENABLED ",allows:{{2,16}}");
 
@@ -269,35 +270,3 @@
 
 module_init(alsa_card_gusclassic_init)
 module_exit(alsa_card_gusclassic_exit)
-
-#ifndef MODULE
-
-/* format is: snd-gusclassic=enable,index,id,
-			     port,irq,
-			     dma1,dma2,
-			     joystick_dac,
-			     channels,pcm_channels */
-
-static int __init alsa_card_gusclassic_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2 &&
-	       get_option(&str,&joystick_dac[nr_dev]) == 2 &&
-	       get_option(&str,&channels[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_channels[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-gusclassic=", alsa_card_gusclassic_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c
--- a/sound/isa/gus/gusextreme.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/gus/gusextreme.c	Tue May 18 23:41:45 2004
@@ -24,6 +24,7 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/gus.h>
 #include <sound/es1688.h>
@@ -32,7 +33,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -56,47 +56,48 @@
 				/* 0 to 31, (0.59V-4.52V or 0.389V-2.98V) */
 static int channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 24};
 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for GUS Extreme soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for GUS Extreme soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable GUS Extreme soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220,0x260,0x20}},dialog:list");
-MODULE_PARM(gf1_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(gf1_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(gf1_port, "GF1 port # for GUS Extreme driver (optional).");
 MODULE_PARM_SYNTAX(gf1_port, SNDRV_ENABLED ",allows:{{0x210,0x270,0x10}},dialog:list");
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0x300,0x320,0x10}},dialog:list");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_ENABLED ",allows:{{5},{7},{9},{10}},dialog:list");
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_ENABLED ",allows:{{5},{7},{9},{10}},dialog:list");
-MODULE_PARM(gf1_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(gf1_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(gf1_irq, "GF1 IRQ # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(gf1_irq, SNDRV_ENABLED ",allows:{{2},{3},{5},{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "GF1 DMA # for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(joystick_dac, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_dac, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(joystick_dac, SNDRV_ENABLED ",allows:{{0,31}}");
-MODULE_PARM(channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(channels, "GF1 channels for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(channels, SNDRV_ENABLED ",allows:{{14,32}}");
-MODULE_PARM(pcm_channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_channels, "Reserved PCM channels for GUS Extreme driver.");
 MODULE_PARM_SYNTAX(pcm_channels, SNDRV_ENABLED ",allows:{{2,16}}");
 
@@ -387,37 +388,3 @@
 
 module_init(alsa_card_gusextreme_init)
 module_exit(alsa_card_gusextreme_exit)
-
-#ifndef MODULE
-
-/* format is: snd-gusextreme=enable,index,id,
-			     port,gf1_port,mpu_port,
-			     irq,gf1_irq,mpu_irq,
-			     dma8,dma1,
-			     joystick_dac,
-			     channels,pcm_channels */
-
-static int __init alsa_card_gusextreme_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&gf1_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&gf1_irq[nr_dev]) == 2 &&
-	       get_option(&str,&mpu_irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-gusextreme=", alsa_card_gusextreme_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
--- a/sound/isa/gus/gusmax.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/gus/gusmax.c	Tue May 18 23:41:45 2004
@@ -24,13 +24,13 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/gus.h>
 #include <sound/cs4231.h>
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -50,35 +50,36 @@
 				/* 0 to 31, (0.59V-4.52V or 0.389V-2.98V) */
 static int channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 24};
 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for GUS MAX soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for GUS MAX soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable GUS MAX soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for GUS MAX driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220},{0x230},{0x240},{0x250},{0x260}},dialog:list");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for GUS MAX driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_ENABLED ",allows:{{3},{5},{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for GUS MAX driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for GUS MAX driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
-MODULE_PARM(joystick_dac, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_dac, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for GUS MAX driver.");
 MODULE_PARM_SYNTAX(joystick_dac, SNDRV_ENABLED ",allows:{{0,31}}");
-MODULE_PARM(channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(channels, "Used GF1 channels for GUS MAX driver.");
 MODULE_PARM_SYNTAX(channels, SNDRV_ENABLED ",allows:{{14,32}}");
-MODULE_PARM(pcm_channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_channels, "Reserved PCM channels for GUS MAX driver.");
 MODULE_PARM_SYNTAX(pcm_channels, SNDRV_ENABLED ",allows:{{2,16}}");
 
@@ -409,35 +410,3 @@
 
 module_init(alsa_card_gusmax_init)
 module_exit(alsa_card_gusmax_exit)
-
-#ifndef MODULE
-
-/* format is: snd-gusmax=enable,index,id,
-			 port,irq,
-			 dma1,dma2,
-			 joystick_dac,
-			 channels,pcm_channels */
-
-static int __init alsa_card_gusmax_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2 &&
-	       get_option(&str,&joystick_dac[nr_dev]) == 2 &&
-	       get_option(&str,&channels[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_channels[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-gusmax=", alsa_card_gusmax_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
--- a/sound/isa/gus/interwave.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/gus/interwave.c	Tue May 18 23:41:45 2004
@@ -28,6 +28,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/gus.h>
 #include <sound/cs4231.h>
@@ -37,7 +38,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -73,46 +73,47 @@
 static int midi[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 2};
 static int effect[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for InterWave soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for InterWave soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable InterWave soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for InterWave driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x210,0x260,0x10}},dialog:list");
 #ifdef SNDRV_STB
-MODULE_PARM(port_tc, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port_tc, long, boot_devs, 0444);
 MODULE_PARM_DESC(port_tc, "Tone control (TEA6330T - i2c bus) port # for InterWave driver.");
 MODULE_PARM_SYNTAX(port_tc, SNDRV_ENABLED ",allows:{{0x350,0x380,0x10}},dialog:list");
 #endif
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for InterWave driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_ENABLED ",allows:{{3},{5},{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for InterWave driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for InterWave driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
-MODULE_PARM(joystick_dac, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_dac, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for InterWave driver.");
 MODULE_PARM_SYNTAX(joystick_dac, SNDRV_ENABLED ",allows:{{0,31}}");
-MODULE_PARM(midi, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(midi, int, boot_devs, 0444);
 MODULE_PARM_DESC(midi, "MIDI UART enable for InterWave driver.");
 MODULE_PARM_SYNTAX(midi, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
-MODULE_PARM(pcm_channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_channels, "Reserved PCM channels for InterWave driver.");
 MODULE_PARM_SYNTAX(pcm_channels, SNDRV_ENABLED ",allows:{{2,16}}");
-MODULE_PARM(effect, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(effect, int, boot_devs, 0444);
 MODULE_PARM_DESC(effect, "Effects enable for InterWave driver.");
 MODULE_PARM_SYNTAX(effect, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
 
@@ -985,49 +986,3 @@
 
 module_init(alsa_card_interwave_init)
 module_exit(alsa_card_interwave_exit)
-
-#ifndef MODULE
-
-/* format is: snd-interwave=enable,index,id,isapnp,
-			    port[,port_tc],irq,
-			    dma1,dma2,
-			    joystick_dac,midi,
-			    pcm_channels,effect */
-
-static int __init alsa_card_interwave_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-#ifdef SNDRV_STB
-	       get_option_long(&str,&port_tc[nr_dev]) == 2 &&
-#endif
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2 &&
-	       get_option(&str,&joystick_dac[nr_dev]) == 2 &&
-	       get_option(&str,&midi[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_channels[nr_dev]) == 2 &&
-	       get_option(&str,&effect[nr_dev]) == 2);
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-#ifndef SNDRV_STB
-__setup("snd-interwave=", alsa_card_interwave_setup);
-#else
-__setup("snd-interwave-stb=", alsa_card_interwave_setup);
-#endif
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
--- a/sound/isa/opl3sa2.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/opl3sa2.c	Tue May 18 23:41:45 2004
@@ -25,11 +25,11 @@
 #include <linux/pm.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -59,46 +59,47 @@
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 1,3,5,6,7 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 1,3,5,6,7 */
 static int opl3sa3_ymode[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0 };   /* 0,1,2,3 */ /*SL Added*/
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for OPL3-SA soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for OPL3-SA soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable OPL3-SA soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0xf86},{0x370},{0x100}},dialog:list");
-MODULE_PARM(sb_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(sb_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(sb_port, "SB port # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(sb_port, SNDRV_ENABLED ",allows:{{0x220},{0x240},{0x260}},dialog:list");
-MODULE_PARM(wss_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(wss_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(wss_port, "WSS port # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(wss_port, SNDRV_ENABLED ",allows:{{0x530},{0xe80},{0xf40},{0x604}},dialog:list");
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED ",allows:{{0x388}},dialog:list");
-MODULE_PARM(midi_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(midi_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(midi_port, "MIDI port # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(midi_port, SNDRV_ENABLED ",allows:{{0x330},{0x300}},dialog:list");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_ENABLED ",allows:{{0},{1},{3},{5},{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_ENABLED ",allows:{{1},{3},{5},{6},{7}},dialog:list");
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for OPL3-SA driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_ENABLED ",allows:{{1},{3},{5},{6},{7}},dialog:list");
-MODULE_PARM(opl3sa3_ymode, "1-" __MODULE_STRING(SNDRV_CARDS) "i"); /* SL Added */
+module_param_array(opl3sa3_ymode, int, boot_devs, 0444);
 MODULE_PARM_DESC(opl3sa3_ymode, "Speaker size selection for 3D Enhancement mode: Desktop/Large Notebook/Small Notebook/HiFi.");
 MODULE_PARM_SYNTAX(opl3sa3_ymode, SNDRV_ENABLED ",allows:{{0,3}},dialog:list");  /* SL Added */
 
@@ -151,7 +152,6 @@
 	snd_kcontrol_t *master_switch;
 	snd_kcontrol_t *master_volume;
 #ifdef CONFIG_PM
-	struct pm_dev *pm_dev;
 	void (*cs4231_suspend)(cs4231_t *);
 	void (*cs4231_resume)(cs4231_t *);
 #endif
@@ -168,6 +168,8 @@
 	{ .id = "YMH0030", .devs = { { "YMH0021" } } },
 	/* Yamaha OPL3-SA2 */
 	{ .id = "YMH0800", .devs = { { "YMH0021" } } },
+	/* Yamaha OPL3-SA2 */
+	{ .id = "YMH0801", .devs = { { "YMH0021" } } },
 	/* NeoMagic MagicWave 3DX */
 	{ .id = "NMX2200", .devs = { { "YMH2210" } } },
 	/* --- */
@@ -547,12 +549,9 @@
 
 /* Power Management support functions */
 #ifdef CONFIG_PM
-static void snd_opl3sa2_suspend(opl3sa2_t *chip)
+static int snd_opl3sa2_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+	opl3sa2_t *chip = snd_magic_cast(opl3sa2_t, card->pm_private_data, return -EINVAL);
 
 	snd_pcm_suspend_all(chip->cs4231->pcm); /* stop before saving regs */
 	chip->cs4231_suspend(chip->cs4231);
@@ -561,16 +560,14 @@
 	snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void snd_opl3sa2_resume(opl3sa2_t *chip)
+static int snd_opl3sa2_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	opl3sa2_t *chip = snd_magic_cast(opl3sa2_t, card->pm_private_data, return -EINVAL);
 	int i;
 
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
-
 	/* power up */
 	snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D0);
 
@@ -587,43 +584,8 @@
 	chip->cs4231_resume(chip->cs4231);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-/* callback for control API */
-static int snd_opl3sa2_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	opl3sa2_t *chip = (opl3sa2_t *) card->power_state_private_data;
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_opl3sa2_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_opl3sa2_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
-
-static int snd_opl3sa2_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
-{
-	opl3sa2_t *chip = snd_magic_cast(opl3sa2_t, dev->data, return 0);
-
-	switch (rqst) {
-	case PM_SUSPEND:
-		snd_opl3sa2_suspend(chip);
-		break;
-	case PM_RESUME:
-		snd_opl3sa2_resume(chip);
-		break;
-	}
-	return 0;
-}
-
 #endif /* CONFIG_PM */
 
 #ifdef CONFIG_PNP
@@ -688,10 +650,6 @@
 
 static int snd_opl3sa2_free(opl3sa2_t *chip)
 {
-#ifdef CONFIG_PM
-	if (chip->pm_dev)
-		pm_unregister(chip->pm_dev);
-#endif
 	if (chip->irq >= 0)
 		free_irq(chip->irq, (void *)chip);
 	if (chip->res_port) {
@@ -816,22 +774,12 @@
 			goto __error;
 	}
 #ifdef CONFIG_PM
-	/* Power Management */
-	chip->pm_dev = pm_register(PM_ISA_DEV, 0, snd_opl3sa2_pm_callback);
-	if (chip->pm_dev) {
-		chip->pm_dev->data = chip;
-		/* remember callbacks for cs4231 - they are called inside
-		 * opl3sa2 pm callback
-		 */
-		chip->cs4231_suspend = chip->cs4231->suspend;
-		chip->cs4231_resume = chip->cs4231->resume;
-		/* now clear callbacks for cs4231 */
-		chip->cs4231->suspend = NULL;
-		chip->cs4231->resume = NULL;
-		/* set control api callback */
-		card->set_power_state = snd_opl3sa2_set_power_state;
-		card->power_state_private_data = chip;
-	}
+	chip->cs4231_suspend = chip->cs4231->suspend;
+	chip->cs4231_resume = chip->cs4231->resume;
+	/* now clear callbacks for cs4231 */
+	chip->cs4231->suspend = NULL;
+	chip->cs4231->resume = NULL;
+	snd_card_set_isa_pm_callback(card, snd_opl3sa2_suspend, snd_opl3sa2_resume, chip);
 #endif
 
 	sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d",
@@ -932,42 +880,3 @@
 
 module_init(alsa_card_opl3sa2_init)
 module_exit(alsa_card_opl3sa2_exit)
-
-#ifndef MODULE
-
-/* format is: snd-opl3sa2=enable,index,id,isapnp,
-			  port,sb_port,wss_port,fm_port,
-			  midi_port,irq,dma1,dma2,
-			  opl3sa3_ymode */
-
-static int __init alsa_card_opl3sa2_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&sb_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&wss_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&midi_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2 &&
-	       get_option(&str,&opl3sa3_ymode[nr_dev]) == 2);
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-opl3sa2=", alsa_card_opl3sa2_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
--- a/sound/isa/opti9xx/opti92x-ad1848.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/opti9xx/opti92x-ad1848.c	Tue May 18 23:41:45 2004
@@ -30,6 +30,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #ifdef CS4231
 #include <sound/cs4231.h>
@@ -48,7 +49,6 @@
 #endif
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Massimo Piccioni <dafastidio@libero.it>");
@@ -84,38 +84,38 @@
 static int dma2 = SNDRV_DEFAULT_DMA1;		/* 0,1,3 */
 #endif	/* CS4231 || OPTi93X */
 
-MODULE_PARM(index, "i");
+module_param(index, int, 0444);
 MODULE_PARM_DESC(index, "Index value for opti9xx based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "s");
+module_param(id, charp, 0444);
 MODULE_PARM_DESC(id, "ID string for opti9xx based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-//MODULE_PARM(enable, "i");
+//module_param(enable, bool, 0444);
 //MODULE_PARM_DESC(enable, "Enable opti9xx soundcard.");
 //MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(isapnp, "i");
+module_param(isapnp, bool, 0444);
 MODULE_PARM_DESC(isapnp, "Enable ISA PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
-MODULE_PARM(port, "l");
+module_param(port, long, 0444);
 MODULE_PARM_DESC(port, "WSS port # for opti9xx driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT_DESC);
-MODULE_PARM(mpu_port, "l");
+module_param(mpu_port, long, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for opti9xx driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT_DESC);
-MODULE_PARM(fm_port, "l");
+module_param(fm_port, long, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for opti9xx driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT_DESC);
-MODULE_PARM(irq, "i");
+module_param(irq, int, 0444);
 MODULE_PARM_DESC(irq, "WSS irq # for opti9xx driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(mpu_irq, "i");
+module_param(mpu_irq, int, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for opti9xx driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma1, "i");
+module_param(dma1, int, 0444);
 MODULE_PARM_DESC(dma1, "1st dma # for opti9xx driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
 #if defined(CS4231) || defined(OPTi93X)
-MODULE_PARM(dma2, "i");
+module_param(dma2, int, 0444);
 MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
 #endif	/* CS4231 || OPTi93X */
@@ -602,7 +602,11 @@
 #endif	/* CS4231 || OPTi93X */
 
 	spin_lock_irqsave(&chip->lock, flags);
+#ifndef OPTi93X
+	 outb(irq_bits << 3 | dma_bits, chip->wss_base);
+#else /* OPTi93X */
 	snd_opti9xx_write(chip, OPTi9XX_MC_REG(3), (irq_bits << 3 | dma_bits));
+#endif /* OPTi93X */
 	spin_unlock_irqrestore(&chip->lock, flags);
 
 __skip_resources:
@@ -2253,47 +2257,3 @@
 
 module_init(alsa_card_opti9xx_init)
 module_exit(alsa_card_opti9xx_exit)
-
-#ifndef MODULE
-
-/* format is: snd-opti9xx=enable,index,id,isapnp,
-			  port,mpu_port,fm_port,
-			  irq,mpu_irq,
-			  dma1,[dma2] */
-
-static int __init alsa_card_opti9xx_setup(char *str)
-{
-	int __attribute__ ((__unused__)) enable = 1;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-
-	(void)(get_option(&str,&enable) == 2 &&
-	       get_option(&str,&index) == 2 &&
-	       get_id(&str,&id) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port) == 2 &&
-	       get_option_long(&str,&mpu_port) == 2 &&
-	       get_option_long(&str,&fm_port) == 2 &&
-	       get_option(&str,&irq) == 2 &&
-	       get_option(&str,&mpu_irq) == 2 &&
-	       get_option(&str,&dma1) == 2
-#if defined(CS4231) || defined(OPTi93X)
-	       &&
-	       get_option(&str,&dma2) == 2
-#endif
-	       );
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp = pnp;
-#endif
-	return 1;
-}
-
-#if defined(OPTi93X)
-__setup("snd-opti93x=", alsa_card_opti9xx_setup);
-#elif defined(CS4231)
-__setup("snd-opti92x-cs4231=", alsa_card_opti9xx_setup);
-#else
-__setup("snd-opti92x-ad1848=", alsa_card_opti9xx_setup);
-#endif
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/sb/emu8000_patch.c b/sound/isa/sb/emu8000_patch.c
--- a/sound/isa/sb/emu8000_patch.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/sb/emu8000_patch.c	Tue May 18 23:41:45 2004
@@ -21,11 +21,11 @@
 
 #include "emu8000_local.h"
 #include <asm/uaccess.h>
+#include <linux/moduleparam.h>
 
-MODULE_PARM(emu8000_reset_addr, "i");
+static int emu8000_reset_addr = 0;
+module_param(emu8000_reset_addr, int, 0444);
 MODULE_PARM_DESC(emu8000_reset_addr, "reset write address at each time (makes slowdown)");
-
-int emu8000_reset_addr = 0;
 
 
 /*
diff -Nru a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c
--- a/sound/isa/sb/es968.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/sb/es968.c	Tue May 18 23:41:45 2004
@@ -24,8 +24,8 @@
 #include <linux/init.h>
 #include <linux/time.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/sb.h>
 
@@ -45,23 +45,24 @@
 static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;	/* PnP setup */
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* Pnp setup */
 static int dma8[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* PnP setup */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for es968 based soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for es968 based soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable es968 based soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for es968 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for es968 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for es968 driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
 
@@ -242,28 +243,3 @@
 
 module_init(alsa_card_es968_init)
 module_exit(alsa_card_es968_exit)
-
-#ifndef MODULE
-
-/* format is: snd-es968=enable,index,id,
-			port,irq,dma1 */
-
-static int __init alsa_card_es968_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-es968=", alsa_card_es968_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
--- a/sound/isa/sb/sb16.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/sb/sb16.c	Tue May 18 23:41:45 2004
@@ -24,6 +24,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/sb.h>
 #include <sound/sb16_csp.h>
@@ -34,7 +35,6 @@
 #define SNDRV_LEGACY_AUTO_PROBE
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t sb_t
@@ -92,54 +92,55 @@
 #ifdef SNDRV_SBAWE_EMU8000
 static int seq_ports[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 4};
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for SB16 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED ",allows:{{0x220},{0x240},{0x260},{0x280}},dialog:list");
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port # for SB16 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0x330},{0x300}},dialog:list");
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port # for SB16 PnP driver.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED ",allows:{{0x388},{0x38c},{0x390},{0x394}},dialog:list");
 #ifdef SNDRV_SBAWE_EMU8000
-MODULE_PARM(awe_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(awe_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(awe_port, "AWE port # for SB16 PnP driver.");
 MODULE_PARM_SYNTAX(awe_port, SNDRV_ENABLED ",allows:{{0x620},{0x640},{0x660},{0x680}},dialog:list");
 #endif
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for SB16 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for SB16 driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
-MODULE_PARM(dma16, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma16, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma16, "16-bit DMA # for SB16 driver.");
 MODULE_PARM_SYNTAX(dma16, SNDRV_DMA16_DESC);
-MODULE_PARM(mic_agc, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mic_agc, int, boot_devs, 0444);
 MODULE_PARM_DESC(mic_agc, "Mic Auto-Gain-Control switch.");
 MODULE_PARM_SYNTAX(mic_agc, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
 #ifdef CONFIG_SND_SB16_CSP
-MODULE_PARM(csp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(csp, int, boot_devs, 0444);
 MODULE_PARM_DESC(csp, "ASP/CSP chip support.");
 MODULE_PARM_SYNTAX(csp, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
 #endif
 #ifdef SNDRV_SBAWE_EMU8000
-MODULE_PARM(seq_ports, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(seq_ports, int, boot_devs, 0444);
 MODULE_PARM_DESC(seq_ports, "Number of sequencer ports for WaveTable synth.");
 MODULE_PARM_SYNTAX(seq_ports, SNDRV_ENABLED ",allows:{{0,8}},skill:advanced");
 #endif
@@ -691,60 +692,3 @@
 
 module_init(alsa_card_sb16_init)
 module_exit(alsa_card_sb16_exit)
-
-#ifndef MODULE
-
-/* format is: snd-sb16=enable,index,id,isapnp,
-		       port,mpu_port,fm_port,
-		       irq,dma8,dma16,
-		       mic_agc,csp,
-		       [awe_port,seq_ports] */
-
-static int __init alsa_card_sb16_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-	int __attribute__ ((__unused__)) pnp = INT_MAX;
-	int __attribute__ ((__unused__)) xcsp = INT_MAX;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pnp) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2 &&
-	       get_option(&str,&dma16[nr_dev]) == 2 &&
-	       get_option(&str,&mic_agc[nr_dev]) == 2
-#ifdef CONFIG_SND_SB16_CSP
-	       &&
-	       get_option(&str,&xcsp) == 2
-#endif
-#ifdef SNDRV_SBAWE_EMU8000
-	       &&
-	       get_option_long(&str,&awe_port[nr_dev]) == 2 &&
-	       get_option(&str,&seq_ports[nr_dev]) == 2
-#endif
-	       );
-#ifdef CONFIG_PNP
-	if (pnp != INT_MAX)
-		isapnp[nr_dev] = pnp;
-#endif
-#ifdef CONFIG_SND_SB16_CSP
-	if (xcsp != INT_MAX)
-		csp[nr_dev] = xcsp;
-#endif
-	nr_dev++;
-	return 1;
-}
-
-#ifndef SNDRV_SBAWE_EMU8000
-__setup("snd-sb16=", alsa_card_sb16_setup);
-#else
-__setup("snd-sbawe=", alsa_card_sb16_setup);
-#endif
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
--- a/sound/isa/sb/sb8.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/sb/sb8.c	Tue May 18 23:41:45 2004
@@ -23,11 +23,11 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/ioport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/sb.h>
 #include <sound/opl3.h>
 #define SNDRV_LEGACY_AUTO_PROBE
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t sb_t
@@ -44,23 +44,24 @@
 static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;	/* 0x220,0x240,0x260 */
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 5,7,9,10 */
 static int dma8[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 1,3 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Sound Blaster soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Sound Blaster soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Sound Blaster soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for SB8 driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_PORT12_DESC);
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for SB8 driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
-MODULE_PARM(dma8, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma8, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma8, "8-bit DMA # for SB8 driver.");
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);
 
@@ -230,28 +231,3 @@
 
 module_init(alsa_card_sb8_init)
 module_exit(alsa_card_sb8_exit)
-
-#ifndef MODULE
-
-/* format is: snd-sb8=enable,index,id,
-		      port,irq,dma8 */
-
-static int __init alsa_card_sb8_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&port[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma8[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-sb8=", alsa_card_sb8_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/sgalaxy.c b/sound/isa/sgalaxy.c
--- a/sound/isa/sgalaxy.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/sgalaxy.c	Tue May 18 23:41:45 2004
@@ -27,13 +27,13 @@
 #include <linux/delay.h>
 #include <linux/time.h>
 #include <linux/irq.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/sb.h>
 #include <sound/ad1848.h>
 #include <sound/control.h>
 #define SNDRV_LEGACY_FIND_FREE_IRQ
 #define SNDRV_LEGACY_FIND_FREE_DMA
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Christopher Butler <chrisb@sandy.force9.co.uk>");
@@ -49,23 +49,24 @@
 static long wssport[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;	/* 0x530,0xe80,0xf40,0x604 */
 static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;	/* 7,9,10,11 */
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	/* 0,1,3 */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Sound Galaxy soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Sound Galaxy soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(sbport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(sbport, long, boot_devs, 0444);
 MODULE_PARM_DESC(sbport, "Port # for Sound Galaxy SB driver.");
 MODULE_PARM_SYNTAX(sbport, SNDRV_ENABLED ",allows:{{0x220},{0x240}},dialog:list");
-MODULE_PARM(wssport, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(wssport, long, boot_devs, 0444);
 MODULE_PARM_DESC(wssport, "Port # for Sound Galaxy WSS driver.");
 MODULE_PARM_SYNTAX(wssport, SNDRV_ENABLED ",allows:{{0x530},{0xe80},{0xf40},{0x604}},dialog:list");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for Sound Galaxy driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_ENABLED ",allows:{{7},{9},{10},{11}},dialog:list");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for Sound Galaxy driver.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA8_DESC);
 
@@ -327,30 +328,3 @@
 
 module_init(alsa_card_sgalaxy_init)
 module_exit(alsa_card_sgalaxy_exit)
-
-#ifndef MODULE
-
-/* format is: snd-sgalaxy=enable,index,id,
-			  sbport,wssport,
-			  irq,dma1 */
-
-static int __init alsa_card_sgalaxy_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&sbport[nr_dev]) == 2 &&
-	       get_option_long(&str,&wssport[nr_dev]) == 2 &&
-	       get_option(&str,&irq[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-sgalaxy=", alsa_card_sgalaxy_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/sscape.c b/sound/isa/sscape.c
--- a/sound/isa/sscape.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/sscape.c	Tue May 18 23:41:45 2004
@@ -26,12 +26,12 @@
 #include <linux/delay.h>
 #include <linux/pnp.h>
 #include <linux/spinlock.h>
+#include <linux/moduleparam.h>
 #include <asm/dma.h>
 #include <sound/core.h>
 #include <sound/hwdep.h>
 #include <sound/cs4231.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <sound/sscape_ioctl.h>
@@ -49,28 +49,29 @@
 static int irq[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_IRQ;
 static int mpu_irq[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_IRQ;
 static int dma[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_DMA;
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index number for SoundScape soundcard");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
 
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "Description for SoundScape card");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
 
-MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(port, long, boot_devs, 0444);
 MODULE_PARM_DESC(port, "Port # for SoundScape driver.");
 MODULE_PARM_SYNTAX(port, SNDRV_ENABLED);
 
-MODULE_PARM(irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq, "IRQ # for SoundScape driver.");
 MODULE_PARM_SYNTAX(irq, SNDRV_IRQ_DESC);
 
-MODULE_PARM(mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_irq, "MPU401 IRQ # for SoundScape driver.");
 MODULE_PARM_SYNTAX(mpu_irq, SNDRV_IRQ_DESC);
 
-MODULE_PARM(dma, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma, "DMA # for SoundScape driver.");
 MODULE_PARM_SYNTAX(dma, SNDRV_DMA8_DESC);
   
@@ -1531,30 +1532,3 @@
 
 module_init(sscape_init);
 module_exit(sscape_exit);
-
-#ifndef MODULE
-
-/* format is: snd-sscape=index,id,port,irq,mpu_irq,dma */
-
-static int __init builtin_sscape_setup(char *str)
-{
-	static unsigned __initdata nr_dev;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-
-	(void)((get_option(&str, &index[nr_dev]) == 2) &&
-	       (get_id(&str, &id[nr_dev]) == 2) &&
-	       (get_option_long(&str, &port[nr_dev]) == 2) &&
-	       (get_option(&str, &irq[nr_dev]) == 2) &&
-	       (get_option(&str, &mpu_irq[nr_dev]) == 2) &&
-	       (get_option(&str, &dma[nr_dev]) == 2)); 
- 
-	++nr_dev;
-	return 1;
-}
-
-__setup("snd-sscape=", builtin_sscape_setup);
-
-#endif
-
diff -Nru a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
--- a/sound/isa/wavefront/wavefront.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/wavefront/wavefront.c	Tue May 18 23:41:45 2004
@@ -24,8 +24,8 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/pnp.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/opl3.h>
 #include <sound/snd_wavefront.h>
@@ -52,49 +52,50 @@
 static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	    /* 0,1,3,5,6,7 */
 static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;	    /* 0,1,3,5,6,7 */
 static int use_cs4232_midi[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0}; 
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for WaveFront soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for WaveFront soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable WaveFront soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(isapnp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(isapnp, "ISA PnP detection for WaveFront soundcards.");
 MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
 #endif
-MODULE_PARM(cs4232_pcm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(cs4232_pcm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(cs4232_pcm_port, "Port # for CS4232 PCM interface.");
 MODULE_PARM_SYNTAX(cs4232_pcm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(cs4232_pcm_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(cs4232_pcm_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(cs4232_pcm_irq, "IRQ # for CS4232 PCM interface.");
 MODULE_PARM_SYNTAX(cs4232_pcm_irq, SNDRV_ENABLED ",allows:{{5},{7},{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(dma1, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma1, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma1, "DMA1 # for CS4232 PCM interface.");
 MODULE_PARM_SYNTAX(dma1, SNDRV_DMA_DESC);
-MODULE_PARM(dma2, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dma2, int, boot_devs, 0444);
 MODULE_PARM_DESC(dma2, "DMA2 # for CS4232 PCM interface.");
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
-MODULE_PARM(cs4232_mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(cs4232_mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(cs4232_mpu_port, "port # for CS4232 MPU-401 interface.");
 MODULE_PARM_SYNTAX(cs4232_mpu_port, SNDRV_PORT12_DESC);
-MODULE_PARM(cs4232_mpu_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(cs4232_mpu_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(cs4232_mpu_irq, "IRQ # for CS4232 MPU-401 interface.");
 MODULE_PARM_SYNTAX(cs4232_mpu_irq, SNDRV_ENABLED ",allows:{{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(ics2115_irq, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ics2115_irq, int, boot_devs, 0444);
 MODULE_PARM_DESC(ics2115_irq, "IRQ # for ICS2115.");
 MODULE_PARM_SYNTAX(ics2115_irq, SNDRV_ENABLED ",allows:{{9},{11},{12},{15}},dialog:list");
-MODULE_PARM(ics2115_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(ics2115_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(ics2115_port, "Port # for ICS2115.");
 MODULE_PARM_SYNTAX(ics2115_port, SNDRV_PORT12_DESC);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port #.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_PORT12_DESC);
-MODULE_PARM(use_cs4232_midi, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(use_cs4232_midi, bool, boot_devs, 0444);
 MODULE_PARM_DESC(use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)");
 MODULE_PARM_SYNTAX(use_cs4232_midi, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -731,41 +732,3 @@
 
 module_init(alsa_card_wavefront_init)
 module_exit(alsa_card_wavefront_exit)
-
-#ifndef MODULE
-
-/* format is: snd-wavefront=enable,index,id,isapnp,
-			    cs4232_pcm_port,cs4232_pcm_irq,
-			    cs4232_mpu_port,cs4232_mpu_irq,
-			    ics2115_port,ics2115_irq,
-			    fm_port,
-			    dma1,dma2,
-			    use_cs4232_midi */
-
-static int __init alsa_card_wavefront_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&isapnp[nr_dev]) == 2 &&
-	       get_option_long(&str,&cs4232_pcm_port[nr_dev]) == 2 &&
-	       get_option(&str,&cs4232_pcm_irq[nr_dev]) == 2 &&
-	       get_option_long(&str,&cs4232_mpu_port[nr_dev]) == 2 &&
-	       get_option(&str,&cs4232_mpu_irq[nr_dev]) == 2 &&
-	       get_option_long(&str,&ics2115_port[nr_dev]) == 2 &&
-	       get_option(&str,&ics2115_irq[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option(&str,&dma1[nr_dev]) == 2 &&
-	       get_option(&str,&dma2[nr_dev]) == 2 &&
-	       get_option(&str,&use_cs4232_midi[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-wavefront=", alsa_card_wavefront_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/isa/wavefront/wavefront_synth.c b/sound/isa/wavefront/wavefront_synth.c
--- a/sound/isa/wavefront/wavefront_synth.c	Tue May 18 23:41:45 2004
+++ b/sound/isa/wavefront/wavefront_synth.c	Tue May 18 23:41:45 2004
@@ -27,6 +27,7 @@
 #include <linux/delay.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/snd_wavefront.h>
 #include <sound/initval.h>
@@ -83,25 +84,25 @@
 int osrun_time = 10;       /* time in seconds we wait for the OS to
 			      start running.
 			   */
-MODULE_PARM(wf_raw,"i");
+module_param(wf_raw, int, 0444);
 MODULE_PARM_DESC(wf_raw, "if non-zero, assume that we need to boot the OS");
-MODULE_PARM(fx_raw,"i");
+module_param(fx_raw, int, 0444);
 MODULE_PARM_DESC(fx_raw, "if non-zero, assume that the FX process needs help");
-MODULE_PARM(debug_default,"i");
+module_param(debug_default, int, 0444);
 MODULE_PARM_DESC(debug_default, "debug parameters for card initialization");
-MODULE_PARM(wait_usecs,"i");
+module_param(wait_usecs, int, 0444);
 MODULE_PARM_DESC(wait_usecs, "how long to wait without sleeping, usecs");
-MODULE_PARM(sleep_interval,"i");
+module_param(sleep_interval, int, 0444);
 MODULE_PARM_DESC(sleep_interval, "how long to sleep when waiting for reply");
-MODULE_PARM(sleep_tries,"i");
+module_param(sleep_tries, int, 0444);
 MODULE_PARM_DESC(sleep_tries, "how many times to try sleeping during a wait");
-MODULE_PARM(ospath,"s");
+module_param(ospath, charp, 0444);
 MODULE_PARM_DESC(ospath, "full pathname to processed ICS2115 OS firmware");
-MODULE_PARM(reset_time,"i");
+module_param(reset_time, int, 0444);
 MODULE_PARM_DESC(reset_time, "how long to wait for a reset to take effect");
-MODULE_PARM(ramcheck_time,"i");
+module_param(ramcheck_time, int, 0444);
 MODULE_PARM_DESC(ramcheck_time, "how many seconds to wait for the RAM test");
-MODULE_PARM(osrun_time,"i");
+module_param(osrun_time, int, 0444);
 MODULE_PARM_DESC(osrun_time, "how many seconds to wait for the ICS2115 OS");
 
 /* if WF_DEBUG not defined, no run-time debugging messages will
diff -Nru a/sound/parisc/harmony.c b/sound/parisc/harmony.c
--- a/sound/parisc/harmony.c	Tue May 18 23:41:45 2004
+++ b/sound/parisc/harmony.c	Tue May 18 23:41:45 2004
@@ -56,11 +56,7 @@
  * also controls for enabling/disabling internal speaker and line
  * input.
  *
- * Buffers used by this driver are all DMA consistent. Since harmony is
- * not "real" pci device, we use a fake struct pci_dev for
- * pci_alloc_consistent().
- * (note that some machines -712 for ex.- don't implement DMA consistent
- * memory, so we will need to use kmalloc instead)
+ * Buffers used by this driver are all DMA consistent.
  */
 
 #include <linux/delay.h>
@@ -70,11 +66,11 @@
 #include <linux/slab.h>
 #include <linux/time.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/rawmidi.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/info.h>
 #include <asm/hardware.h>
@@ -100,16 +96,14 @@
 #define MAX_PCM_SUBSTREAMS	4
 #define MAX_MIDI_DEVICES	0
 
-#define BUFFER_SIZE			4096
-#define MAX_BUFS			10
+#define HARMONY_BUF_SIZE	4096
+#define MAX_BUFS		10
+#define MAX_BUFFER_SIZE		(MAX_BUFS * HARMONY_BUF_SIZE)
 
 /* number of silence & graveyard buffers */
 #define GRAVEYARD_BUFS		3
 #define SILENCE_BUFS		3
 
-#define MAX_BUFFER_SIZE		(MAX_BUFS * BUFFER_SIZE)
-#define HARMONY_BUF_SIZE	BUFFER_SIZE
-
 #define HARMONY_CNTL_C		0x80000000
 
 #define HARMONY_DSTATUS_PN	0x00000200
@@ -140,6 +134,17 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE;
+static int boot_devs;
+
+module_param_array(index, int, boot_devs, 0444);
+MODULE_PARM_DESC(index, "Index value for Sun CS4231 soundcard.");
+MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
+module_param_array(id, charp, boot_devs, 0444);
+MODULE_PARM_DESC(id, "ID string for Sun CS4231 soundcard.");
+MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
+module_param_array(enable, bool, boot_devs, 0444);
+MODULE_PARM_DESC(enable, "Enable Sun CS4231 soundcard.");
+MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 
 /* Register offset (from base hpa) */
 #define REG_ID		0x00
@@ -191,21 +196,18 @@
 	int cap_stopped;
 	int cap_total;
 
-	struct pci_dev *fake_pci_dev; /* The fake pci_dev needed for 
-					pci_* functions under ccio. */
+	struct parisc_device *pa_dev;
+
+	struct snd_dma_device dma_dev;
 
 	/* the graveyard buffer is used as recording buffer when playback, 
 	 * because harmony always want a buffer to put recorded data */
-
-	unsigned char *graveyard_addr;
-	dma_addr_t graveyard_dma;
+	struct snd_dma_buffer graveyard_dma;
 	int graveyard_count;
 	
 	/* same thing for silence buffer */
-	unsigned char *silence_addr;
-	dma_addr_t silence_dma;
+	struct snd_dma_buffer silence_dma;
 	int silence_count;
-	struct snd_dma_device dma_dev;
 
 	/* alsa stuff */
 	snd_card_t *card;
@@ -264,6 +266,15 @@
 #define HARMONY_SR_33KHZ	0x16
 #define HARMONY_SR_6KHZ		0x17
 
+/* bits corresponding to the entries of snd_card_harmony_rates */
+static unsigned int rate_bits[14] = {
+	HARMONY_SR_5KHZ, HARMONY_SR_6KHZ, HARMONY_SR_8KHZ,
+	HARMONY_SR_9KHZ, HARMONY_SR_11KHZ, HARMONY_SR_16KHZ,
+	HARMONY_SR_18KHZ, HARMONY_SR_22KHZ, HARMONY_SR_27KHZ,
+	HARMONY_SR_32KHZ, HARMONY_SR_33KHZ, HARMONY_SR_37KHZ,
+	HARMONY_SR_44KHZ, HARMONY_SR_48KHZ
+};
+
 /* snd_card_harmony_rate_bits
  * @rate:	index of current data rate in list
  * returns: harmony hex code for registers
@@ -273,26 +284,9 @@
 	unsigned int idx;
 	
 	for (idx = 0; idx <= RATES; idx++)
-		if (snd_card_harmony_rates[idx] == rate) break;
-	
-	switch (idx) {
-		case 0: return HARMONY_SR_5KHZ;
-		case 1: return HARMONY_SR_6KHZ;
-		case 2: return HARMONY_SR_8KHZ;
-		case 3: return HARMONY_SR_9KHZ;
-		case 4: return HARMONY_SR_11KHZ;
-		case 5: return HARMONY_SR_16KHZ;
-		case 6: return HARMONY_SR_18KHZ;
-		case 7: return HARMONY_SR_22KHZ;
-		case 8: return HARMONY_SR_27KHZ;
-		case 9: return HARMONY_SR_32KHZ;
-		case 10: return HARMONY_SR_33KHZ;
-		case 11: return HARMONY_SR_37KHZ;
-		case 12: return HARMONY_SR_44KHZ;
-		case 13: return HARMONY_SR_48KHZ;
-		default:  /* fallback */
-				return HARMONY_SR_44KHZ;
-	}
+		if (snd_card_harmony_rates[idx] == rate)
+			return rate_bits[idx];
+	return HARMONY_SR_44KHZ; /* fallback */
 }
 
 /*
@@ -317,27 +311,6 @@
 }
 
 /*
- * silence a buffer
- * XXX: alsa could probably do this by itself
- * XXX: memset hpmc, commented.
- */
-
-void snd_harmony_silence(snd_card_harmony_t *harmony,
-		void *addr, int length)
-{
-	u8 silence_char;
-	
-	switch(harmony->data_format) {
-			case HARMONY_DF_8BIT_ULAW: silence_char = 0x55; break;
-			case HARMONY_DF_8BIT_ALAW: silence_char = 0xff; break;
-			case HARMONY_DF_16BIT_LINEAR:
-			default:
-									   silence_char = 0;
-	}
-	//memset(addr, silence_char, length);
-}
-
-/*
  * interruption controls routines
  */
 
@@ -385,9 +358,9 @@
 			snd_pcm_period_elapsed(harmony->playback_substream);
 			harmony->ply_total++;
 		} else {
-			gsc_writel(harmony->silence_dma + 
-					(HARMONY_BUF_SIZE*harmony->silence_count),
-					hpa+REG_PNXTADD);
+			gsc_writel(harmony->silence_dma.addr + 
+				   (HARMONY_BUF_SIZE*harmony->silence_count),
+				   hpa+REG_PNXTADD);
 			harmony->silence_count++;
 			harmony->silence_count %= SILENCE_BUFS;
 		}
@@ -406,9 +379,9 @@
 			harmony->cap_total++;
 		} else {
 			/* graveyard buffer */
-			gsc_writel(harmony->graveyard_dma +
-						(HARMONY_BUF_SIZE*harmony->graveyard_count),
-						hpa+REG_RNXTADD);
+			gsc_writel(harmony->graveyard_dma.addr +
+				   (HARMONY_BUF_SIZE*harmony->graveyard_count),
+				   hpa+REG_RNXTADD);
 			harmony->graveyard_count++;
 			harmony->graveyard_count %= GRAVEYARD_BUFS;
 		}
@@ -465,26 +438,8 @@
 {
 	snd_info_entry_t *entry;
 	
-	if ((entry = snd_info_create_card_entry(harmony->card, "harmony", harmony->card->proc_root)) != NULL) {
-		entry->content = SNDRV_INFO_CONTENT_TEXT;
-		entry->private_data = harmony;
-		entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
-		entry->c.text.read_size = 2048;	 /* should be enough */
-		entry->c.text.read = snd_harmony_proc_read;
-		if (snd_info_register(entry) < 0) {
-			snd_info_free_entry(entry);
-			entry = NULL;
-		}
-	}
-	harmony->proc_entry = entry;
-}
-
-static void snd_harmony_proc_done(snd_card_harmony_t *harmony)
-{
-	if (harmony->proc_entry) {
-		snd_info_unregister(harmony->proc_entry);
-		harmony->proc_entry = NULL;
-	}
+	if (! snd_card_proc_new(harmony->card, "harmony", &entry))
+		snd_info_set_text_ops(entry, harmony, 2048, snd_harmony_proc_read);
 }
 
 /* 
@@ -563,6 +518,30 @@
 	return 0;
 }
 
+/* set data format */
+static int snd_harmony_set_data_format(snd_card_harmony_t *harmony, int pcm_format)
+{
+	int old_format = harmony->data_format;
+	int new_format = old_format;
+	switch (pcm_format) {
+	case SNDRV_PCM_FORMAT_S16_BE:
+		new_format = HARMONY_DF_16BIT_LINEAR;
+		break;
+	case SNDRV_PCM_FORMAT_A_LAW:
+		new_format = HARMONY_DF_8BIT_ALAW;
+		break;
+	case SNDRV_PCM_FORMAT_MU_LAW:
+		new_format = HARMONY_DF_8BIT_ULAW;
+		break;
+	}
+	/* re-initialize silence buffer if needed */
+	if (old_format != new_format)
+		snd_pcm_format_set_silence(pcm_format, harmony->silence_dma.area,
+					   (HARMONY_BUF_SIZE * SILENCE_BUFS * 8) / snd_pcm_format_width(pcm_format));
+
+	return new_format;
+}
+
 static int snd_card_harmony_playback_prepare(snd_pcm_substream_t * substream)
 {
 	snd_card_harmony_t *harmony = snd_pcm_substream_chip(substream);
@@ -577,12 +556,13 @@
 	harmony->sample_rate = snd_card_harmony_rate_bits(runtime->rate);
 
 	/* data format */
-	if (snd_pcm_format_width(runtime->format) == 16) harmony->data_format = HARMONY_DF_16BIT_LINEAR;
-	else harmony->data_format = HARMONY_DF_8BIT_ULAW;
-	
+	harmony->data_format = snd_harmony_set_data_format(haromny, runtime->format);
+
 	/* number of channels */
-	if (runtime->channels == 2) harmony->stereo_select = HARMONY_SS_STEREO;
-	else harmony->stereo_select = HARMONY_SS_MONO;
+	if (runtime->channels == 2)
+		harmony->stereo_select = HARMONY_SS_STEREO;
+	else
+		harmony->stereo_select = HARMONY_SS_MONO;
 	
 	DPRINTK(KERN_INFO PFX "Playback_prepare, sr=%d(%x), df=%x, ss=%x hpa=%lx\n", runtime->rate,
 				harmony->sample_rate, harmony->data_format, harmony->stereo_select, harmony->hpa);
@@ -607,12 +587,13 @@
 	harmony->sample_rate = snd_card_harmony_rate_bits(runtime->rate);
 	
 	/* data format */
-	if (snd_pcm_format_width(runtime->format) == 16) harmony->data_format = HARMONY_DF_16BIT_LINEAR;
-	else harmony->data_format = HARMONY_DF_8BIT_ULAW;
+	harmony->data_format = snd_harmony_set_data_format(haromny, runtime->format);
 	
 	/* number of channels */
-	if (runtime->channels == 1) harmony->stereo_select = HARMONY_SS_MONO;
-	else if (runtime->channels == 2) harmony->stereo_select = HARMONY_SS_STEREO;
+	if (runtime->channels == 1)
+		harmony->stereo_select = HARMONY_SS_MONO;
+	else if (runtime->channels == 2)
+		harmony->stereo_select = HARMONY_SS_STEREO;
 		
 	snd_harmony_update_control(harmony);
 	harmony->format_initialized = 1;
@@ -709,13 +690,6 @@
 	snd_pcm_runtime_t *runtime = substream->runtime;
 	int err;
 	
-	/*
-	 * harmony is not "real" pci, but we need a pci_dev
-	 * to alloc PCI DMA pages
-	 */
-	substream->runtime->dma_private = harmony->fake_pci_dev;
-//	substream->dma_type = SNDRV_PCM_DMA_TYPE_PCI;
-	
 	harmony->playback_substream = substream;
 	runtime->hw = snd_card_harmony_playback;
 	snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hw_constraint_rates);
@@ -732,14 +706,6 @@
 	snd_pcm_runtime_t *runtime = substream->runtime;
 	int err;
 	
-	
-	/*
-	 * harmony is not "real" pci, but we need a pci_dev
-	 * to alloc PCI DMA pages
-	 */
-	substream->runtime->dma_private = harmony->fake_pci_dev;
-//	substream->dma_type = SNDRV_PCM_DMA_TYPE_PCI;
-
 	harmony->capture_substream = substream;
 	runtime->hw = snd_card_harmony_capture;
 	snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hw_constraint_rates);
@@ -752,7 +718,6 @@
 static int snd_card_harmony_playback_close(snd_pcm_substream_t * substream)
 {
 	snd_card_harmony_t *harmony = snd_pcm_substream_chip(substream);
-	snd_pcm_lib_free_pages(substream);
 	
 	harmony->playback_substream = NULL;
 	harmony->ply_size 			= 0;
@@ -769,8 +734,6 @@
 {
 	snd_card_harmony_t *harmony = snd_pcm_substream_chip(substream);
 	
-	snd_pcm_lib_free_pages(substream);
-	
 	harmony->capture_substream = NULL;
 	harmony->cap_size 			= 0;
 	harmony->cap_buf			= 0;
@@ -785,12 +748,11 @@
 static int snd_card_harmony_hw_params(snd_pcm_substream_t *substream, 
 	                   snd_pcm_hw_params_t * hw_params)
 {
-	snd_pcm_runtime_t *runtime = substream->runtime;
 	int err;
 	
 	err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
 	DPRINTK(KERN_INFO PFX "HW Params returned %d, dma_addr %lx\n", err,
-			(unsigned long)runtime->dma_addr);
+			(unsigned long)substream->runtime->dma_addr);
 	return err;
 }
 
@@ -847,15 +809,19 @@
 	harmony->pcm = pcm;
 	
 	/* initialize graveyard buffer */
-	harmony->dma_dev.type = SNDRV_DMA_TYPE_PCI;
-	harmony->dma_dev.dev = snd_dma_pci_data(harmony->fake_pci_dev); 
-	harmony->graveyard_addr = snd_dma_alloc_pages(&chip->dma_dev,
-			HARMONY_BUF_SIZE*GRAVEYARD_BUFS, &harmony->graveyard_dma);
+	harmony->dma_dev.type = SNDRV_DMA_TYPE_DEV;
+	harmony->dma_dev.dev = &harmony->pa_dev->dev;
+	err = snd_dma_alloc_pages(&harmony->dma_dev, HARMONY_BUF_SIZE*GRAVEYARD_BUFS,
+				  &harmony->graveyard_dma);
+	if (err < 0)
+		return err;
 	harmony->graveyard_count = 0;
 	
 	/* initialize silence buffers */
-	harmony->silence_addr = snd_dma_alloc_pages(&chip->dma_dev,
-			HARMONY_BUF_SIZE*SILENCE_BUFS, &harmony->silence_dma);
+	err = snd_dma_alloc_pages(&harmony->dma_dev, HARMONY_BUF_SIZE*SILENCE_BUFS,
+				  &harmony->silence_dma);
+	if (err < 0)
+		return err;
 	harmony->silence_count = 0;
 
 	harmony->ply_stopped = harmony->cap_stopped = 1;
@@ -865,8 +831,8 @@
 	harmony->graveyard_count = 0;
 	
 	snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
-					      snd_dma_pci_data(harmony->fake_pci_dev),
-					      64 * 1024, 128 * 1024);
+					      &harmony->pa_dev->dev,
+					      MAX_BUFFER_SIZE, MAX_BUFFER_SIZE);
 
 	return 0;
 }
@@ -963,7 +929,7 @@
 HARMONY_VOLUME("PCM Playback Volume", 6, 0, 0x3f, 1),
 };
 
-static void snd_harmony_reset_codec(snd_card_harmony_t *harmony)
+static void __init snd_harmony_reset_codec(snd_card_harmony_t *harmony)
 {
  	snd_harmony_wait_cntl(harmony);
 	gsc_writel(1, harmony->hpa+REG_RESET);
@@ -985,7 +951,7 @@
 }
 
 
-int __init snd_card_harmony_mixer_init(snd_card_harmony_t *harmony)
+static int __init snd_card_harmony_mixer_init(snd_card_harmony_t *harmony)
 {
 	snd_card_t *card = harmony->card;
 	int idx, err;
@@ -1009,10 +975,11 @@
 	
 	harmony->card = card;
 	
+	harmony->pa_dev = pa_dev;
+
 	/* Set the HPA of harmony */
 	harmony->hpa = pa_dev->hpa;
 	
-
 	harmony->irq = pa_dev->irq;
 	if (!harmony->irq) {
 		printk(KERN_ERR PFX "no irq found\n");
@@ -1038,8 +1005,6 @@
 		return -EBUSY;
 	}
 	
-	/* a fake pci_dev is needed for pci_* functions under ccio */
-	harmony->fake_pci_dev = ccio_get_fake(pa_dev);
 	return 0;
 }
 	
@@ -1050,7 +1015,7 @@
 	snd_card_t *card;
 	int err;
 	
-    if (dev >= SNDRV_CARDS)
+	if (dev >= SNDRV_CARDS)
 		return -ENODEV;
 	if (!enable[dev]) {
 		dev++;
@@ -1064,6 +1029,8 @@
 	if (card == NULL)
 		return -ENOMEM;
 	chip = (struct snd_card_harmony *)card->private_data;
+	spin_lock_init(&chip->control_lock);
+	spin_lock_init(&chip->mixer_lock);
 	
 	if ((err = snd_card_harmony_create(card, pa_dev, chip)) < 0) {
 		printk(KERN_ERR PFX "Creation failed\n");
@@ -1144,7 +1111,6 @@
 		{	
 			DPRINTK(KERN_INFO PFX "Freeing card %d\n", idx);
 			harmony = snd_harmony_cards[idx]->private_data;
-			snd_harmony_proc_done(harmony);
 			free_irq(harmony->irq, snd_card_harmony_interrupt);
 			printk(KERN_INFO PFX "Card unloaded %d, irq=%d\n", idx, harmony->irq);
 			snd_card_free(snd_harmony_cards[idx]);
diff -Nru a/sound/pci/Kconfig b/sound/pci/Kconfig
--- a/sound/pci/Kconfig	Tue May 18 23:41:45 2004
+++ b/sound/pci/Kconfig	Tue May 18 23:41:45 2004
@@ -16,11 +16,11 @@
 	  Say 'Y' or 'M' to include support for ALI PCI Audio M5451 sound core.
 
 config SND_ATIIXP
-	tristate "ATI IXP 150/200/250"
+	tristate "ATI IXP 150/200/250/300"
 	depends on SND
 	select SND_AC97_CODEC
 	help
-	  Say 'Y' or 'M' to include support for ATI IXP 150/200/250 AC97 controller.
+	  Say 'Y' or 'M' to include support for ATI IXP 150/200/250/300 AC97 controller.
 
 config SND_AU8810
         tristate "Aureal Advantage"
@@ -29,6 +29,9 @@
 	select SND_AC97_CODEC
         help
           Say 'Y' or 'M' to include support for Aureal Advantage soundcards.
+          Supported features: Hardware Mixer, SRC, EQ and SPDIF output.
+          3D support code is in place, but not yet useable. For more info, 
+          email the ALSA developer list, or mjander@users.sourceforge.net.
  
 config SND_AU8820
         tristate "Aureal Vortex"
@@ -37,6 +40,8 @@
 	select SND_AC97_CODEC
         help
           Say 'Y' or 'M' to include support for Aureal Vortex soundcards.
+          Supported features: Hardware Mixer and SRC. For more info, email 
+          the ALSA developer list, or mjander@users.sourceforge.net.
  
 config SND_AU8830
         tristate "Aureal Vortex 2"
@@ -45,6 +50,9 @@
 	select SND_AC97_CODEC
         help
           Say 'Y' or 'M' to include support for Aureal Vortex 2 soundcards.
+          Supported features: Hardware Mixer, SRC, EQ and SPDIF output.
+          3D support code is in place, but not yet useable. For more info, 
+          email the ALSA developer list, or mjander@users.sourceforge.net.
  
 config SND_AZT3328
 	tristate "Aztech AZF3328 / PCI168 (EXPERIMENTAL)"
diff -Nru a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
--- a/sound/pci/ac97/ac97_codec.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ac97/ac97_codec.c	Tue May 18 23:41:45 2004
@@ -27,6 +27,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/pci.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/ac97_codec.h>
@@ -42,7 +43,7 @@
 
 static int enable_loopback;
 
-MODULE_PARM(enable_loopback, "i");
+module_param(enable_loopback, bool, 0444);
 MODULE_PARM_DESC(enable_loopback, "Enable AC97 ADC/DAC Loopback Control");
 MODULE_PARM_SYNTAX(enable_loopback, SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -299,6 +300,16 @@
 	return ac97->bus->read(ac97, reg);
 }
 
+/* read a register - return the cached value if already read */
+static inline unsigned short snd_ac97_read_cache(ac97_t *ac97, unsigned short reg)
+{
+	if (! test_bit(reg, ac97->reg_accessed)) {
+		ac97->regs[reg] = ac97->bus->read(ac97, reg);
+		// set_bit(reg, ac97->reg_accessed);
+	}
+	return ac97->regs[reg];
+}
+
 /**
  * snd_ac97_write_cache - write a value on the given register and update the cache
  * @ac97: the ac97 instance
@@ -370,7 +381,7 @@
 	if (!snd_ac97_valid_reg(ac97, reg))
 		return -EINVAL;
 	spin_lock(&ac97->reg_lock);
-	old = ac97->regs[reg];
+	old = snd_ac97_read_cache(ac97, reg);
 	new = (old & ~mask) | value;
 	change = old != new;
 	if (change) {
@@ -385,25 +396,26 @@
 static int snd_ac97_ad18xx_update_pcm_bits(ac97_t *ac97, int codec, unsigned short mask, unsigned short value)
 {
 	int change;
-	unsigned short old, new;
+	unsigned short old, new, cfg;
 
 	down(&ac97->spec.ad18xx.mutex);
 	spin_lock(&ac97->reg_lock);
 	old = ac97->spec.ad18xx.pcmreg[codec];
 	new = (old & ~mask) | value;
+	cfg = snd_ac97_read_cache(ac97, AC97_AD_SERIAL_CFG);
 	change = old != new;
 	if (change) {
 		ac97->spec.ad18xx.pcmreg[codec] = new;
 		spin_unlock(&ac97->reg_lock);
 		/* select single codec */
 		ac97->bus->write(ac97, AC97_AD_SERIAL_CFG,
-				 (ac97->regs[AC97_AD_SERIAL_CFG] & ~0x7000) |
+				 (cfg & ~0x7000) |
 				 ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]);
 		/* update PCM bits */
 		ac97->bus->write(ac97, AC97_PCM, new);
 		/* select all codecs */
 		ac97->bus->write(ac97, AC97_AD_SERIAL_CFG,
-				 ac97->regs[AC97_AD_SERIAL_CFG] | 0x7000);
+				 cfg | 0x7000);
 	} else
 		spin_unlock(&ac97->reg_lock);
 	up(&ac97->spec.ad18xx.mutex);
@@ -435,7 +447,7 @@
 	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
 	unsigned short val;
 	
-	val = ac97->regs[AC97_REC_SEL];
+	val = snd_ac97_read_cache(ac97, AC97_REC_SEL);
 	ucontrol->value.enumerated.item[0] = (val >> 8) & 7;
 	ucontrol->value.enumerated.item[1] = (val >> 0) & 7;
 	return 0;
@@ -493,7 +505,7 @@
 	int shift = (kcontrol->private_value >> 8) & 0xff;
 	int invert = (kcontrol->private_value >> 24) & 0xff;
 	
-	val = (ac97->regs[reg] >> shift) & 1;
+	val = (snd_ac97_read_cache(ac97, reg) >> shift) & 1;
 	if (invert)
 		val ^= 1;
 	ucontrol->value.enumerated.item[0] = val;
@@ -535,7 +547,7 @@
 	int mask = (kcontrol->private_value >> 16) & 0xff;
 	int invert = (kcontrol->private_value >> 24) & 0xff;
 	
-	ucontrol->value.integer.value[0] = (ac97->regs[reg] >> shift) & mask;
+	ucontrol->value.integer.value[0] = (snd_ac97_read_cache(ac97, reg) >> shift) & mask;
 	if (invert)
 		ucontrol->value.integer.value[0] = mask - ucontrol->value.integer.value[0];
 	return 0;
@@ -582,8 +594,8 @@
 	int invert = (kcontrol->private_value >> 24) & 0xff;
 	
 	spin_lock(&ac97->reg_lock);
-	ucontrol->value.integer.value[0] = (ac97->regs[reg] >> shift_left) & mask;
-	ucontrol->value.integer.value[1] = (ac97->regs[reg] >> shift_right) & mask;
+	ucontrol->value.integer.value[0] = (snd_ac97_read_cache(ac97, reg) >> shift_left) & mask;
+	ucontrol->value.integer.value[1] = (snd_ac97_read_cache(ac97, reg) >> shift_right) & mask;
 	spin_unlock(&ac97->reg_lock);
 	if (invert) {
 		ucontrol->value.integer.value[0] = mask - ucontrol->value.integer.value[0];
@@ -796,7 +808,7 @@
 					       AC97_CXR_SPDIF_MASK | AC97_CXR_COPYRGT,
 					       v);
 	} else {
-		unsigned short extst = ac97->regs[AC97_EXTENDED_STATUS];
+		unsigned short extst = snd_ac97_read_cache(ac97, AC97_EXTENDED_STATUS);
 		snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0); /* turn off */
 
 		change |= snd_ac97_update_bits(ac97, AC97_SPDIF, 0x3fff, val);
@@ -822,13 +834,13 @@
 	mask <<= shift;
 	value <<= shift;
 	spin_lock(&ac97->reg_lock);
-	old = ac97->regs[reg];
+	old = snd_ac97_read_cache(ac97, reg);
 	new = (old & ~mask) | value;
 	spin_unlock(&ac97->reg_lock);
 
 	if (old != new) {
 		int change;
-		unsigned short extst = ac97->regs[AC97_EXTENDED_STATUS];
+		unsigned short extst = snd_ac97_read_cache(ac97, AC97_EXTENDED_STATUS);
 		snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0); /* turn off */
 		change = snd_ac97_update_bits(ac97, reg, mask, value);
 		if (extst & AC97_EA_SPDIF)
@@ -868,14 +880,14 @@
 		.info = snd_ac97_info_single,
 		.get = snd_ac97_get_single,
 		.put = snd_ac97_put_spsa,
-		.private_value = AC97_EXTENDED_STATUS | (4 << 8) | (3 << 16) | (0 << 24),
+		.private_value = AC97_SINGLE_VALUE(AC97_EXTENDED_STATUS, 4, 3, 0)
 	},
 };
 
 #define AD18XX_PCM_BITS(xname, codec, lshift, rshift, mask) \
 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .info = snd_ac97_ad18xx_pcm_info_bits, \
   .get = snd_ac97_ad18xx_pcm_get_bits, .put = snd_ac97_ad18xx_pcm_put_bits, \
-  .private_value = (codec) | ((lshift) << 8) | ((rshift) << 12) | ((mask) << 24) }
+  .private_value = (codec) | ((lshift) << 8) | ((rshift) << 12) | ((mask) << 16) }
 
 static int snd_ac97_ad18xx_pcm_info_bits(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
 {
@@ -987,6 +999,8 @@
  *
  */
 
+static void snd_ac97_powerdown(ac97_t *ac97);
+
 static int snd_ac97_bus_free(ac97_bus_t *bus)
 {
 	if (bus) {
@@ -1022,6 +1036,7 @@
 static int snd_ac97_dev_free(snd_device_t *device)
 {
 	ac97_t *ac97 = snd_magic_cast(ac97_t, device->device_data, return -ENXIO);
+	snd_ac97_powerdown(ac97); /* for avoiding click noises during shut down */
 	return snd_ac97_free(ac97);
 }
 
@@ -1572,6 +1587,26 @@
 	*r_result = result;
 }
 
+/* check AC97_SPDIF register to accept which sample rates */
+static unsigned int snd_ac97_determine_spdif_rates(ac97_t *ac97)
+{
+	unsigned int result = 0;
+	int i;
+	static unsigned short ctl_bits[] = {
+		AC97_SC_SPSR_44K, AC97_SC_SPSR_32K, AC97_SC_SPSR_48K
+	};
+	static unsigned int rate_bits[] = {
+		SNDRV_PCM_RATE_44100, SNDRV_PCM_RATE_32000, SNDRV_PCM_RATE_48000
+	};
+
+	for (i = 0; i < (int)ARRAY_SIZE(ctl_bits); i++) {
+		snd_ac97_update_bits(ac97, AC97_SPDIF, AC97_SC_SPSR_MASK, ctl_bits[i]);
+		if ((snd_ac97_read(ac97, AC97_SPDIF) & AC97_SC_SPSR_MASK) == ctl_bits[i])
+			result |= rate_bits[i];
+	}
+	return result;
+}
+
 void snd_ac97_get_name(ac97_t *ac97, unsigned int id, char *name, int modem)
 {
 	const ac97_codec_id_t *pid;
@@ -1889,9 +1924,7 @@
 		else if (ac97->id == AC97_ID_CM9739)
 			ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_48000;
 		else
-			ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_48000 |
-						SNDRV_PCM_RATE_44100 |
-						SNDRV_PCM_RATE_32000;
+			ac97->rates[AC97_RATES_SPDIF] = snd_ac97_determine_spdif_rates(ac97);
 	}
 	if (ac97->ext_id & AC97_EI_VRM) {	/* MIC VRA support */
 		snd_ac97_determine_rates(ac97, AC97_PCM_MIC_ADC_RATE, 0, &ac97->rates[AC97_RATES_MIC_ADC]);
@@ -1949,12 +1982,12 @@
 	}
 	/* make sure the proper powerdown bits are cleared */
 	if (ac97->scaps) {
-		reg = snd_ac97_read(ac97, AC97_EXTENDED_ID);
+		reg = snd_ac97_read(ac97, AC97_EXTENDED_STATUS);
 		if (ac97->scaps & AC97_SCAP_SURROUND_DAC) 
 			reg &= ~AC97_EA_PRJ;
 		if (ac97->scaps & AC97_SCAP_CENTER_LFE_DAC) 
 			reg &= ~(AC97_EA_PRI | AC97_EA_PRK);
-		snd_ac97_write_cache(ac97, AC97_EXTENDED_ID, reg);
+		snd_ac97_write_cache(ac97, AC97_EXTENDED_STATUS, reg);
 	}
 	snd_ac97_proc_init(ac97);
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, ac97, &ops)) < 0) {
@@ -1965,17 +1998,24 @@
 	return 0;
 }
 
-#ifdef CONFIG_PM
-/**
- * snd_ac97_suspend - General suspend function for AC97 codec
- * @ac97: the ac97 instance
+
+/*
+ * Power down the chip.
  *
- * Suspends the codec, power down the chip.
+ * MASTER and HEADPHONE registers are muted but the register cache values
+ * are not changed, so that the values can be restored in snd_ac97_resume().
  */
-void snd_ac97_suspend(ac97_t *ac97)
+static void snd_ac97_powerdown(ac97_t *ac97)
 {
-	unsigned short power = (ac97->regs[AC97_POWERDOWN] ^ 0x8000) & ~0x8000;	/* invert EAPD */
+	unsigned short power;
+
+	if (ac97_is_audio(ac97)) {
+		/* some codecs have stereo mute bits */
+		snd_ac97_write(ac97, AC97_MASTER, 0x9f9f);
+		snd_ac97_write(ac97, AC97_HEADPHONE, 0x9f9f);
+	}
 
+	power = ac97->regs[AC97_POWERDOWN] | 0x8000;	/* EAPD */
 	power |= 0x4000;	/* Headphone amplifier powerdown */
 	power |= 0x0300;	/* ADC & DAC powerdown */
 	snd_ac97_write(ac97, AC97_POWERDOWN, power);
@@ -1983,8 +2023,24 @@
 	power |= 0x0400;	/* Analog Mixer powerdown (Vref on) */
 	snd_ac97_write(ac97, AC97_POWERDOWN, power);
 	udelay(100);
+#if 0
+	/* FIXME: this causes click noises on some boards at resume */
 	power |= 0x3800;	/* AC-link powerdown, internal Clk disable */
 	snd_ac97_write(ac97, AC97_POWERDOWN, power);
+#endif
+}
+
+
+#ifdef CONFIG_PM
+/**
+ * snd_ac97_suspend - General suspend function for AC97 codec
+ * @ac97: the ac97 instance
+ *
+ * Suspends the codec, power down the chip.
+ */
+void snd_ac97_suspend(ac97_t *ac97)
+{
+	snd_ac97_powerdown(ac97);
 }
 
 /**
@@ -2267,6 +2323,7 @@
 EXPORT_SYMBOL(snd_ac97_set_rate);
 #ifdef CONFIG_PM
 EXPORT_SYMBOL(snd_ac97_resume);
+EXPORT_SYMBOL(snd_ac97_suspend);
 #endif
 
 /*
diff -Nru a/sound/pci/ac97/ac97_local.h b/sound/pci/ac97/ac97_local.h
--- a/sound/pci/ac97/ac97_local.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/ac97/ac97_local.h	Tue May 18 23:41:45 2004
@@ -22,10 +22,11 @@
  *
  */
 
+#define AC97_SINGLE_VALUE(reg,shift,mask,invert) ((reg) | ((shift) << 8) | ((mask) << 16) | ((invert) << 24))
 #define AC97_SINGLE(xname, reg, shift, mask, invert) \
 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .info = snd_ac97_info_single, \
   .get = snd_ac97_get_single, .put = snd_ac97_put_single, \
-  .private_value = (reg) | ((shift) << 8) | ((mask) << 16) | ((invert) << 24) }
+  .private_value =  AC97_SINGLE_VALUE(reg, shift, mask, invert) }
 
 /* ac97_codec.c */
 extern const char *snd_ac97_stereo_enhancements[];
diff -Nru a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
--- a/sound/pci/ac97/ac97_patch.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ac97/ac97_patch.c	Tue May 18 23:41:45 2004
@@ -447,18 +447,198 @@
 	return 0;
 }
 
+static int snd_ac97_stac9758_output_jack_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
+{
+	static char *texts[5] = { "Input/Disabled", "Front Output",
+		"Rear Output", "Center/LFE Output", "Mixer Output" };
+
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = 5;
+	if (uinfo->value.enumerated.item > 4)
+		uinfo->value.enumerated.item = 4;
+	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+	return 0;
+}
+
+static int snd_ac97_stac9758_output_jack_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t* ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+	int shift = kcontrol->private_value;
+	unsigned short val;
+
+	val = ac97->regs[AC97_SIGMATEL_OUTSEL];
+	if (!((val >> shift) & 4))
+		ucontrol->value.enumerated.item[0] = 0;
+	else
+		ucontrol->value.enumerated.item[0] = 1 + ((val >> shift) & 3);
+	return 0;
+}
+
+static int snd_ac97_stac9758_output_jack_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+	int shift = kcontrol->private_value;
+	unsigned short val;
+
+	if (ucontrol->value.enumerated.item[0] > 4)
+		return -EINVAL;
+	if (ucontrol->value.enumerated.item[0] == 0)
+		val = 0;
+	else
+		val = 4 | (ucontrol->value.enumerated.item[0] - 1);
+	return snd_ac97_update_bits(ac97, AC97_SIGMATEL_OUTSEL,
+				    7 << shift, val << shift);
+}
+
+static int snd_ac97_stac9758_input_jack_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
+{
+	static char *texts[7] = { "Mic2 Jack", "Mic1 Jack", "Line In Jack",
+		"Front Jack", "Rear Jack", "Center/LFE Jack", "Mute" };
+
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = 7;
+	if (uinfo->value.enumerated.item > 6)
+		uinfo->value.enumerated.item = 6;
+	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+	return 0;
+}
+
+static int snd_ac97_stac9758_input_jack_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t* ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+	int shift = kcontrol->private_value;
+	unsigned short val;
+
+	val = ac97->regs[AC97_SIGMATEL_INSEL];
+	ucontrol->value.enumerated.item[0] = (val >> shift) & 7;
+	return 0;
+}
+
+static int snd_ac97_stac9758_input_jack_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+	int shift = kcontrol->private_value;
+
+	return snd_ac97_update_bits(ac97, AC97_SIGMATEL_INSEL, 7 << shift,
+				    ucontrol->value.enumerated.item[0] << shift);
+}
+
+static int snd_ac97_stac9758_phonesel_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
+{
+	static char *texts[3] = { "None", "Front Jack", "Rear Jack" };
+
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = 3;
+	if (uinfo->value.enumerated.item > 2)
+		uinfo->value.enumerated.item = 2;
+	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+	return 0;
+}
+
+static int snd_ac97_stac9758_phonesel_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t* ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+
+	ucontrol->value.enumerated.item[0] = ac97->regs[AC97_SIGMATEL_IOMISC] & 3;
+	return 0;
+}
+
+static int snd_ac97_stac9758_phonesel_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+
+	return snd_ac97_update_bits(ac97, AC97_SIGMATEL_IOMISC, 3,
+				    ucontrol->value.enumerated.item[0]);
+}
+
+#define STAC9758_OUTPUT_JACK(xname, shift) \
+{	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
+	.info = snd_ac97_stac9758_output_jack_info, \
+	.get = snd_ac97_stac9758_output_jack_get, \
+	.put = snd_ac97_stac9758_output_jack_put, \
+	.private_value = shift }
+#define STAC9758_INPUT_JACK(xname, shift) \
+{	.iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
+	.info = snd_ac97_stac9758_input_jack_info, \
+	.get = snd_ac97_stac9758_input_jack_get, \
+	.put = snd_ac97_stac9758_input_jack_put, \
+	.private_value = shift }
+static const snd_kcontrol_new_t snd_ac97_sigmatel_stac9758_controls[] = {
+	STAC9758_OUTPUT_JACK("Mic1 Jack", 1),
+	STAC9758_OUTPUT_JACK("LineIn Jack", 4),
+	STAC9758_OUTPUT_JACK("Front Jack", 7),
+	STAC9758_OUTPUT_JACK("Rear Jack", 10),
+	STAC9758_OUTPUT_JACK("Center/LFE Jack", 13),
+	STAC9758_INPUT_JACK("Mic Input Source", 0),
+	STAC9758_INPUT_JACK("Line Input Source", 8),
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "Headphone Amp",
+		.info = snd_ac97_stac9758_phonesel_info,
+		.get = snd_ac97_stac9758_phonesel_get,
+		.put = snd_ac97_stac9758_phonesel_put
+	},
+	AC97_SINGLE("Exchange Center/LFE", AC97_SIGMATEL_IOMISC, 4, 1, 0),
+	AC97_SINGLE("Headphone +3dB Boost", AC97_SIGMATEL_IOMISC, 8, 1, 0)
+};
+
+static int patch_sigmatel_stac9758_specific(ac97_t *ac97)
+{
+	int err;
+
+	err = patch_sigmatel_stac97xx_specific(ac97);
+	if (err < 0)
+		return err;
+	err = patch_build_controls(ac97, snd_ac97_sigmatel_stac9758_controls,
+				   ARRAY_SIZE(snd_ac97_sigmatel_stac9758_controls));
+	if (err < 0)
+		return err;
+	return 0;
+}
+
+static struct snd_ac97_build_ops patch_sigmatel_stac9758_ops = {
+	.build_3d	= patch_sigmatel_stac9700_3d,
+	.build_specific	= patch_sigmatel_stac9758_specific
+};
+
 int patch_sigmatel_stac9758(ac97_t * ac97)
 {
+	static unsigned short regs[4] = {
+		AC97_SIGMATEL_OUTSEL,
+		AC97_SIGMATEL_IOMISC,
+		AC97_SIGMATEL_INSEL,
+		AC97_SIGMATEL_VARIOUS
+	};
+	static unsigned short def_regs[4] = {
+		/* OUTSEL */ 0xd794,
+		/* IOMISC */ 0x2001,
+		/* INSEL */ 0x0201,
+		/* VARIOUS */ 0x0040
+	};
+	static unsigned short m675_regs[4] = {
+		/* OUTSEL */ 0x9040,
+		/* IOMISC */ 0x2102,
+		/* INSEL */ 0x0203,
+		/* VARIOUS */ 0x0041
+	};
+	unsigned short *pregs = def_regs;
+	int i;
+
+	/* Gateway M675 notebook */
+	if (ac97->pci && 
+	    ac97->subsystem_vendor == 0x107b &&
+	    ac97->subsystem_device == 0x0601)
+	    	pregs = m675_regs;
+
 	// patch for SigmaTel
-	ac97->build_ops = &patch_sigmatel_stac9700_ops;
-	// turn on stereo speaker, headphone and line-out
-	snd_ac97_write_cache(ac97, AC97_SIGMATEL_OUTSEL, 0x9040);
-	// headphone select and boost
-	snd_ac97_write_cache(ac97, AC97_SIGMATEL_IOMISC, 0x2102);
-	// enable mic
-	snd_ac97_write_cache(ac97, AC97_SIGMATEL_INSEL, 0x0203);
-	// enable stereo mic
-	snd_ac97_write_cache(ac97, AC97_SIGMATEL_VARIOUS, 0x0001);
+	ac97->build_ops = &patch_sigmatel_stac9758_ops;
+	for (i = 0; i < 4; i++)
+		snd_ac97_write_cache(ac97, regs[i], pregs[i]);
+
+	ac97->flags |= AC97_STEREO_MUTES;
 	return 0;
 }
 
@@ -1027,6 +1207,8 @@
 			     AC97_AD198X_MSPLT |
 			     AC97_AD198X_AC97NC);
 	ac97->flags |= AC97_STEREO_MUTES;
+	/* on AD1985 rev. 3, AC'97 revision bits are zero */
+	ac97->ext_id = (ac97->ext_id & ~AC97_EI_REV_MASK) | AC97_EI_REV_23;
 	return 0;
 }
 
@@ -1088,6 +1270,7 @@
 		.info = snd_ac97_info_single,
 		.get = snd_ac97_alc650_mic_get,
 		.put = snd_ac97_alc650_mic_put,
+		.private_value = AC97_SINGLE_VALUE(0, 0, 1, 0) /* only mask needed */
 	},
 };
 
@@ -1188,6 +1371,7 @@
 		.info = snd_ac97_info_single,
 		.get = snd_ac97_alc655_mic_get,
 		.put = snd_ac97_alc655_mic_put,
+		.private_value = AC97_SINGLE_VALUE(0, 0, 1, 0) /* only mask needed */
 	},
 };
 
@@ -1358,8 +1542,34 @@
 	/* BIT 8: SPD32 - 32bit SPDIF - not supported yet */
 };
 
+static int snd_ac97_cm9739_center_mic_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+	if (ac97->regs[AC97_CM9739_MULTI_CHAN] & 0x1000)
+		ucontrol->value.integer.value[0] = 1;
+	else
+		ucontrol->value.integer.value[0] = 0;
+	return 0;
+}
+
+static int snd_ac97_cm9739_center_mic_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+	return snd_ac97_update_bits(ac97, AC97_CM9739_MULTI_CHAN, 0x3000,
+				    ucontrol->value.integer.value[0] ? 
+				    0x1000 : 0x2000);
+}
+
 static const snd_kcontrol_new_t snd_ac97_cm9739_controls[] = {
 	AC97_SINGLE("Line-In As Surround", AC97_CM9739_MULTI_CHAN, 10, 1, 0),
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "Mic As Center/LFE",
+		.info = snd_ac97_info_single,
+		.get = snd_ac97_cm9739_center_mic_get,
+		.put = snd_ac97_cm9739_center_mic_put,
+		.private_value = AC97_SINGLE_VALUE(0, 0, 1, 0) /* only mask needed */
+	},
 };
 
 static int patch_cm9739_specific(ac97_t * ac97)
@@ -1394,10 +1604,13 @@
 	}
 
 	/* set-up multi channel */
-	/* bit 13: enable internal vref output for mic */
-	/* bit 12: enable center/lfe */
 	/* bit 14: 0 = SPDIF, 1 = EAPD */
-	val = (1 << 12) | (1 << 13);
+	/* bit 13: enable internal vref output for mic */
+	/* bit 12: disable center/lfe (swithable) */
+	/* bit 10: disable surround/line (switchable) */
+	/* bit 9: mix 2 surround off */
+	/* bit 0: dB */
+	val = (1 << 13);
 	if (! (ac97->ext_id & AC97_EI_SPDIF))
 		val |= (1 << 14);
 	snd_ac97_write_cache(ac97, AC97_CM9739_MULTI_CHAN, val);
diff -Nru a/sound/pci/ac97/ac97_pcm.c b/sound/pci/ac97/ac97_pcm.c
--- a/sound/pci/ac97/ac97_pcm.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ac97/ac97_pcm.c	Tue May 18 23:41:45 2004
@@ -210,7 +210,7 @@
 	}
 
 	spin_lock(&ac97->reg_lock);
-	old = ac97->regs[reg] & mask;
+	old = snd_ac97_read(ac97, reg) & mask;
 	spin_unlock(&ac97->reg_lock);
 	if (old != bits) {
 		snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
diff -Nru a/sound/pci/ac97/ac97_proc.c b/sound/pci/ac97/ac97_proc.c
--- a/sound/pci/ac97/ac97_proc.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ac97/ac97_proc.c	Tue May 18 23:41:45 2004
@@ -34,6 +34,40 @@
  * proc interface
  */
 
+static void snd_ac97_proc_read_functions(ac97_t *ac97, snd_info_buffer_t *buffer)
+{
+	int header = 0, function;
+	unsigned short info, sense_info;
+	static const char *function_names[12] = {
+		"Master Out", "AUX Out", "Center/LFE Out", "SPDIF Out",
+		"Phone In", "Mic 1", "Mic 2", "Line In", "CD In", "Video In",
+		"Aux In", "Mono Out"
+	};
+	static const char *locations[8] = {
+		"Rear I/O Panel", "Front Panel", "Motherboard", "Dock/External",
+		"reserved", "reserved", "reserved", "NC/unused"
+	};
+
+	for (function = 0; function < 12; ++function) {
+		snd_ac97_write(ac97, AC97_FUNC_SELECT, function << 1);
+		info = snd_ac97_read(ac97, AC97_FUNC_INFO);
+		if (!(info & 0x0001))
+			continue;
+		if (!header) {
+			snd_iprintf(buffer, "\n                    Gain     Inverted  Buffer delay  Location\n");
+			header = 1;
+		}
+		sense_info = snd_ac97_read(ac97, AC97_SENSE_INFO);
+		snd_iprintf(buffer, "%-17s: %3d.%d dBV    %c      %2d/fs         %s\n",
+			    function_names[function],
+			    (info & 0x8000 ? -1 : 1) * ((info & 0x7000) >> 12) * 3 / 2,
+			    ((info & 0x0800) >> 11) * 5,
+			    info & 0x0400 ? 'X' : '-',
+			    (info & 0x03e0) >> 5,
+			    locations[sense_info >> 13]);
+	}
+}
+
 static void snd_ac97_proc_read_main(ac97_t *ac97, snd_info_buffer_t * buffer, int subidx)
 {
 	char name[64];
@@ -47,6 +81,21 @@
 	if ((ac97->scaps & AC97_SCAP_AUDIO) == 0)
 		goto __modem;
 
+	if ((ac97->ext_id & AC97_EI_REV_MASK) >= AC97_EI_REV_23) {
+		val = snd_ac97_read(ac97, AC97_INT_PAGING);
+		snd_ac97_update_bits(ac97, AC97_INT_PAGING,
+				     AC97_PAGE_MASK, AC97_PAGE_1);
+		tmp = snd_ac97_read(ac97, AC97_CODEC_CLASS_REV);
+		snd_iprintf(buffer, "Revision         : 0x%02x\n", tmp & 0xff);
+		snd_iprintf(buffer, "Compat. Class    : 0x%02x\n", (tmp >> 8) & 0x1f);
+		snd_iprintf(buffer, "Subsys. Vendor ID: 0x%04x\n",
+			    snd_ac97_read(ac97, AC97_PCI_SVID));
+		snd_iprintf(buffer, "Subsys. ID       : 0x%04x\n\n",
+			    snd_ac97_read(ac97, AC97_PCI_SID));
+		snd_ac97_update_bits(ac97, AC97_INT_PAGING,
+				     AC97_PAGE_MASK, val & AC97_PAGE_MASK);
+	}
+
 	// val = snd_ac97_read(ac97, AC97_RESET);
 	val = ac97->caps;
 	snd_iprintf(buffer, "Capabilities     :%s%s%s%s%s%s\n",
@@ -185,6 +234,14 @@
 			}
 		}
 	}
+	if ((ac97->ext_id & AC97_EI_REV_MASK) >= AC97_EI_REV_23) {
+		val = snd_ac97_read(ac97, AC97_INT_PAGING);
+		snd_ac97_update_bits(ac97, AC97_INT_PAGING,
+				     AC97_PAGE_MASK, AC97_PAGE_1);
+		snd_ac97_proc_read_functions(ac97, buffer);
+		snd_ac97_update_bits(ac97, AC97_INT_PAGING,
+				     AC97_PAGE_MASK, val & AC97_PAGE_MASK);
+	}
 
 
       __modem:
@@ -264,6 +321,23 @@
 	}
 }
 
+#ifdef CONFIG_SND_DEBUG
+/* direct register write for debugging */
+static void snd_ac97_proc_regs_write(snd_info_entry_t *entry, snd_info_buffer_t *buffer)
+{
+	ac97_t *ac97 = snd_magic_cast(ac97_t, entry->private_data, return);
+	char line[64];
+	unsigned int reg, val;
+	while (!snd_info_get_line(buffer, line, sizeof(line))) {
+		if (sscanf(line, "%x %x", &reg, &val) != 2)
+			continue;
+		/* register must be odd */
+		if (reg < 0x80 && (reg & 1) == 0 && val <= 0xffff)
+			snd_ac97_write_cache(ac97, reg, val);
+	}
+}
+#endif
+
 static void snd_ac97_proc_regs_read_main(ac97_t *ac97, snd_info_buffer_t * buffer, int subidx)
 {
 	int reg, val;
@@ -319,6 +393,11 @@
 	sprintf(name, "%s#%d-%d+regs", prefix, ac97->addr, ac97->num);
 	if ((entry = snd_info_create_card_entry(ac97->bus->card, name, ac97->bus->proc)) != NULL) {
 		snd_info_set_text_ops(entry, ac97, 1024, snd_ac97_proc_regs_read);
+#ifdef CONFIG_SND_DEBUG
+		entry->mode |= S_IWUSR;
+		entry->c.text.write_size = 1024;
+		entry->c.text.write = snd_ac97_proc_regs_write;
+#endif
 		if (snd_info_register(entry) < 0) {
 			snd_info_free_entry(entry);
 			entry = NULL;
diff -Nru a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c
--- a/sound/pci/ali5451/ali5451.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ali5451/ali5451.c	Tue May 18 23:41:45 2004
@@ -25,8 +25,6 @@
  *
  */
 
-#define __SNDRV_OSS_COMPAT__
-
 #include <sound/driver.h>
 #include <asm/io.h>
 #include <linux/delay.h>
@@ -34,12 +32,12 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/info.h>
 #include <sound/ac97_codec.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Matt Wu <Matt_Wu@acersoftech.com.cn>");
@@ -53,20 +51,21 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 32};
 static int spdif[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ALI M5451 PCI Audio.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ALI M5451 PCI Audio.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ALI 5451 PCI Audio.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(pcm_channels, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(pcm_channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_channels, "PCM Channels");
 MODULE_PARM_SYNTAX(pcm_channels, SNDRV_ENABLED ",default:32,allows:{{1,32}}");
-MODULE_PARM(spdif, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(spdif, bool, boot_devs, 0444);
 MODULE_PARM_DESC(spdif, "Support SPDIF I/O");
 MODULE_PARM_SYNTAX(spdif, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -1906,14 +1905,18 @@
 }
 
 #ifdef CONFIG_PM
-static void ali_suspend(ali_t *chip)
+static int ali_suspend(snd_card_t *card, unsigned int state)
 {
+	ali_t *chip = snd_magic_cast(ali_t, card->pm_private_data, return -EINVAL);
 	ali_image_t *im;
 	int i, j;
 
 	im = chip->image;
 	if (! im)
-		return;
+		return 0;
+
+	snd_pcm_suspend_all(chip->pcm);
+	snd_ac97_suspend(chip->ac97);
 
 	spin_lock_irq(&chip->reg_lock);
 	
@@ -1940,16 +1943,18 @@
 	outl(0xffffffff, ALI_REG(chip, ALI_STOP));
 
 	spin_unlock_irq(&chip->reg_lock);
+	return 0;
 }
 
-static void ali_resume(ali_t *chip)
+static int ali_resume(snd_card_t *card, unsigned int state)
 {
+	ali_t *chip = snd_magic_cast(ali_t, card->pm_private_data, return -EINVAL);
 	ali_image_t *im;
 	int i, j;
 
 	im = chip->image;
 	if (! im)
-		return;
+		return 0;
 
 	pci_enable_device(chip->pci);
 
@@ -1967,27 +1972,15 @@
 		outl(im->regs[i], ALI_REG(chip, i*4));
 	}
 	
-	snd_ac97_resume(chip->ac97);
-	
 	// start HW channel
 	outl(im->regs[ALI_START >> 2], ALI_REG(chip, ALI_START));
 	// restore IRQ enable bits
 	outl(im->regs[ALI_MISCINT >> 2], ALI_REG(chip, ALI_MISCINT));
 	
 	spin_unlock_irq(&chip->reg_lock);
-	return;
-}
 
-static int snd_ali_suspend(struct pci_dev *dev, u32 state)
-{
-	ali_t *chip = snd_magic_cast(ali_t, pci_get_drvdata(dev), return -ENXIO);
-	ali_suspend(chip);
-	return 0;
-}
-static int snd_ali_resume(struct pci_dev *dev)
-{
-	ali_t *chip = snd_magic_cast(ali_t, pci_get_drvdata(dev), return -ENXIO);
-	ali_resume(chip);
+	snd_ac97_resume(chip->ac97);
+	
 	return 0;
 }
 #endif /* CONFIG_PM */
@@ -2203,7 +2196,9 @@
 #ifdef CONFIG_PM
 	codec->image = kmalloc(sizeof(*codec->image), GFP_KERNEL);
 	if (! codec->image)
-		snd_printk("can't allocate apm buffer\n");
+		snd_printk(KERN_WARNING "can't allocate apm buffer\n");
+	else
+		snd_card_set_pm_callback(card, ali_suspend, ali_resume, codec);
 #endif
 
 	snd_ali_enable_address_interrupt(codec);
@@ -2263,16 +2258,14 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, codec);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_ali_remove(struct pci_dev *pci)
 {
-	ali_t *chip = snd_magic_cast(ali_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -2281,23 +2274,12 @@
 	.id_table = snd_ali_ids,
 	.probe = snd_ali_probe,
 	.remove = __devexit_p(snd_ali_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_ali_suspend,
-	.resume = snd_ali_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };                                
 
 static int __init alsa_card_ali_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ALi pci audio not found or device busy.\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_ali_exit(void)
@@ -2307,25 +2289,3 @@
 
 module_init(alsa_card_ali_init)
 module_exit(alsa_card_ali_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ali5451=enable,index,id,pcm_channels */
-
-static int __init alsa_card_ali_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_channels[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-ali5451=", alsa_card_ali_setup);
-
-#endif /* ifndef */
diff -Nru a/sound/pci/als4000.c b/sound/pci/als4000.c
--- a/sound/pci/als4000.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/als4000.c	Tue May 18 23:41:45 2004
@@ -64,13 +64,13 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/rawmidi.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
 #include <sound/sb.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Bart Hartgers <bart@etpmod.phys.tue.nl>");
@@ -89,18 +89,19 @@
 #ifdef SUPPORT_JOYSTICK
 static int joystick_port[SNDRV_CARDS];
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ALS4000 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ALS4000 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ALS4000 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_INDEX_DESC);
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick_port, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_port, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_port, "Joystick port address for ALS4000 soundcard. (0 = disabled)");
 MODULE_PARM_SYNTAX(joystick_port, SNDRV_ENABLED);
 #endif
@@ -755,15 +756,7 @@
 
 static int __init alsa_card_als4000_init(void)
 {
-	int err;
-	
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "no ALS4000 based soundcards found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_als4000_exit(void)
@@ -773,28 +766,3 @@
 
 module_init(alsa_card_als4000_init)
 module_exit(alsa_card_als4000_exit)
-
-#ifndef MODULE
-
-/* format is: snd-als4000=enable,index,id,joystick_port */
-
-static int __init alsa_card_als4000_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2
-#ifdef SUPPORT_JOYSTICK
-	       && get_option(&str,&joystick_port[nr_dev]) == 2
-#endif
-	       );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-als4000=", alsa_card_als4000_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/atiixp.c b/sound/pci/atiixp.c
--- a/sound/pci/atiixp.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/atiixp.c	Tue May 18 23:41:45 2004
@@ -26,39 +26,40 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/info.h>
 #include <sound/ac97_codec.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Takashi Iwai <tiwai@suse.de>");
 MODULE_DESCRIPTION("ATI IXP AC97 controller");
 MODULE_LICENSE("GPL");
 MODULE_CLASSES("{sound}");
-MODULE_DEVICES("{{ATI,IXP150/200/250}}");
+MODULE_DEVICES("{{ATI,IXP150/200/250/300}}");
 
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000};
 static int spdif_aclink[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ATI IXP controller.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ATI IXP controller.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable audio part of ATI IXP controller.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(ac97_clock, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ac97_clock, int, boot_devs, 0444);
 MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz).");
 MODULE_PARM_SYNTAX(ac97_clock, SNDRV_ENABLED ",default:48000");
-MODULE_PARM(spdif_aclink, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(spdif_aclink, bool, boot_devs, 0444);
 MODULE_PARM_DESC(spdif_aclink, "S/PDIF over AC-link.");
 MODULE_PARM_SYNTAX(spdif_aclink, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
 
@@ -223,7 +224,12 @@
 /*
  * stream enum
  */
-enum { ATI_DMA_PLAYBACK, ATI_DMA_CAPTURE, ATI_DMA_SPDIF };
+enum { ATI_DMA_PLAYBACK, ATI_DMA_CAPTURE, ATI_DMA_SPDIF, NUM_ATI_DMAS }; /* DMAs */
+enum { ATI_PCM_OUT, ATI_PCM_IN, ATI_PCM_SPDIF, NUM_ATI_PCMS }; /* AC97 pcm slots */
+enum { ATI_PCMDEV_ANALOG, ATI_PCMDEV_DIGITAL, NUM_ATI_PCMDEVS }; /* pcm devices */
+
+#define NUM_ATI_CODECS	3
+
 
 /*
  * constants and callbacks for each DMA type
@@ -231,6 +237,7 @@
 struct snd_atiixp_dma_ops {
 	int type;			/* ATI_DMA_XXX */
 	unsigned int llp_offset;	/* LINKPTR offset */
+	unsigned int dt_cur;		/* DT_CUR offset */
 	void (*enable_dma)(atiixp_t *chip, int on);	/* called from open callback */
 	void (*enable_transfer)(atiixp_t *chip, int on); /* called from trigger (START/STOP) */
 	void (*flush_dma)(atiixp_t *chip);		/* called from trigger (STOP only) */
@@ -246,9 +253,10 @@
 	snd_pcm_substream_t *substream;	/* assigned PCM substream */
 	unsigned int buf_addr, buf_bytes;	/* DMA buffer address, bytes */
 	unsigned int period_bytes, periods;
+	int opened;
 	int running;
-	struct ac97_pcm *pcm;
 	int pcm_open_flag;
+	int ac97_pcm_type;	/* index # of ac97_pcm to access, -1 = not used */
 };
 
 /*
@@ -264,25 +272,34 @@
 	int irq;
 	
 	ac97_bus_t *ac97_bus;
-	ac97_t *ac97[3];		/* IXP can have up to 3 codecs */
+	ac97_t *ac97[NUM_ATI_CODECS];
 
 	spinlock_t reg_lock;
 	spinlock_t ac97_lock;
 
-	atiixp_dma_t dmas[3];		/* playback, capture, spdif */
+	atiixp_dma_t dmas[NUM_ATI_DMAS];
+	struct ac97_pcm *pcms[NUM_ATI_PCMS];
+	snd_pcm_t *pcmdevs[NUM_ATI_PCMDEVS];
 
 	int max_channels;		/* max. channels for PCM out */
 
 	unsigned int codec_not_ready_bits;	/* for codec detection */
 
 	int spdif_over_aclink;		/* passed from the module option */
+	struct semaphore open_mutex;	/* playback open mutex */
+
+#ifdef CONFIG_PM
+	u32 pci_state[16];
+#endif
 };
 
 
 /*
  */
 static struct pci_device_id snd_atiixp_ids[] = {
-	{ 0x1002, 0x4341, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ 0x1002, 0x4341, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB200 */
+	{ 0x1002, 0x4361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB300 */
+	{ 0, }
 };
 
 MODULE_DEVICE_TABLE(pci, snd_atiixp_ids);
@@ -393,7 +410,7 @@
 		addr += period_bytes;
 	}
 
-	writel(cpu_to_le32((u32)dma->desc_buf.addr | ATI_REG_LINKPTR_EN),
+	writel((u32)dma->desc_buf.addr | ATI_REG_LINKPTR_EN,
 	       chip->remap_addr + dma->ops->llp_offset);
 
 	dma->period_bytes = period_bytes;
@@ -452,7 +469,9 @@
 			return data >> ATI_REG_PHYS_IN_DATA_SHIFT;
 		udelay(1);
 	} while (--timeout);
-	snd_printk(KERN_WARNING "atiixp: codec read timeout\n");
+	/* time out may happen during reset */
+	if (reg < 0x7c)
+		snd_printk(KERN_WARNING "atiixp: codec read timeout (reg %x)\n", reg);
 	return 0xffff;
 }
 
@@ -527,13 +546,11 @@
 	return 0;
 }
 
-#if 0 /* for P/M */
+#ifdef CONFIG_PM
 static int snd_atiixp_aclink_down(atiixp_t *chip)
 {
-	unsigned long flags;
-
-	if (atiixp_read(chip, MODEM_MIRROR) & ATI_REG_MODEM_MIRROR_RUNNING)
-		return -EBUSY;
+	// if (atiixp_read(chip, MODEM_MIRROR) & 0x1) /* modem running, too? */
+	//	return -EBUSY;
 	atiixp_update(chip, CMD,
 		     ATI_REG_CMD_POWERDOWN | ATI_REG_CMD_AC_RESET,
 		     ATI_REG_CMD_POWERDOWN);
@@ -585,12 +602,16 @@
 {
 	unsigned int reg;
 
-	/* enable burst mode */
+	/* set up spdif, enable burst mode */
 	reg = atiixp_read(chip, CMD);
 	reg |= 0x02 << ATI_REG_CMD_SPDF_THRESHOLD_SHIFT;
 	reg |= ATI_REG_CMD_BURST_EN;
 	atiixp_write(chip, CMD, reg);
 
+	reg = atiixp_read(chip, SPDF_CMD);
+	reg &= ~(ATI_REG_SPDF_CMD_LFSR|ATI_REG_SPDF_CMD_SINGLE_CH);
+	atiixp_write(chip, SPDF_CMD, reg);
+
 	/* clear all interrupt source */
 	atiixp_write(chip, ISR, 0xffffffff);
 	/* enable irqs */
@@ -635,7 +656,7 @@
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->reg_lock, flags);
-	curptr = readl(chip->remap_addr + dma->ops->llp_offset + 12); /* XXX_DMA_DT_CUR */
+	curptr = readl(chip->remap_addr + dma->ops->dt_cur);
 	if (curptr < dma->buf_addr) {
 		snd_printdd("curptr = %x, base = %x\n", curptr, dma->buf_addr);
 		curptr = 0;
@@ -657,7 +678,7 @@
 {
 	if (! dma->substream || ! dma->running)
 		return;
-	snd_printd(KERN_DEBUG "atiixp: XRUN detected (DMA %d)\n", dma->ops->type);
+	snd_printdd("atiixp: XRUN detected (DMA %d)\n", dma->ops->type);
 	snd_pcm_stop(dma->substream, SNDRV_PCM_STATE_XRUN);
 }
 
@@ -800,15 +821,10 @@
 {
 	unsigned int data;
 	data = atiixp_read(chip, CMD);
-	if (on) {
+	if (on)
 		data |= ATI_REG_CMD_SPDF_OUT_EN;
-		if (chip->spdif_over_aclink)
-			data |= ATI_REG_CMD_SEND_EN;
-	}  else {
+	else
 		data &= ~ATI_REG_CMD_SPDF_OUT_EN;
-		if (chip->spdif_over_aclink)
-			data &= ~ATI_REG_CMD_SEND_EN;
-	}
 	atiixp_write(chip, CMD, data);
 }
 
@@ -835,25 +851,25 @@
 static int snd_atiixp_spdif_prepare(snd_pcm_substream_t *substream)
 {
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
-	unsigned int data;
 
 	spin_lock(&chip->reg_lock);
 	if (chip->spdif_over_aclink) {
+		unsigned int data;
 		/* enable slots 10/11 */
 		atiixp_update(chip, CMD, ATI_REG_CMD_SPDF_CONFIG_MASK,
 			      ATI_REG_CMD_SPDF_CONFIG_01);
-		data = atiixp_read(chip, OUT_DMA_SLOT);
+		data = atiixp_read(chip, OUT_DMA_SLOT) & ~ATI_REG_OUT_DMA_SLOT_MASK;
 		data |= ATI_REG_OUT_DMA_SLOT_BIT(10) |
 			ATI_REG_OUT_DMA_SLOT_BIT(11);
 		data |= 0x04 << ATI_REG_OUT_DMA_THRESHOLD_SHIFT;
 		atiixp_write(chip, OUT_DMA_SLOT, data);
+		atiixp_update(chip, CMD, ATI_REG_CMD_INTERLEAVE_OUT,
+			      substream->runtime->format == SNDRV_PCM_FORMAT_S16_LE ?
+			      ATI_REG_CMD_INTERLEAVE_OUT : 0);
 	} else {
 		atiixp_update(chip, CMD, ATI_REG_CMD_SPDF_CONFIG_MASK, 0);
+		atiixp_update(chip, CMD, ATI_REG_CMD_INTERLEAVE_SPDF, 0);
 	}
-
-	atiixp_update(chip, CMD, ATI_REG_CMD_INTERLEAVE_SPDF,
-		      substream->runtime->format == SNDRV_PCM_FORMAT_S16_LE ?
-		      ATI_REG_CMD_INTERLEAVE_SPDF : 0);
 	spin_unlock(&chip->reg_lock);
 	return 0;
 }
@@ -938,17 +954,18 @@
 	if (err < 0)
 		return err;
 
-	if (dma->pcm) {
+	if (dma->ac97_pcm_type >= 0) {
+		struct ac97_pcm *pcm = chip->pcms[dma->ac97_pcm_type];
 		/* PCM is bound to AC97 codec(s)
 		 * set up the AC97 codecs
 		 */
 		if (dma->pcm_open_flag) {
-			snd_ac97_pcm_close(dma->pcm);
+			snd_ac97_pcm_close(pcm);
 			dma->pcm_open_flag = 0;
 		}
-		err = snd_ac97_pcm_open(dma->pcm, params_rate(hw_params),
+		err = snd_ac97_pcm_open(pcm, params_rate(hw_params),
 					params_channels(hw_params),
-					dma->pcm->r[0].slots);
+					pcm->r[0].slots);
 		if (err >= 0)
 			dma->pcm_open_flag = 1;
 	}
@@ -962,7 +979,8 @@
 	atiixp_dma_t *dma = (atiixp_dma_t *)substream->runtime->private_data;
 
 	if (dma->pcm_open_flag) {
-		snd_ac97_pcm_close(dma->pcm);
+		struct ac97_pcm *pcm = chip->pcms[dma->ac97_pcm_type];
+		snd_ac97_pcm_close(pcm);
 		dma->pcm_open_flag = 0;
 	}
 	atiixp_clear_dma_packets(chip, dma, substream);
@@ -992,7 +1010,7 @@
 	.periods_max =		ATI_MAX_DESCRIPTORS,
 };
 
-static int snd_atiixp_pcm_open(snd_pcm_substream_t *substream, atiixp_dma_t *dma)
+static int snd_atiixp_pcm_open(snd_pcm_substream_t *substream, atiixp_dma_t *dma, int pcm_type)
 {
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
 	snd_pcm_runtime_t *runtime = substream->runtime;
@@ -1001,15 +1019,17 @@
 
 	snd_assert(dma->ops && dma->ops->enable_dma, return -EINVAL);
 
+	if (dma->opened)
+		return -EBUSY;
 	dma->substream = substream;
 	runtime->hw = snd_atiixp_pcm_hw;
-	if (dma->pcm) {
-		runtime->hw.rates = dma->pcm->rates;
+	dma->ac97_pcm_type = pcm_type;
+	if (pcm_type >= 0) {
+		runtime->hw.rates = chip->pcms[pcm_type]->rates;
 		snd_pcm_limit_hw_rates(runtime);
 	} else {
-		/* SPDIF */
-		runtime->hw.rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_32000;
-		runtime->hw.rate_min = 32000;
+		/* direct SPDIF */
+		runtime->hw.formats = SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE;
 	}
 	if ((err = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
 		return err;
@@ -1019,6 +1039,7 @@
 	spin_lock_irqsave(&chip->reg_lock, flags);
 	dma->ops->enable_dma(chip, 1);
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
+	dma->opened = 1;
 
 	return 0;
 }
@@ -1032,6 +1053,7 @@
 	dma->ops->enable_dma(chip, 0);
 	spin_unlock_irq(&chip->reg_lock);
 	dma->substream = NULL;
+	dma->opened = 0;
 	return 0;
 }
 
@@ -1042,26 +1064,33 @@
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
 	int err;
 
-	err = snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_PLAYBACK]);
+	down(&chip->open_mutex);
+	err = snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_PLAYBACK], 0);
+	up(&chip->open_mutex);
+	if (err < 0)
+		return err;
 	substream->runtime->hw.channels_max = chip->max_channels;
 	if (chip->max_channels > 2)
 		/* channels must be even */
 		snd_pcm_hw_constraint_step(substream->runtime, 0,
 					   SNDRV_PCM_HW_PARAM_CHANNELS, 2);
-
 	return 0;
 }
 
 static int snd_atiixp_playback_close(snd_pcm_substream_t *substream)
 {
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
-	return snd_atiixp_pcm_close(substream, &chip->dmas[ATI_DMA_PLAYBACK]);
+	int err;
+	down(&chip->open_mutex);
+	err = snd_atiixp_pcm_close(substream, &chip->dmas[ATI_DMA_PLAYBACK]);
+	up(&chip->open_mutex);
+	return err;
 }
 
 static int snd_atiixp_capture_open(snd_pcm_substream_t *substream)
 {
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
-	return snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_CAPTURE]);
+	return snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_CAPTURE], 1);
 }
 
 static int snd_atiixp_capture_close(snd_pcm_substream_t *substream)
@@ -1073,13 +1102,27 @@
 static int snd_atiixp_spdif_open(snd_pcm_substream_t *substream)
 {
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
-	return snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_SPDIF]);
+	int err;
+	down(&chip->open_mutex);
+	if (chip->spdif_over_aclink) /* share DMA_PLAYBACK */
+		err = snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_PLAYBACK], 2);
+	else
+		err = snd_atiixp_pcm_open(substream, &chip->dmas[ATI_DMA_SPDIF], -1);
+	up(&chip->open_mutex);
+	return err;
 }
 
 static int snd_atiixp_spdif_close(snd_pcm_substream_t *substream)
 {
 	atiixp_t *chip = snd_pcm_substream_chip(substream);
-	return snd_atiixp_pcm_close(substream, &chip->dmas[ATI_DMA_SPDIF]);
+	int err;
+	down(&chip->open_mutex);
+	if (chip->spdif_over_aclink)
+		err = snd_atiixp_pcm_close(substream, &chip->dmas[ATI_DMA_PLAYBACK]);
+	else
+		err = snd_atiixp_pcm_close(substream, &chip->dmas[ATI_DMA_SPDIF]);
+	up(&chip->open_mutex);
+	return err;
 }
 
 /* AC97 playback */
@@ -1157,6 +1200,7 @@
 static atiixp_dma_ops_t snd_atiixp_playback_dma_ops = {
 	.type = ATI_DMA_PLAYBACK,
 	.llp_offset = ATI_REG_OUT_DMA_LINKPTR,
+	.dt_cur = ATI_REG_OUT_DMA_DT_CUR,
 	.enable_dma = atiixp_out_enable_dma,
 	.enable_transfer = atiixp_out_enable_transfer,
 	.flush_dma = atiixp_out_flush_dma,
@@ -1165,6 +1209,7 @@
 static atiixp_dma_ops_t snd_atiixp_capture_dma_ops = {
 	.type = ATI_DMA_CAPTURE,
 	.llp_offset = ATI_REG_IN_DMA_LINKPTR,
+	.dt_cur = ATI_REG_IN_DMA_DT_CUR,
 	.enable_dma = atiixp_in_enable_dma,
 	.enable_transfer = atiixp_in_enable_transfer,
 	.flush_dma = atiixp_in_flush_dma,
@@ -1173,6 +1218,7 @@
 static atiixp_dma_ops_t snd_atiixp_spdif_dma_ops = {
 	.type = ATI_DMA_SPDIF,
 	.llp_offset = ATI_REG_SPDF_DMA_LINKPTR,
+	.dt_cur = ATI_REG_SPDF_DMA_DT_CUR,
 	.enable_dma = atiixp_spdif_enable_dma,
 	.enable_transfer = atiixp_spdif_enable_transfer,
 	.flush_dma = atiixp_spdif_flush_dma,
@@ -1188,7 +1234,8 @@
 	/* initialize constants */
 	chip->dmas[ATI_DMA_PLAYBACK].ops = &snd_atiixp_playback_dma_ops;
 	chip->dmas[ATI_DMA_CAPTURE].ops = &snd_atiixp_capture_dma_ops;
-	chip->dmas[ATI_DMA_SPDIF].ops = &snd_atiixp_spdif_dma_ops;
+	if (! chip->spdif_over_aclink)
+		chip->dmas[ATI_DMA_SPDIF].ops = &snd_atiixp_spdif_dma_ops;
 
 	/* assign AC97 pcm */
 	if (chip->spdif_over_aclink)
@@ -1198,49 +1245,55 @@
 	err = snd_ac97_pcm_assign(pbus, num_pcms, atiixp_pcm_defs);
 	if (err < 0)
 		return err;
+	for (i = 0; i < num_pcms; i++)
+		chip->pcms[i] = &pbus->pcms[i];
 
 	chip->max_channels = 2;
-	if (pbus->pcms[0].r[0].slots & (1 << AC97_SLOT_PCM_SLEFT)) {
-		if (pbus->pcms[0].r[0].slots & (1 << AC97_SLOT_LFE))
+	if (pbus->pcms[ATI_PCM_OUT].r[0].slots & (1 << AC97_SLOT_PCM_SLEFT)) {
+		if (pbus->pcms[ATI_PCM_OUT].r[0].slots & (1 << AC97_SLOT_LFE))
 			chip->max_channels = 6;
 		else
 			chip->max_channels = 4;
 	}
 
-	chip->dmas[ATI_DMA_PLAYBACK].pcm = &pbus->pcms[0];
-	chip->dmas[ATI_DMA_CAPTURE].pcm = &pbus->pcms[1];
-	if (chip->spdif_over_aclink)
-		chip->dmas[ATI_DMA_SPDIF].pcm = &pbus->pcms[2];
-
 	/* PCM #0: analog I/O */
-	err = snd_pcm_new(chip->card, "ATI IXP AC97", 0, 1, 1, &pcm);
+	err = snd_pcm_new(chip->card, "ATI IXP AC97", ATI_PCMDEV_ANALOG, 1, 1, &pcm);
 	if (err < 0)
 		return err;
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_atiixp_playback_ops);
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_atiixp_capture_ops);
 	pcm->private_data = chip;
 	strcpy(pcm->name, "ATI IXP AC97");
+	chip->pcmdevs[ATI_PCMDEV_ANALOG] = pcm;
 
 	snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
 					      snd_dma_pci_data(chip->pci), 64*1024, 128*1024);
 
 	/* no SPDIF support on codec? */
-	if (chip->dmas[ATI_DMA_SPDIF].pcm && ! chip->dmas[ATI_DMA_SPDIF].pcm->rates)
+	if (chip->pcms[ATI_PCM_SPDIF] && ! chip->pcms[ATI_PCM_SPDIF]->rates)
 		return 0;
 		
+	/* FIXME: non-48k sample rate doesn't work on my test machine with AD1888 */
+	if (chip->pcms[ATI_PCM_SPDIF])
+		chip->pcms[ATI_PCM_SPDIF]->rates = SNDRV_PCM_RATE_48000;
+
 	/* PCM #1: spdif playback */
-	err = snd_pcm_new(chip->card, "ATI IXP IEC958", 1, 1, 0, &pcm);
+	err = snd_pcm_new(chip->card, "ATI IXP IEC958", ATI_PCMDEV_DIGITAL, 1, 0, &pcm);
 	if (err < 0)
 		return err;
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_atiixp_spdif_ops);
 	pcm->private_data = chip;
-	strcpy(pcm->name, "ATI IXP IEC958");
+	if (chip->spdif_over_aclink)
+		strcpy(pcm->name, "ATI IXP IEC958 (AC97)");
+	else
+		strcpy(pcm->name, "ATI IXP IEC958 (Direct)");
+	chip->pcmdevs[ATI_PCMDEV_DIGITAL] = pcm;
 
 	snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
 					      snd_dma_pci_data(chip->pci), 64*1024, 128*1024);
 
 	/* pre-select AC97 SPDIF slots 10/11 */
-	for (i = 0; i < 3; i++) {
+	for (i = 0; i < NUM_ATI_CODECS; i++) {
 		if (chip->ac97[i])
 			snd_ac97_update_bits(chip->ac97[i], AC97_EXTENDED_STATUS, 0x03 << 4, 0x03 << 4);
 	}
@@ -1272,10 +1325,12 @@
 		snd_atiixp_xrun_dma(chip,  &chip->dmas[ATI_DMA_CAPTURE]);
 	else if (status & ATI_REG_ISR_IN_STATUS)
 		snd_atiixp_update_dma(chip, &chip->dmas[ATI_DMA_CAPTURE]);
-	if (status & ATI_REG_ISR_SPDF_XRUN)
-		snd_atiixp_xrun_dma(chip,  &chip->dmas[ATI_DMA_SPDIF]);
-	else if (status & ATI_REG_ISR_SPDF_STATUS)
-		snd_atiixp_update_dma(chip, &chip->dmas[ATI_DMA_SPDIF]);
+	if (! chip->spdif_over_aclink) {
+		if (status & ATI_REG_ISR_SPDF_XRUN)
+			snd_atiixp_xrun_dma(chip,  &chip->dmas[ATI_DMA_SPDIF]);
+		else if (status & ATI_REG_ISR_SPDF_STATUS)
+			snd_atiixp_update_dma(chip, &chip->dmas[ATI_DMA_SPDIF]);
+	}
 
 	/* for codec detection */
 	if (status & CODEC_CHECK_BITS) {
@@ -1303,7 +1358,8 @@
 	ac97_bus_t bus, *pbus;
 	ac97_t ac97;
 	int i, err;
-	static unsigned int codec_skip[3] = {
+	int codec_count;
+	static unsigned int codec_skip[NUM_ATI_CODECS] = {
 		ATI_REG_ISR_CODEC0_NOT_READY,
 		ATI_REG_ISR_CODEC1_NOT_READY,
 		ATI_REG_ISR_CODEC2_NOT_READY,
@@ -1321,15 +1377,34 @@
 		return err;
 	chip->ac97_bus = pbus;
 
-	for (i = 0; i < 3; i++) {
+	codec_count = 0;
+	for (i = 0; i < NUM_ATI_CODECS; i++) {
 		if (chip->codec_not_ready_bits & codec_skip[i])
 			continue;
 		memset(&ac97, 0, sizeof(ac97));
 		ac97.private_data = chip;
 		ac97.pci = chip->pci;
 		ac97.num = i;
-		if ((err = snd_ac97_mixer(pbus, &ac97, &chip->ac97[i])) < 0)
-			return err;
+		ac97.scaps = AC97_SCAP_SKIP_MODEM;
+		if ((err = snd_ac97_mixer(pbus, &ac97, &chip->ac97[i])) < 0) {
+			if (chip->codec_not_ready_bits)
+				/* codec(s) was detected but not available.
+				 * return the error
+				 */
+				return err;
+			else {
+				/* codec(s) was NOT detected, so just ignore here */
+				chip->ac97[i] = NULL; /* to be sure */
+				snd_printd("atiixp: codec %d not found\n", i);
+				continue;
+			}
+		}
+		codec_count++;
+	}
+
+	if (! codec_count) {
+		snd_printk(KERN_ERR "atiixp: no codec available\n");
+		return -ENODEV;
 	}
 
 	/* snd_ac97_tune_hardware(chip->ac97, ac97_quirks); */
@@ -1338,6 +1413,53 @@
 }
 
 
+#ifdef CONFIG_PM
+/*
+ * power management
+ */
+static int snd_atiixp_suspend(snd_card_t *card, unsigned int state)
+{
+	atiixp_t *chip = snd_magic_cast(atiixp_t, card->pm_private_data, return -EINVAL);
+	int i;
+
+	for (i = 0; i < NUM_ATI_PCMDEVS; i++)
+		if (chip->pcmdevs[i])
+			snd_pcm_suspend_all(chip->pcmdevs[i]);
+	for (i = 0; i < NUM_ATI_CODECS; i++)
+		if (chip->ac97[i])
+			snd_ac97_suspend(chip->ac97[i]);
+	snd_atiixp_aclink_down(chip);
+	snd_atiixp_chip_stop(chip);
+
+	pci_save_state(chip->pci, chip->pci_state);
+	pci_set_power_state(chip->pci, 3);
+	pci_disable_device(chip->pci);
+	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
+}
+
+static int snd_atiixp_resume(snd_card_t *card, unsigned int state)
+{
+	atiixp_t *chip = snd_magic_cast(atiixp_t, card->pm_private_data, return -EINVAL);
+	int i;
+
+	pci_enable_device(chip->pci);
+	pci_restore_state(chip->pci, chip->pci_state);
+	pci_set_power_state(chip->pci, 0);
+
+	snd_atiixp_aclink_reset(chip);
+	snd_atiixp_chip_start(chip);
+
+	for (i = 0; i < NUM_ATI_CODECS; i++)
+		if (chip->ac97[i])
+			snd_ac97_resume(chip->ac97[i]);
+
+	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
+	return 0;
+}
+#endif /* CONFIG_PM */
+
+
 /*
  * proc interface for register dump
  */
@@ -1412,24 +1534,25 @@
 
 	spin_lock_init(&chip->reg_lock);
 	spin_lock_init(&chip->ac97_lock);
+	init_MUTEX(&chip->open_mutex);
 	chip->card = card;
 	chip->pci = pci;
 	chip->irq = -1;
 	chip->addr = pci_resource_start(pci, 0);
 	if ((chip->res = request_mem_region(chip->addr, ATI_MEM_REGION, "ATI IXP AC97")) == NULL) {
-		snd_printk("unable to grab I/O memory 0x%lx\n", chip->addr);
+		snd_printk(KERN_ERR "unable to grab I/O memory 0x%lx\n", chip->addr);
 		snd_atiixp_free(chip);
 		return -EBUSY;
 	}
 	chip->remap_addr = (unsigned long) ioremap_nocache(chip->addr, ATI_MEM_REGION);
 	if (chip->remap_addr == 0) {
-		snd_printk("AC'97 space ioremap problem\n");
+		snd_printk(KERN_ERR "AC'97 space ioremap problem\n");
 		snd_atiixp_free(chip);
 		return -EIO;
 	}
 
 	if (request_irq(pci->irq, snd_atiixp_interrupt, SA_INTERRUPT|SA_SHIRQ, card->shortname, (void *)chip)) {
-		snd_printk("unable to grab IRQ %d\n", pci->irq);
+		snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq);
 		snd_atiixp_free(chip);
 		return -EBUSY;
 	}
@@ -1471,7 +1594,7 @@
 
 	pci_read_config_byte(pci, PCI_REVISION_ID, &revision);
 
-	strcpy(card->driver, "ATIIXP");
+	strcpy(card->driver, spdif_aclink[dev] ? "ATIIXP" : "ATIIXP-SPDMA");
 	strcpy(card->shortname, "ATI IXP");
 	if ((err = snd_atiixp_create(card, pci, &chip)) < 0)
 		goto __error;
@@ -1494,10 +1617,12 @@
 	sprintf(card->longname, "%s rev %x at 0x%lx, irq %i",
 		card->shortname, revision, chip->addr, chip->irq);
 
+	snd_card_set_pm_callback(card, snd_atiixp_suspend, snd_atiixp_resume, chip);
+
 	if ((err = snd_card_register(card)) < 0)
 		goto __error;
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 
@@ -1508,9 +1633,7 @@
 
 static void __devexit snd_atiixp_remove(struct pci_dev *pci)
 {
-	atiixp_t *chip = snd_magic_cast(atiixp_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -1519,21 +1642,13 @@
 	.id_table = snd_atiixp_ids,
 	.probe = snd_atiixp_probe,
 	.remove = __devexit_p(snd_atiixp_remove),
+	SND_PCI_PM_CALLBACKS
 };
 
 
 static int __init alsa_card_atiixp_init(void)
 {
-	int err;
-
-        if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ATI IXP AC97 controller not found or device busy\n");
-#endif
-                return err;
-        }
-
-        return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_atiixp_exit(void)
@@ -1543,27 +1658,3 @@
 
 module_init(alsa_card_atiixp_init)
 module_exit(alsa_card_atiixp_exit)
-
-#ifndef MODULE
-
-/* format is: snd-atiixp=enable,index,id,ac97_clock,spdif_aclink */
-
-static int __init alsa_card_atiixp_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&ac97_clock[nr_dev]) == 2 &&
-	       get_option(&str,&spdif_aclink[nr_dev]) == 2
-	       );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-atiixp=", alsa_card_atiixp_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/au88x0/au8810.h b/sound/pci/au88x0/au8810.h
--- a/sound/pci/au88x0/au8810.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au8810.h	Tue May 18 23:41:45 2004
@@ -7,7 +7,7 @@
 #define CARD_NAME "Aureal Advantage 3D Sound Processor"
 #define CARD_NAME_SHORT "au8810"
 
-#define NR_ADB		0x20
+#define NR_ADB		0x10
 #define NR_WT		0x00
 #define NR_SRC		0x10
 #define NR_A3D		0x10
@@ -51,13 +51,14 @@
 /* ADB */
 #define VORTEX_ADB_SR 0x28400	/* Samplerates enable/disable */
 #define VORTEX_ADB_RTBASE 0x28000
-#define VORTEX_ADB_RTBASE_SIZE (VORTEX_ADB_CHNBASE - VORTEX_ADB_RTBASE)
+#define VORTEX_ADB_RTBASE_COUNT 173
 #define VORTEX_ADB_CHNBASE 0x282b4
-#define VORTEX_ADB_CHNBASE_SIZE (ADB_MASK - VORTEX_ADB_RTBASE_SIZE)
+#define VORTEX_ADB_CHNBASE_COUNT 24
 #define 	ROUTE_MASK	0xffff
 #define		SOURCE_MASK	0xff00
 #define     ADB_MASK   0xff
 #define		ADB_SHIFT 0x8
+
 /* ADB address */
 #define		OFFSET_ADBDMA	0x00
 #define		OFFSET_SRCIN	0x40
@@ -69,10 +70,12 @@
 #define		OFFSET_SPORTIN	0x78	/* ch 0x13 */
 #define		OFFSET_SPORTOUT	0x90
 #define		OFFSET_SPDIFOUT	0x92	/* ch 0x14 check this! */
-#define		OFFSET_EQIN		0xa0
+#define		OFFSET_EQIN	0xa0
 #define		OFFSET_EQOUT	0x7e	/* 2 routes on ch 0x11 */
 #define		OFFSET_XTALKOUT	0x66	/* crosstalk canceller (source) */
 #define		OFFSET_XTALKIN	0x96	/* crosstalk canceller (sink) */
+#define		OFFSET_A3DIN	0x70	/* ADB sink. */
+#define		OFFSET_A3DOUT	0xA6	/* ADB source. 2 routes per slice = 8 */
 #define		OFFSET_EFXIN	0x80	/* ADB sink. */
 #define		OFFSET_EFXOUT	0x68	/* ADB source. */
 
@@ -89,8 +92,8 @@
 #define ADB_SPDIFOUT(x)	(x + OFFSET_SPDIFOUT)
 #define ADB_EQIN(x) (x + OFFSET_EQIN)
 #define ADB_EQOUT(x) (x + OFFSET_EQOUT)
-#define ADB_A3DOUT(x) (x + 0x50)	/* A3D blocks */
-#define ADB_A3DIN(x) (x + 0x70)
+#define ADB_A3DOUT(x) (x + OFFSET_A3DOUT)	/* 0x10 A3D blocks */
+#define ADB_A3DIN(x) (x + OFFSET_A3DIN)
 #define ADB_XTALKIN(x) (x + OFFSET_XTALKIN)
 #define ADB_XTALKOUT(x) (x + OFFSET_XTALKOUT)
 
@@ -120,20 +123,31 @@
 #define		VOL_MAX 0x7f	/* FIXME: Not confirmed! Just guessed. */
 
 /* SRC */
-#define VORTEX_SRCBLOCK_SR	0x26cc0
-#define VORTEX_SRC_CHNBASE	0x26c40
-#define VORTEX_SRC_RTBASE	0x26c00
-#define VORTEX_SRC_SOURCE	0x26cc4
-#define VORTEX_SRC_SOURCESIZE 0x26cc8
-#define VORTEX_SRC_CONVRATIO 0x26e40
-#define VORTEX_SRC_DRIFT0	0x26e80
-#define VORTEX_SRC_DRIFT1	0x26ec0
-#define VORTEX_SRC_DRIFT2	0x26f40
-#define VORTEX_SRC_U0		0x26e00
-#define VORTEX_SRC_U1		0x26f00
-#define VORTEX_SRC_U2		0x26f80
-#define VORTEX_SRC_DATA		0x26800	/* 0xc800 */
-#define VORTEX_SRC_DATA0	0x26000
+#define VORTEX_SRC_CHNBASE		0x26c40
+#define VORTEX_SRC_RTBASE		0x26c00
+#define VORTEX_SRCBLOCK_SR		0x26cc0
+#define VORTEX_SRC_SOURCE		0x26cc4
+#define VORTEX_SRC_SOURCESIZE	0x26cc8
+/* Params
+	0x26e00	: 1 U0
+	0x26e40	: 2 CR
+	0x26e80	: 3 U3
+	0x26ec0	: 4 DRIFT1
+	0x26f00 : 5 U1
+	0x26f40	: 6 DRIFT2
+	0x26f80	: 7 U2 : Target rate, direction
+*/
+
+#define VORTEX_SRC_CONVRATIO	0x26e40
+#define VORTEX_SRC_DRIFT0		0x26e80
+#define VORTEX_SRC_DRIFT1		0x26ec0
+#define VORTEX_SRC_DRIFT2		0x26f40
+#define VORTEX_SRC_U0			0x26e00
+#define		U0_SLOWLOCK		0x200
+#define VORTEX_SRC_U1			0x26f00
+#define VORTEX_SRC_U2			0x26f80
+#define VORTEX_SRC_DATA			0x26800	/* 0xc800 */
+#define VORTEX_SRC_DATA0		0x26000
 
 /* FIFO */
 #define VORTEX_FIFO_ADBCTRL 0x16100	/* Control bits. */
@@ -150,33 +164,37 @@
 //#define       FIFO_MASK       0x1f    /* at shift left 0xb */
 //#define               FIFO_SIZE       0x20
 #define 	FIFO_BITS	0x03880000
-#define VORTEX_FIFO_ADBDATA 0x14000
-#define VORTEX_FIFO_WTDATA 0x10000
+#define VORTEX_FIFO_ADBDATA	0x14000
+#define VORTEX_FIFO_WTDATA	0x10000
 
 /* CODEC */
-#define VORTEX_CODEC_CTRL 0x29184
-#define VORTEX_CODEC_EN 0x29190
+#define VORTEX_CODEC_CTRL	0x29184
+#define VORTEX_CODEC_EN		0x29190
 #define		EN_CODEC0	0x00000300
+#define 	EN_AC98		0x00000c00 /* Modem AC98 slots. */
 #define		EN_CODEC1	0x00003000
 #define		EN_CODEC	(EN_CODEC0 | EN_CODEC1)
 #define		EN_SPORT	0x00030000
 #define		EN_SPDIF	0x000c0000
-#define VORTEX_CODEC_CHN 0x29080
-#define VORTEX_CODEC_WRITE 0x00800000
-#define VORTEX_CODEC_ADDSHIFT 16
-#define VORTEX_CODEC_ADDMASK 0x7f0000	/* 0x000f0000 */
-#define VORTEX_CODEC_DATSHIFT 0
-#define VORTEX_CODEC_DATMASK 0xffff
-#define VORTEX_CODEC_IO 0x29188
+
+#define VORTEX_CODEC_CHN 	0x29080
+#define VORTEX_CODEC_WRITE	0x00800000
+#define VORTEX_CODEC_ADDSHIFT 	16
+#define VORTEX_CODEC_ADDMASK	0x7f0000	/* 0x000f0000 */
+#define VORTEX_CODEC_DATSHIFT	0
+#define VORTEX_CODEC_DATMASK	0xffff
+#define VORTEX_CODEC_IO		0x29188
 
 /* SPDIF */
-#define VORTEX_SPDIF_FLAGS		0x2205c
-#define VORTEX_SPDIF_CFG0		0x291D0
-#define VORTEX_SPDIF_CFG1		0x291D4
+#define VORTEX_SPDIF_FLAGS	0x2205c
+#define VORTEX_SPDIF_CFG0	0x291D0
+#define VORTEX_SPDIF_CFG1	0x291D4
 #define VORTEX_SPDIF_SMPRATE	0x29194
 
 /* Sample timer */
-#define VORTEX_SMP_TIME  0x29198
+#define VORTEX_SMP_TIME		0x29198
+
+#define VORTEX_MODEM_CTRL	0x291ac
 
 /* IRQ */
 #define VORTEX_IRQ_SOURCE 0x2a000	/* Interrupt source flags. */
@@ -193,19 +211,19 @@
 #define 	CTRL_IRQ_ENABLE	0x00004000
 
 /* write: Timer period config / read: TIMER IRQ ack. */
-#define VORTEX_IRQ_STAT 0x2919c
+#define VORTEX_IRQ_STAT		0x2919c
 
 /* DMA */
-#define VORTEX_ENGINE_CTRL 0x27ae8
-#define 	ENGINE_INIT 0x1380000
+#define VORTEX_ENGINE_CTRL	0x27ae8
+#define 	ENGINE_INIT	0x1380000
 
-		     /* MIDI *//* GAME. */
-#define VORTEX_MIDI_DATA 0x28800
-#define VORTEX_MIDI_CMD 0x28804	/* Write command / Read status */
+/* MIDI *//* GAME. */
+#define VORTEX_MIDI_DATA	0x28800
+#define VORTEX_MIDI_CMD		0x28804	/* Write command / Read status */
 
-#define VORTEX_CTRL2 0x2880c
+#define VORTEX_CTRL2		0x2880c
 #define		CTRL2_GAME_ADCMODE 0x40
-#define VORTEX_GAME_LEGACY 0x28808
-#define VORTEX_GAME_AXIS 0x28810
+#define VORTEX_GAME_LEGACY	0x28808
+#define VORTEX_GAME_AXIS	0x28810
 #define		AXIS_SIZE 4
 #define		AXIS_RANGE 0x1fff
diff -Nru a/sound/pci/au88x0/au8820.c b/sound/pci/au88x0/au8820.c
--- a/sound/pci/au88x0/au8820.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au8820.c	Tue May 18 23:41:45 2004
@@ -1,7 +1,7 @@
 #include "au8820.h"
 #include "au88x0.h"
 static struct pci_device_id snd_vortex_ids[] = {
-	{PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX,
+	{PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX_1,
 	 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,},
 	{0,}
 };
diff -Nru a/sound/pci/au88x0/au8820.h b/sound/pci/au88x0/au8820.h
--- a/sound/pci/au88x0/au8820.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au8820.h	Tue May 18 23:41:45 2004
@@ -48,9 +48,9 @@
 /* ADB */
 #define VORTEX_ADB_SR 0x10a00	/* Samplerates enable/disable */
 #define VORTEX_ADB_RTBASE 0x10800
-#define VORTEX_ADB_RTBASE_SIZE (VORTEX_ADB_CHNBASE - VORTEX_ADB_RTBASE)
+#define VORTEX_ADB_RTBASE_COUNT 103
 #define VORTEX_ADB_CHNBASE 0x1099c
-#define VORTEX_ADB_CHNBASE_SIZE (ADB_MASK - VORTEX_ADB_RTBASE_SIZE)
+#define VORTEX_ADB_CHNBASE_COUNT 22
 #define 	ROUTE_MASK	0x3fff
 #define     ADB_MASK   0x7f
 #define		ADB_SHIFT 0x7
diff -Nru a/sound/pci/au88x0/au8830.c b/sound/pci/au88x0/au8830.c
--- a/sound/pci/au88x0/au8830.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au8830.c	Tue May 18 23:41:45 2004
@@ -1,7 +1,7 @@
 #include "au8830.h"
 #include "au88x0.h"
 static struct pci_device_id snd_vortex_ids[] = {
-	{PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX2,
+	{PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX_2,
 	 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,},
 	{0,}
 };
diff -Nru a/sound/pci/au88x0/au8830.h b/sound/pci/au88x0/au8830.h
--- a/sound/pci/au88x0/au8830.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au8830.h	Tue May 18 23:41:45 2004
@@ -45,7 +45,7 @@
 #define VORTEX_ADBDMA_START 0x27c00	/* Which subbuffer starts */
 
 #define VORTEX_ADBDMA_STATUS 0x27A90	/* stored at AdbDma->this_10 / 2 DWORD in size. */
-/* Starting at MSB, each pair seem to be the current DMA page. */
+/* Starting at the MSB, each pair of bits seem to be the current DMA page. */
 /* This current page bits are consistent (same value) with VORTEX_ADBDMA_STAT) */
 
 /* DMA */
@@ -65,9 +65,9 @@
 /* ADB */
 #define VORTEX_ADB_SR 0x28400	/* Samplerates enable/disable */
 #define VORTEX_ADB_RTBASE 0x28000
-#define VORTEX_ADB_RTBASE_SIZE (VORTEX_ADB_CHNBASE - VORTEX_ADB_RTBASE)
+#define VORTEX_ADB_RTBASE_COUNT 173
 #define VORTEX_ADB_CHNBASE 0x282b4
-#define VORTEX_ADB_CHNBASE_SIZE (ADB_MASK - VORTEX_ADB_RTBASE_SIZE)
+#define VORTEX_ADB_CHNBASE_COUNT 24
 #define 	ROUTE_MASK	0xffff
 #define		SOURCE_MASK	0xff00
 #define     ADB_MASK   0xff
@@ -147,7 +147,7 @@
 #define VORTEX_SRC_RTBASE		0x26c00
 #define VORTEX_SRCBLOCK_SR		0x26cc0
 #define VORTEX_SRC_SOURCE		0x26cc4
-#define VORTEX_SRC_SOURCESIZE	0x26cc4
+#define VORTEX_SRC_SOURCESIZE	0x26cc8
 /* Params
 	0x26e00	: 1 U0
 	0x26e40	: 2 CR
diff -Nru a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c
--- a/sound/pci/au88x0/au88x0.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0.c	Tue May 18 23:41:45 2004
@@ -19,7 +19,7 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/interrupt.h>
-#define SNDRV_GET_ID
+#include <linux/moduleparam.h>
 #include <sound/initval.h>
 
 // module parameters (see "Module Parameters")
@@ -27,17 +27,18 @@
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
 static int pcifix[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 255 };
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(pcifix, "1-255i");
+module_param_array(pcifix, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcifix, "Enable VIA-workaround for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(pcifix,
 		   SNDRV_ENABLED
@@ -48,80 +49,72 @@
 MODULE_LICENSE("GPL");
 MODULE_DEVICES("{{Aureal Semiconductor Inc., Aureal Vortex Sound Processor}}");
 
-#ifndef MODULE
-/* format is: snd-mychip=enable,index,id */
-static int __init alsa_card_vortex_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str, &enable[nr_dev]) == 2 &&
-	       get_option(&str, &index[nr_dev]) == 2 &&
-	       get_id(&str, &id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-au88x0=", alsa_card_vortex_setup);
-#endif				/* ifndef MODULE */
-
 MODULE_DEVICE_TABLE(pci, snd_vortex_ids);
 
-static void __devinit snd_vortex_workaround(struct pci_dev *vortex, int fix)
+static void vortex_fix_latency(struct pci_dev *vortex)
 {
-	struct pci_dev *via = NULL;
 	int rc;
-
-	/* autodetect if workarounds are required */
-	while ((via = pci_find_device(PCI_VENDOR_ID_VIA,
-				      PCI_DEVICE_ID_VIA_8365_1, via))) {
-		if (fix == 255) {
+	if (!(rc = pci_write_config_byte(vortex, 0x40, 0xff))) {
 			printk(KERN_INFO CARD_NAME
-			       ": detected VIA KT133/KM133. activating workaround...\n");
-			fix = 3;	// do latency and via bridge workaround
-		}
-		break;
+			       ": vortex latency is 0xff\n");
+	} else {
+		printk(KERN_WARNING CARD_NAME
+				": could not set vortex latency: pci error 0x%x\n", rc);
 	}
+}
 
-	/* do not do anything if autodetection was enabled and found no VIA */
-	if (fix == 255)
-		return;
+static void vortex_fix_agp_bridge(struct pci_dev *via)
+{
+	int rc;
+	u8 value;
 
-	/* fix vortex latency */
-	if (fix & 0x01) {
-		if (!(rc = pci_write_config_byte(vortex, 0x40, 0xff))) {
-			printk(KERN_INFO CARD_NAME
-			       ": vortex latency is 0xff\n");
-		} else {
-			printk(KERN_WARNING CARD_NAME
-			       ": could not set vortex latency: pci error 0x%x\n",
-			       rc);
-		}
+	/*
+	 * only set the bit (Extend PCI#2 Internal Master for
+	 * Efficient Handling of Dummy Requests) if the can
+	 * read the config and it is not already set
+	 */
+
+	if (!(rc = pci_read_config_byte(via, 0x42, &value))
+			&& ((value & 0x10)
+				|| !(rc = pci_write_config_byte(via, 0x42, value | 0x10)))) {
+		printk(KERN_INFO CARD_NAME
+				": bridge config is 0x%x\n", value | 0x10);
+	} else {
+		printk(KERN_WARNING CARD_NAME
+				": could not set vortex latency: pci error 0x%x\n", rc);
 	}
+}
 
-	/* fix via agp bridge */
-	if (via && (fix & 0x02)) {
-		u8 value;
-
-		/*
-		 * only set the bit (Extend PCI#2 Internal Master for
-		 * Efficient Handling of Dummy Requests) if the can
-		 * read the config and it is not already set
-		 */
-
-		if (!(rc = pci_read_config_byte(via, 0x42, &value))
-		    && ((value & 0x10)
-			|| !(rc =
-			     pci_write_config_byte(via, 0x42, value | 0x10)))) {
+static void __devinit snd_vortex_workaround(struct pci_dev *vortex, int fix)
+{
+	struct pci_dev *via;
 
-			printk(KERN_INFO CARD_NAME
-			       ": bridge config is 0x%x\n", value | 0x10);
-		} else {
-			printk(KERN_WARNING CARD_NAME
-			       ": could not set vortex latency: pci error 0x%x\n",
-			       rc);
+	/* autodetect if workarounds are required */
+	if (fix == 255) {
+		/* VIA KT133 */
+		via = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8365_1, NULL);
+		/* VIA Apollo */
+		if (via == NULL) {
+			via = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C598_1, NULL);
+		}
+		/* AMD Irongate */
+		if (via == NULL) {
+			via = pci_find_device(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_7007, NULL);
 		}
+		if (via) {
+			printk(KERN_INFO CARD_NAME ": Activating latency workaround...\n");
+			vortex_fix_latency(vortex);
+			vortex_fix_agp_bridge(via);
+		}
+	} else {
+		if (fix & 0x1)
+			vortex_fix_latency(vortex);
+		if ((fix & 0x2) && (via = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8365_1, NULL)))
+			vortex_fix_agp_bridge(via);
+		if ((fix & 0x4) && (via = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C598_1, NULL)))
+			vortex_fix_agp_bridge(via);
+		if ((fix & 0x8) && (via = pci_find_device(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_7007, NULL)))
+			vortex_fix_agp_bridge(via);
 	}
 }
 
@@ -370,7 +363,7 @@
 		return err;
 	}
 	// (7)
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	vortex_connect_default(chip, 1);
 	vortex_enable_int(chip);
@@ -380,16 +373,8 @@
 // destructor -- see "Destructor" sub-section
 static void __devexit snd_vortex_remove(struct pci_dev *pci)
 {
-	vortex_t *vortex = snd_magic_cast(vortex_t,
-					  pci_get_drvdata(pci), return);
-
-	if (vortex) {
-		// Release ALSA stuff.
-		snd_card_free(vortex->card);
-		// Free Vortex struct.
-		pci_set_drvdata(pci, NULL);
-	} else
-		printk("snd_vortex_remove called more than one time!\n");
+	snd_card_free(pci_get_drvdata(pci));
+	pci_set_drvdata(pci, NULL);
 }
 
 // pci_driver definition
@@ -403,16 +388,7 @@
 // initialization of the module
 static int __init alsa_card_vortex_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Aureal soundcard not found "
-		       "or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 // clean up the module
diff -Nru a/sound/pci/au88x0/au88x0.h b/sound/pci/au88x0/au88x0.h
--- a/sound/pci/au88x0/au88x0.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0.h	Tue May 18 23:41:45 2004
@@ -17,6 +17,7 @@
 #ifndef __SOUND_AU88X0_H
 #define __SOUND_AU88X0_H
 
+#ifdef __KERNEL__
 #include <sound/driver.h>
 #include <linux/init.h>
 #include <linux/pci.h>
@@ -28,6 +29,8 @@
 #include <sound/hwdep.h>
 #include <sound/ac97_codec.h>
 
+#endif
+
 #ifndef CHIP_AU8820
 #include "au88x0_eq.h"
 #include "au88x0_a3d.h"
@@ -69,20 +72,19 @@
 #define IRQ_MODEM	0x4000
 
 /* ADB Resource */
-#define VORTEX_RESOURCE_DMA		0x00000000
-#define VORTEX_RESOURCE_SRC		0x00000001
+#define VORTEX_RESOURCE_DMA	0x00000000
+#define VORTEX_RESOURCE_SRC	0x00000001
 #define VORTEX_RESOURCE_MIXIN	0x00000002
 #define VORTEX_RESOURCE_MIXOUT	0x00000003
-#define VORTEX_RESOURCE_A3D		0x00000004
+#define VORTEX_RESOURCE_A3D	0x00000004
 #define VORTEX_RESOURCE_LAST	0x00000005
 
 /* Check for SDAC bit in "Extended audio ID" AC97 register */
-#define VORTEX_IS_QUAD(x) ((x->codec == NULL) ?  0 : (x->codec->ext_id|0x80))
+#define VORTEX_IS_QUAD(x) ((x->codec == NULL) ?  0 : (x->codec->ext_id&0x80))
 /* Check if chip has bug. */
 #define IS_BAD_CHIP(x) (\
-	(x->rev < 3 && x->device == PCI_DEVICE_ID_AUREAL_VORTEX) || \
-	(x->rev < 0xfe && x->device == PCI_DEVICE_ID_AUREAL_VORTEX2) || \
-	(x->rev < 0xfe && x->device == PCI_DEVICE_ID_AUREAL_ADVANTAGE))
+	(x->rev == 0xfe && x->device == PCI_DEVICE_ID_AUREAL_VORTEX_2) || \
+	(x->rev == 0xfe && x->device == PCI_DEVICE_ID_AUREAL_ADVANTAGE))
 
 
 /* PCM devices */
diff -Nru a/sound/pci/au88x0/au88x0_a3d.c b/sound/pci/au88x0/au88x0_a3d.c
--- a/sound/pci/au88x0/au88x0_a3d.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0_a3d.c	Tue May 18 23:41:45 2004
@@ -617,6 +617,12 @@
 static void vortex_Vort3D_connect(vortex_t * v, int en)
 {
 	int i;
+	
+// Disable AU8810 routes, since they seem to be wrong (in au8810.h).
+#ifdef CHIP_AU8810
+	return;
+#endif
+	
 #if 1
 	/* Alloc Xtalk mixin resources */
 	v->mixxtlk[0] =
diff -Nru a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c
--- a/sound/pci/au88x0/au88x0_core.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0_core.c	Tue May 18 23:41:45 2004
@@ -72,6 +72,7 @@
             into au88x0_pcm.c .
  06-06-2003 Buffer shifter bugfix. Mixer volume fix.
  07-12-2003 A3D routing finally fixed. Believed to be OK.
+ 25-03-2004 Many thanks to Claudia, for such valuable bug reports.
  
 */
 
@@ -772,7 +773,9 @@
 	return 1;
 }
 
- /*FIFO*/ static void
+ /*FIFO*/ 
+
+static void
 vortex_fifo_clearadbdata(vortex_t * vortex, int fifo, int x)
 {
 	for (x--; x >= 0; x--)
@@ -1345,31 +1348,29 @@
 	dma->nr_periods = count;
 	dma->sgbuf = sgbuf;
 
-	psize--;
-
 	dma->cfg0 = 0;
 	dma->cfg1 = 0;
 	switch (count) {
 		/* Four or more pages */
 	default:
 	case 4:
-		dma->cfg1 |= 0x88000000 | 0x44000000 | 0x30000000 | psize;
-		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4),
+		dma->cfg1 |= 0x88000000 | 0x44000000 | 0x30000000 | (psize-1);
+		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4) + 0xc,
 			snd_sgbuf_get_addr(sgbuf, psize * 3));
 		/* 3 pages */
 	case 3:
 		dma->cfg0 |= 0x12000000;
-		dma->cfg1 |= 0x80000000 | 0x40000000 | (psize << 0xc);
-		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4),
+		dma->cfg1 |= 0x80000000 | 0x40000000 | ((psize-1) << 0xc);
+		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4)  + 0x8,
 			snd_sgbuf_get_addr(sgbuf, psize * 2));
 		/* 2 pages */
 	case 2:
-		dma->cfg0 |= 0x88000000 | 0x44000000 | 0x10000000 | psize;
-		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4),
+		dma->cfg0 |= 0x88000000 | 0x44000000 | 0x10000000 | (psize-1);
+		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4) + 0x4,
 			snd_sgbuf_get_addr(sgbuf, psize));
 		/* 1 page */
 	case 1:
-		dma->cfg0 |= 0x80000000 | 0x40000000 | (psize << 0xc);
+		dma->cfg0 |= 0x80000000 | 0x40000000 | ((psize-1) << 0xc);
 		hwwrite(vortex->mmio, VORTEX_WTDMA_BUFBASE + (wtdma << 4),
 			snd_sgbuf_get_addr(sgbuf, 0));
 		break;
@@ -1575,11 +1576,11 @@
 	/* it looks like we are writing more than we need to...
 	 * if we write what we are supposed to it breaks things... */
 	hwwrite(vortex->mmio, VORTEX_ADB_SR, 0);
-	for (i = 0; i < VORTEX_ADB_RTBASE_SIZE; i++)
+	for (i = 0; i < VORTEX_ADB_RTBASE_COUNT; i++)
 		hwwrite(vortex->mmio, VORTEX_ADB_RTBASE + (i << 2),
 			hwread(vortex->mmio,
 			       VORTEX_ADB_RTBASE + (i << 2)) | ROUTE_MASK);
-	for (i = 0; i < VORTEX_ADB_CHNBASE_SIZE; i++) {
+	for (i = 0; i < VORTEX_ADB_CHNBASE_COUNT; i++) {
 		hwwrite(vortex->mmio, VORTEX_ADB_CHNBASE + (i << 2),
 			hwread(vortex->mmio,
 			       VORTEX_ADB_CHNBASE + (i << 2)) | ROUTE_MASK);
@@ -1922,6 +1923,9 @@
 	// Connect front channels through EQ.
 	vortex_connection_mix_adb(vortex, en, 0x11, mixers[0], ADB_EQIN(0));
 	vortex_connection_mix_adb(vortex, en, 0x11, mixers[1], ADB_EQIN(1));
+	/* Lower volume, since EQ has some gain. */
+	vortex_mix_setvolumebyte(vortex, mixers[0], 0);
+	vortex_mix_setvolumebyte(vortex, mixers[1], 0);
 	vortex_route(vortex, en, 0x11, ADB_EQOUT(0), ADB_CODECOUT(0));
 	vortex_route(vortex, en, 0x11, ADB_EQOUT(1), ADB_CODECOUT(1));
 
@@ -2007,9 +2011,11 @@
 }
 
 /* Default Connections  */
+static int
+vortex_adb_allocroute(vortex_t * vortex, int dma, int nr_ch, int dir, int type);
+
 static void vortex_connect_default(vortex_t * vortex, int en)
 {
-	// FIXME: check if checkout was succesful.
 	// Connect AC97 codec.
 	vortex->mixplayb[0] = vortex_adb_checkinout(vortex, vortex->fixed_res, en,
 				  VORTEX_RESOURCE_MIXOUT);
@@ -2044,7 +2050,7 @@
 #ifndef CHIP_AU8810
 	vortex_wt_connect(vortex, en);
 #endif
-	// A3D (crosstalk canceler and A3D slices).
+	// A3D (crosstalk canceler and A3D slices). AU8810 disabled for now.
 #ifndef CHIP_AU8820
 	vortex_Vort3D_connect(vortex, en);
 #endif
@@ -2053,18 +2059,7 @@
 	// Connect DSP interface for SQ3500 turbo (not here i think...)
 
 	// Connect AC98 modem codec
- 	
- 	/* Fast Play Workaround. Revision 0xFE does not seem to need it. */
- 	printk(KERN_INFO "vortex: revision = 0x%x, device = %d\n", vortex->rev, vortex->device);
- 	if (IS_BAD_CHIP(vortex)) {
- 		printk(KERN_INFO "vortex: Erratum workaround enabled.\n");
- #ifndef CHIP_AU8820
- 		vortex->fixed_res[VORTEX_RESOURCE_DMA] = 0x00000001;
- #endif
- 		// Channel swapping workaround. We are nuking registers somewhere, or
- 		// its a hardware bug.
- 		vortex->fixed_res[VORTEX_RESOURCE_SRC] = 0x00000001;
- 	}
+	
 }
 
 /*
@@ -2081,7 +2076,7 @@
 {
 	stream_t *stream;
 	int i, en;
-
+	
 	if ((nr_ch == 3)
 	    || ((dir == SNDRV_PCM_STREAM_CAPTURE) && (nr_ch > 2)))
 		return -EBUSY;
@@ -2105,7 +2100,6 @@
 	stream->dir = dir;
 	stream->type = type;
 
-	// FIXME: check for success of checkout or checkin.
 	/* PLAYBACK ROUTES. */
 	if (dir == SNDRV_PCM_STREAM_PLAYBACK) {
 		int src[4], mix[4], ch_top;
@@ -2165,8 +2159,7 @@
 		for (i = 0; i < nr_ch; i++) {
 			if (stream->type == VORTEX_PCM_ADB) {
 				vortex_connection_adbdma_src(vortex, en,
-							     src[nr_ch - 1], 
-							     //src[0], 
+							     src[nr_ch - 1],
 							     dma,
 							     src[i]);
 				vortex_connection_src_mixin(vortex, en,
@@ -2188,7 +2181,7 @@
 #ifndef CHIP_AU8820
 			if (stream->type == VORTEX_PCM_A3D) {
 				vortex_connection_adbdma_src(vortex, en,
-							     src[0], 
+							     src[nr_ch - 1], 
 								 dma,
 							     src[i]);
 				vortex_route(vortex, en, 0x11, ADB_SRCOUT(src[i]), ADB_A3DIN(a3d));
@@ -2237,7 +2230,7 @@
 				     ADB_SPDIFOUT(1));
 		}
 #endif
-		/* CAPTURE ROUTES. */
+	/* CAPTURE ROUTES. */
 	} else {
 		int src[2], mix[2];
 
@@ -2271,7 +2264,7 @@
 			vortex_connection_mixin_mix(vortex, en,
 						    MIX_CAPT(1), mix[0], 0);
 			vortex_connection_src_adbdma(vortex, en,
-						     src[nr_ch - 1],
+						     src[0],
 						     src[0], dma);
 		} else {
 			vortex_connection_mixin_mix(vortex, en,
@@ -2279,7 +2272,7 @@
 			vortex_connection_mix_src(vortex, en, 0x11, mix[1],
 						  src[1]);
 			vortex_connection_src_src_adbdma(vortex, en,
-							 src[0], src[0],
+							 src[1], src[0],
 							 src[1], dma);
 		}
 	}
diff -Nru a/sound/pci/au88x0/au88x0_eq.c b/sound/pci/au88x0/au88x0_eq.c
--- a/sound/pci/au88x0/au88x0_eq.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0_eq.c	Tue May 18 23:41:45 2004
@@ -710,11 +710,13 @@
 static void vortex_Eqlzr_SetBypass(vortex_t * vortex, long bp)
 {
 	eqlzr_t *eq = &(vortex->eq);
-
+	
 	if ((eq->this28) && (bp == 0)) {
+		/* EQ enabled */
 		vortex_Eqlzr_SetAllBandsFromActiveCoeffSet(vortex);
 		vortex_EqHw_SetBypassGain(vortex, eq->this08, eq->this08);
 	} else {
+		/* EQ disabled. */
 		vortex_EqHw_SetLeftGainsTarget(vortex, (u16 *) (eq->this14));
 		vortex_EqHw_SetRightGainsTarget(vortex, (u16 *) (eq->this14));
 		vortex_EqHw_SetBypassGain(vortex, eq->this0c, eq->this0c);
diff -Nru a/sound/pci/au88x0/au88x0_game.c b/sound/pci/au88x0/au88x0_game.c
--- a/sound/pci/au88x0/au88x0_game.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0_game.c	Tue May 18 23:41:45 2004
@@ -42,8 +42,6 @@
 
 #define VORTEX_GAME_DWAIT	20	/* 20 ms */
 
-static struct gameport gameport;
-
 static unsigned char vortex_game_read(struct gameport *gameport)
 {
 	vortex_t *vortex = gameport->driver;
@@ -98,8 +96,10 @@
 
 static int vortex_gameport_register(vortex_t * vortex)
 {
-	vortex->gameport = &gameport;
-
+	if ((vortex->gameport = snd_kcalloc(sizeof(struct gameport), GFP_KERNEL)) == NULL) {
+		return -1;
+	};
+	
 	vortex->gameport->driver = vortex;
 	vortex->gameport->fuzz = 64;
 
@@ -118,8 +118,10 @@
 
 static int vortex_gameport_unregister(vortex_t * vortex)
 {
-	if (vortex->gameport != NULL)
+	if (vortex->gameport != NULL) {
 		gameport_unregister_port(vortex->gameport);
+		kfree(vortex->gameport);
+	}
 	return 0;
 }
 
diff -Nru a/sound/pci/au88x0/au88x0_pcm.c b/sound/pci/au88x0/au88x0_pcm.c
--- a/sound/pci/au88x0/au88x0_pcm.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0_pcm.c	Tue May 18 23:41:45 2004
@@ -18,8 +18,7 @@
  * Vortex PCM ALSA driver.
  *
  * Supports ADB and WT DMA. Unfortunately, WT channels do not run yet.
- * It remains stuck,and DMA transfers do not happen.
- *
+ * It remains stuck,and DMA transfers do not happen. 
  */
 
 #include <sound/driver.h>
@@ -124,7 +123,7 @@
 	vortex_t *vortex = snd_pcm_substream_chip(substream);
 	snd_pcm_runtime_t *runtime = substream->runtime;
 	int err;
-
+	
 	/* Force equal size periods */
 	if ((err =
 	     snd_pcm_hw_constraint_integer(runtime,
@@ -232,12 +231,13 @@
 	}
 #ifndef CHIP_AU8810
 	else {
-		/*if (stream != NULL)
+		/* if (stream != NULL)
 		   vortex_wt_allocroute(chip, substream->number, 0); */
 		vortex_wt_allocroute(chip, substream->number,
 				     params_channels(hw_params));
 		stream = substream->runtime->private_data =
 		    &chip->dma_wt[substream->number];
+		stream->dma = substream->number;
 		stream->substream = substream;
 		vortex_wtdma_setbuffers(chip, substream->number, sgbuf,
 					params_period_bytes(hw_params),
@@ -325,7 +325,7 @@
 		break;
 	case SNDRV_PCM_TRIGGER_STOP:
 		// do something to stop the PCM engine
-		//printk(KERN_INFO "vortex: stop %d\n", dma)
+		//printk(KERN_INFO "vortex: stop %d\n", dma);
 		stream->fifo_enabled = 0;
 		if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT)
 			vortex_adbdma_pausefifo(chip, dma);
@@ -502,18 +502,13 @@
 	if (idx == VORTEX_PCM_ADB)
 		snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE,
 				&snd_vortex_playback_ops);
-
+	
 	/* pre-allocation of Scatter-Gather buffers */
 	
 	snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
-										  snd_dma_pci_data(chip->pci_dev),
-										  0x10000, 0x10000);
-	
-	// The above should be used, as soon as ALSA gets updated.
-	/*
-	snd_pcm_lib_preallocate_sg_pages_for_all(chip->pci_dev, pcm,
-						 0x10000, 0x10000);
-	*/
+					      snd_dma_pci_data(chip->pci_dev),
+					      0x10000, 0x10000);
+
 	if (VORTEX_PCM_TYPE(pcm) == VORTEX_PCM_SPDIF) {
 		snd_kcontrol_t *kcontrol;
 
diff -Nru a/sound/pci/au88x0/au88x0_synth.c b/sound/pci/au88x0/au88x0_synth.c
--- a/sound/pci/au88x0/au88x0_synth.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/au88x0/au88x0_synth.c	Tue May 18 23:41:45 2004
@@ -36,6 +36,7 @@
 
 /* WT */
 
+/* Put 2 WT channels together for one stereo interlaced channel. */
 static void vortex_wt_setstereo(vortex_t * vortex, u32 wt, u32 stereo)
 {
 	int temp;
@@ -47,6 +48,7 @@
 	hwwrite(vortex->mmio, WT_STEREO(wt), temp);
 }
 
+/* Join to mixdown route. */
 static void vortex_wt_setdsout(vortex_t * vortex, u32 wt, int en)
 {
 	int temp;
@@ -60,7 +62,7 @@
 	hwwrite(vortex->mmio, WT_DSREG((wt >= 0x20) ? 1 : 0), temp);
 }
 
-// WT routing is still a mistery.
+/* Setup WT route. */
 static int vortex_wt_allocroute(vortex_t * vortex, int wt, int nr_ch)
 {
 	wt_voice_t *voice = &(vortex->wt_voice[wt]);
@@ -68,13 +70,15 @@
 
 	//FIXME: WT audio routing.
 	if (nr_ch) {
-		vortex_fifo_wtinitialize(vortex, wt, 2);
+		vortex_fifo_wtinitialize(vortex, wt, 1);
 		vortex_fifo_setwtvalid(vortex, wt, 1);
 		vortex_wt_setstereo(vortex, wt, nr_ch - 1);
 	} else
 		vortex_fifo_setwtvalid(vortex, wt, 0);
-
-	vortex_wt_setdsout(vortex, wt, 0);
+	
+	/* Set mixdown mode. */
+	vortex_wt_setdsout(vortex, wt, 1);
+	/* Set other parameter registers. */
 	hwwrite(vortex->mmio, WT_SRAMP(0), 0x880000);
 	//hwwrite(vortex->mmio, WT_GMODE(0), 0xffffffff);
 #ifdef CHIP_AU8830
@@ -87,7 +91,7 @@
 
 	temp = hwread(vortex->mmio, WT_PARM(wt, 3));
 	printk("vortex: WT PARM3: %x\n", temp);
-	hwwrite(vortex->mmio, WT_PARM(wt, 3), temp);
+	//hwwrite(vortex->mmio, WT_PARM(wt, 3), temp);
 
 	hwwrite(vortex->mmio, WT_DELAY(wt, 0), 0);
 	hwwrite(vortex->mmio, WT_DELAY(wt, 1), 0);
@@ -106,6 +110,7 @@
 	return 0;
 }
 
+
 static void vortex_wt_connect(vortex_t * vortex, int en)
 {
 	int i, ii, mix;
@@ -129,15 +134,12 @@
 				     ADB_WTOUT(i, ii + 0x20), ADB_MIXIN(mix));
 
 			vortex_connection_mixin_mix(vortex, en, mix,
-						    vortex->mixplayb[ii %
-								     2], 0);
+						    vortex->mixplayb[ii % 2], 0);
 			if (VORTEX_IS_QUAD(vortex))
 				vortex_connection_mixin_mix(vortex, en,
 							    mix,
-							    vortex->
-							    mixplayb[2 +
-								     (ii %
-								      2)], 0);
+							    vortex->mixplayb[2 +
+								     (ii % 2)], 0);
 		}
 	}
 	for (i = 0; i < NR_WT; i++) {
diff -Nru a/sound/pci/azt3328.c b/sound/pci/azt3328.c
--- a/sound/pci/azt3328.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/azt3328.c	Tue May 18 23:41:45 2004
@@ -98,13 +98,13 @@
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/rawmidi.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include "azt3328.h"
 
@@ -166,18 +166,19 @@
 #ifdef SUPPORT_JOYSTICK
 static int joystick[SNDRV_CARDS];
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for AZF3328 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for AZF3328 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable AZF3328 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_INDEX_DESC);
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick, bool, boot_devs, 0444);
 MODULE_PARM_DESC(joystick, "Enable joystick for AZF3328 soundcard.");
 MODULE_PARM_SYNTAX(joystick, SNDRV_BOOLEAN_FALSE_DESC);
 #endif
@@ -1267,6 +1268,10 @@
         if (chip->irq < 0)
                 goto __end_hw;
 
+	/* reset (close) mixer */
+	snd_azf3328_mixer_set_mute(chip, IDX_MIXER_PLAY_MASTER, 1); /* first mute master volume */
+	snd_azf3328_mixer_write(chip, IDX_MIXER_RESET, 0x0, WORD_VALUE);
+
         /* interrupt setup - mask everything */
 	/* FIXME */
 
@@ -1540,7 +1545,7 @@
 	snd_azf3328_config_joystick(chip, joystick[dev]);
 #endif
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 
 	snd_azf3328_dbgcallleave();
@@ -1549,16 +1554,8 @@
 
 static void __devexit snd_azf3328_remove(struct pci_dev *pci)
 {
-        azf3328_t *chip = snd_magic_cast(azf3328_t, pci_get_drvdata(pci), return);
-	
 	snd_azf3328_dbgcallenter();
-
-	/* reset (close) mixer */
-	snd_azf3328_mixer_set_mute(chip, IDX_MIXER_PLAY_MASTER, 1); /* first mute master volume */
-	snd_azf3328_mixer_write(chip, IDX_MIXER_RESET, 0x0, WORD_VALUE);
-
-        if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 	snd_azf3328_dbgcallleave();
 }
@@ -1573,18 +1570,10 @@
 static int __init alsa_card_azf3328_init(void)
 {
 	int err;
-	
 	snd_azf3328_dbgcallenter();
-
-	if ((err = pci_module_init(&driver)) < 0)
-	{
-#ifdef MODULE
-		printk(KERN_ERR "azt3328: no AZF3328 based soundcards found or device busy\n");
-#endif
-		return err;
-	}
+	err = pci_module_init(&driver);
 	snd_azf3328_dbgcallleave();
-	return 0;
+	return err;
 }
 
 static void __exit alsa_card_azf3328_exit(void)
@@ -1596,31 +1585,3 @@
 
 module_init(alsa_card_azf3328_init)
 module_exit(alsa_card_azf3328_exit)
-
-#ifndef MODULE
-
-/* format is: snd-azf3328=enable,index,id,joystick */
-
-static int __init alsa_card_azf3328_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	snd_azf3328_dbgcallenter();
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2
-#ifdef SUPPORT_JOYSTICK
-	       && get_option(&str,&joystick[nr_dev]) == 2
-#endif
-	       );
-	nr_dev++;
-	snd_azf3328_dbgcallleave();
-	return 1;
-}
-
-__setup("snd-azt3328=", alsa_card_azf3328_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/bt87x.c b/sound/pci/bt87x.c
--- a/sound/pci/bt87x.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/bt87x.c	Tue May 18 23:41:45 2004
@@ -26,13 +26,13 @@
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <asm/io.h>
 #include <asm/bitops.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/control.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Clemens Ladisch <clemens@ladisch.de>");
@@ -46,17 +46,18 @@
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int digital_rate[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0 }; /* digital input rate */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Bt87x soundcard");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Bt87x soundcard");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Bt87x soundcard");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(digital_rate, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(digital_rate, int, boot_devs, 0444);
 MODULE_PARM_DESC(digital_rate, "Digital input rate for Bt87x soundcard");
 MODULE_PARM_SYNTAX(digital_rate, SNDRV_ENABLED);
 
@@ -808,7 +809,7 @@
 	if (err < 0)
 		goto _error;
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	++dev;
 	return 0;
 
@@ -819,9 +820,7 @@
 
 static void __devexit snd_bt87x_remove(struct pci_dev *pci)
 {
-	bt87x_t *chip = snd_magic_cast(bt87x_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -851,16 +850,7 @@
 
 static int __init alsa_card_bt87x_init(void)
 {
-	int err;
-
-	err = pci_module_init(&driver);
-	if (err < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Bt87x soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_bt87x_exit(void)
@@ -870,24 +860,3 @@
 
 module_init(alsa_card_bt87x_init)
 module_exit(alsa_card_bt87x_exit)
-
-#ifndef MODULE
-
-/* format is: snd-bt87x=enable,index,id */
-
-static int __init alsa_card_bt87x_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-bt87x=", alsa_card_bt87x_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/cmipci.c b/sound/pci/cmipci.c
--- a/sound/pci/cmipci.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/cmipci.c	Tue May 18 23:41:45 2004
@@ -20,10 +20,6 @@
 /* Does not work. Warning may block system in capture mode */
 /* #define USE_VAR48KRATE */
 
-/* Define this if you want soft ac3 encoding */
-#define DO_SOFT_AC3
-#define USE_AES_IEC958
-
 #include <sound/driver.h>
 #include <asm/io.h>
 #include <linux/delay.h>
@@ -32,6 +28,7 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/control.h>
@@ -41,7 +38,6 @@
 #include <sound/opl3.h>
 #include <sound/sb.h>
 #include <sound/asoundef.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Takashi Iwai <tiwai@suse.de>");
@@ -62,35 +58,31 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable switches */
 static long mpu_port[SNDRV_CARDS];
 static long fm_port[SNDRV_CARDS];
-#ifdef DO_SOFT_AC3
 static int soft_ac3[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)]=1};
-#endif
 #ifdef SUPPORT_JOYSTICK
 static int joystick_port[SNDRV_CARDS];
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for C-Media PCI soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for C-Media PCI soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable C-Media PCI soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0},{0x330},{0x320},{0x310},{0x300}},dialog:list");
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM port.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED ",allows:{{0},{0x388},{0x3c8},{0x3e0},{0x3e8}},dialog:list");
-#ifdef DO_SOFT_AC3
-MODULE_PARM(soft_ac3, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(soft_ac3, bool, boot_devs, 0444);
 MODULE_PARM_DESC(soft_ac3, "Sofware-conversion of raw SPDIF packets (model 033 only).");
-MODULE_PARM_SYNTAX(soft_ac3, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
-#endif
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick_port, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_port, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_port, "Joystick port address.");
 MODULE_PARM_SYNTAX(joystick_port, SNDRV_ENABLED ",allows:{{0},{1},{0x200},{0x201}},dialog:list");
 #endif
@@ -426,7 +418,6 @@
 	unsigned int is_dac;		/* is dac? */
 	int bytes_per_frame;
 	int shift;
-	int ac3_shift;	/* extra shift: 1 on soft ac3 mode */
 };
 
 /* mixer elements toggled/resumed during ac3 playback */
@@ -472,10 +463,6 @@
 
 	unsigned int dig_status;
 	unsigned int dig_pcm_status;
-#ifdef USE_AES_IEC958
-	snd_ctl_elem_value_t *spdif_channel;
-#endif
-	snd_kcontrol_t *spdif_pcm_ctl;
 
 	snd_pcm_hardware_t *hw_info[3]; /* for playbacks */
 
@@ -784,8 +771,6 @@
 	/* buffer and period sizes in frame */
 	rec->dma_size = runtime->buffer_size << rec->shift;
 	rec->period_size = runtime->period_size << rec->shift;
-	rec->dma_size <<= rec->ac3_shift;
-	rec->period_size <<= rec->ac3_shift;
 	if (runtime->channels > 2) {
 		/* multi-channels */
 		rec->dma_size = (rec->dma_size * runtime->channels) / 2;
@@ -911,7 +896,6 @@
 	ptr = snd_cmipci_read(cm, reg) - rec->offset;
 	ptr = bytes_to_frames(substream->runtime, ptr);
 #endif
-	ptr >>= rec->ac3_shift;
 	if (substream->runtime->channels > 2)
 		ptr = (ptr * 2) / substream->runtime->channels;
 	return ptr;
@@ -953,358 +937,6 @@
 	return snd_cmipci_pcm_pointer(cm, &cm->channel[CM_CH_CAPT], substream);
 }
 
-#ifdef DO_SOFT_AC3
-/*
- * special tricks for soft ac3 transfer:
- *
- * we compose an iec958 subframe from 16bit ac3 sample and
- * write the raw subframe via 32bit data mode.
- */
-
-# ifndef USE_AES_IEC958
-
-/* find parity for bit 4~30 */
-static unsigned int parity(unsigned int data)
-{
-	unsigned int parity = 0;
-	int counter = 4;
-
-	data >>= 4;	/* start from bit 4 */
-	while (counter <= 30) {
-		if (data & 1)
-			parity++;
-		data >>= 1;
-		counter++;
-	}
-	return parity & 1;
-}
-
-/*
- * compose 32bit iec958 subframe with non-audio data.
- * bit 0-3  = preamble
- *     4-7  = aux (=0)
- *     8-27 = data (12-27 for 16bit)
- *     28   = validity (=0)
- *     29   = user data (=0)
- *     30   = channel status
- *     31   = parity
- *
- * channel status is assumed as consumer, non-audio
- * thus all 0 except bit 1
- */
-inline static u32 convert_ac3_32bit(cmipci_t *cm, u32 val)
-{
-	u32 data = (u32)val << 12;
-
-	if (cm->spdif_counter == 2 || cm->spdif_counter == 3) /* bit 1 */
-		data |= 0x40000000;	/* indicate AC-3 raw data */
-	if (parity(data))		/* parity bit 4-30 */
-		data |= 0x80000000;
-	if (cm->spdif_counter == 0)
-		data |= 3;		/* preamble 'M' */
-	else if (cm->spdif_counter & 1)
-		data |= 5;		/* odd, 'W' */
-	else
-		data |= 9;		/* even, 'M' */
-
-	cm->spdif_counter++;
-	if (cm->spdif_counter == 384)
-		cm->spdif_counter = 0;
-
-	return data;
-}
-
-# else  /* if USE_AES_IEC958 */
-
-/*
- * The bitstream handling
- */
-typedef struct iec958_stru_bitstream {
-	u32 *data;		/* Holds the current position */
-	u32  left;		/* Bits left in current 32bit frame */
-	u32  word;		/* The 32bit frame of the current position */
-	u32  bits;		/* All bits together */
-	int   err;		/* Error condition */
-} iec958_bitstream_t ;
-
-static iec958_bitstream_t bs;
-
-/* Initialize ptr on the buffer */
-static void iec958_init_bitstream(u8 *buf, u32 size)
-{
-	bs.data = (u32 *)buf;		/* Set initial position */
-	bs.word = *bs.data;		/* The first 32bit frame */
-	bs.left = 32;			/* has exactly 32bits */
-	bs.bits = size;
-	bs.err = 0;
-}
-
-/* Remove ptr on the buffer */
-static void iec958_clear_bitstream(void)
-{
-	bs.data = NULL;
-	bs.left = 0;
-	bs.err = 0;
-}
-
-/* Get bits from bitstream (max 32) */
-static inline u32 iec958_getbits(u32 bits)
-{
-	u32 res;
-
-	if (bs.bits < bits) {
-		bits = bs.bits;
-		bs.err = 1;
-	}
-	if (bits > 32) {
-		bits = 32;
-		bs.err = 1;
-	}
-	bs.bits -= bits;
-
-#  ifdef WORDS_BIGENDIAN
-	if (bits < bs.left) {		/* Within 32bit frame */
-		res = (bs.word << (32 - bs.left)) >> (32 - bits);
-		bs.left -= bits;
-		goto out;
-	}				/* We may cross the frame boundary */
-	res   = (bs.word << (32 - bs.left)) >> (32 - bs.left);
-	bits -= bs.left;
-
-	bs.word = *(++bs.data);		/* Next 32bit frame */
-
-	if (bits)			/* Add remaining bits, if any */
-		res = (res << bits) | (bs.word >> (32 - bits));
-
-#  else  /* not WORDS_BIGENDIAN */
-
-	if (bits < bs.left) {		/* Within 32bit frame */
-		res = (bs.word << (32 - bits)) >> (32 - bits);
-		bs.word >>= bits;
-		bs.left -= bits;
-		goto out;
-	}				/* We may cross the frame boundary */
-	res   = bs.word;
-	bits -= bs.left;
-
-	bs.word = *(++bs.data);		/* Next 32bit frame */
-
-	if (bits) {			/* Add remaining bits, if any */
-		res = res | (((bs.word << (32 - bits)) >> (32 - bits)) << bits);
-		bs.word >>= bits;
-	}
-#  endif /* not WORDS_BIGENDIAN */
-
-	bs.left = (32 - bits);
-out:
-	return res;
-}
-
-static inline u32 iec958_bits_avail(void)
-{
-	return bs.bits;
-}
-
-static inline int iec958_error(void)
-{
-	return bs.err;
-}
-
-/*
- * Determine parity for time slots 4 upto 30
- * to be sure that bit 4 upt 31 will carry
- * an even number of ones and zeros.
- */
-static u32 iec958_parity(u32 data)
-{
-	u32 parity = 0;
-	int counter = 4;
-
-	data >>= 4;     /* start from bit 4 */
-	while (counter++ <= 30) {
-		if (data & 0x00000001)
-			parity++;
-		data >>= 1;
-	}
-	return (parity & 0x00000001);
-}
-
-/*
- * Compose 32bit iec958 subframe, two sub frames
- * build one frame with two channels.
- *
- * bit 0-3  = preamble
- *     4-7  = AUX (=0)
- *     8-27 = data (12-27 for 16bit, 8-27 for 20bit, and 24bit without AUX)
- *     28   = validity (0 for valid data, else 'in error')
- *     29   = user data (0)
- *     30   = channel status (24 bytes for 192 frames)
- *     31   = parity
- */
-
-static inline u32 iec958_subframe(cmipci_t *cm, snd_ctl_elem_value_t * ucontrol)
-{
-	u32 data;
-	u32 byte = cm->spdif_counter >> 4;
-	u32 mask = 1 << ((cm->spdif_counter >> 1) - (byte << 3));
-	u8 * status = ucontrol->value.iec958.status;
-
-	if (status[2] & IEC958_AES2_PRO_SBITS_24) {
-		/* Does this work for LE systems ??? */
-		if (status[2] & IEC958_AES2_PRO_WORDLEN_24_20) {
-			data = iec958_getbits(24);
-			data <<= 4;
-		} else {
-			data = iec958_getbits(20);
-			data <<= 8;
-		}
-	} else {
-		if (status[2] & IEC958_AES2_PRO_WORDLEN_24_20) {
-			/* Does this work for LE systems ??? */
-			data = iec958_getbits(20);
-			data <<= 8;
-		} else {
-			data = iec958_getbits(16);
-			data <<= 12;
-		}
-	}
-
-	/*
-	 * Set one of the 192 bits of the channel status (AES3 and higher)
-	 */
-	if (status[byte] & mask)
-		data |= 0x40000000;
-
-	if (iec958_parity(data))	/* parity bit 4-30 */
-		data |= 0x80000000;
-
-	/* Preamble */
-	if      (!cm->spdif_counter)
-		data |= 0x03;		/* Block start, 'Z' */
-	else if (cm->spdif_counter % 2)
-		data |= 0x05;		/* odd sub frame, 'Y' */
-	else
-		data |= 0x09;		/* even sub frame, 'X' */
-
-	/*
-	 * sub frame counter: 2 sub frame are one audio frame
-	 * and 192 frames are one block
-	 */
-	cm->spdif_counter = (++cm->spdif_counter) % 384;
-
-	return data;
-}
-# endif /* if USE_AES_IEC958 */
-
-static int snd_cmipci_ac3_copy(snd_pcm_substream_t *subs, int channel,
-			       snd_pcm_uframes_t pos, void *src,
-			       snd_pcm_uframes_t count)
-{
-	cmipci_t *cm = snd_pcm_substream_chip(subs);
-	u32 *dst;
-	snd_pcm_uframes_t offset;
-	snd_pcm_runtime_t *runtime = subs->runtime;
-#ifndef USE_AES_IEC958
-	u16 *srcp = src, val;
-#else
-	char buf[480];         /* bits can be divided by 20, 24, 16 */
-	size_t bytes = frames_to_bytes(runtime, count);
-#endif
-
-
-	if (!cm->channel[CM_CH_PLAY].ac3_shift) {
-		if (copy_from_user(runtime->dma_area +
-				   frames_to_bytes(runtime, pos), src,
-				   frames_to_bytes(runtime, count)))
-			return -EFAULT;
-		return 0;
-	}
-
-	if (! access_ok(VERIFY_READ, src, count))
-		return -EFAULT;
-
-	/* frame = 16bit stereo */
-	offset = (pos << 1) % (cm->channel[CM_CH_PLAY].dma_size << 2);
-	dst = (u32*)(runtime->dma_area + offset);
-# ifndef USE_AES_IEC958
-	count /= 2;
-	while (count-- > 0) {
-		get_user(val, srcp);
-		srcp++;
-		*dst++ = convert_ac3_32bit(cm, val);
-	}
-# else
-	while (bytes) {
-		size_t c = bytes;
-
-		if (c > sizeof(buf))
-			c = sizeof(buf);
-
-		if (copy_from_user(buf, src, c))
-			return -EFAULT;
-		bytes -= c;
-		src   += c;
-
-		iec958_init_bitstream(buf, c*8);
-		while (iec958_bits_avail()) {
-			*(dst++) = iec958_subframe(cm, cm->spdif_channel);
-			if (iec958_error())
-				return -EINVAL;
-		}
-		iec958_clear_bitstream();
-	}
-# endif
-	return 0;
-}
-
-static int snd_cmipci_ac3_silence(snd_pcm_substream_t *subs, int channel,
-				  snd_pcm_uframes_t pos,
-				  snd_pcm_uframes_t count)
-{
-	cmipci_t *cm = snd_pcm_substream_chip(subs);
-	u32 *dst;
-	snd_pcm_uframes_t offset;
-	snd_pcm_runtime_t *runtime = subs->runtime;
-# ifdef USE_AES_IEC958
-	char buf[480];		/* bits can be divided by 20, 24, 16 */
-	size_t bytes = frames_to_bytes(runtime, count);
-# endif
-	if (! cm->channel[CM_CH_PLAY].ac3_shift)
-		return snd_pcm_format_set_silence(runtime->format,
-						  runtime->dma_area + frames_to_bytes(runtime, pos), count);
-	
-	/* frame = 16bit stereo */
-	offset = (pos << 1) % (cm->channel[CM_CH_PLAY].dma_size << 2);
-	dst = (u32*)(subs->runtime->dma_area + offset);
-# ifndef USE_AES_IEC958
-	count /= 2;
-	while (count-- > 0) {
-		*dst++ = convert_ac3_32bit(cm, 0);
-	}
-# else
-	while (bytes) {
-		size_t c = bytes;
-
-		if (c > sizeof(buf))
-			c = sizeof(buf);
-
-		/* Q: Does this function know about 24bit silence? */
-		if (snd_pcm_format_set_silence(runtime->format, buf, bytes_to_frames(runtime, c)))
-			return -EINVAL;
-
-		iec958_init_bitstream(buf, c*8);
-		while (iec958_bits_avail()) {
-			*(dst++) = iec958_subframe(cm, cm->spdif_channel);
-			if (iec958_error())
-				return -EINVAL;
-		}
-		iec958_clear_bitstream();
-	}
-# endif
-	return 0;
-}
-#endif /* DO_SOFT_AC3 */
-
 
 /*
  * hw preparation for spdif
@@ -1404,9 +1036,6 @@
 	spin_lock_irqsave(&chip->reg_lock, flags);
 	for (i = 0; i < 4; i++)
 		ucontrol->value.iec958.status[i] = (chip->dig_pcm_status >> (i * 8)) & 0xff;
-#ifdef USE_AES_IEC958
-	ucontrol = chip->spdif_channel;
-#endif
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 	return 0;
 }
@@ -1425,9 +1054,6 @@
 		val |= (unsigned int)ucontrol->value.iec958.status[i] << (i * 8);
 	change = val != chip->dig_pcm_status;
 	chip->dig_pcm_status = val;
-#ifdef USE_AES_IEC958
-	chip->spdif_channel = ucontrol;
-#endif
 	spin_unlock_irqrestore(&chip->reg_lock, flags);
 	return change;
 }
@@ -1504,9 +1130,6 @@
 /* spinlock held! */
 static void setup_ac3(cmipci_t *cm, snd_pcm_substream_t *subs, int do_ac3, int rate)
 {
-	cm->channel[CM_CH_PLAY].ac3_shift = 0;
-	cm->spdif_counter = 0;
-
 	if (do_ac3) {
 		/* AC3EN for 037 */
 		snd_cmipci_set_bit(cm, CM_REG_CHFORMAT, CM_AC3EN1);
@@ -1519,9 +1142,6 @@
 			snd_cmipci_set_bit(cm, CM_REG_CHFORMAT, CM_SPD24SEL);
 			snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_SPD32SEL);
 		} else { /* can_ac3_sw */
-#ifdef DO_SOFT_AC3
-			/* FIXME: ugly hack! */
-			subs->runtime->buffer_size /= 2;
 			/* SPD32SEL for 037 & 039, 0x20 */
 			snd_cmipci_set_bit(cm, CM_REG_MISC_CTRL, CM_SPD32SEL);
 			/* set 176K sample rate to fix 033 HW bug */
@@ -1532,8 +1152,6 @@
 					snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_PLAYBACK_SRATE_176K);
 				}
 			}
-			cm->channel[CM_CH_PLAY].ac3_shift = 1; /* use 32bit */
-#endif /* DO_SOFT_AC3 */
 		}
 
 	} else {
@@ -1550,11 +1168,9 @@
 				snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_SPD24SEL);
 			}
 		} else {
-#ifdef DO_SOFT_AC3
 			snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_SPD32SEL);
 			snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_SPD24SEL);
 			snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_PLAYBACK_SRATE_176K);
-#endif /* DO_SOFT_AC3 */
 		}
 	}
 }
@@ -1604,15 +1220,12 @@
 {
 	cmipci_t *cm = snd_pcm_substream_chip(substream);
 	int rate = substream->runtime->rate;
-	int do_spdif, do_ac3;
+	int do_spdif, do_ac3 = 0;
 	do_spdif = ((rate == 44100 || rate == 48000) &&
 		    substream->runtime->format == SNDRV_PCM_FORMAT_S16_LE &&
 		    substream->runtime->channels == 2);
-	do_ac3 = cm->dig_pcm_status & IEC958_AES0_NONAUDIO;
-#ifdef DO_SOFT_AC3
-	if (do_ac3 && cm->can_ac3_sw)
-		do_spdif = 0;
-#endif
+	if (do_spdif && cm->can_ac3_hw) 
+		do_ac3 = cm->dig_pcm_status & IEC958_AES0_NONAUDIO;
 	setup_spdif_playback(cm, substream, do_spdif, do_ac3);
 	return snd_cmipci_pcm_prepare(cm, &cm->channel[CM_CH_PLAY], substream);
 }
@@ -1621,7 +1234,12 @@
 static int snd_cmipci_playback_spdif_prepare(snd_pcm_substream_t *substream)
 {
 	cmipci_t *cm = snd_pcm_substream_chip(substream);
-	setup_spdif_playback(cm, substream, 1, cm->dig_pcm_status & IEC958_AES0_NONAUDIO);
+	int do_ac3;
+	if (cm->can_ac3_hw) 
+		do_ac3 = cm->dig_pcm_status & IEC958_AES0_NONAUDIO;
+	else
+		do_ac3 = 1; /* doesn't matter */
+	setup_spdif_playback(cm, substream, 1, do_ac3);
 	return snd_cmipci_pcm_prepare(cm, &cm->channel[CM_CH_PLAY], substream);
 }
 
@@ -1768,8 +1386,9 @@
 /* spdif playback on channel A */
 static snd_pcm_hardware_t snd_cmipci_playback_spdif =
 {
-	.info =			(SNDRV_PCM_INFO_INTERLEAVED |
-				 SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_PAUSE),
+	.info =			(SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
+				 SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_PAUSE |
+				 SNDRV_PCM_INFO_MMAP_VALID),
 	.formats =		SNDRV_PCM_FMTBIT_S16_LE,
 	.rates =		SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
 	.rate_min =		44100,
@@ -1784,6 +1403,26 @@
 	.fifo_size =		0,
 };
 
+/* spdif playback on channel A (32bit, IEC958 subframes) */
+static snd_pcm_hardware_t snd_cmipci_playback_iec958_subframe =
+{
+	.info =			(SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
+				 SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_PAUSE |
+				 SNDRV_PCM_INFO_MMAP_VALID),
+	.formats =		SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE,
+	.rates =		SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
+	.rate_min =		44100,
+	.rate_max =		48000,
+	.channels_min =		2,
+	.channels_max =		2,
+	.buffer_bytes_max =	(128*1024),
+	.period_bytes_min =	64,
+	.period_bytes_max =	(128*1024),
+	.periods_min =		2,
+	.periods_max =		1024,
+	.fifo_size =		0,
+};
+
 /* spdif capture on channel B */
 static snd_pcm_hardware_t snd_cmipci_capture_spdif =
 {
@@ -1921,13 +1560,13 @@
 
 	if ((err = open_device_check(cm, CM_OPEN_SPDIF_PLAYBACK, substream)) < 0) /* use channel A */
 		return err;
-	runtime->hw = snd_cmipci_playback_spdif;
-#ifdef DO_SOFT_AC3
-	if (cm->can_ac3_hw)
-#endif
-		runtime->hw.info |= SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID;
-	if (cm->chip_version >= 37)
-		runtime->hw.formats |= SNDRV_PCM_FMTBIT_S32_LE;
+	if (cm->can_ac3_hw) {
+		runtime->hw = snd_cmipci_playback_spdif;
+		if (cm->chip_version >= 37)
+			runtime->hw.formats |= SNDRV_PCM_FMTBIT_S32_LE;
+	} else {
+		runtime->hw = snd_cmipci_playback_iec958_subframe;
+	}
 	snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_BUFFER_SIZE, 0, 0x40000);
 	cm->dig_pcm_status = cm->dig_status;
 	return 0;
@@ -2034,21 +1673,6 @@
 	.pointer =	snd_cmipci_playback_pointer,
 };
 
-#ifdef DO_SOFT_AC3
-static snd_pcm_ops_t snd_cmipci_playback_spdif_soft_ops = {
-	.open =		snd_cmipci_playback_spdif_open,
-	.close =	snd_cmipci_playback_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
-	.hw_params =	snd_cmipci_hw_params,
-	.hw_free =	snd_cmipci_playback_hw_free,
-	.prepare =	snd_cmipci_playback_spdif_prepare,	/* set up rate */
-	.trigger =	snd_cmipci_playback_trigger,
-	.pointer =	snd_cmipci_playback_pointer,
-	.copy =		snd_cmipci_ac3_copy,
-	.silence =	snd_cmipci_ac3_silence,
-};
-#endif
-
 static snd_pcm_ops_t snd_cmipci_capture_spdif_ops = {
 	.open =		snd_cmipci_capture_spdif_open,
 	.close =	snd_cmipci_capture_spdif_close,
@@ -2125,14 +1749,7 @@
 	if (err < 0)
 		return err;
 
-#ifdef DO_SOFT_AC3
-	if (cm->can_ac3_hw)
-		snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cmipci_playback_spdif_ops);
-	else
-		snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cmipci_playback_spdif_soft_ops);
-#else
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cmipci_playback_spdif_ops);
-#endif
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cmipci_capture_spdif_ops);
 
 	pcm->private_data = cm;
@@ -2770,16 +2387,17 @@
 			if (err < 0)
 				return err;
 		}
-		if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_cmipci_spdif_default, cm))) < 0)
-			return err;
-		kctl->id.device = pcm_spdif_device;
-		if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_cmipci_spdif_mask, cm))) < 0)
-			return err;
-		kctl->id.device = pcm_spdif_device;
-		if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_cmipci_spdif_stream, cm))) < 0)
-			return err;
-		kctl->id.device = pcm_spdif_device;
-		cm->spdif_pcm_ctl = kctl;
+		if (cm->can_ac3_hw) {
+			if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_cmipci_spdif_default, cm))) < 0)
+				return err;
+			kctl->id.device = pcm_spdif_device;
+			if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_cmipci_spdif_mask, cm))) < 0)
+				return err;
+			kctl->id.device = pcm_spdif_device;
+			if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_cmipci_spdif_stream, cm))) < 0)
+				return err;
+			kctl->id.device = pcm_spdif_device;
+		}
 		if (cm->chip_version <= 37) {
 			sw = snd_cmipci_old_mixer_switches;
 			for (idx = 0; idx < num_controls(snd_cmipci_old_mixer_switches); idx++, sw++) {
@@ -2917,6 +2535,8 @@
 	if (cm->can_multi_ch)
 		sprintf(cm->card->driver + strlen(cm->card->driver),
 			"-MC%d", cm->max_channels);
+	else if (cm->can_ac3_sw)
+		strcpy(cm->card->driver + strlen(cm->card->driver), "-SWIEC");
 }
 
 
@@ -3013,9 +2633,7 @@
 
 	cm->chip_version = 0;
 	cm->max_channels = 2;
-#ifdef DO_SOFT_AC3
 	cm->do_soft_ac3 = soft_ac3[dev];
-#endif
 
 	query_chip(cm);
 
@@ -3264,15 +2882,7 @@
 	
 static int __init alsa_card_cmipci_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "C-Media PCI soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_cmipci_exit(void)
@@ -3282,34 +2892,3 @@
 
 module_init(alsa_card_cmipci_init)
 module_exit(alsa_card_cmipci_exit)
-
-#ifndef MODULE
-
-/* format is: snd-cmipci=enable,index,id,
-			 mpu_port,fm_port,soft_ac3,joystick_port */
-
-static int __init alsa_card_cmipci_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2
-#ifdef DO_SOFT_AC3
-	       && get_option(&str,&soft_ac3[nr_dev]) == 2
-#endif
-#ifdef SUPPORT_JOYSTICK
-	       && get_option(&str,&joystick_port[nr_dev]) == 2
-#endif
-	       );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-cmipci=", alsa_card_cmipci_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/cs4281.c b/sound/pci/cs4281.c
--- a/sound/pci/cs4281.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/cs4281.c	Tue May 18 23:41:45 2004
@@ -27,13 +27,13 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/rawmidi.h>
 #include <sound/ac97_codec.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 
@@ -47,17 +47,18 @@
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable switches */
 static int dual_codec[SNDRV_CARDS];	/* dual codec */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for CS4281 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for CS4281 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable CS4281 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(dual_codec, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dual_codec, bool, boot_devs, 0444);
 MODULE_PARM_DESC(dual_codec, "Secondary Codec ID (0 = disabled).");
 MODULE_PARM_SYNTAX(dual_codec, SNDRV_ENABLED ",allows:{{0,3}}");
 
@@ -1395,7 +1396,8 @@
 
 static int snd_cs4281_chip_init(cs4281_t *chip); /* defined below */
 #ifdef CONFIG_PM
-static int snd_cs4281_set_power_state(snd_card_t *card, unsigned int power_state);
+static int cs4281_suspend(snd_card_t *card, unsigned int state);
+static int cs4281_resume(snd_card_t *card, unsigned int state);
 #endif
 
 static int __devinit snd_cs4281_create(snd_card_t * card,
@@ -1461,10 +1463,7 @@
 
 	snd_cs4281_proc_init(chip);
 
-#ifdef CONFIG_PM
-	card->set_power_state = snd_cs4281_set_power_state;
-	card->power_state_private_data = chip;
-#endif
+	snd_card_set_pm_callback(card, cs4281_suspend, cs4281_resume, chip);
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
 		snd_cs4281_free(chip);
@@ -1481,7 +1480,9 @@
 {
 	unsigned int tmp;
 	int timeout;
+	int retry_count = 2;
 
+      __retry:
 	tmp = snd_cs4281_peekBA0(chip, BA0_CFLR);
 	if (tmp != BA0_CFLR_DEFAULT) {
 		snd_cs4281_pokeBA0(chip, BA0_CFLR, BA0_CFLR_DEFAULT);
@@ -1629,6 +1630,8 @@
 		snd_cs4281_delay_long();
 	} while (timeout-- > 0);
 
+	if (--retry_count > 0)
+		goto __retry;
 	snd_printk(KERN_ERR "never read ISV3 and ISV4 from AC'97\n");
 	return -EIO;
 
@@ -1999,15 +2002,14 @@
 		return err;
 	}
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_cs4281_remove(struct pci_dev *pci)
 {
-	cs4281_t *chip = pci_get_drvdata(pci);
-	snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -2036,17 +2038,19 @@
 
 #define CLKCR1_CKRA                             0x00010000L
 
-static void cs4281_suspend(cs4281_t *chip)
+static int cs4281_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	cs4281_t *chip = snd_magic_cast(cs4281_t, card->pm_private_data, return -EINVAL);
 	u32 ulCLK;
 	unsigned int i;
 
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
-
 	snd_pcm_suspend_all(chip->pcm);
 
+	if (chip->ac97)
+		snd_ac97_suspend(chip->ac97);
+	if (chip->ac97_secondary)
+		snd_ac97_suspend(chip->ac97_secondary);
+
 	ulCLK = snd_cs4281_peekBA0(chip, BA0_CLKCR1);
 	ulCLK |= CLKCR1_CKRA;
 	snd_cs4281_pokeBA0(chip, BA0_CLKCR1, ulCLK);
@@ -2076,17 +2080,15 @@
 	snd_cs4281_pokeBA0(chip, BA0_CLKCR1, ulCLK);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void cs4281_resume(cs4281_t *chip)
+static int cs4281_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	cs4281_t *chip = snd_magic_cast(cs4281_t, card->pm_private_data, return -EINVAL);
 	unsigned int i;
 	u32 ulCLK;
 
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
-
 	pci_enable_device(chip->pci);
 
 	ulCLK = snd_cs4281_peekBA0(chip, BA0_CLKCR1);
@@ -2110,41 +2112,8 @@
 	snd_cs4281_pokeBA0(chip, BA0_CLKCR1, ulCLK);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_cs4281_suspend(struct pci_dev *dev, u32 state)
-{
-	cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return -ENXIO);
-	cs4281_suspend(chip);
-	return 0;
-}
-static int snd_cs4281_resume(struct pci_dev *dev)
-{
-	cs4281_t *chip = snd_magic_cast(cs4281_t, pci_get_drvdata(dev), return -ENXIO);
-	cs4281_resume(chip);
 	return 0;
 }
-
-/* callback */
-static int snd_cs4281_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	cs4281_t *chip = snd_magic_cast(cs4281_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		cs4281_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		cs4281_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
-	return 0;
-}
-
 #endif /* CONFIG_PM */
 
 static struct pci_driver driver = {
@@ -2152,23 +2121,12 @@
 	.id_table = snd_cs4281_ids,
 	.probe = snd_cs4281_probe,
 	.remove = __devexit_p(snd_cs4281_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_cs4281_suspend,
-	.resume = snd_cs4281_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 	
 static int __init alsa_card_cs4281_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "CS4281 soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_cs4281_exit(void)
@@ -2178,24 +2136,3 @@
 
 module_init(alsa_card_cs4281_init)
 module_exit(alsa_card_cs4281_exit)
-
-#ifndef MODULE
-
-/* format is: snd-cs4281=enable,index,id */
-
-static int __init alsa_card_cs4281_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-cs4281=", alsa_card_cs4281_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/cs46xx/cs46xx.c b/sound/pci/cs46xx/cs46xx.c
--- a/sound/pci/cs46xx/cs46xx.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/cs46xx/cs46xx.c	Tue May 18 23:41:45 2004
@@ -29,9 +29,9 @@
 #include <linux/pci.h>
 #include <linux/time.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/cs46xx.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -52,23 +52,24 @@
 static int external_amp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
 static int thinkpad[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
 static int mmap_valid[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for the CS46xx soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for the CS46xx soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable CS46xx soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(external_amp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(external_amp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(external_amp, "Force to enable external amplifer.");
 MODULE_PARM_SYNTAX(external_amp, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(thinkpad, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(thinkpad, bool, boot_devs, 0444);
 MODULE_PARM_DESC(thinkpad, "Force to enable Thinkpad's CLKRUN control.");
 MODULE_PARM_SYNTAX(thinkpad, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(mmap_valid, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mmap_valid, bool, boot_devs, 0444);
 MODULE_PARM_DESC(mmap_valid, "Support OSS mmap.");
 MODULE_PARM_SYNTAX(mmap_valid, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
 
@@ -157,31 +158,14 @@
 		return err;
 	}
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int snd_card_cs46xx_suspend(struct pci_dev *pci, u32 state)
-{
-	cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return -ENXIO);
-	snd_cs46xx_suspend(chip);
-	return 0;
-}
-static int snd_card_cs46xx_resume(struct pci_dev *pci)
-{
-	cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return -ENXIO);
-	snd_cs46xx_resume(chip);
-	return 0;
-}
-#endif
-
 static void __devexit snd_card_cs46xx_remove(struct pci_dev *pci)
 {
-	cs46xx_t *chip = snd_magic_cast(cs46xx_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -190,23 +174,12 @@
 	.id_table = snd_cs46xx_ids,
 	.probe = snd_card_cs46xx_probe,
 	.remove = __devexit_p(snd_card_cs46xx_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_card_cs46xx_suspend,
-	.resume = snd_card_cs46xx_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 
 static int __init alsa_card_cs46xx_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Sound Fusion CS46xx soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_cs46xx_exit(void)
@@ -216,27 +189,3 @@
 
 module_init(alsa_card_cs46xx_init)
 module_exit(alsa_card_cs46xx_exit)
-
-#ifndef MODULE
-
-/* format is: snd-cs46xx=enable,index,id,mmap_valid,external_amp,thinkpad */
-
-static int __init alsa_card_cs46xx_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&mmap_valid[nr_dev]) == 2 &&
-	       get_option(&str,&external_amp[nr_dev]) == 2 &&
-	       get_option(&str,&thinkpad[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-cs46xx=", alsa_card_cs46xx_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
--- a/sound/pci/cs46xx/cs46xx_lib.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/cs46xx/cs46xx_lib.c	Tue May 18 23:41:45 2004
@@ -3784,17 +3784,19 @@
  * APM support
  */
 #ifdef CONFIG_PM
-void snd_cs46xx_suspend(cs46xx_t *chip)
+static int snd_cs46xx_suspend(snd_card_t *card, unsigned int state)
 {
+	cs46xx_t *chip = snd_magic_cast(cs46xx_t, card->pm_private_data, return -EINVAL);
 	int amp_saved;
 
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
 	snd_pcm_suspend_all(chip->pcm);
 	// chip->ac97_powerdown = snd_cs46xx_codec_read(chip, AC97_POWER_CONTROL);
 	// chip->ac97_general_purpose = snd_cs46xx_codec_read(chip, BA0_AC97_GENERAL_PURPOSE);
+
+	snd_ac97_suspend(chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]);
+	if (chip->ac97[CS46XX_SECONDARY_CODEC_INDEX])
+		snd_ac97_suspend(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]);
+
 	amp_saved = chip->amplifier;
 	/* turn off amp */
 	chip->amplifier_ctrl(chip, -chip->amplifier);
@@ -3803,16 +3805,14 @@
 	chip->active_ctrl(chip, -chip->amplifier);
 	chip->amplifier = amp_saved; /* restore the status */
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-void snd_cs46xx_resume(cs46xx_t *chip)
+static int snd_cs46xx_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	cs46xx_t *chip = snd_magic_cast(cs46xx_t, card->pm_private_data, return -EINVAL);
 	int amp_saved;
 
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
-
 	pci_enable_device(chip->pci);
 	amp_saved = chip->amplifier;
 	chip->amplifier = 0;
@@ -3832,6 +3832,8 @@
 #endif
 
 	snd_ac97_resume(chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]);
+	if (chip->ac97[CS46XX_SECONDARY_CODEC_INDEX])
+		snd_ac97_resume(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]);
 
 	if (amp_saved)
 		chip->amplifier_ctrl(chip, 1); /* turn amp on */
@@ -3839,25 +3841,6 @@
 		chip->active_ctrl(chip, -1); /* disable CLKRUN */
 	chip->amplifier = amp_saved;
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_cs46xx_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	cs46xx_t *chip = snd_magic_cast(cs46xx_t, card->power_state_private_data, return -ENXIO);
-
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_cs46xx_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_cs46xx_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
 #endif /* CONFIG_PM */
@@ -4010,10 +3993,7 @@
 
 	snd_cs46xx_proc_init(card, chip);
 
-#ifdef CONFIG_PM
-	card->set_power_state = snd_cs46xx_set_power_state;
-	card->power_state_private_data = chip;
-#endif
+	snd_card_set_pm_callback(card, snd_cs46xx_suspend, snd_cs46xx_resume, chip);
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
 		snd_cs46xx_free(chip);
diff -Nru a/sound/pci/emu10k1/emu10k1.c b/sound/pci/emu10k1/emu10k1.c
--- a/sound/pci/emu10k1/emu10k1.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/emu10k1/emu10k1.c	Tue May 18 23:41:45 2004
@@ -23,9 +23,9 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/emu10k1.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -49,32 +49,33 @@
 static int max_synth_voices[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 64};
 static int max_buffer_size[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 128};
 static int enable_ir[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for the EMU10K1 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for the EMU10K1 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable the EMU10K1 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(extin, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(extin, int, boot_devs, 0444);
 MODULE_PARM_DESC(extin, "Available external inputs for FX8010. Zero=default.");
 MODULE_PARM_SYNTAX(extin, SNDRV_ENABLED "allows:{{0,0x0ffff}},base:16");
-MODULE_PARM(extout, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(extout, int, boot_devs, 0444);
 MODULE_PARM_DESC(extout, "Available external outputs for FX8010. Zero=default.");
 MODULE_PARM_SYNTAX(extout, SNDRV_ENABLED "allows:{{0,0x0ffff}},base:16");
-MODULE_PARM(seq_ports, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(seq_ports, int, boot_devs, 0444);
 MODULE_PARM_DESC(seq_ports, "Allocated sequencer ports for internal synthesizer.");
 MODULE_PARM_SYNTAX(seq_ports, SNDRV_ENABLED "allows:{{0,32}}");
-MODULE_PARM(max_synth_voices, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(max_synth_voices, int, boot_devs, 0444);
 MODULE_PARM_DESC(max_synth_voices, "Maximum number of voices for WaveTable.");
 MODULE_PARM_SYNTAX(max_synth_voices, SNDRV_ENABLED);
-MODULE_PARM(max_buffer_size, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(max_buffer_size, int, boot_devs, 0444);
 MODULE_PARM_DESC(max_buffer_size, "Maximum sample buffer size in MB.");
 MODULE_PARM_SYNTAX(max_buffer_size, SNDRV_ENABLED);
-MODULE_PARM(enable_ir, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable_ir, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable_ir, "Enable IR.");
 MODULE_PARM_SYNTAX(enable_ir, SNDRV_ENABLE_DESC);
 
@@ -211,15 +212,7 @@
 
 static int __init alsa_card_emu10k1_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "EMU10K1/Audigy soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_emu10k1_exit(void)
@@ -229,27 +222,3 @@
 
 module_init(alsa_card_emu10k1_init)
 module_exit(alsa_card_emu10k1_exit)
-
-#ifndef MODULE
-
-/* format is: snd-emu10k1=enable,index,id,
-			  seq_ports,max_synth_voices */
-
-static int __init alsa_card_emu10k1_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&seq_ports[nr_dev]) == 2 &&
-	       get_option(&str,&max_synth_voices[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-emu10k1=", alsa_card_emu10k1_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
--- a/sound/pci/emu10k1/emu10k1_main.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/emu10k1/emu10k1_main.c	Tue May 18 23:41:45 2004
@@ -690,7 +690,7 @@
 	if (extin_mask == 0)
 		extin_mask = 0x3fcf;
 	if (extout_mask == 0)
-		extout_mask = 0x1fff;
+		extout_mask = 0x7fff;
 	emu->fx8010.extin_mask = extin_mask;
 	emu->fx8010.extout_mask = extout_mask;
 
diff -Nru a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
--- a/sound/pci/emu10k1/emufx.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/emu10k1/emufx.c	Tue May 18 23:41:45 2004
@@ -120,8 +120,8 @@
 	/* 0x0a */ "PCM Capture Left",
 	/* 0x0b */ "PCM Capture Right",
 	/* 0x0c */ "MIC Capture",
-	/* 0x0d */ NULL,
-	/* 0x0e */ NULL,
+	/* 0x0d */ "AC97 Surround Left",
+	/* 0x0e */ "AC97 Surround Right",
 	/* 0x0f */ NULL,
 	/* 0x10 */ NULL,
 	/* 0x11 */ "Analog Center",
@@ -2113,22 +2113,26 @@
 		for (z = 0; z < 2; z++)
 			OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_REAR_L + z), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 2 + z), C_00000000, C_00000000);
 
-	if (emu->fx8010.extout_mask & (1<<EXTOUT_CENTER)) {
+	if (emu->fx8010.extout_mask & ((1<<EXTOUT_AC97_REAR_L)|(1<<EXTOUT_AC97_REAR_R)))
+		for (z = 0; z < 2; z++)
+			OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_REAR_L + z), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 2 + z), C_00000000, C_00000000);
+
+	if (emu->fx8010.extout_mask & (1<<EXTOUT_AC97_CENTER)) {
 #ifndef EMU10K1_CENTER_LFE_FROM_FRONT
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 4), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 4), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ACENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 4), C_00000000, C_00000000);
 #else
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 0), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_CENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 0), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ACENTER), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 0), C_00000000, C_00000000);
 #endif
 	}
 
-	if (emu->fx8010.extout_mask & (1<<EXTOUT_LFE)) {
+	if (emu->fx8010.extout_mask & (1<<EXTOUT_AC97_LFE)) {
 #ifndef EMU10K1_CENTER_LFE_FROM_FRONT
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 5), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 5), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ALFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 5), C_00000000, C_00000000);
 #else
-		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 1), C_00000000, C_00000000);
+		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_AC97_LFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 1), C_00000000, C_00000000);
 		OP(icode, &ptr, iACC3, EXTOUT(EXTOUT_ALFE), GPR(playback + SND_EMU10K1_PLAYBACK_CHANNELS + 1), C_00000000, C_00000000);
 #endif
 	}
diff -Nru a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c
--- a/sound/pci/emu10k1/emumixer.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/emu10k1/emumixer.c	Tue May 18 23:41:45 2004
@@ -34,6 +34,8 @@
 
 #define chip_t emu10k1_t
 
+#define AC97_ID_STAC9758	0x83847658
+
 static int snd_emu10k1_spdif_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
 {
 	uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
@@ -531,6 +533,15 @@
 			snd_ac97_write(emu->ac97, AC97_REC_SEL, 0x0000);
 			c = audigy_remove_ctls;
 		} else {
+			/*
+			 * Credits for cards based on STAC9758:
+			 *   James Courtier-Dutton <James@superbug.demon.co.uk>
+			 *   Voluspa <voluspa@comhem.se>
+			 */
+			if (emu->ac97->id == AC97_ID_STAC9758) {
+				emu->rear_ac97 = 1;
+				snd_emu10k1_ptr_write(emu, AC97SLOT, 0, AC97SLOT_CNTR|AC97SLOT_LFE|AC97SLOT_REAR_LEFT|AC97SLOT_REAR_RIGHT);
+			}
 			/* remove unused AC97 controls */
 			snd_ac97_write(emu->ac97, AC97_SURROUND_MASTER, 0x0202);
 			snd_ac97_write(emu->ac97, AC97_CENTER_LFE_MASTER, 0x0202);
diff -Nru a/sound/pci/ens1370.c b/sound/pci/ens1370.c
--- a/sound/pci/ens1370.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ens1370.c	Tue May 18 23:41:45 2004
@@ -27,6 +27,7 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
@@ -36,7 +37,6 @@
 #else
 #include <sound/ak4531_codec.h>
 #endif
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/asoundef.h>
 
@@ -86,23 +86,24 @@
 static int joystick[SNDRV_CARDS];
 #endif
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Ensoniq AudioPCI soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Ensoniq AudioPCI soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Ensoniq AudioPCI soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 #ifdef SUPPORT_JOYSTICK
 #ifdef CHIP1371
-MODULE_PARM(joystick_port, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick_port, int, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_port, "Joystick port address.");
 MODULE_PARM_SYNTAX(joystick_port, SNDRV_ENABLED ",allows:{{0},{1},{0x200},{0x208},{0x210},{0x218}},dialog:list");
 #else
-MODULE_PARM(joystick, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick, bool, boot_devs, 0444);
 MODULE_PARM_DESC(joystick, "Enable joystick.");
 MODULE_PARM_SYNTAX(joystick, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 #endif
@@ -2371,15 +2372,7 @@
 	
 static int __init alsa_card_ens137x_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Ensoniq AudioPCI soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_ens137x_exit(void)
@@ -2389,36 +2382,3 @@
 
 module_init(alsa_card_ens137x_init)
 module_exit(alsa_card_ens137x_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ens1370=enable,index,id,joystick */
-
-static int __init alsa_card_ens137x_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2
-#ifdef SUPPORT_JOYSTICK
-#ifdef CHIP1371
-	       && get_option(&str,&joystick_port[nr_dev]) == 2
-#else
-	       && get_option(&str,&joystick[nr_dev]) == 2
-#endif
-#endif
-	       );
-	nr_dev++;
-	return 1;
-}
-
-#if defined(CHIP1370)
-__setup("snd-ens1370=", alsa_card_ens137x_setup);
-#elif defined(CHIP1371)
-__setup("snd-ens1371=", alsa_card_ens137x_setup);
-#endif
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/es1938.c b/sound/pci/es1938.c
--- a/sound/pci/es1938.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/es1938.c	Tue May 18 23:41:45 2004
@@ -53,12 +53,12 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/opl3.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -84,14 +84,15 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ESS Solo-1 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ESS Solo-1 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ESS Solo-1 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 
@@ -1700,15 +1701,7 @@
 
 static int __init alsa_card_es1938_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ESS Solo-1 soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_es1938_exit(void)
@@ -1718,24 +1711,3 @@
 
 module_init(alsa_card_es1938_init)
 module_exit(alsa_card_es1938_exit)
-
-#ifndef MODULE
-
-/* format is: snd-es1938=enable,index,id */
-
-static int __init alsa_card_es1938_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-es1938=", alsa_card_es1938_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/es1968.c b/sound/pci/es1968.c
--- a/sound/pci/es1968.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/es1968.c	Tue May 18 23:41:45 2004
@@ -102,11 +102,11 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/mpu401.h>
 #include <sound/ac97_codec.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define chip_t es1968_t
@@ -138,36 +138,37 @@
 #ifdef SUPPORT_JOYSTICK
 static int joystick[SNDRV_CARDS];
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(total_bufsize, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(total_bufsize, int, boot_devs, 0444);
 MODULE_PARM_DESC(total_bufsize, "Total buffer size in kB.");
 MODULE_PARM_SYNTAX(total_bufsize, SNDRV_ENABLED ",allows:{{1,4096}},skill:advanced");
-MODULE_PARM(pcm_substreams_p, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_substreams_p, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_substreams_p, "PCM Playback substreams for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(pcm_substreams_p, SNDRV_ENABLED ",allows:{{1,8}}");
-MODULE_PARM(pcm_substreams_c, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_substreams_c, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_substreams_c, "PCM Capture substreams for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(pcm_substreams_c, SNDRV_ENABLED ",allows:{{0,8}}");
-MODULE_PARM(clock, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(clock, int, boot_devs, 0444);
 MODULE_PARM_DESC(clock, "Clock on " CARD_NAME " soundcard.  (0 = auto-detect)");
 MODULE_PARM_SYNTAX(clock, SNDRV_ENABLED);
-MODULE_PARM(use_pm, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(use_pm, int, boot_devs, 0444);
 MODULE_PARM_DESC(use_pm, "Toggle power-management.  (0 = off, 1 = on, 2 = auto)");
-MODULE_PARM_SYNTAX(use_pm, SNDRV_ENABLED ",allows:{{0,1,2}},skill:advanced");
-MODULE_PARM(enable_mpu, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+MODULE_PARM_SYNTAX(use_pm, SNDRV_ENABLED ",allows:{{0,1,2}},default:2,skill:advanced");
+module_param_array(enable_mpu, int, boot_devs, 0444);
 MODULE_PARM_DESC(enable_mpu, "Enable MPU401.  (0 = off, 1 = on, 2 = auto)");
-MODULE_PARM_SYNTAX(enable_mpu, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
+MODULE_PARM_SYNTAX(enable_mpu, SNDRV_ENABLED ",allows:{{0,2}},default:2");
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick, bool, boot_devs, 0444);
 MODULE_PARM_DESC(joystick, "Enable joystick.");
 MODULE_PARM_SYNTAX(joystick, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 #endif
@@ -2415,30 +2416,27 @@
 /*
  * PM support
  */
-static void es1968_suspend(es1968_t *chip)
+static int es1968_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	es1968_t *chip = snd_magic_cast(es1968_t, card->pm_private_data, return -EINVAL);
 
 	if (! chip->do_pm)
-		return;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+		return 0;
 
 	snd_pcm_suspend_all(chip->pcm);
+	snd_ac97_suspend(chip->ac97);
 	snd_es1968_bob_stop(chip);
+	snd_es1968_set_acpi(chip, ACPI_D3);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void es1968_resume(es1968_t *chip)
+static int es1968_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	es1968_t *chip = snd_magic_cast(es1968_t, card->pm_private_data, return -EINVAL);
 
 	if (! chip->do_pm)
-		return;
-
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+		return 0;
 
 	/* restore all our config */
 	pci_enable_device(chip->pci);
@@ -2460,47 +2458,17 @@
 		snd_es1968_bob_start(chip);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_es1968_suspend(struct pci_dev *dev, u32 state)
-{
-	es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return -ENXIO);
-	es1968_suspend(chip);
 	return 0;
 }
-static int snd_es1968_resume(struct pci_dev *dev)
-{
-	es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(dev), return -ENXIO);
-	es1968_resume(chip);
-	return 0;
-}
-
-/* callback */
-static int snd_es1968_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	es1968_t *chip = snd_magic_cast(es1968_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		es1968_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		es1968_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
-	return 0;
-}
-
 #endif /* CONFIG_PM */
 
 static int snd_es1968_free(es1968_t *chip)
 {
-	if (chip->res_io_port)
-		snd_es1968_reset(chip);
+	if (chip->res_io_port) {
+		synchronize_irq(chip->irq);
+		outw(1, chip->io_port + 0x04); /* clear WP interrupts */
+		outw(0, chip->io_port + ESM_PORT_HOST_IRQ); /* disable IRQ */
+	}
 
 #ifdef SUPPORT_JOYSTICK
 	if (chip->res_joystick) {
@@ -2534,6 +2502,7 @@
 };
 
 static struct ess_device_list pm_whitelist[] __devinitdata = {
+	{ TYPE_MAESTRO2E, 0x0e11 },	/* Compaq Armada */
 	{ TYPE_MAESTRO2E, 0x1028 },
 	{ TYPE_MAESTRO2E, 0x103c },
 	{ TYPE_MAESTRO2E, 0x1179 },
@@ -2636,12 +2605,8 @@
 
 	snd_es1968_chip_init(chip);
 
-#ifdef CONFIG_PM
-	if (chip->do_pm) {
-		card->set_power_state = snd_es1968_set_power_state;
-		card->power_state_private_data = chip;
-	}
-#endif
+	if (chip->do_pm)
+		snd_card_set_pm_callback(card, es1968_suspend, es1968_resume, chip);
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
 		snd_es1968_free(chip);
@@ -2763,16 +2728,14 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_es1968_remove(struct pci_dev *pci)
 {
-	es1968_t *chip = snd_magic_cast(es1968_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -2781,71 +2744,18 @@
 	.id_table = snd_es1968_ids,
 	.probe = snd_es1968_probe,
 	.remove = __devexit_p(snd_es1968_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_es1968_suspend,
-	.resume = snd_es1968_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 
 static int __init alsa_card_es1968_init(void)
 {
-	int err;
-
-        if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ESS Maestro soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_es1968_exit(void)
 {
-#if 0 // do we really need this?
-	unregister_reboot_notifier(&snd_es1968_nb);
-#endif
 	pci_unregister_driver(&driver);
 }
 
 module_init(alsa_card_es1968_init)
 module_exit(alsa_card_es1968_exit)
-
-#ifndef MODULE
-
-/* format is: snd-es1968=enable,index,id,
-			 total_bufsize,
-			 pcm_substreams_p,
-			 pcm_substreams_c,
-			 clock,
-			 use_pm,
-			 enable_mpu,
-			 joystick
-*/
-
-static int __init alsa_card_es1968_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&total_bufsize[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_substreams_p[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_substreams_c[nr_dev]) == 2 &&
-	       get_option(&str,&clock[nr_dev]) == 2 &&
-	       get_option(&str,&use_pm[nr_dev]) == 2 &&
-	       get_option(&str,&enable_mpu[nr_dev]) == 2
-#ifdef SUPPORT_JOYSTICK
-	       && get_option(&str,&joystick[nr_dev]) == 2
-#endif
-	       );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-es1968=", alsa_card_es1968_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/fm801.c b/sound/pci/fm801.c
--- a/sound/pci/fm801.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/fm801.c	Tue May 18 23:41:45 2004
@@ -25,12 +25,12 @@
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/ac97_codec.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -60,17 +60,18 @@
  *  High 16-bits are video (radio) device number + 1
  */
 static int tea575x_tuner[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0 };
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for the FM801 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for the FM801 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable FM801 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(tea575x_tuner, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(tea575x_tuner, bool, boot_devs, 0444);
 MODULE_PARM_DESC(tea575x_tuner, "Enable TEA575x tuner.");
 MODULE_PARM_SYNTAX(tea575x_tuner, SNDRV_ENABLE_DESC);
 
@@ -1482,15 +1483,7 @@
 
 static int __init alsa_card_fm801_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ForteMedia FM801 soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_fm801_exit(void)
@@ -1500,25 +1493,3 @@
 
 module_init(alsa_card_fm801_init)
 module_exit(alsa_card_fm801_exit)
-
-#ifndef MODULE
-
-/* format is: snd-fm801=enable,index,id,tea575x_tuner */
-
-static int __init alsa_card_fm801_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&tea575x_tuner[nr_dev]));
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-fm801=", alsa_card_fm801_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/ice1712/amp.c b/sound/pci/ice1712/amp.c
--- a/sound/pci/ice1712/amp.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/amp.c	Tue May 18 23:41:45 2004
@@ -54,10 +54,11 @@
 /* entry point */
 struct snd_ice1712_card_info snd_vt1724_amp_cards[] __devinitdata = {
 	{
-		VT1724_SUBDEVICE_AUDIO2000,
-		"AMP Ltd AUDIO2000",
-		snd_vt1724_amp_init,
-		snd_vt1724_amp_add_controls,
+		.subvendor = VT1724_SUBDEVICE_AUDIO2000,
+		.name = "AMP Ltd AUDIO2000",
+		.model = "amp2000",
+		.chip_init = snd_vt1724_amp_init,
+		.build_controls = snd_vt1724_amp_add_controls,
 	},
 	{ } /* terminator */
 };
diff -Nru a/sound/pci/ice1712/aureon.c b/sound/pci/ice1712/aureon.c
--- a/sound/pci/ice1712/aureon.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/aureon.c	Tue May 18 23:41:45 2004
@@ -135,6 +135,47 @@
 }
 
 /*
+ * DAC mute control
+ */
+static int wm_dac_mute_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+	uinfo->count = 1;
+	uinfo->value.integer.min = 0;
+	uinfo->value.integer.max = 1;
+	return 0;
+}
+
+static int wm_dac_mute_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
+	unsigned short val;
+
+	down(&ice->gpio_mutex);
+	val = wm_get(ice, snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)+WM_MUTE);
+	ucontrol->value.integer.value[0] = ~val>>4 & 0x1;
+	up(&ice->gpio_mutex);
+	return 0;
+}
+
+static int wm_dac_mute_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
+	unsigned short new, old;
+	int change;
+
+	snd_ice1712_save_gpio_status(ice);
+	old = wm_get(ice, snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)+WM_MUTE);
+	new = (~ucontrol->value.integer.value[0]<<4&0x10) | (old&~0x10);
+	change = (new != old);
+	if (change)
+		wm_put(ice, snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)+WM_MUTE, new);
+	snd_ice1712_restore_gpio_status(ice);
+
+	return change;
+}
+
+/*
  * DAC volume attenuation mixer control
  */
 static int wm_dac_vol_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
@@ -192,6 +233,47 @@
 }
 
 /*
+ * ADC mute control
+ */
+static int wm_adc_mute_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+	uinfo->count = 1;
+	uinfo->value.integer.min = 0;
+	uinfo->value.integer.max = 1;
+	return 0;
+}
+
+static int wm_adc_mute_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
+	unsigned short val;
+
+	down(&ice->gpio_mutex);
+	val = wm_get(ice, snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)+WM_ADC_GAIN);
+	ucontrol->value.integer.value[0] = ~val>>5 & 0x1;
+	up(&ice->gpio_mutex);
+	return 0;
+}
+
+static int wm_adc_mute_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
+	unsigned short new, old;
+	int change;
+
+	snd_ice1712_save_gpio_status(ice);
+	old = wm_get(ice, snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)+WM_ADC_GAIN);
+	new = (~ucontrol->value.integer.value[0]<<5&0x20) | (old&~0x20);
+	change = (new != old);
+	if (change)
+		wm_put(ice, snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)+WM_ADC_GAIN, new);
+	snd_ice1712_restore_gpio_status(ice);
+
+	return change;
+}
+
+/*
  * ADC gain mixer control
  */
 static int wm_adc_vol_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
@@ -227,10 +309,10 @@
 	snd_ice1712_save_gpio_status(ice);
 	idx  = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id) + WM_ADC_GAIN;
 	nvol = ucontrol->value.integer.value[0];
-	ovol = wm_get(ice, idx) & 0x1f;
-	change = (ovol != nvol);
+	ovol = wm_get(ice, idx);
+	change = ((ovol & 0x1f)  != nvol);
 	if (change)
-		wm_put(ice, idx, nvol);
+		wm_put(ice, idx, nvol | (ovol & ~0x1f));
 	snd_ice1712_restore_gpio_status(ice);
 	return change;
 }
@@ -241,18 +323,15 @@
 static int wm_adc_mux_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
 {
 	static char *texts[] = {
-		"CD Left",
-		"CD Right",
-		"Aux Left",
-		"Aux Right",
-		"Line Left",
-		"Line Right",
-		"Mic Left",
-		"Mic Right",
+		"CD",		//AIN1
+		"Aux",		//AIN2
+		"Line",		//AIN3
+		"Mic",		//AIN4
+		"AC97"		//AIN5
 	};
 	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-	uinfo->count = 2;
-	uinfo->value.enumerated.items = 8;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = 5;
 	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
 		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
 	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
@@ -291,6 +370,57 @@
 }
 
 /*
+ * Headphone Amplifier
+ */
+static int aureon_set_headphone_amp(ice1712_t *ice, int enable)
+{
+	unsigned int tmp, tmp2;
+
+	tmp2 = tmp = snd_ice1712_gpio_read(ice);
+	if (enable)
+		tmp |= AUREON_HP_SEL;
+	else
+		tmp &= ~ AUREON_HP_SEL;
+	if (tmp != tmp2) {
+		snd_ice1712_gpio_write(ice, tmp);
+		return 1;
+	}
+	return 0;
+}
+
+static int aureon_get_headphone_amp(ice1712_t *ice)
+{
+	unsigned int tmp = snd_ice1712_gpio_read(ice);
+
+	return ( tmp & AUREON_HP_SEL )!= 0;
+}
+
+static int aureon_hpamp_info(snd_kcontrol_t *k, snd_ctl_elem_info_t *uinfo)
+{
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+	uinfo->count = 1;
+	uinfo->value.integer.min = 0;
+	uinfo->value.integer.max = 1;
+	return 0;
+}
+
+static int aureon_hpamp_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
+
+	ucontrol->value.integer.value[0] = aureon_get_headphone_amp(ice);
+	return 0;
+}
+
+
+static int aureon_hpamp_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+	ice1712_t *ice = snd_kcontrol_chip(kcontrol);
+
+	return aureon_set_headphone_amp(ice,ucontrol->value.integer.value[0]);
+}
+
+/*
  * mixers
  */
 
@@ -315,6 +445,13 @@
 static snd_kcontrol_new_t wm_controls[] __devinitdata = {
 	{
 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "Master Playback Switch",
+		.info = wm_dac_mute_info,
+		.get = wm_dac_mute_get,
+		.put = wm_dac_mute_put,
+	},
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
 		.name = "Master Playback Volume",
 		.info = wm_dac_vol_info,
 		.get = wm_dac_vol_get,
@@ -323,6 +460,15 @@
 	},
 	{
 		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "ADC Switch",
+		.count = 2,
+		.info = wm_adc_mute_info,
+		.get = wm_adc_mute_get,
+		.put = wm_adc_mute_put,
+
+	},
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
 		.name = "ADC Volume",
 		.count = 2,
 		.info = wm_adc_vol_info,
@@ -336,6 +482,13 @@
 		.get = wm_adc_mux_get,
 		.put = wm_adc_mux_put,
 	},
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "Headphone Amplifier Switch",
+		.info = aureon_hpamp_info,
+		.get = aureon_hpamp_get,
+		.put = aureon_hpamp_put
+	},
 };
 
 
@@ -496,6 +649,7 @@
 	{
 		.subvendor = VT1724_SUBDEVICE_AUREON51_SKY,
 		.name = "Terratec Aureon 5.1-Sky",
+		.model = "aureon51",
 		.chip_init = aureon_init,
 		.build_controls = aureon_add_controls,
 		.eeprom_size = sizeof(aureon51_eeprom),
@@ -504,10 +658,19 @@
 	{
 		.subvendor = VT1724_SUBDEVICE_AUREON71_SPACE,
 		.name = "Terratec Aureon 7.1-Space",
+		.model = "aureon71",
 		.chip_init = aureon_init,
 		.build_controls = aureon_add_controls,
 		.eeprom_size = sizeof(aureon71_eeprom),
 		.eeprom_data = aureon71_eeprom,
+	},
+ 	{
+ 		.subvendor = VT1724_SUBDEVICE_AUREON71_UNIVERSE,
+ 		.name = "Terratec Aureon 7.1-Universe",
+ 		.chip_init = aureon_init,
+ 		.build_controls = aureon_add_controls,
+ 		.eeprom_size = sizeof(aureon71_eeprom),
+ 		.eeprom_data = aureon71_eeprom,
 	},
 	{ } /* terminator */
 };
diff -Nru a/sound/pci/ice1712/aureon.h b/sound/pci/ice1712/aureon.h
--- a/sound/pci/ice1712/aureon.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/aureon.h	Tue May 18 23:41:45 2004
@@ -25,10 +25,12 @@
  */      
 
 #define  AUREON_DEVICE_DESC 	       "{Terratec,Aureon 5.1 Sky},"\
-				       "{Terratec,Aureon 7.1 Space},"
+				       "{Terratec,Aureon 7.1 Space},"\
+				       "{Terratec,Aureon 7.1 Universe},"
 
 #define VT1724_SUBDEVICE_AUREON51_SKY	0x3b154711	/* Aureon 5.1 Sky */
 #define VT1724_SUBDEVICE_AUREON71_SPACE	0x3b154511	/* Aureon 7.1 Space */
+#define VT1724_SUBDEVICE_AUREON71_UNIVERSE	0x3b155311	/* Aureon 7.1 Universe */
 
 extern struct snd_ice1712_card_info  snd_vt1724_aureon_cards[];
 
diff -Nru a/sound/pci/ice1712/delta.c b/sound/pci/ice1712/delta.c
--- a/sound/pci/ice1712/delta.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/delta.c	Tue May 18 23:41:45 2004
@@ -692,56 +692,64 @@
 /* entry point */
 struct snd_ice1712_card_info snd_ice1712_delta_cards[] __devinitdata = {
 	{
-		ICE1712_SUBDEVICE_DELTA1010,
-		"M Audio Delta 1010",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-	},
-	{
-		ICE1712_SUBDEVICE_DELTADIO2496,
-		"M Audio Delta DiO 2496",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-		1, /* NO MPU */
-	},
-	{
-		ICE1712_SUBDEVICE_DELTA66,
-		"M Audio Delta 66",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-		1, /* NO MPU */
-	},
-	{
-		ICE1712_SUBDEVICE_DELTA44,
-		"M Audio Delta 44",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-		1, /* NO MPU */
-	},
-	{
-		ICE1712_SUBDEVICE_AUDIOPHILE,
-		"M Audio Audiophile 24/96",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-	},
-	{
-		ICE1712_SUBDEVICE_DELTA410,
-		"M Audio Delta 410",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-	},
-	{
-		ICE1712_SUBDEVICE_DELTA1010LT,
-		"M Audio Delta 1010LT",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-	},
-	{
-		ICE1712_SUBDEVICE_VX442,
-		"Digigram VX442",
-		snd_ice1712_delta_init,
-		snd_ice1712_delta_add_controls,
-		1, /* NO MPU */
+		.subvendor = ICE1712_SUBDEVICE_DELTA1010,
+		.name = "M Audio Delta 1010",
+		.model = "delta1010",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_DELTADIO2496,
+		.name = "M Audio Delta DiO 2496",
+		.model = "dio2496",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+		.no_mpu401 = 1,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_DELTA66,
+		.name = "M Audio Delta 66",
+		.model = "delta66",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+		.no_mpu401 = 1,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_DELTA44,
+		.name = "M Audio Delta 44",
+		.model = "delta44",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+		.no_mpu401 = 1,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_AUDIOPHILE,
+		.name = "M Audio Audiophile 24/96",
+		.model = "audiophile",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_DELTA410,
+		.name = "M Audio Delta 410",
+		.model = "delta410",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_DELTA1010LT,
+		.name = "M Audio Delta 1010LT",
+		.model = "delta1010lt",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_VX442,
+		.name = "Digigram VX442",
+		.model = "vx442",
+		.chip_init = snd_ice1712_delta_init,
+		.build_controls = snd_ice1712_delta_add_controls,
+		.no_mpu401 = 1,
 	},
 	{ } /* terminator */
 };
diff -Nru a/sound/pci/ice1712/envy24ht.h b/sound/pci/ice1712/envy24ht.h
--- a/sound/pci/ice1712/envy24ht.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/envy24ht.h	Tue May 18 23:41:45 2004
@@ -209,4 +209,7 @@
 #define VT1724_MT_PDMA1_COUNT		0x76	/* word */
 
 
+unsigned char snd_vt1724_read_i2c(ice1712_t *ice, unsigned char dev, unsigned char addr);
+void snd_vt1724_write_i2c(ice1712_t *ice, unsigned char dev, unsigned char addr, unsigned char data);
+
 #endif /* __SOUND_VT1724_H */
diff -Nru a/sound/pci/ice1712/ews.c b/sound/pci/ice1712/ews.c
--- a/sound/pci/ice1712/ews.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/ews.c	Tue May 18 23:41:45 2004
@@ -971,34 +971,39 @@
 /* entry point */
 struct snd_ice1712_card_info snd_ice1712_ews_cards[] __devinitdata = {
 	{
-		ICE1712_SUBDEVICE_EWX2496,
-		"TerraTec EWX24/96",
-		snd_ice1712_ews_init,
-		snd_ice1712_ews_add_controls,
+		.subvendor = ICE1712_SUBDEVICE_EWX2496,
+		.name = "TerraTec EWX24/96",
+		.model = "ewx2496",
+		.chip_init = snd_ice1712_ews_init,
+		.build_controls = snd_ice1712_ews_add_controls,
 	},
 	{
-		ICE1712_SUBDEVICE_EWS88MT,
-		"TerraTec EWS88MT",
-		snd_ice1712_ews_init,
-		snd_ice1712_ews_add_controls,
+		.subvendor = ICE1712_SUBDEVICE_EWS88MT,
+		.name = "TerraTec EWS88MT",
+		.model = "ews88mt",
+		.chip_init = snd_ice1712_ews_init,
+		.build_controls = snd_ice1712_ews_add_controls,
 	},
 	{
-		ICE1712_SUBDEVICE_EWS88MT_NEW,
-		"TerraTec EWS88MT",
-		snd_ice1712_ews_init,
-		snd_ice1712_ews_add_controls,
+		.subvendor = ICE1712_SUBDEVICE_EWS88MT_NEW,
+		.name = "TerraTec EWS88MT",
+		.model = "ews88mt_new",
+		.chip_init = snd_ice1712_ews_init,
+		.build_controls = snd_ice1712_ews_add_controls,
 	},
 	{
-		ICE1712_SUBDEVICE_EWS88D,
-		"TerraTec EWS88D",
-		snd_ice1712_ews_init,
-		snd_ice1712_ews_add_controls,
+		.subvendor = ICE1712_SUBDEVICE_EWS88D,
+		.name = "TerraTec EWS88D",
+		.model = "ews88d",
+		.chip_init = snd_ice1712_ews_init,
+		.build_controls = snd_ice1712_ews_add_controls,
 	},
 	{
-		ICE1712_SUBDEVICE_DMX6FIRE,
-		"TerraTec DMX6Fire",
-		snd_ice1712_ews_init,
-		snd_ice1712_ews_add_controls,
+		.subvendor = ICE1712_SUBDEVICE_DMX6FIRE,
+		.name = "TerraTec DMX6Fire",
+		.model = "dmx6fire",
+		.chip_init = snd_ice1712_ews_init,
+		.build_controls = snd_ice1712_ews_add_controls,
 	},
 	{ } /* terminator */
 };
diff -Nru a/sound/pci/ice1712/hoontech.c b/sound/pci/ice1712/hoontech.c
--- a/sound/pci/ice1712/hoontech.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/hoontech.c	Tue May 18 23:41:45 2004
@@ -83,6 +83,7 @@
 		ICE1712_STDSP24_2_CHN4(ice->hoontech_boxbits, 0);
 	ICE1712_STDSP24_2_MIDI1(ice->hoontech_boxbits, activate);
 	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
+	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]);
 
 	ICE1712_STDSP24_1_CHN1(ice->hoontech_boxbits, 1);
 	ICE1712_STDSP24_1_CHN2(ice->hoontech_boxbits, 1);
@@ -117,7 +118,7 @@
 	up(&ice->gpio_mutex);
 }
 
-static void __devinit snd_ice1712_stdsp24_box_midi(ice1712_t *ice, int box, int master, int slave)
+static void __devinit snd_ice1712_stdsp24_box_midi(ice1712_t *ice, int box, int master)
 {
 	down(&ice->gpio_mutex);
 
@@ -128,23 +129,26 @@
 	ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 1);
 	ICE1712_STDSP24_2_MIDI1(ice->hoontech_boxbits, master);
 	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
+	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]);
 
 	udelay(100);
 	
 	ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 0);
 	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
 	
-	udelay(100);
+	mdelay(10);
 	
 	ICE1712_STDSP24_2_MIDIIN(ice->hoontech_boxbits, 1);
 	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[2]);
 
-	udelay(100);
+	up(&ice->gpio_mutex);
+}
 
-	/* MIDI2 is direct */
-	ICE1712_STDSP24_3_MIDI2(ice->hoontech_boxbits, slave);
+static void __devinit snd_ice1712_stdsp24_midi2(ice1712_t *ice, int activate)
+{
+	down(&ice->gpio_mutex);
+	ICE1712_STDSP24_3_MIDI2(ice->hoontech_boxbits, activate);
 	snd_ice1712_stdsp24_gpio_write(ice, ice->hoontech_boxbits[3]);
-
 	up(&ice->gpio_mutex);
 }
 
@@ -204,25 +208,118 @@
 		for (chn = 0; chn < 4; chn++)
 			snd_ice1712_stdsp24_box_channel(ice, box, chn, (ice->hoontech_boxconfig[box] & (1 << chn)) ? 1 : 0);
 		snd_ice1712_stdsp24_box_midi(ice, box,
-				(ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI1) ? 1 : 0,
-				(ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI2) ? 1 : 0);
+				(ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI1) ? 1 : 0);
+		if (ice->hoontech_boxconfig[box] & ICE1712_STDSP24_BOX_MIDI2)
+			snd_ice1712_stdsp24_midi2(ice, 1);
 	}
 
 	return 0;
 }
 
+/*
+ * AK4524 access
+ */
+
+/* start callback for STDSP24 with modified hardware */
+static void stdsp24_ak4524_lock(akm4xxx_t *ak, int chip)
+{
+	ice1712_t *ice = ak->private_data[0];
+	unsigned char tmp;
+	snd_ice1712_save_gpio_status(ice);
+	tmp =	ICE1712_STDSP24_SERIAL_DATA |
+		ICE1712_STDSP24_SERIAL_CLOCK |
+		ICE1712_STDSP24_AK4524_CS;
+	snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION,
+			  ice->gpio.direction | tmp);
+	snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ~tmp);
+}
+
+static int __devinit snd_ice1712_value_init(ice1712_t *ice)
+{
+	/* Hoontech STDSP24 with modified hardware */
+	static akm4xxx_t akm_stdsp24_mv __devinitdata = {
+		.num_adcs = 2,
+		.num_dacs = 2,
+		.type = SND_AK4524,
+		.ops = {
+			.lock = stdsp24_ak4524_lock
+		}
+	};
+
+	static struct snd_ak4xxx_private akm_stdsp24_mv_priv __devinitdata = {
+		.caddr = 2,
+		.cif = 1, /* CIF high */
+		.data_mask = ICE1712_STDSP24_SERIAL_DATA,
+		.clk_mask = ICE1712_STDSP24_SERIAL_CLOCK,
+		.cs_mask = ICE1712_STDSP24_AK4524_CS,
+		.cs_addr = ICE1712_STDSP24_AK4524_CS,
+		.cs_none = 0,
+		.add_flags = 0,
+	};
+
+	int err;
+	akm4xxx_t *ak;
+
+	/* set the analog DACs */
+	ice->num_total_dacs = 2;
+
+	/* set the analog ADCs */
+	ice->num_total_adcs = 2;
+	
+	/* analog section */
+	ak = ice->akm = kmalloc(sizeof(akm4xxx_t), GFP_KERNEL);
+	if (! ak)
+		return -ENOMEM;
+	ice->akm_codecs = 1;
+
+	err = snd_ice1712_akm4xxx_init(ak, &akm_stdsp24_mv, &akm_stdsp24_mv_priv, ice);
+	if (err < 0)
+		return err;
+
+	/* ak4524 controls */
+	err = snd_ice1712_akm4xxx_build_controls(ice);
+	if (err < 0)
+		return err;
+
+	return 0;
+}
+
+static int __devinit snd_ice1712_ez8_init(ice1712_t *ice)
+{
+	ice->gpio.write_mask = ice->eeprom.gpiomask;
+	ice->gpio.direction = ice->eeprom.gpiodir;
+	snd_ice1712_write(ice, ICE1712_IREG_GPIO_WRITE_MASK, ice->eeprom.gpiomask);
+	snd_ice1712_write(ice, ICE1712_IREG_GPIO_DIRECTION, ice->eeprom.gpiodir);
+	snd_ice1712_write(ice, ICE1712_IREG_GPIO_DATA, ice->eeprom.gpiostate);
+	return 0;
+}
+
 
 /* entry point */
 struct snd_ice1712_card_info snd_ice1712_hoontech_cards[] __devinitdata = {
 	{
-		ICE1712_SUBDEVICE_STDSP24,
-		"Hoontech SoundTrack Audio DSP24",
-		snd_ice1712_hoontech_init,
+		.subvendor = ICE1712_SUBDEVICE_STDSP24,
+		.name = "Hoontech SoundTrack Audio DSP24",
+		.model = "dsp24",
+		.chip_init = snd_ice1712_hoontech_init,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_STDSP24_VALUE,	/* a dummy id */
+		.name = "Hoontech SoundTrack Audio DSP24 Value",
+		.model = "dsp24_value",
+		.chip_init = snd_ice1712_value_init,
+	},
+	{
+		.subvendor = ICE1712_SUBDEVICE_STDSP24_MEDIA7_1,
+		.name = "Hoontech STA DSP24 Media 7.1",
+		.model = "dsp24_71",
+		.chip_init = snd_ice1712_hoontech_init,
 	},
 	{
-		ICE1712_SUBDEVICE_STDSP24_MEDIA7_1,
-		"Hoontech STA DSP24 Media 7.1",
-		snd_ice1712_hoontech_init,
+		.subvendor = ICE1712_SUBDEVICE_EVENT_EZ8,	/* a dummy id */
+		.name = "Event Electronics EZ8",
+		.model = "ez8",
+		.chip_init = snd_ice1712_ez8_init,
 	},
 	{ } /* terminator */
 };
diff -Nru a/sound/pci/ice1712/hoontech.h b/sound/pci/ice1712/hoontech.h
--- a/sound/pci/ice1712/hoontech.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/hoontech.h	Tue May 18 23:41:45 2004
@@ -25,12 +25,15 @@
  */      
 
 #define  HOONTECH_DEVICE_DESC \
-	"{Hoontech SoundTrack DSP 24}," \
-	"{Hoontech SoundTrack DSP 24 Value}," \
-	"{Hoontech SoundTrack DSP 24 Media 7.1}," \
+	"{Hoontech,SoundTrack DSP 24}," \
+	"{Hoontech,SoundTrack DSP 24 Value}," \
+	"{Hoontech,SoundTrack DSP 24 Media 7.1}," \
+	"{Event Electronics,EZ8},"
 
 #define ICE1712_SUBDEVICE_STDSP24		0x12141217	/* Hoontech SoundTrack Audio DSP 24 */
+#define ICE1712_SUBDEVICE_STDSP24_VALUE		0x00010010	/* A dummy id for Hoontech SoundTrack Audio DSP 24 Value */
 #define ICE1712_SUBDEVICE_STDSP24_MEDIA7_1	0x16141217	/* Hoontech ST Audio DSP24 Media 7.1 */
+#define ICE1712_SUBDEVICE_EVENT_EZ8		0x00010001	/* A dummy id for EZ8 */
 
 extern struct snd_ice1712_card_info snd_ice1712_hoontech_cards[];
 
@@ -64,5 +67,11 @@
 #define ICE1712_STDSP24_BOX_CHN4	(1<<3)	/* input channel 4 */
 #define ICE1712_STDSP24_BOX_MIDI1	(1<<8)
 #define ICE1712_STDSP24_BOX_MIDI2	(1<<9)
+
+/* Hoontech SoundTrack Audio DSP 24 Value definitions for modified hardware */
+
+#define ICE1712_STDSP24_AK4524_CS	0x03	/* AK4524 chip select; low = active */
+#define ICE1712_STDSP24_SERIAL_DATA	0x0c	/* ak4524 data */
+#define ICE1712_STDSP24_SERIAL_CLOCK	0x30	/* ak4524 clock */
 
 #endif /* __SOUND_HOONTECH_H */
diff -Nru a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
--- a/sound/pci/ice1712/ice1712.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/ice1712.c	Tue May 18 23:41:45 2004
@@ -41,6 +41,9 @@
  *  2003.02.20  Taksahi Iwai <tiwai@suse.de>
  *	Split vt1724 part to an independent driver.
  *	The GPIO is accessed through the callback functions now.
+ *
+ * 2004.03.31 Doug McLain <nostar@comcast.net>
+ *    Added support for Event Electronics EZ8 card to hoontech.c.
  */
 
 
@@ -51,11 +54,11 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/cs8427.h>
 #include <sound/info.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <sound/asoundef.h>
@@ -81,24 +84,28 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;		/* Enable this card */
-static int omni[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 0};	/* Delta44 & 66 Omni I/O support */
+static char *model[SNDRV_CARDS];
+static int omni[SNDRV_CARDS];	/* Delta44 & 66 Omni I/O support */
 static int cs8427_timeout[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = 500}; /* CS8427 S/PDIF transciever reset timeout value in msec */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ICE1712 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ICE1712 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ICE1712 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(omni, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(omni, bool, boot_devs, 0444);
 MODULE_PARM_DESC(omni, "Enable Midiman M-Audio Delta Omni I/O support.");
 MODULE_PARM_SYNTAX(omni, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
-MODULE_PARM(cs8427_timeout, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(cs8427_timeout, int, boot_devs, 0444);
 MODULE_PARM_DESC(cs8427_timeout, "Define reset timeout for cs8427 chip in msec resolution.");
 MODULE_PARM_SYNTAX(cs8427_timeout, SNDRV_ENABLED ", allows:{{1,1000}},default=500,skill:advanced");
+module_param_array(model, charp, boot_devs, 0444);
+MODULE_PARM_DESC(model, "Use the given board model.");
 
 #ifndef PCI_VENDOR_ID_ICE
 #define PCI_VENDOR_ID_ICE		0x1412
@@ -1898,6 +1905,74 @@
 	.put = snd_ice1712_pro_internal_clock_put
 };
 
+static int snd_ice1712_pro_internal_clock_default_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+	static char *texts[] = {
+		"8000",		/* 0: 6 */
+		"9600",		/* 1: 3 */
+		"11025",	/* 2: 10 */
+		"12000",	/* 3: 2 */
+		"16000",	/* 4: 5 */
+		"22050",	/* 5: 9 */
+		"24000",	/* 6: 1 */
+		"32000",	/* 7: 4 */
+		"44100",	/* 8: 8 */
+		"48000",	/* 9: 0 */
+		"64000",	/* 10: 15 */
+		"88200",	/* 11: 11 */
+		"96000",	/* 12: 7 */
+		// "IEC958 Input",	/* 13: -- */
+	};
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = 13;
+	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+	return 0;
+}
+
+static int snd_ice1712_pro_internal_clock_default_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	int val;
+	static unsigned int xrate[13] = {
+		8000, 9600, 11025, 12000, 1600, 22050, 24000,
+		32000, 44100, 48000, 64000, 88200, 96000
+	};
+
+	for (val = 0; val < 13; val++) {
+		if (xrate[val] == PRO_RATE_DEFAULT)
+			break;
+	}
+
+	ucontrol->value.enumerated.item[0] = val;
+	return 0;
+}
+
+static int snd_ice1712_pro_internal_clock_default_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+	static unsigned int xrate[13] = {
+		8000, 9600, 11025, 12000, 1600, 22050, 24000,
+		32000, 44100, 48000, 64000, 88200, 96000
+	};
+	unsigned char oval;
+	int change = 0;
+
+	oval = PRO_RATE_DEFAULT;
+	PRO_RATE_DEFAULT = xrate[ucontrol->value.integer.value[0] % 13];
+	change = PRO_RATE_DEFAULT != oval;
+
+	return change;
+}
+
+static snd_kcontrol_new_t snd_ice1712_pro_internal_clock_default __devinitdata = {
+	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+	.name = "Multi Track Internal Clock Default",
+	.info = snd_ice1712_pro_internal_clock_default_info,
+	.get = snd_ice1712_pro_internal_clock_default_get,
+	.put = snd_ice1712_pro_internal_clock_default_put
+};
+
 static int snd_ice1712_pro_rate_locking_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
 {
 	uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
@@ -2213,6 +2288,16 @@
  *
  */
 
+/*
+ * list of available boards
+ */
+static struct snd_ice1712_card_info *card_tables[] __devinitdata = {
+	snd_ice1712_hoontech_cards,
+	snd_ice1712_delta_cards,
+	snd_ice1712_ews_cards,
+	0,
+};
+
 static unsigned char __devinit snd_ice1712_read_i2c(ice1712_t *ice,
 						 unsigned char dev,
 						 unsigned char addr)
@@ -2225,7 +2310,7 @@
 	return inb(ICEREG(ice, I2C_DATA));
 }
 
-static int __devinit snd_ice1712_read_eeprom(ice1712_t *ice)
+static int __devinit snd_ice1712_read_eeprom(ice1712_t *ice, const char *modelname)
 {
 	int dev = 0xa0;		/* EEPROM device address */
 	unsigned int i, size;
@@ -2234,10 +2319,23 @@
 		snd_printk("ICE1712 has not detected EEPROM\n");
 		return -EIO;
 	}
-	ice->eeprom.subvendor = (snd_ice1712_read_i2c(ice, dev, 0x00) << 0) |
-				(snd_ice1712_read_i2c(ice, dev, 0x01) << 8) | 
-				(snd_ice1712_read_i2c(ice, dev, 0x02) << 16) | 
-				(snd_ice1712_read_i2c(ice, dev, 0x03) << 24);
+	if (modelname && *modelname) {
+		struct snd_ice1712_card_info **tbl, *c;
+		for (tbl = card_tables; *tbl; tbl++) {
+			for (c = *tbl; c->subvendor; c++) {
+				if (c->model && !strcmp(modelname, c->model)) {
+					/* use the given subvendor */
+					printk(KERN_INFO "ice1712: Using board model %s\n", c->name);
+					ice->eeprom.subvendor = c->subvendor;
+					break;
+				}
+			}
+		}
+	} else
+		ice->eeprom.subvendor = (snd_ice1712_read_i2c(ice, dev, 0x00) << 0) |
+			(snd_ice1712_read_i2c(ice, dev, 0x01) << 8) | 
+			(snd_ice1712_read_i2c(ice, dev, 0x02) << 16) | 
+			(snd_ice1712_read_i2c(ice, dev, 0x03) << 24);
 	ice->eeprom.size = snd_ice1712_read_i2c(ice, dev, 0x04);
 	if (ice->eeprom.size < 6)
 		ice->eeprom.size = 32; /* FIXME: any cards without the correct size? */
@@ -2335,6 +2433,9 @@
 	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_pro_internal_clock, ice));
 	if (err < 0)
 		return err;
+	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_pro_internal_clock_default, ice));
+	if (err < 0)
+		return err;
 
 	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_pro_rate_locking, ice));
 	if (err < 0)
@@ -2407,6 +2508,7 @@
 
 static int __devinit snd_ice1712_create(snd_card_t * card,
 					struct pci_dev *pci,
+					const char *modelname,
 					int omni,
 					int cs8427_timeout,
 					ice1712_t ** r_ice1712)
@@ -2491,7 +2593,7 @@
 	
 	ice->irq = pci->irq;
 
-	if (snd_ice1712_read_eeprom(ice) < 0) {
+	if (snd_ice1712_read_eeprom(ice, modelname) < 0) {
 		snd_ice1712_free(ice);
 		return -EIO;
 	}
@@ -2526,14 +2628,6 @@
 
 static struct snd_ice1712_card_info no_matched __devinitdata;
 
-static struct snd_ice1712_card_info *card_tables[] __devinitdata = {
-	snd_ice1712_hoontech_cards,
-	snd_ice1712_delta_cards,
-	snd_ice1712_ews_cards,
-	0,
-};
-
-
 static int __devinit snd_ice1712_probe(struct pci_dev *pci,
 				       const struct pci_device_id *pci_id)
 {
@@ -2557,7 +2651,7 @@
 	strcpy(card->driver, "ICE1712");
 	strcpy(card->shortname, "ICEnsemble ICE1712");
 	
-	if ((err = snd_ice1712_create(card, pci, omni[dev], cs8427_timeout[dev], &ice)) < 0) {
+	if ((err = snd_ice1712_create(card, pci, model[dev], omni[dev], cs8427_timeout[dev], &ice)) < 0) {
 		snd_card_free(card);
 		return err;
 	}
@@ -2659,15 +2753,7 @@
 
 static int __init alsa_card_ice1712_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ICE1712 soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_ice1712_exit(void)
@@ -2677,24 +2763,3 @@
 
 module_init(alsa_card_ice1712_init)
 module_exit(alsa_card_ice1712_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ice1712=enable,index,id */
-
-static int __init alsa_card_ice1712_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-ice1712=", alsa_card_ice1712_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/ice1712/ice1712.h b/sound/pci/ice1712/ice1712.h
--- a/sound/pci/ice1712/ice1712.h	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/ice1712.h	Tue May 18 23:41:45 2004
@@ -460,6 +460,7 @@
 struct snd_ice1712_card_info {
 	unsigned int subvendor;
 	char *name;
+	char *model;
 	int (*chip_init)(ice1712_t *);
 	int (*build_controls)(ice1712_t *);
 	int no_mpu401: 1;
diff -Nru a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
--- a/sound/pci/ice1712/ice1724.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/ice1724.c	Tue May 18 23:41:45 2004
@@ -28,10 +28,10 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <sound/asoundef.h>
@@ -62,16 +62,20 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;		/* Enable this card */
+static char *model[SNDRV_CARDS];
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for ICE1724 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for ICE1724 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable ICE1724 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
+module_param_array(model, charp, boot_devs, 0444);
+MODULE_PARM_DESC(model, "Use the given board model.");
 
 #ifndef PCI_VENDOR_ID_ICE
 #define PCI_VENDOR_ID_ICE		0x1412
@@ -1731,9 +1735,7 @@
 /*
  */
 
-static unsigned char __devinit snd_vt1724_read_i2c(ice1712_t *ice,
-						 unsigned char dev,
-						 unsigned char addr)
+unsigned char snd_vt1724_read_i2c(ice1712_t *ice, unsigned char dev, unsigned char addr)
 {
 	long t = 0x10000;
 
@@ -1743,37 +1745,49 @@
 	return inb(ICEREG1724(ice, I2C_DATA));
 }
 
-static int __devinit snd_vt1724_read_eeprom(ice1712_t *ice)
+void snd_vt1724_write_i2c(ice1712_t *ice, unsigned char dev, unsigned char addr, unsigned char data)
+{
+	long t = 0x10000;
+
+	outb(addr, ICEREG1724(ice, I2C_BYTE_ADDR));
+	outb(data, ICEREG1724(ice, I2C_DATA));
+	outb(dev | VT1724_I2C_WRITE, ICEREG1724(ice, I2C_DEV_ADDR));
+	while (t-- > 0 && (inb(ICEREG1724(ice, I2C_CTRL)) & VT1724_I2C_BUSY)) ;
+}
+
+static int __devinit snd_vt1724_read_eeprom(ice1712_t *ice, const char *modelname)
 {
 	int dev = 0xa0;		/* EEPROM device address */
 	unsigned int i, size;
 	struct snd_ice1712_card_info **tbl, *c;
 
-	if ((inb(ICEREG1724(ice, I2C_CTRL)) & VT1724_I2C_EEPROM) == 0) {
-		snd_printk(KERN_WARNING "ICE1724 has not detected EEPROM\n");
-		// return -EIO;
-	}
-	ice->eeprom.subvendor = (snd_vt1724_read_i2c(ice, dev, 0x00) << 0) |
+	if (! modelname || ! *modelname) {
+		if ((inb(ICEREG1724(ice, I2C_CTRL)) & VT1724_I2C_EEPROM) == 0) {
+			snd_printk(KERN_WARNING "ICE1724 has not detected EEPROM\n");
+			// return -EIO;
+		}
+		ice->eeprom.subvendor = (snd_vt1724_read_i2c(ice, dev, 0x00) << 0) |
 				(snd_vt1724_read_i2c(ice, dev, 0x01) << 8) | 
 				(snd_vt1724_read_i2c(ice, dev, 0x02) << 16) | 
 				(snd_vt1724_read_i2c(ice, dev, 0x03) << 24);
-
-	/* if the EEPROM is given by the driver, use it */
+	}
 	for (tbl = card_tables; *tbl; tbl++) {
 		for (c = *tbl; c->subvendor; c++) {
-			if (c->subvendor == ice->eeprom.subvendor) {
-				if (! c->eeprom_size || ! c->eeprom_data)
-					goto found;
-				snd_printdd("using the defined eeprom..\n");
-				ice->eeprom.version = 2;
-				ice->eeprom.size = c->eeprom_size + 6;
-				memcpy(ice->eeprom.data, c->eeprom_data, c->eeprom_size);
-				goto read_skipped;
-			}
+			if (modelname && c->model && ! strcmp(modelname, c->model)) {
+				printk(KERN_INFO "ice1724: Using board model %s\n", c->name);
+				ice->eeprom.subvendor = c->subvendor;
+			} else if (c->subvendor != ice->eeprom.subvendor)
+				continue;
+			if (! c->eeprom_size || ! c->eeprom_data)
+				break;
+			/* if the EEPROM is given by the driver, use it */
+			snd_printdd("using the defined eeprom..\n");
+			ice->eeprom.version = 2;
+			ice->eeprom.size = c->eeprom_size + 6;
+			memcpy(ice->eeprom.data, c->eeprom_data, c->eeprom_size);
+			goto read_skipped;
 		}
 	}
-
- found:
 	ice->eeprom.size = snd_vt1724_read_i2c(ice, dev, 0x04);
 	if (ice->eeprom.size < 6)
 		ice->eeprom.size = 32;
@@ -1927,6 +1941,7 @@
 
 static int __devinit snd_vt1724_create(snd_card_t * card,
 				       struct pci_dev *pci,
+				       const char *modelname,
 				       ice1712_t ** r_ice1712)
 {
 	ice1712_t *ice;
@@ -1982,7 +1997,7 @@
 
 	ice->irq = pci->irq;
 
-	if (snd_vt1724_read_eeprom(ice) < 0) {
+	if (snd_vt1724_read_eeprom(ice, modelname) < 0) {
 		snd_vt1724_free(ice);
 		return -EIO;
 	}
@@ -2041,7 +2056,7 @@
 	strcpy(card->driver, "ICE1724");
 	strcpy(card->shortname, "ICEnsemble ICE1724");
 	
-	if ((err = snd_vt1724_create(card, pci, &ice)) < 0) {
+	if ((err = snd_vt1724_create(card, pci, model[dev], &ice)) < 0) {
 		snd_card_free(card);
 		return err;
 	}
@@ -2141,15 +2156,7 @@
 
 static int __init alsa_card_ice1724_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "ICE1724 soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_ice1724_exit(void)
@@ -2159,24 +2166,3 @@
 
 module_init(alsa_card_ice1724_init)
 module_exit(alsa_card_ice1724_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ice1724=enable,index,id */
-
-static int __init alsa_card_ice1724_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-ice1724=", alsa_card_ice1724_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/ice1712/prodigy.c b/sound/pci/ice1712/prodigy.c
--- a/sound/pci/ice1712/prodigy.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/prodigy.c	Tue May 18 23:41:45 2004
@@ -654,6 +654,7 @@
 	{
 		.subvendor = VT1724_SUBDEVICE_PRODIGY71,
 		.name = "Audiotrak Prodigy 7.1",
+		.model = "prodigy71",
 		.chip_init = prodigy_init,
 		.build_controls = prodigy_add_controls,
 		.eeprom_size = sizeof(prodigy71_eeprom),
diff -Nru a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
--- a/sound/pci/ice1712/revo.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ice1712/revo.c	Tue May 18 23:41:45 2004
@@ -171,10 +171,11 @@
 /* entry point */
 struct snd_ice1712_card_info snd_vt1724_revo_cards[] __devinitdata = {
 	{
-		VT1724_SUBDEVICE_REVOLUTION71,
-		"M Audio Revolution-7.1",
-		revo_init,
-		revo_add_controls,
+		.subvendor = VT1724_SUBDEVICE_REVOLUTION71,
+		.name = "M Audio Revolution-7.1",
+		.model = "revo71",
+		.chip_init = revo_init,
+		.build_controls = revo_add_controls,
 	},
 	{ } /* terminator */
 };
diff -Nru a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
--- a/sound/pci/intel8x0.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/intel8x0.c	Tue May 18 23:41:45 2004
@@ -34,12 +34,12 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/ac97_codec.h>
 #include <sound/info.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 /* for 440MX workaround */
 #include <asm/pgtable.h>
@@ -81,29 +81,30 @@
 #ifdef SUPPORT_MIDI
 static int mpu_port[SNDRV_CARDS]; /* disabled */
 #endif
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Intel i8x0 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Intel i8x0 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Intel i8x0 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(ac97_clock, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ac97_clock, int, boot_devs, 0444);
 MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect).");
 MODULE_PARM_SYNTAX(ac97_clock, SNDRV_ENABLED ",default:0");
-MODULE_PARM(ac97_quirk, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ac97_quirk, int, boot_devs, 0444);
 MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware.");
 MODULE_PARM_SYNTAX(ac97_quirk, SNDRV_ENABLED ",allows:{{-1,4}},dialog:list,default:-1");
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick, bool, boot_devs, 0444);
 MODULE_PARM_DESC(joystick, "Enable joystick for Intel i8x0 soundcard.");
 MODULE_PARM_SYNTAX(joystick, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 #endif
 #ifdef SUPPORT_MIDI
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mpu_port, int, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU401 port # for Intel i8x0 driver.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED ",allows:{{0},{0x330},{0x300}},dialog:list");
 #endif
@@ -235,6 +236,7 @@
 #define   ICH_P2INT		0x02000000	/* ICH4: PCM2-In interrupt */
 #define   ICH_M2INT		0x01000000	/* ICH4: Mic2-In interrupt */
 #define   ICH_SAMPLE_CAP	0x00c00000	/* ICH4: sample capability bits (RO) */
+#define   ICH_SAMPLE_16_20	0x00400000	/* ICH4: 16- and 20-bit samples */
 #define   ICH_MULTICHAN_CAP	0x00300000	/* ICH4: multi-channel capability bits (RO) */
 #define   ICH_MD3		0x00020000	/* modem power down semaphore */
 #define   ICH_AD3		0x00010000	/* audio power down semaphore */
@@ -378,6 +380,7 @@
         unsigned int fragsize;
         unsigned int fragsize1;
         unsigned int position;
+	unsigned int pos_shift;
         int frags;
         int lvi;
         int lvi_frag;
@@ -441,10 +444,9 @@
 	struct snd_dma_buffer bdbars;
 	u32 int_sta_reg;		/* interrupt status register */
 	u32 int_sta_mask;		/* interrupt status mask */
-	unsigned int pcm_pos_shift;
-	
+
 #ifdef CONFIG_PM
-	int in_suspend;
+	u32 pci_state[64 / sizeof(u32)];
 #endif
 };
 
@@ -719,10 +721,10 @@
 		for (idx = 0; idx < (ICH_REG_LVI_MASK + 1) * 2; idx += 4) {
 			bdbar[idx + 0] = cpu_to_le32(ichdev->physbuf);
 			bdbar[idx + 1] = cpu_to_le32(0x80000000 | /* interrupt on completion */
-						     ichdev->fragsize1 >> chip->pcm_pos_shift);
+						     ichdev->fragsize1 >> ichdev->pos_shift);
 			bdbar[idx + 2] = cpu_to_le32(ichdev->physbuf + (ichdev->size >> 1));
 			bdbar[idx + 3] = cpu_to_le32(0x80000000 | /* interrupt on completion */
-						     ichdev->fragsize1 >> chip->pcm_pos_shift);
+						     ichdev->fragsize1 >> ichdev->pos_shift);
 		}
 		ichdev->frags = 2;
 	} else {
@@ -731,7 +733,7 @@
 		for (idx = 0; idx < (ICH_REG_LVI_MASK + 1) * 2; idx += 2) {
 			bdbar[idx + 0] = cpu_to_le32(ichdev->physbuf + (((idx >> 1) * ichdev->fragsize) % ichdev->size));
 			bdbar[idx + 1] = cpu_to_le32(0x80000000 | /* interrupt on completion */
-						     ichdev->fragsize >> chip->pcm_pos_shift);
+						     ichdev->fragsize >> ichdev->pos_shift);
 			// printk("bdbar[%i] = 0x%x [0x%x]\n", idx + 0, bdbar[idx + 0], bdbar[idx + 1]);
 		}
 		ichdev->frags = ichdev->size / ichdev->fragsize;
@@ -773,11 +775,14 @@
 static inline void snd_intel8x0_update(intel8x0_t *chip, ichdev_t *ichdev)
 {
 	unsigned long port = ichdev->reg_offset;
-	int civ, i, step;
+	int status, civ, i, step;
 	int ack = 0;
 
+	status = igetbyte(chip, port + ichdev->roff_sr);
 	civ = igetbyte(chip, port + ICH_REG_OFF_CIV);
-	if (civ == ichdev->civ) {
+	if (!(status & ICH_BCIS)) {
+		step = 0;
+	} else if (civ == ichdev->civ) {
 		// snd_printd("civ same %d\n", civ);
 		step = 1;
 		ichdev->civ++;
@@ -811,7 +816,8 @@
 		snd_pcm_period_elapsed(ichdev->substream);
 		spin_lock(&chip->reg_lock);
 	}
-	iputbyte(chip, port + ichdev->roff_sr, ICH_FIFOE | ICH_BCIS | ICH_LVBCI);
+	iputbyte(chip, port + ichdev->roff_sr,
+		 status & (ICH_FIFOE | ICH_BCIS | ICH_LVBCI));
 }
 
 static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id, struct pt_regs *regs)
@@ -981,7 +987,8 @@
 	return snd_pcm_lib_free_pages(substream);
 }
 
-static void snd_intel8x0_setup_multi_channels(intel8x0_t *chip, int channels)
+static void snd_intel8x0_setup_pcm_out(intel8x0_t *chip,
+				       int channels, int sample_bits)
 {
 	unsigned int cnt;
 	switch (chip->device_type) {
@@ -1005,7 +1012,7 @@
 		break;
 	default:
 		cnt = igetdword(chip, ICHREG(GLOB_CNT));
-		cnt &= ~ICH_PCM_246_MASK;
+		cnt &= ~(ICH_PCM_246_MASK | ICH_PCM_20BIT);
 		if (chip->multi4 && channels == 4)
 			cnt |= ICH_PCM_4;
 		else if (chip->multi6 && channels == 6)
@@ -1016,6 +1023,9 @@
 			 */
 			iputdword(chip, ICHREG(GLOB_CNT), (cnt & 0xcfffff));
 			mdelay(50); /* grrr... */
+		} else if (chip->device_type == DEVICE_INTEL_ICH4) {
+			if (sample_bits > 16)
+				cnt |= ICH_PCM_20BIT;
 		}
 		iputdword(chip, ICHREG(GLOB_CNT), cnt);
 		break;
@@ -1033,8 +1043,12 @@
 	ichdev->fragsize = snd_pcm_lib_period_bytes(substream);
 	if (ichdev->ichd == ICHD_PCMOUT) {
 		spin_lock(&chip->reg_lock);
-		snd_intel8x0_setup_multi_channels(chip, runtime->channels);
+		snd_intel8x0_setup_pcm_out(chip, runtime->channels,
+					   runtime->sample_bits);
 		spin_unlock(&chip->reg_lock);
+		if (chip->device_type == DEVICE_INTEL_ICH4) {
+			ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1;
+		}
 	}
 	snd_intel8x0_setup_periods(chip, ichdev);
 	return 0;
@@ -1047,7 +1061,7 @@
 	unsigned long flags;
 	size_t ptr1, ptr;
 
-	ptr1 = igetword(chip, ichdev->reg_offset + ichdev->roff_picb) << chip->pcm_pos_shift;
+	ptr1 = igetword(chip, ichdev->reg_offset + ichdev->roff_picb) << ichdev->pos_shift;
 	if (ptr1 != 0)
 		ptr = ichdev->fragsize1 - ptr1;
 	else
@@ -1142,6 +1156,8 @@
 		runtime->hw.channels_max = 4;
 		snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, &hw_constraints_channels4);
 	}
+	if (chip->smp20bit)
+		runtime->hw.formats |= SNDRV_PCM_FMTBIT_S32_LE;
 	return 0;
 }
 
@@ -1844,6 +1860,7 @@
 	memset(&ac97, 0, sizeof(ac97));
 	ac97.private_data = chip;
 	ac97.private_free = snd_intel8x0_mixer_free_ac97;
+	ac97.scaps = AC97_SCAP_SKIP_MODEM;
 	if (chip->device_type != DEVICE_ALI) {
 		glob_sta = igetdword(chip, ICHREG(GLOB_STA));
 		bus.write = snd_intel8x0_codec_write;
@@ -1892,7 +1909,8 @@
 	for (i = 0; i < codecs; i++) {
 		ac97.num = i;
 		if ((err = snd_ac97_mixer(pbus, &ac97, &x97)) < 0) {
-			snd_printk(KERN_ERR "Unable to initialize codec #%d\n", i);
+			if (err != -EACCES)
+				snd_printk(KERN_ERR "Unable to initialize codec #%d\n", i);
 			if (i == 0)
 				goto __err;
 			continue;
@@ -1946,6 +1964,10 @@
 		if (pbus->pcms[0].r[0].slots & (1 << AC97_SLOT_LFE))
 			chip->multi6 = 1;
 	}
+	if (chip->device_type == DEVICE_INTEL_ICH4) {
+		if ((igetdword(chip, ICHREG(GLOB_STA)) & ICH_SAMPLE_CAP) == ICH_SAMPLE_16_20)
+			chip->smp20bit = 1;
+	}
 	if (chip->device_type == DEVICE_NFORCE) {
 		/* 48kHz only */
 		chip->ichd[spdif_idx].pcm->rates = SNDRV_PCM_RATE_48000;
@@ -2184,74 +2206,54 @@
 /*
  * power management
  */
-static void intel8x0_suspend(intel8x0_t *chip)
+static int intel8x0_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	intel8x0_t *chip = snd_magic_cast(intel8x0_t, card->pm_private_data, return -EINVAL);
 	int i;
 
-	if (chip->in_suspend ||
-	    card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
-
-	chip->in_suspend = 1;
 	for (i = 0; i < chip->pcm_devs; i++)
 		snd_pcm_suspend_all(chip->pcm[i]);
+	for (i = 0; i < 3; i++)
+		if (chip->ac97[i])
+			snd_ac97_suspend(chip->ac97[i]);
+	pci_save_state(chip->pci, chip->pci_state);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void intel8x0_resume(intel8x0_t *chip)
+static int intel8x0_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	intel8x0_t *chip = snd_magic_cast(intel8x0_t, card->pm_private_data, return -EINVAL);
 	int i;
 
-	if (! chip->in_suspend ||
-	    card->power_state == SNDRV_CTL_POWER_D0)
-		return;
-
+	pci_restore_state(chip->pci, chip->pci_state);
 	pci_enable_device(chip->pci);
 	pci_set_master(chip->pci);
 	snd_intel8x0_chip_init(chip, 0);
+
+	/* refill nocache */
+	if (chip->fix_nocache)
+		fill_nocache(chip->bdbars.area, chip->bdbars.bytes, 1);
+
 	for (i = 0; i < 3; i++)
 		if (chip->ac97[i])
 			snd_ac97_resume(chip->ac97[i]);
 
-	chip->in_suspend = 0;
-	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_intel8x0_suspend(struct pci_dev *dev, u32 state)
-{
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(dev), return -ENXIO);
-	intel8x0_suspend(chip);
-	return 0;
-}
-static int snd_intel8x0_resume(struct pci_dev *dev)
-{
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(dev), return -ENXIO);
-	intel8x0_resume(chip);
-	return 0;
-}
-
-/* callback */
-static int snd_intel8x0_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		intel8x0_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		intel8x0_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
+	/* refill nocache */
+	if (chip->fix_nocache) {
+		for (i = 0; i < chip->bdbars_count; i++) {
+			ichdev_t *ichdev = &chip->ichd[i];
+			if (ichdev->substream) {
+				snd_pcm_runtime_t *runtime = ichdev->substream->runtime;
+				if (runtime->dma_area)
+					fill_nocache(runtime->dma_area, runtime->dma_bytes, 1);
+			}
+		}
 	}
+
+	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
 	return 0;
 }
-
 #endif /* CONFIG_PM */
 
 #define INTEL8X0_TESTBUF_SIZE	32768	/* enough large for one shot */
@@ -2305,7 +2307,7 @@
 	spin_lock_irqsave(&chip->reg_lock, flags);
 	/* check the position */
 	pos = ichdev->fragsize1;
-	pos -= igetword(chip, ichdev->reg_offset + ichdev->roff_picb) << chip->pcm_pos_shift;
+	pos -= igetword(chip, ichdev->reg_offset + ichdev->roff_picb) << ichdev->pos_shift;
 	pos += ichdev->position;
 	do_gettimeofday(&stop_time);
 	/* stop */
@@ -2546,9 +2548,9 @@
 		}
 		if (device_type == DEVICE_ALI)
 			ichdev->ali_slot = (ichdev->reg_offset - 0x40) / 0x10;
+		/* SIS7012 handles the pcm data in bytes, others are in samples */
+		ichdev->pos_shift = (device_type == DEVICE_SIS) ? 0 : 1;
 	}
-	/* SIS7012 handles the pcm data in bytes, others are in words */
-	chip->pcm_pos_shift = (device_type == DEVICE_SIS) ? 0 : 1;
 
 	memset(&chip->dma_dev, 0, sizeof(chip->dma_dev));
 	chip->dma_dev.type = SNDRV_DMA_TYPE_DEV;
@@ -2581,10 +2583,7 @@
 		return err;
 	}
 
-#ifdef CONFIG_PM
-	card->set_power_state = snd_intel8x0_set_power_state;
-	card->power_state_private_data = chip;
-#endif
+	snd_card_set_pm_callback(card, intel8x0_suspend, intel8x0_resume, chip);
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
 		snd_intel8x0_free(chip);
@@ -2692,16 +2691,14 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_intel8x0_remove(struct pci_dev *pci)
 {
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -2710,10 +2707,7 @@
 	.id_table = snd_intel8x0_ids,
 	.probe = snd_intel8x0_probe,
 	.remove = __devexit_p(snd_intel8x0_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_intel8x0_suspend,
-	.resume = snd_intel8x0_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 
 
@@ -2817,12 +2811,9 @@
 {
 	int err;
 
-        if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Intel ICH soundcard not found or device busy\n");
-#endif
+        if ((err = pci_module_init(&driver)) < 0)
                 return err;
-        }
+
 #if defined(SUPPORT_JOYSTICK) || defined(SUPPORT_MIDI)
 	if (pci_module_init(&joystick_driver) < 0) {
 		snd_printdd(KERN_INFO "no joystick found\n");
@@ -2847,33 +2838,3 @@
 
 module_init(alsa_card_intel8x0_init)
 module_exit(alsa_card_intel8x0_exit)
-
-#ifndef MODULE
-
-/* format is: snd-intel8x0=enable,index,id,ac97_clock,ac97_quirk,mpu_port,joystick */
-
-static int __init alsa_card_intel8x0_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&ac97_clock[nr_dev]) == 2 &&
-	       get_option(&str,&ac97_quirk[nr_dev]) == 2
-#ifdef SUPPORT_MIDI
-	       && get_option(&str,&mpu_port[nr_dev]) == 2
-#endif
-#ifdef SUPPORT_JOYSTICK
-	       && get_option(&str,&joystick[nr_dev]) == 2
-#endif
-	       );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-intel8x0=", alsa_card_intel8x0_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c
--- a/sound/pci/intel8x0m.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/intel8x0m.c	Tue May 18 23:41:45 2004
@@ -31,12 +31,12 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/ac97_codec.h>
 #include <sound/info.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -56,17 +56,18 @@
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Intel i8x0 modemcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Intel i8x0 modemcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Intel i8x0 modemcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(ac97_clock, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ac97_clock, int, boot_devs, 0444);
 MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect).");
 MODULE_PARM_SYNTAX(ac97_clock, SNDRV_ENABLED ",default:0");
 
@@ -266,10 +267,6 @@
 	u32 int_sta_reg;		/* interrupt status register */
 	u32 int_sta_mask;		/* interrupt status mask */
 	unsigned int pcm_pos_shift;
-	
-#ifdef CONFIG_PM
-	int in_suspend;
-#endif
 };
 
 static struct pci_device_id snd_intel8x0m_ids[] = {
@@ -905,6 +902,7 @@
 	memset(&ac97, 0, sizeof(ac97));
 	ac97.private_data = chip;
 	ac97.private_free = snd_intel8x0_mixer_free_ac97;
+	ac97.scaps = AC97_SCAP_SKIP_AUDIO;
 
 	glob_sta = igetdword(chip, ICHREG(GLOB_STA));
 	bus.write = snd_intel8x0_codec_write;
@@ -1081,72 +1079,31 @@
 /*
  * power management
  */
-static void intel8x0_suspend(intel8x0_t *chip)
+static int intel8x0m_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	intel8x0_t *chip = snd_magic_cast(intel8x0_t, card->pm_private_data, return -EINVAL);
 	int i;
 
-	if (chip->in_suspend ||
-	    card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
-
-	chip->in_suspend = 1;
 	for (i = 0; i < chip->pcm_devs; i++)
 		snd_pcm_suspend_all(chip->pcm[i]);
+	if (chip->ac97)
+		snd_ac97_suspend(chip->ac97);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void intel8x0_resume(intel8x0_t *chip)
+static int intel8x0m_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (! chip->in_suspend ||
-	    card->power_state == SNDRV_CTL_POWER_D0)
-		return;
-
+	intel8x0_t *chip = snd_magic_cast(intel8x0_t, card->pm_private_data, return -EINVAL);
 	pci_enable_device(chip->pci);
 	pci_set_master(chip->pci);
 	snd_intel8x0_chip_init(chip, 0);
 	if (chip->ac97)
 		snd_ac97_resume(chip->ac97);
 
-	chip->in_suspend = 0;
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_intel8x0m_suspend(struct pci_dev *dev, u32 state)
-{
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(dev), return -ENXIO);
-	intel8x0_suspend(chip);
-	return 0;
-}
-static int snd_intel8x0m_resume(struct pci_dev *dev)
-{
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(dev), return -ENXIO);
-	intel8x0_resume(chip);
 	return 0;
 }
-
-/* callback */
-static int snd_intel8x0_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		intel8x0_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		intel8x0_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
-	return 0;
-}
-
 #endif /* CONFIG_PM */
 
 static void snd_intel8x0m_proc_read(snd_info_entry_t * entry,
@@ -1338,10 +1295,7 @@
 		return err;
 	}
 
-#ifdef CONFIG_PM
-	card->set_power_state = snd_intel8x0_set_power_state;
-	card->power_state_private_data = chip;
-#endif
+	snd_card_set_pm_callback(card, intel8x0m_suspend, intel8x0m_resume, chip);
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
 		snd_intel8x0_free(chip);
@@ -1436,16 +1390,14 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_intel8x0m_remove(struct pci_dev *pci)
 {
-	intel8x0_t *chip = snd_magic_cast(intel8x0_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -1454,25 +1406,13 @@
 	.id_table = snd_intel8x0m_ids,
 	.probe = snd_intel8x0m_probe,
 	.remove = __devexit_p(snd_intel8x0m_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_intel8x0m_suspend,
-	.resume = snd_intel8x0m_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 
 
 static int __init alsa_card_intel8x0m_init(void)
 {
-	int err;
-
-        if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Intel ICH modemcard not found or device busy\n");
-#endif
-                return err;
-        }
-
-        return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_intel8x0m_exit(void)
@@ -1482,26 +1422,3 @@
 
 module_init(alsa_card_intel8x0m_init)
 module_exit(alsa_card_intel8x0m_exit)
-
-#ifndef MODULE
-
-/* format is: snd-intel8x0=enable,index,id,ac97_clock,mpu_port,joystick */
-
-static int __init alsa_card_intel8x0m_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&ac97_clock[nr_dev]) == 2
-	       );
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-intel8x0m=", alsa_card_intel8x0m_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c
--- a/sound/pci/korg1212/korg1212.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/korg1212/korg1212.c	Tue May 18 23:41:45 2004
@@ -26,13 +26,13 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/wait.h>
+#include <linux/moduleparam.h>
 
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -417,14 +417,15 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;     /* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	   /* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE; /* Enable this card */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Korg 1212 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Korg 1212 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Korg 1212 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 MODULE_AUTHOR("Haroldo Gamal <gamal@alternex.com.br>");
@@ -2504,15 +2505,14 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, korg1212);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_korg1212_remove(struct pci_dev *pci)
 {
-	korg1212_t *korg1212 = pci_get_drvdata(pci);
-	snd_card_free(korg1212->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -2525,15 +2525,7 @@
 
 static int __init alsa_card_korg1212_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "No Korg 1212IO cards found\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_korg1212_exit(void)
@@ -2543,25 +2535,3 @@
 
 module_init(alsa_card_korg1212_init)
 module_exit(alsa_card_korg1212_exit)
-
-#ifndef MODULE
-
-/* format is: snd-korg1212=enable,index,id */
-
-static int __init alsa_card_korg1212_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-korg1212=", alsa_card_korg1212_setup);
-
-#endif /* ifndef MODULE */
-
diff -Nru a/sound/pci/maestro3.c b/sound/pci/maestro3.c
--- a/sound/pci/maestro3.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/maestro3.c	Tue May 18 23:41:45 2004
@@ -39,13 +39,13 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/mpu401.h>
 #include <sound/ac97_codec.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Zach Brown <zab@zabbo.net>, Takashi Iwai <tiwai@suse.de>");
@@ -63,20 +63,21 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* all enabled */
 static int external_amp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
 static int amp_gpio[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -1};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable this soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(external_amp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(external_amp, bool, boot_devs, 0444);
 MODULE_PARM_DESC(external_amp, "Enable external amp for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(external_amp, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
-MODULE_PARM(amp_gpio, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(amp_gpio, int, boot_devs, 0444);
 MODULE_PARM_DESC(amp_gpio, "GPIO pin number for external amp. (default = -1)");
 MODULE_PARM_SYNTAX(amp_gpio, SNDRV_ENABLED);
 
@@ -2410,18 +2411,16 @@
  * APM support
  */
 #ifdef CONFIG_PM
-
-static void m3_suspend(m3_t *chip)
+static int m3_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	m3_t *chip = snd_magic_cast(m3_t, card->pm_private_data, return -EINVAL);
 	int i, index;
 
 	if (chip->suspend_mem == NULL)
-		return;
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+		return 0;
 
 	snd_pcm_suspend_all(chip->pcm);
+	snd_ac97_suspend(chip->ac97);
 
 	big_mdelay(10); /* give the assp a chance to idle.. */
 
@@ -2440,17 +2439,16 @@
 	snd_m3_outw(chip, 0xffff, 0x54);
 	snd_m3_outw(chip, 0xffff, 0x56);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void m3_resume(m3_t *chip)
+static int m3_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	m3_t *chip = snd_magic_cast(m3_t, card->pm_private_data, return -EINVAL);
 	int i, index;
 
 	if (chip->suspend_mem == NULL)
-		return;
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+		return 0;
 
 	/* first lets just bring everything back. .*/
 	snd_m3_outw(chip, 0, 0x54);
@@ -2481,41 +2479,8 @@
 	snd_m3_amp_enable(chip, 1);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_m3_suspend(struct pci_dev *pci, u32 state)
-{
-	m3_t *chip = snd_magic_cast(m3_t, pci_get_drvdata(pci), return -ENXIO);
-	m3_suspend(chip);
-	return 0;
-}
-static int snd_m3_resume(struct pci_dev *pci)
-{
-	m3_t *chip = snd_magic_cast(m3_t, pci_get_drvdata(pci), return -ENXIO);
-	m3_resume(chip);
-	return 0;
-}
-
-/* callback */
-static int snd_m3_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	m3_t *chip = snd_magic_cast(m3_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		m3_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		m3_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
-
 #endif /* CONFIG_PM */
 
 
@@ -2651,11 +2616,9 @@
 #ifdef CONFIG_PM
 	chip->suspend_mem = vmalloc(sizeof(u16) * (REV_B_CODE_MEMORY_LENGTH + REV_B_DATA_MEMORY_LENGTH));
 	if (chip->suspend_mem == NULL)
-		snd_printk("can't allocate apm buffer\n");
-	else {
-		card->set_power_state = snd_m3_set_power_state;
-		card->power_state_private_data = chip;
-	}
+		snd_printk(KERN_WARNING "can't allocate apm buffer\n");
+	else
+		snd_card_set_pm_callback(card, m3_suspend, m3_resume, chip);
 #endif
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
@@ -2738,16 +2701,14 @@
 		printk(KERN_WARNING "maestro3: no midi support.\n");
 #endif
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_m3_remove(struct pci_dev *pci)
 {
-	m3_t *chip = snd_magic_cast(m3_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -2756,23 +2717,12 @@
 	.id_table = snd_m3_ids,
 	.probe = snd_m3_probe,
 	.remove = __devexit_p(snd_m3_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_m3_suspend,
-	.resume = snd_m3_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 	
 static int __init alsa_card_m3_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Maestro3/Allegro soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_m3_exit(void)
@@ -2782,26 +2732,3 @@
 
 module_init(alsa_card_m3_init)
 module_exit(alsa_card_m3_exit)
-
-#ifndef MODULE
-
-/* format is: snd-maestro3=enable,index,id,external_amp,amp_gpio */
-
-static int __init alsa_card_maestro3_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&external_amp[nr_dev]) == 2 &&
-	       get_option(&str,&amp_gpio[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-maestro3=", alsa_card_maestro3_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/mixart/mixart.c b/sound/pci/mixart/mixart.c
--- a/sound/pci/mixart/mixart.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/mixart/mixart.c	Tue May 18 23:41:45 2004
@@ -25,8 +25,8 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/pci.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/info.h>
 #include <sound/control.h>
@@ -48,16 +48,17 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;             /* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;              /* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;     /* Enable this card */
+static int boot_devs;
 
 #define chip_t mixart_t
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Digigram " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Digigram " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Digigram " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 
@@ -1432,15 +1433,7 @@
 
 static int __init alsa_card_mixart_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		snd_printk(KERN_ERR "Digigram miXart soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_mixart_exit(void)
@@ -1450,24 +1443,3 @@
 
 module_init(alsa_card_mixart_init)
 module_exit(alsa_card_mixart_exit)
-
-#ifndef MODULE
-
-/* format is: snd-mixart=enable,index,id */
-
-static int __init alsa_card_mixart_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-mixart=", alsa_card_mixart_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/nm256/nm256.c b/sound/pci/nm256/nm256.c
--- a/sound/pci/nm256/nm256.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/nm256/nm256.c	Tue May 18 23:41:45 2004
@@ -31,12 +31,12 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/ac97_codec.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #define CARD_NAME "NeoMagic 256AV/ZX"
@@ -62,32 +62,33 @@
 static int buffer_top[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0}; /* not specified */
 static int use_cache[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0}; /* disabled */
 static int vaio_hack[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0}; /* disabled */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable this soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(playback_bufsize, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(playback_bufsize, int, boot_devs, 0444);
 MODULE_PARM_DESC(playback_bufsize, "DAC frame size in kB for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(playback_bufsize, SNDRV_ENABLED);
-MODULE_PARM(capture_bufsize, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(capture_bufsize, int, boot_devs, 0444);
 MODULE_PARM_DESC(capture_bufsize, "ADC frame size in kB for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(capture_bufsize, SNDRV_ENABLED);
-MODULE_PARM(force_ac97, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(force_ac97, bool, boot_devs, 0444);
 MODULE_PARM_DESC(force_ac97, "Force to use AC97 codec for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(force_ac97, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(buffer_top, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(buffer_top, int, boot_devs, 0444);
 MODULE_PARM_DESC(buffer_top, "Set the top address of audio buffer for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(buffer_top, SNDRV_ENABLED);
-MODULE_PARM(use_cache, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(use_cache, bool, boot_devs, 0444);
 MODULE_PARM_DESC(use_cache, "Enable the cache for coefficient table access.");
 MODULE_PARM_SYNTAX(use_cache, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(vaio_hack, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(vaio_hack, bool, boot_devs, 0444);
 MODULE_PARM_DESC(vaio_hack, "Enable workaround for Sony VAIO notebooks.");
 MODULE_PARM_SYNTAX(vaio_hack, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -1283,24 +1284,20 @@
  * APM event handler, so the card is properly reinitialized after a power
  * event.
  */
-static void nm256_suspend(nm256_t *chip)
+static int nm256_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
+	nm256_t *chip = snd_magic_cast(nm256_t, card->pm_private_data, return -EINVAL);
 
 	snd_pcm_suspend_all(chip->pcm);
+	snd_ac97_suspend(chip->ac97);
 	chip->coeffs_current = 0;
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void nm256_resume(nm256_t *chip)
+static int nm256_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+	nm256_t *chip = snd_magic_cast(nm256_t, card->pm_private_data, return -EINVAL);
 
 	/* Perform a full reset on the hardware */
 	pci_enable_device(chip->pci);
@@ -1310,41 +1307,8 @@
 	snd_ac97_resume(chip->ac97);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_nm256_suspend(struct pci_dev *dev, u32 state)
-{
-	nm256_t *chip = snd_magic_cast(nm256_t, pci_get_drvdata(dev), return -ENXIO);
-	nm256_suspend(chip);
-	return 0;
-}
-static int snd_nm256_resume(struct pci_dev *dev)
-{
-	nm256_t *chip = snd_magic_cast(nm256_t, pci_get_drvdata(dev), return -ENXIO);
-	nm256_resume(chip);
 	return 0;
 }
-
-/* callback */
-static int snd_nm256_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	nm256_t *chip = snd_magic_cast(nm256_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		nm256_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		nm256_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
-	return 0;
-}
-
 #endif /* CONFIG_PM */
 
 static int snd_nm256_free(nm256_t *chip)
@@ -1552,10 +1516,7 @@
 
 	// pci_set_master(pci); /* needed? */
 	
-#ifdef CONFIG_PM
-	card->set_power_state = snd_nm256_set_power_state;
-	card->power_state_private_data = chip;
-#endif
+	snd_card_set_pm_callback(card, nm256_suspend, nm256_resume, chip);
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0)
 		goto __error;
@@ -1571,6 +1532,21 @@
 }
 
 
+struct nm256_quirk {
+	unsigned short vendor;
+	unsigned short device;
+	int type;
+};
+
+#define NM_BLACKLISTED	1
+
+static struct nm256_quirk nm256_quirks[] __devinitdata = {
+	/* HP omnibook 4150 has cs4232 codec internally */
+	{ .vendor = 0x103c, .device = 0x0007, .type = NM_BLACKLISTED },
+	{ } /* terminator */
+};
+
+
 static int __devinit snd_nm256_probe(struct pci_dev *pci,
 				     const struct pci_device_id *pci_id)
 {
@@ -1579,6 +1555,8 @@
 	nm256_t *chip;
 	int err;
 	unsigned int xbuffer_top;
+	struct nm256_quirk *q;
+	u16 subsystem_vendor, subsystem_device;
 
 	if ((err = pci_enable_device(pci)) < 0)
 		return err;
@@ -1590,6 +1568,18 @@
 		return -ENOENT;
 	}
 
+	pci_read_config_word(pci, PCI_SUBSYSTEM_VENDOR_ID, &subsystem_vendor);
+	pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &subsystem_device);
+
+	for (q = nm256_quirks; q->vendor; q++) {
+		if (q->vendor == subsystem_vendor && q->device == subsystem_device) {
+			if (q->type == NM_BLACKLISTED) {
+				printk(KERN_INFO "nm256: The device is blacklisted.  Loading stopped\n");
+				return -ENODEV;
+			}
+		}
+	}
+
 	card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
 	if (card == NULL)
 		return -ENOMEM;
@@ -1641,16 +1631,14 @@
 		return err;
 	}
 
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_nm256_remove(struct pci_dev *pci)
 {
-	nm256_t *chip = snd_magic_cast(nm256_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -1660,23 +1648,13 @@
 	.id_table = snd_nm256_ids,
 	.probe = snd_nm256_probe,
 	.remove = __devexit_p(snd_nm256_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_nm256_suspend,
-	.resume = snd_nm256_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 
 
 static int __init alsa_card_nm256_init(void)
 {
-	int err;
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "NeoMagic 256 audio soundchip not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_nm256_exit(void)
@@ -1686,31 +1664,3 @@
 
 module_init(alsa_card_nm256_init)
 module_exit(alsa_card_nm256_exit)
-
-#ifndef MODULE
-
-/* format is: snd-nm256=enable,index,id,
-			playback_bufsize,capture_bufsize,
-			force_ac97,buffer_top,use_cache */
-
-static int __init alsa_card_nm256_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&playback_bufsize[nr_dev]) == 2 &&
-	       get_option(&str,&capture_bufsize[nr_dev]) == 2 &&
-	       get_option(&str,&force_ac97[nr_dev]) == 2 &&
-	       get_option(&str,&buffer_top[nr_dev]) == 2 &&
-	       get_option(&str,&use_cache[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-nm256=", alsa_card_nm256_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/rme32.c b/sound/pci/rme32.c
--- a/sound/pci/rme32.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/rme32.c	Tue May 18 23:41:45 2004
@@ -61,6 +61,7 @@
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 
 #include <sound/core.h>
 #include <sound/info.h>
@@ -68,7 +69,6 @@
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/asoundef.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -76,14 +76,15 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for RME Digi32 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for RME Digi32 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable RME Digi32 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 MODULE_AUTHOR("Martin Langer <martin-langer@gmx.de>");
@@ -1995,15 +1996,7 @@
 
 static int __init alsa_card_rme32_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		snd_printk("No RME Digi32 cards found\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_rme32_exit(void)
@@ -2013,22 +2006,3 @@
 
 module_init(alsa_card_rme32_init)
 module_exit(alsa_card_rme32_exit)
-
-#ifndef MODULE
-
-static int __init alsa_card_rme32_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void) (get_option(&str, &enable[nr_dev]) == 2 &&
-		get_option(&str, &index[nr_dev]) == 2 &&
-		get_id(&str, &id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-rme32=", alsa_card_rme32_setup);
-
-#endif				/* ifndef MODULE */
diff -Nru a/sound/pci/rme96.c b/sound/pci/rme96.c
--- a/sound/pci/rme96.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/rme96.c	Tue May 18 23:41:45 2004
@@ -29,6 +29,7 @@
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 
 #include <sound/core.h>
 #include <sound/info.h>
@@ -36,7 +37,6 @@
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/asoundef.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -57,14 +57,15 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for RME Digi96 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for RME Digi96 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable RME Digi96 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 
@@ -2565,15 +2566,7 @@
 
 static int __init alsa_card_rme96_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "No RME Digi96 cards found\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_rme96_exit(void)
@@ -2583,24 +2576,3 @@
 
 module_init(alsa_card_rme96_init)
 module_exit(alsa_card_rme96_exit)
-
-#ifndef MODULE
-
-/* format is: snd-rme96=enable,index,id */
-
-static int __init alsa_card_rme96_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-rme96=", alsa_card_rme96_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
--- a/sound/pci/rme9652/hdsp.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/rme9652/hdsp.c	Tue May 18 23:41:45 2004
@@ -27,6 +27,7 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/pci.h>
+#include <linux/moduleparam.h>
 
 #include <sound/core.h>
 #include <sound/control.h>
@@ -35,7 +36,6 @@
 #include <sound/asoundef.h>
 #include <sound/rawmidi.h>
 #include <sound/hwdep.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/hdsp.h>
 
@@ -48,20 +48,21 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int precise_ptr[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0 }; /* Enable precise pointer */
 static int line_outs_monitor[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0}; /* Send all inputs/playback to line outs */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for RME Hammerfall DSP interface.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for RME Hammerfall DSP interface.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable/disable specific Hammerfall DSP soundcards.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(precise_ptr, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(precise_ptr, bool, boot_devs, 0444);
 MODULE_PARM_DESC(precise_ptr, "Enable precise pointer (doesn't work reliably).");
 MODULE_PARM_SYNTAX(precise_ptr, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(line_outs_monitor,"1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(line_outs_monitor, bool, boot_devs, 0444);
 MODULE_PARM_DESC(line_outs_monitor, "Send all input and playback streams to line outs by default.");
 MODULE_PARM_SYNTAX(line_outs_monitor, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 MODULE_AUTHOR("Paul Davis <paul@linuxaudiosystems.com>, Marcus Andersson, Thomas Charbonnel <thomas@undata.org>");
@@ -634,6 +635,7 @@
 	case 0xa:
 		return (64 * out) + (32 + (in));
 	case 0x96:
+	case 0x97:
 		return (32 * out) + (16 + (in));
 	default:
 		return (52 * out) + (26 + (in));
@@ -646,6 +648,7 @@
 	case 0xa:
 		return (64 * out) + in;
 	case 0x96:
+	case 0x97:
 		return (32 * out) + in;
 	default:
 		return (52 * out) + in;
@@ -4120,10 +4123,10 @@
 		return -EIO;
 	}
 
-	spin_lock_irq(&hdsp->lock);
+	spin_lock(&hdsp->lock);
 	if (!hdsp->running)
 		hdsp_reset_hw_pointer(hdsp);
-	spin_unlock_irq(&hdsp->lock);
+	spin_unlock(&hdsp->lock);
 	return result;
 }
 
@@ -5018,6 +5021,7 @@
 		is_9652 = 1;
 		break;
 	case 0x96:
+	case 0x97:
 		hdsp->card_name = "RME HDSP 9632";
 		hdsp->max_channels = 16;
 		is_9632 = 1;
@@ -5198,14 +5202,7 @@
 
 static int __init alsa_card_hdsp_init(void)
 {
-	if (pci_module_init(&driver) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "RME Hammerfall-DSP: no cards found\n");
-#endif
-		return -ENODEV;
-	}
-
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_hdsp_exit(void)
@@ -5215,24 +5212,3 @@
 
 module_init(alsa_card_hdsp_init)
 module_exit(alsa_card_hdsp_exit)
-
-#ifndef MODULE
-
-/* format is: snd-hdsp=enable,index,id */
-
-static int __init alsa_card_hdsp_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-hdsp=", alsa_card_hdsp_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c
--- a/sound/pci/rme9652/rme9652.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/rme9652/rme9652.c	Tue May 18 23:41:45 2004
@@ -26,13 +26,13 @@
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
 #include <sound/info.h>
 #include <sound/asoundef.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/current.h>
@@ -42,17 +42,18 @@
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int precise_ptr[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0 }; /* Enable precise pointer */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for RME Digi9652 (Hammerfall) soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for RME Digi9652 (Hammerfall) soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable/disable specific RME96{52,36} soundcards.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(precise_ptr, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(precise_ptr, bool, boot_devs, 0444);
 MODULE_PARM_DESC(precise_ptr, "Enable precise pointer (doesn't work reliably).");
 MODULE_PARM_SYNTAX(precise_ptr, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 MODULE_AUTHOR("Paul Davis <pbd@op.net>, Winfried Ritsch");
@@ -2262,10 +2263,10 @@
 	rme9652_t *rme9652 = _snd_pcm_substream_chip(substream);
 	int result = 0;
 
-	spin_lock_irq(&rme9652->lock);
+	spin_lock(&rme9652->lock);
 	if (!rme9652->running)
 		rme9652_reset_hw_pointer(rme9652);
-	spin_unlock_irq(&rme9652->lock);
+	spin_unlock(&rme9652->lock);
 	return result;
 }
 
@@ -2748,14 +2749,7 @@
 
 static int __init alsa_card_hammerfall_init(void)
 {
-	if (pci_module_init(&driver) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "RME Digi9652/Digi9636: no cards found\n");
-#endif
-		return -ENODEV;
-	}
-
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_hammerfall_exit(void)
@@ -2765,24 +2759,3 @@
 
 module_init(alsa_card_hammerfall_init)
 module_exit(alsa_card_hammerfall_exit)
-
-#ifndef MODULE
-
-/* format is: snd-rme9652=enable,index,id */
-
-static int __init alsa_card_rme9652_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-rme9652=", alsa_card_rme9652_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
--- a/sound/pci/sonicvibes.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/sonicvibes.c	Tue May 18 23:41:45 2004
@@ -29,6 +29,7 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -36,7 +37,6 @@
 #include <sound/control.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -60,23 +60,24 @@
 static int reverb[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
 static int mge[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
 static unsigned int dmaio = 0x7a00;	/* DDMA i/o address */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for S3 SonicVibes soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for S3 SonicVibes soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable S3 SonicVibes soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(reverb, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(reverb, bool, boot_devs, 0444);
 MODULE_PARM_DESC(reverb, "Enable reverb (SRAM is present) for S3 SonicVibes soundcard.");
 MODULE_PARM_SYNTAX(reverb, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
-MODULE_PARM(mge, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mge, bool, boot_devs, 0444);
 MODULE_PARM_DESC(mge, "MIC Gain Enable for S3 SonicVibes soundcard.");
 MODULE_PARM_SYNTAX(mge, SNDRV_ENABLED "," SNDRV_ENABLE_DESC);
-MODULE_PARM(dmaio, "i");
+module_param(dmaio, uint, 0444);
 MODULE_PARM_DESC(dmaio, "DDMA i/o base address for S3 SonicVibes soundcard.");
 MODULE_PARM_SYNTAX(dmaio, "global," SNDRV_PORT_DESC);
 
@@ -1535,15 +1536,7 @@
 
 static int __init alsa_card_sonicvibes_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "S3 SonicVibes soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_sonicvibes_exit(void)
@@ -1553,28 +1546,3 @@
 
 module_init(alsa_card_sonicvibes_init)
 module_exit(alsa_card_sonicvibes_exit)
-
-#ifndef MODULE
-
-/* format is: snd-sonicvibes=enable,index,id,
-			     reverb,mge,dmaio */
-
-static int __init alsa_card_sonicvibes_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&reverb[nr_dev]) == 2 &&
-	       get_option(&str,&mge[nr_dev]) == 2 &&
-	       get_option(&str,(int *)&dmaio) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-sonicvibes=", alsa_card_sonicvibes_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/trident/trident.c b/sound/pci/trident/trident.c
--- a/sound/pci/trident/trident.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/trident/trident.c	Tue May 18 23:41:45 2004
@@ -25,9 +25,9 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/trident.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>, <audio@tridentmicro.com>");
@@ -52,20 +52,21 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int pcm_channels[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 32};
 static int wavetable_size[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 8192};
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Trident 4DWave PCI soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Trident 4DWave PCI soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Trident 4DWave PCI soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(pcm_channels, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pcm_channels, int, boot_devs, 0444);
 MODULE_PARM_DESC(pcm_channels, "Number of hardware channels assigned for PCM.");
 MODULE_PARM_SYNTAX(pcm_channels, SNDRV_ENABLED ",default:32,allows:{{1,32}}");
-MODULE_PARM(wavetable_size, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(wavetable_size, int, boot_devs, 0444);
 MODULE_PARM_DESC(wavetable_size, "Maximum memory size in kB for wavetable synth.");
 MODULE_PARM_SYNTAX(wavetable_size, SNDRV_ENABLED ",default:8192,skill:advanced");
 
@@ -169,56 +170,28 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, trident);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
 static void __devexit snd_trident_remove(struct pci_dev *pci)
 {
-	trident_t *trident = snd_magic_cast(trident_t, pci_get_drvdata(pci), return);
-	if (trident)
-		snd_card_free(trident->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
-#ifdef CONFIG_PM
-static int snd_card_trident_suspend(struct pci_dev *pci, u32 state)
-{
-	trident_t *chip = snd_magic_cast(trident_t, pci_get_drvdata(pci), return -ENXIO);
-	snd_trident_suspend(chip);
-	return 0;
-}
-static int snd_card_trident_resume(struct pci_dev *pci)
-{
-	trident_t *chip = snd_magic_cast(trident_t, pci_get_drvdata(pci), return -ENXIO);
-	snd_trident_resume(chip);
-	return 0;
-}
-#endif
-
 static struct pci_driver driver = {
 	.name = "Trident4DWaveAudio",
 	.id_table = snd_trident_ids,
 	.probe = snd_trident_probe,
 	.remove = __devexit_p(snd_trident_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_card_trident_suspend,
-	.resume = snd_card_trident_resume,
-#endif
+	SND_PCI_PM_CALLBACKS
 };
 
 static int __init alsa_card_trident_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Trident 4DWave PCI soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_trident_exit(void)
@@ -228,27 +201,3 @@
 
 module_init(alsa_card_trident_init)
 module_exit(alsa_card_trident_exit)
-
-#ifndef MODULE
-
-/* format is: snd-trident=enable,index,id,
-			  pcm_channels,wavetable_size */
-
-static int __init alsa_card_trident_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option(&str,&pcm_channels[nr_dev]) == 2 &&
-	       get_option(&str,&wavetable_size[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-trident=", alsa_card_trident_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
--- a/sound/pci/trident/trident_main.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/trident/trident_main.c	Tue May 18 23:41:45 2004
@@ -50,7 +50,8 @@
 static int snd_trident_pcm_mixer_free(trident_t *trident, snd_trident_voice_t * voice, snd_pcm_substream_t *substream);
 static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 #ifdef CONFIG_PM
-static int snd_trident_set_power_state(snd_card_t *card, unsigned int power_state);
+static int snd_trident_suspend(snd_card_t *card, unsigned int state);
+static int snd_trident_resume(snd_card_t *card, unsigned int state);
 #endif
 static int snd_trident_sis_reset(trident_t *trident);
 
@@ -3646,10 +3647,8 @@
 
 	snd_trident_enable_eso(trident);
 
-#ifdef CONFIG_PM
-	card->set_power_state = snd_trident_set_power_state;
-	card->power_state_private_data = trident;
-#endif
+	
+	snd_card_set_pm_callback(card, snd_trident_suspend, snd_trident_resume, trident);
 
 	snd_trident_proc_init(trident);
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, trident, &ops)) < 0) {
@@ -3949,19 +3948,21 @@
 }
 
 #ifdef CONFIG_PM
-
-void snd_trident_suspend(trident_t *trident)
+static int snd_trident_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = trident->card;
+	trident_t *trident = snd_magic_cast(trident_t, card->pm_private_data, return -EINVAL);
 
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
 	trident->in_suspend = 1;
 	snd_pcm_suspend_all(trident->pcm);
 	if (trident->foldback)
 		snd_pcm_suspend_all(trident->foldback);
 	if (trident->spdif)
 		snd_pcm_suspend_all(trident->spdif);
+
+	snd_ac97_suspend(trident->ac97);
+	if (trident->ac97_sec)
+		snd_ac97_suspend(trident->ac97_sec);
+
 	switch (trident->device) {
 	case TRIDENT_DEVICE_ID_DX:
 	case TRIDENT_DEVICE_ID_NX:
@@ -3970,14 +3971,12 @@
 		break;
 	}
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-void snd_trident_resume(trident_t *trident)
+static int snd_trident_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = trident->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+	trident_t *trident = snd_magic_cast(trident_t, card->pm_private_data, return -EINVAL);
 
 	pci_enable_device(trident->pci);
 	if (pci_set_dma_mask(trident->pci, 0x3fffffff) < 0 ||
@@ -3998,6 +3997,8 @@
 	}
 
 	snd_ac97_resume(trident->ac97);
+	if (trident->ac97_sec)
+		snd_ac97_resume(trident->ac97_sec);
 
 	/* restore some registers */
 	outl(trident->musicvol_wavevol, TRID_REG(trident, T4D_MUSICVOL_WAVEVOL));
@@ -4006,28 +4007,8 @@
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
 	trident->in_suspend = 0;
+	return 0;
 }
-
-static int snd_trident_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	trident_t *chip = snd_magic_cast(trident_t, card->power_state_private_data, return -ENXIO);
-        
-	switch (power_state) {
-        case SNDRV_CTL_POWER_D0:
-        case SNDRV_CTL_POWER_D1:
-        case SNDRV_CTL_POWER_D2:
-        	snd_trident_resume(chip);
-                break;
-	case SNDRV_CTL_POWER_D3hot:
-        case SNDRV_CTL_POWER_D3cold:
-		snd_trident_suspend(chip);
-		break;
-        default:
-	        return -EINVAL;
-        }
-        return 0;
-}
-
 #endif /* CONFIG_PM */
 
 EXPORT_SYMBOL(snd_trident_alloc_voice);
diff -Nru a/sound/pci/via82xx.c b/sound/pci/via82xx.c
--- a/sound/pci/via82xx.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/via82xx.c	Tue May 18 23:41:45 2004
@@ -51,13 +51,13 @@
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/gameport.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/info.h>
 #include <sound/ac97_codec.h>
 #include <sound/mpu401.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #if 0
@@ -84,31 +84,32 @@
 static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000};
 static int ac97_quirk[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = AC97_TUNE_DEFAULT};
 static int dxs_support[SNDRV_CARDS];
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable audio part of VIA 82xx bridge.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 port. (VT82C686x only)");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_PORT_DESC);
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(joystick, bool, boot_devs, 0444);
 MODULE_PARM_DESC(joystick, "Enable joystick. (VT82C686x only)");
 MODULE_PARM_SYNTAX(joystick, SNDRV_ENABLE_DESC "," SNDRV_BOOLEAN_FALSE_DESC);
 #endif
-MODULE_PARM(ac97_clock, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ac97_clock, int, boot_devs, 0444);
 MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (default 48000Hz).");
 MODULE_PARM_SYNTAX(ac97_clock, SNDRV_ENABLED ",default:48000");
-MODULE_PARM(ac97_quirk, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ac97_quirk, int, boot_devs, 0444);
 MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware.");
 MODULE_PARM_SYNTAX(ac97_quirk, SNDRV_ENABLED ",allows:{{-1,4}},dialog:list,default:-1");
-MODULE_PARM(dxs_support, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(dxs_support, int, boot_devs, 0444);
 MODULE_PARM_DESC(dxs_support, "Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA)");
 MODULE_PARM_SYNTAX(dxs_support, SNDRV_ENABLED ",allows:{{0,4}},dialog:list");
 
@@ -368,6 +369,14 @@
 
 	unsigned char old_legacy;
 	unsigned char old_legacy_cfg;
+#ifdef CONFIG_PM
+	unsigned char legacy_saved;
+	unsigned char legacy_cfg_saved;
+	unsigned char spdif_ctrl_saved;
+	unsigned char capture_src_saved[2];
+	unsigned int mpu_port_saved;
+	u32 pci_state[16];
+#endif
 
 	unsigned char playback_volume[4][2]; /* for VIA8233/C/8235; default = 0 */
 
@@ -384,6 +393,7 @@
 	unsigned int no_vra: 1;		/* no need to set VRA on DXS channels */
 	unsigned int spdif_on: 1;	/* only spdif rates work to external DACs */
 
+	snd_pcm_t *pcms[2];
 	snd_rawmidi_t *rmidi;
 
 	ac97_bus_t *ac97_bus;
@@ -1289,6 +1299,7 @@
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_via8233_capture_ops);
 	pcm->private_data = chip;
 	strcpy(pcm->name, chip->card->shortname);
+	chip->pcms[0] = pcm;
 	/* set up playbacks */
 	for (i = 0; i < 4; i++)
 		init_viadev(chip, i, 0x10 * i, 0);
@@ -1307,6 +1318,7 @@
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_via8233_capture_ops);
 	pcm->private_data = chip;
 	strcpy(pcm->name, chip->card->shortname);
+	chip->pcms[1] = pcm;
 	/* set up playback */
 	init_viadev(chip, chip->multi_devno, VIA_REG_MULTPLAY_STATUS, 0);
 	/* set up capture */
@@ -1341,6 +1353,7 @@
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_via8233_capture_ops);
 	pcm->private_data = chip;
 	strcpy(pcm->name, chip->card->shortname);
+	chip->pcms[0] = pcm;
 	/* set up playback */
 	init_viadev(chip, chip->multi_devno, VIA_REG_MULTPLAY_STATUS, 0);
 	/* capture */
@@ -1357,6 +1370,7 @@
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_via8233_playback_ops);
 	pcm->private_data = chip;
 	strcpy(pcm->name, chip->card->shortname);
+	chip->pcms[1] = pcm;
 	/* set up playback */
 	init_viadev(chip, chip->playback_devno, 0x30, 0);
 
@@ -1387,6 +1401,7 @@
 	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_via686_capture_ops);
 	pcm->private_data = chip;
 	strcpy(pcm->name, chip->card->shortname);
+	chip->pcms[0] = pcm;
 	init_viadev(chip, 0, VIA_REG_PLAYBACK_STATUS, 0);
 	init_viadev(chip, 1, VIA_REG_CAPTURE_STATUS, 1);
 
@@ -1404,8 +1419,11 @@
 
 static int snd_via8233_capture_source_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
 {
+	/* formerly they were "Line" and "Mic", but it looks like that they
+	 * have nothing to do with the actual physical connections...
+	 */
 	static char *texts[2] = {
-		"Line", "Mic"
+		"Input1", "Input2"
 	};
 	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
 	uinfo->count = 1;
@@ -1584,6 +1602,12 @@
 		.name = "Mitac Mobo",
 		.type = AC97_TUNE_ALC_JACK
 	},
+	{
+		.vendor = 0x161f,
+		.device = 0x202b,
+		.name = "Arima Notebook",
+		.type = AC97_TUNE_HP_ONLY,
+	},
 	{ } /* terminator */
 };
 
@@ -1667,6 +1691,9 @@
 		if (mpu_port[dev] >= 0x200) {	/* force MIDI */
 			mpu_port[dev] &= 0xfffc;
 			pci_write_config_dword(chip->pci, 0x18, mpu_port[dev] | 0x01);
+#ifdef CONFIG_PM
+			chip->mpu_port_saved = mpu_port[dev];
+#endif
 		} else {
 			mpu_port[dev] = pci_resource_start(chip->pci, 2);
 		}
@@ -1725,6 +1752,11 @@
 		gameport_register_port(&chip->gameport);
 #endif
 
+#ifdef CONFIG_PM
+	chip->legacy_saved = legacy;
+	chip->legacy_cfg_saved = legacy_cfg;
+#endif
+
 	return 0;
 }
 
@@ -1865,6 +1897,74 @@
 	return 0;
 }
 
+#ifdef CONFIG_PM
+/*
+ * power management
+ */
+static int snd_via82xx_suspend(snd_card_t *card, unsigned int state)
+{
+	via82xx_t *chip = snd_magic_cast(via82xx_t, card->pm_private_data, return -EINVAL);
+	int i;
+
+	for (i = 0; i < 2; i++)
+		if (chip->pcms[i])
+			snd_pcm_suspend_all(chip->pcms[i]);
+	for (i = 0; i < chip->num_devs; i++)
+		snd_via82xx_channel_reset(chip, &chip->devs[i]);
+	synchronize_irq(chip->irq);
+	snd_ac97_suspend(chip->ac97);
+
+	/* save misc values */
+	if (chip->chip_type != TYPE_VIA686) {
+		pci_read_config_byte(chip->pci, VIA8233_SPDIF_CTRL, &chip->spdif_ctrl_saved);
+		chip->capture_src_saved[0] = inb(chip->port + VIA_REG_CAPTURE_CHANNEL);
+		chip->capture_src_saved[1] = inb(chip->port + VIA_REG_CAPTURE_CHANNEL + 0x10);
+	}
+
+	pci_save_state(chip->pci, chip->pci_state);
+	pci_set_power_state(chip->pci, 3);
+	pci_disable_device(chip->pci);
+	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
+}
+
+static int snd_via82xx_resume(snd_card_t *card, unsigned int state)
+{
+	via82xx_t *chip = snd_magic_cast(via82xx_t, card->pm_private_data, return -EINVAL);
+	int idx, i;
+
+	pci_enable_device(chip->pci);
+	pci_restore_state(chip->pci, chip->pci_state);
+	pci_set_power_state(chip->pci, 0);
+
+	snd_via82xx_chip_init(chip);
+
+	if (chip->chip_type == TYPE_VIA686) {
+		if (chip->mpu_port_saved)
+			pci_write_config_dword(chip->pci, 0x18, chip->mpu_port_saved | 0x01);
+		pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, chip->legacy_saved);
+		pci_write_config_byte(chip->pci, VIA_PNP_CONTROL, chip->legacy_cfg_saved);
+	} else {
+		pci_write_config_byte(chip->pci, VIA8233_SPDIF_CTRL, chip->spdif_ctrl_saved);
+		outb(chip->capture_src_saved[0], chip->port + VIA_REG_CAPTURE_CHANNEL);
+		outb(chip->capture_src_saved[1], chip->port + VIA_REG_CAPTURE_CHANNEL + 0x10);
+		for (idx = 0; idx < 4; idx++) {
+			unsigned long port = chip->port + 0x10 * idx;
+			for (i = 0; i < 2; i++)
+				outb(chip->playback_volume[idx][i], port + VIA_REG_OFS_PLAYBACK_VOLUME_L + i);
+		}
+	}
+
+	snd_ac97_resume(chip->ac97);
+
+	for (i = 0; i < chip->num_devs; i++)
+		snd_via82xx_channel_reset(chip, &chip->devs[i]);
+
+	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
+	return 0;
+}
+#endif /* CONFIG_PM */
+
 static int snd_via82xx_free(via82xx_t *chip)
 {
 	unsigned int i;
@@ -2025,6 +2125,8 @@
 		{ .vendor = 0x1462, .device = 0x7120, .action = VIA_DXS_ENABLE }, /* MSI KT4V */
 		{ .vendor = 0x1462, .device = 0x5901, .action = VIA_DXS_NO_VRA }, /* MSI KT6 Delta-SR */
 		{ .vendor = 0x1584, .device = 0x8120, .action = VIA_DXS_ENABLE }, /* Gericom/Targa/Vobis/Uniwill laptop */
+		{ .vendor = 0x161f, .device = 0x202b, .action = VIA_DXS_NO_VRA }, /* Amira Note book */
+		{ .vendor = 0x161f, .device = 0x2032, .action = VIA_DXS_48K }, /* m680x machines */
 		{ .vendor = 0x1631, .device = 0xe004, .action = VIA_DXS_ENABLE }, /* Easy Note 3174, Packard Bell */
 		{ .vendor = 0x1695, .device = 0x3005, .action = VIA_DXS_ENABLE }, /* EPoX EP-8K9A */
 		{ .vendor = 0x1849, .device = 0x3059, .action = VIA_DXS_NO_VRA }, /* ASRock K7VM2 */
@@ -2145,6 +2247,9 @@
 		if ((err = snd_via8233_init_misc(chip, dev)) < 0)
 			goto __error;
 	}
+
+	snd_card_set_pm_callback(card, snd_via82xx_suspend, snd_via82xx_resume, chip);
+
 	/* disable interrupts */
 	for (i = 0; i < chip->num_devs; i++)
 		snd_via82xx_channel_reset(chip, &chip->devs[i]);
@@ -2178,19 +2283,12 @@
 	.id_table = snd_via82xx_ids,
 	.probe = snd_via82xx_probe,
 	.remove = __devexit_p(snd_via82xx_remove),
+	SND_PCI_PM_CALLBACKS
 };
 
 static int __init alsa_card_via82xx_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "VIA 82xx soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_via82xx_exit(void)
@@ -2200,33 +2298,3 @@
 
 module_init(alsa_card_via82xx_init)
 module_exit(alsa_card_via82xx_exit)
-
-#ifndef MODULE
-
-/* format is: snd-via82xx=enable,index,id,
-			  mpu_port,joystick,
-			  ac97_quirk,ac97_clock,dxs_support */
-
-static int __init alsa_card_via82xx_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2 &&
-#ifdef SUPPORT_JOYSTICK
-	       get_option(&str,&joystick[nr_dev]) == 2 &&
-#endif
-	       get_option(&str,&ac97_quirk[nr_dev]) == 2 &&
-	       get_option(&str,&ac97_clock[nr_dev]) == 2 &&
-	       get_option(&str,&dxs_support[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-via82xx=", alsa_card_via82xx_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c
--- a/sound/pci/vx222/vx222.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/vx222/vx222.c	Tue May 18 23:41:45 2004
@@ -23,8 +23,8 @@
 #include <linux/interrupt.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include "vx222.h"
 
@@ -43,20 +43,21 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
 static int mic[SNDRV_CARDS]; /* microphone */
 static int ibl[SNDRV_CARDS]; /* microphone */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Digigram " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Digigram " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Digigram " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(mic, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(mic, bool, boot_devs, 0444);
 MODULE_PARM_DESC(mic, "Enable Microphone.");
 MODULE_PARM_SYNTAX(mic, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(ibl, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ibl, int, boot_devs, 0444);
 MODULE_PARM_DESC(ibl, "Capture IBL size.");
 MODULE_PARM_SYNTAX(ibl, SNDRV_ENABLED);
 
@@ -272,15 +273,7 @@
 
 static int __init alsa_card_vx222_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Digigram VX222 soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_vx222_exit(void)
@@ -290,24 +283,3 @@
 
 module_init(alsa_card_vx222_init)
 module_exit(alsa_card_vx222_exit)
-
-#ifndef MODULE
-
-/* format is: snd-vx222=enable,index,id */
-
-static int __init alsa_card_vx222_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-vx222=", alsa_card_vx222_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c
--- a/sound/pci/ymfpci/ymfpci.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ymfpci/ymfpci.c	Tue May 18 23:41:45 2004
@@ -23,11 +23,11 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/time.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/ymfpci.h>
 #include <sound/mpu401.h>
 #include <sound/opl3.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
@@ -50,28 +50,29 @@
 static long joystick_port[SNDRV_CARDS];
 #endif
 static int rear_switch[SNDRV_CARDS];
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for the Yamaha DS-XG PCI soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for the Yamaha DS-XG PCI soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Yamaha DS-XG soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(mpu_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(mpu_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(mpu_port, "MPU-401 Port.");
 MODULE_PARM_SYNTAX(mpu_port, SNDRV_ENABLED);
-MODULE_PARM(fm_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(fm_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(fm_port, "FM OPL-3 Port.");
 MODULE_PARM_SYNTAX(fm_port, SNDRV_ENABLED);
 #ifdef SUPPORT_JOYSTICK
-MODULE_PARM(joystick_port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
+module_param_array(joystick_port, long, boot_devs, 0444);
 MODULE_PARM_DESC(joystick_port, "Joystick port address");
 MODULE_PARM_SYNTAX(joystick_port, SNDRV_ENABLED);
 #endif
-MODULE_PARM(rear_switch, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(rear_switch, bool, boot_devs, 0444);
 MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch");
 MODULE_PARM_SYNTAX(rear_switch, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
 
@@ -311,31 +312,14 @@
 		snd_card_free(card);
 		return err;
 	}
-	pci_set_drvdata(pci, chip);
+	pci_set_drvdata(pci, card);
 	dev++;
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int snd_card_ymfpci_suspend(struct pci_dev *pci, u32 state)
-{
-	ymfpci_t *chip = snd_magic_cast(ymfpci_t, pci_get_drvdata(pci), return -ENXIO);
-	snd_ymfpci_suspend(chip);
-	return 0;
-}
-static int snd_card_ymfpci_resume(struct pci_dev *pci)
-{
-	ymfpci_t *chip = snd_magic_cast(ymfpci_t, pci_get_drvdata(pci), return -ENXIO);
-	snd_ymfpci_resume(chip);
-	return 0;
-}
-#endif
-
 static void __devexit snd_card_ymfpci_remove(struct pci_dev *pci)
 {
-	ymfpci_t *chip = snd_magic_cast(ymfpci_t, pci_get_drvdata(pci), return);
-	if (chip)
-		snd_card_free(chip->card);
+	snd_card_free(pci_get_drvdata(pci));
 	pci_set_drvdata(pci, NULL);
 }
 
@@ -344,23 +328,12 @@
 	.id_table = snd_ymfpci_ids,
 	.probe = snd_card_ymfpci_probe,
 	.remove = __devexit_p(snd_card_ymfpci_remove),
-#ifdef CONFIG_PM
-	.suspend = snd_card_ymfpci_suspend,
-	.resume = snd_card_ymfpci_resume,
-#endif	
+	SND_PCI_PM_CALLBACKS
 };
 
 static int __init alsa_card_ymfpci_init(void)
 {
-	int err;
-
-	if ((err = pci_module_init(&driver)) < 0) {
-#ifdef MODULE
-		printk(KERN_ERR "Yamaha DS-XG PCI soundcard not found or device busy\n");
-#endif
-		return err;
-	}
-	return 0;
+	return pci_module_init(&driver);
 }
 
 static void __exit alsa_card_ymfpci_exit(void)
@@ -370,27 +343,3 @@
 
 module_init(alsa_card_ymfpci_init)
 module_exit(alsa_card_ymfpci_exit)
-
-#ifndef MODULE
-
-/* format is: snd-ymfpci=enable,index,id,
-			 fm_port,mpu_port */
-
-static int __init alsa_card_ymfpci_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&enable[nr_dev]) == 2 &&
-	       get_option(&str,&index[nr_dev]) == 2 &&
-	       get_id(&str,&id[nr_dev]) == 2 &&
-	       get_option_long(&str,&fm_port[nr_dev]) == 2 &&
-	       get_option_long(&str,&mpu_port[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-ymfpci=", alsa_card_ymfpci_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
--- a/sound/pci/ymfpci/ymfpci_main.c	Tue May 18 23:41:45 2004
+++ b/sound/pci/ymfpci/ymfpci_main.c	Tue May 18 23:41:45 2004
@@ -2157,33 +2157,30 @@
 };
 #define YDSXGR_NUM_SAVED_REGS	ARRAY_SIZE(saved_regs_index)
 
-void snd_ymfpci_suspend(ymfpci_t *chip)
+static int snd_ymfpci_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	ymfpci_t *chip = snd_magic_cast(ymfpci_t, card->pm_private_data, return -EINVAL);
 	unsigned int i;
 	
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
 	snd_pcm_suspend_all(chip->pcm);
 	snd_pcm_suspend_all(chip->pcm2);
 	snd_pcm_suspend_all(chip->pcm_spdif);
 	snd_pcm_suspend_all(chip->pcm_4ch);
+	snd_ac97_suspend(chip->ac97);
 	for (i = 0; i < YDSXGR_NUM_SAVED_REGS; i++)
 		chip->saved_regs[i] = snd_ymfpci_readl(chip, saved_regs_index[i]);
 	chip->saved_ydsxgr_mode = snd_ymfpci_readl(chip, YDSXGR_MODE);
 	snd_ymfpci_writel(chip, YDSXGR_NATIVEDACOUTVOL, 0);
 	snd_ymfpci_disable_dsp(chip);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-void snd_ymfpci_resume(ymfpci_t *chip)
+static int snd_ymfpci_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	ymfpci_t *chip = snd_magic_cast(ymfpci_t, card->pm_private_data, return -EINVAL);
 	unsigned int i;
 
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
-
 	pci_enable_device(chip->pci);
 	pci_set_master(chip->pci);
 	snd_ymfpci_aclink_reset(chip->pci);
@@ -2205,25 +2202,6 @@
 		spin_unlock_irqrestore(&chip->reg_lock, flags);
 	}
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-static int snd_ymfpci_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	ymfpci_t *chip = snd_magic_cast(ymfpci_t, card->power_state_private_data, return -ENXIO);
-
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_ymfpci_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_ymfpci_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
 #endif /* CONFIG_PM */
@@ -2304,8 +2282,7 @@
 		snd_ymfpci_free(chip);
 		return -ENOMEM;
 	}
-	card->set_power_state = snd_ymfpci_set_power_state;
-	card->power_state_private_data = chip;
+	snd_card_set_pm_callback(card, snd_ymfpci_suspend, snd_ymfpci_resume, chip);
 #endif
 
 	snd_ymfpci_proc_init(card, chip);
diff -Nru a/sound/pcmcia/Kconfig b/sound/pcmcia/Kconfig
--- a/sound/pcmcia/Kconfig	Tue May 18 23:41:45 2004
+++ b/sound/pcmcia/Kconfig	Tue May 18 23:41:45 2004
@@ -20,6 +20,7 @@
 config SND_PDAUDIOCF
 	tristate "Sound Core PDAudioCF"
 	depends on SND && PCMCIA && ISA
+	select SND_PCM
 	help
 	  Say 'Y' or 'M' to include support for Sound Core PDAudioCF soundcard.
 
diff -Nru a/sound/pcmcia/pdaudiocf/pdaudiocf.c b/sound/pcmcia/pdaudiocf/pdaudiocf.c
--- a/sound/pcmcia/pdaudiocf/pdaudiocf.c	Tue May 18 23:41:45 2004
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf.c	Tue May 18 23:41:45 2004
@@ -21,6 +21,7 @@
 #include <sound/driver.h>
 #include <sound/core.h>
 #include <linux/slab.h>
+#include <linux/moduleparam.h>
 #include <pcmcia/version.h>
 #include <pcmcia/ciscode.h>
 #include <pcmcia/cisreg.h>
@@ -44,19 +45,20 @@
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable switches */
 static unsigned int irq_mask = 0xffff;
 static int irq_list[4] = { -1 };
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(irq_mask, "i");
+module_param(irq_mask, int, 0444);
 MODULE_PARM_DESC(irq_mask, "IRQ bitmask for " CARD_NAME " soundcard.");
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq_list, "List of Available interrupts for " CARD_NAME " soundcard.");
  
 
@@ -242,10 +244,7 @@
 	if (err < 0)
 		return err;
 
-#ifdef CONFIG_PM
-	card->power_state_private_data = pdacf;
-	card->set_power_state = snd_pdacf_set_power_state;
-#endif
+	snd_card_set_pm_callback(card, snd_pdacf_suspend, snd_pdacf_resume, pdacf);
 
 	if ((err = snd_card_register(card)) < 0)
 		return err;
@@ -370,7 +369,7 @@
 		link->state |= DEV_SUSPEND;
 		if (chip) {
 			snd_printdd(KERN_DEBUG "snd_pdacf_suspend calling\n");
-			snd_pdacf_suspend(chip);
+			snd_pdacf_suspend(chip->card, 0);
 		}
 		/* Fall through... */
 	case CS_EVENT_RESET_PHYSICAL:
@@ -389,7 +388,7 @@
 			pcmcia_request_configuration(link->handle, &link->conf);
 			if (chip) {
 				snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n");
-				snd_pdacf_resume(chip);
+				snd_pdacf_resume(chip->card, 0);
 			}
 		}
 		snd_printdd(KERN_DEBUG "resume done!\n");
diff -Nru a/sound/pcmcia/pdaudiocf/pdaudiocf.h b/sound/pcmcia/pdaudiocf/pdaudiocf.h
--- a/sound/pcmcia/pdaudiocf/pdaudiocf.h	Tue May 18 23:41:45 2004
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf.h	Tue May 18 23:41:45 2004
@@ -136,12 +136,11 @@
 int snd_pdacf_ak4117_create(pdacf_t *pdacf);
 void snd_pdacf_powerdown(pdacf_t *chip);
 #ifdef CONFIG_PM
-void snd_pdacf_suspend(pdacf_t *chip);
-void snd_pdacf_resume(pdacf_t *chip);
-int snd_pdacf_set_power_state(snd_card_t *card, unsigned int power_state);
+int snd_pdacf_suspend(snd_card_t *card, unsigned int state);
+int snd_pdacf_resume(snd_card_t *card, unsigned int state);
 #endif
 int snd_pdacf_pcm_new(pdacf_t *chip);
-void pdacf_interrupt(int irq, void *dev, struct pt_regs *regs);
+irqreturn_t pdacf_interrupt(int irq, void *dev, struct pt_regs *regs);
 void pdacf_tasklet(unsigned long private_data);
 void pdacf_reinit(pdacf_t *chip, int resume);
 
diff -Nru a/sound/pcmcia/pdaudiocf/pdaudiocf_core.c b/sound/pcmcia/pdaudiocf/pdaudiocf_core.c
--- a/sound/pcmcia/pdaudiocf/pdaudiocf_core.c	Tue May 18 23:41:45 2004
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf_core.c	Tue May 18 23:41:45 2004
@@ -255,13 +255,11 @@
 
 #ifdef CONFIG_PM
 
-void snd_pdacf_suspend(pdacf_t *chip)
+int snd_pdacf_suspend(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	pdacf_t *chip = snd_magic_cast(pdacf_t, card->pm_private_data, return -EINVAL);
 	u16 val;
 	
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
 	snd_pcm_suspend_all(chip->pcm);
 	/* disable interrupts, but use direct write to preserve old register value in chip->regmap */
 	val = inw(chip->port + PDAUDIOCF_REG_IER);
@@ -270,6 +268,7 @@
 	chip->chip_status |= PDAUDIOCF_STAT_IS_SUSPENDED;	/* ignore interrupts from now */
 	snd_pdacf_powerdown(chip);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
 static inline int check_signal(pdacf_t *chip)
@@ -277,13 +276,11 @@
 	return (chip->ak4117->rcs0 & AK4117_UNLCK) == 0;
 }
 
-void snd_pdacf_resume(pdacf_t *chip)
+int snd_pdacf_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
+	pdacf_t *chip = snd_magic_cast(pdacf_t, card->pm_private_data, return -EINVAL);
 	int timeout = 40;
 
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
 	pdacf_reinit(chip, 1);
 	/* wait for AK4117's PLL */
 	while (timeout-- > 0 &&
@@ -291,26 +288,6 @@
 		mdelay(1);
 	chip->chip_status &= ~PDAUDIOCF_STAT_IS_SUSPENDED;
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
-}
-
-int snd_pdacf_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	pdacf_t *chip = snd_magic_cast(pdacf_t, card->power_state_private_data, return -ENXIO);
-
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_pdacf_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_pdacf_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
-
 #endif
diff -Nru a/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c b/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c
--- a/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c	Tue May 18 23:41:45 2004
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf_irq.c	Tue May 18 23:41:45 2004
@@ -26,15 +26,15 @@
 /*
  *
  */
-void pdacf_interrupt(int irq, void *dev, struct pt_regs *regs)
+irqreturn_t pdacf_interrupt(int irq, void *dev, struct pt_regs *regs)
 {
-	pdacf_t *chip = snd_magic_cast(pdacf_t, dev, return);
+	pdacf_t *chip = snd_magic_cast(pdacf_t, dev, return IRQ_NONE);
 	unsigned short stat;
 
 	if ((chip->chip_status & (PDAUDIOCF_STAT_IS_STALE|
 				  PDAUDIOCF_STAT_IS_CONFIGURED|
 				  PDAUDIOCF_STAT_IS_SUSPENDED)) != PDAUDIOCF_STAT_IS_CONFIGURED)
-		return;
+		return IRQ_HANDLED;	/* IRQ_NONE here? */
 
 	stat = inw(chip->port + PDAUDIOCF_REG_ISR);
 	if (stat & (PDAUDIOCF_IRQLVL|PDAUDIOCF_IRQOVR)) {
@@ -47,6 +47,7 @@
 	}
 	if (regs != NULL)
 		snd_ak4117_check_rate_and_errors(chip->ak4117, 0);
+	return IRQ_HANDLED;
 }
 
 static inline void pdacf_transfer_mono16(u16 *dst, u16 xor, unsigned int size, unsigned long rdp_port)
diff -Nru a/sound/pcmcia/vx/vxpocket.c b/sound/pcmcia/vx/vxpocket.c
--- a/sound/pcmcia/vx/vxpocket.c	Tue May 18 23:41:45 2004
+++ b/sound/pcmcia/vx/vxpocket.c	Tue May 18 23:41:45 2004
@@ -32,6 +32,7 @@
 
 #include <sound/driver.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <pcmcia/version.h>
 #include "vxpocket.h"
@@ -58,21 +59,22 @@
 static unsigned int irq_mask = 0xffff;
 static int irq_list[4] = { -1 };
 static int ibl[SNDRV_CARDS];
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(irq_mask, "i");
+module_param(irq_mask, int, 0444);
 MODULE_PARM_DESC(irq_mask, "IRQ bitmask for " CARD_NAME " soundcard.");
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, boot_devs, 0444);
 MODULE_PARM_DESC(irq_list, "List of Available interrupts for " CARD_NAME " soundcard.");
-MODULE_PARM(ibl, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(ibl, int, boot_devs, 0444);
 MODULE_PARM_DESC(ibl, "Capture IBL size for " CARD_NAME " soundcard.");
 MODULE_PARM_SYNTAX(ibl, SNDRV_ENABLED);
  
diff -Nru a/sound/ppc/keywest.c b/sound/ppc/keywest.c
--- a/sound/ppc/keywest.c	Tue May 18 23:41:45 2004
+++ b/sound/ppc/keywest.c	Tue May 18 23:41:45 2004
@@ -79,12 +79,7 @@
 
 	new_client->id = keywest_ctx->id++; /* Automatically unique */
 	keywest_ctx->client = new_client;
-
-	if ((err = keywest_ctx->init_client(keywest_ctx)) < 0) {
-		snd_printk(KERN_ERR "tumbler: cannot initialize the MCS\n");
-		goto __err;
-	}
-
+	
 	/* Tell the i2c layer a new client has arrived */
 	if (i2c_attach_client(new_client)) {
 		snd_printk(KERN_ERR "tumbler: cannot attach i2c client\n");
@@ -119,6 +114,17 @@
 		i2c_del_driver(&keywest_driver);
 		keywest_ctx = NULL;
 	}
+}
+
+int __init snd_pmac_tumbler_post_init(void)
+{
+	int err;
+	
+	if ((err = keywest_ctx->init_client(keywest_ctx)) < 0) {
+		snd_printk(KERN_ERR "tumbler: %i :cannot initialize the MCS\n", err);
+		return err;
+	}
+	return 0;
 }
 
 /* exported */
diff -Nru a/sound/ppc/pmac.c b/sound/ppc/pmac.c
--- a/sound/ppc/pmac.c	Tue May 18 23:41:45 2004
+++ b/sound/ppc/pmac.c	Tue May 18 23:41:45 2004
@@ -42,7 +42,8 @@
 #if defined(CONFIG_PM) && defined(CONFIG_PMAC_PBOOK)
 static int snd_pmac_register_sleep_notifier(pmac_t *chip);
 static int snd_pmac_unregister_sleep_notifier(pmac_t *chip);
-static int snd_pmac_set_power_state(snd_card_t *card, unsigned int power_state);
+static int snd_pmac_suspend(snd_card_t *card, unsigned int state);
+static int snd_pmac_resume(snd_card_t *card, unsigned int state);
 #endif
 
 
@@ -687,7 +688,7 @@
 static irqreturn_t
 snd_pmac_tx_intr(int irq, void *devid, struct pt_regs *regs)
 {
-	pmac_t *chip = snd_magic_cast(pmac_t, devid, return);
+	pmac_t *chip = snd_magic_cast(pmac_t, devid, return IRQ_NONE);
 	snd_pmac_pcm_update(chip, &chip->playback);
 	return IRQ_HANDLED;
 }
@@ -696,7 +697,7 @@
 static irqreturn_t
 snd_pmac_rx_intr(int irq, void *devid, struct pt_regs *regs)
 {
-	pmac_t *chip = snd_magic_cast(pmac_t, devid, return);
+	pmac_t *chip = snd_magic_cast(pmac_t, devid, return IRQ_NONE);
 	snd_pmac_pcm_update(chip, &chip->capture);
 	return IRQ_HANDLED;
 }
@@ -705,7 +706,7 @@
 static irqreturn_t
 snd_pmac_ctrl_intr(int irq, void *devid, struct pt_regs *regs)
 {
-	pmac_t *chip = snd_magic_cast(pmac_t, devid, return);
+	pmac_t *chip = snd_magic_cast(pmac_t, devid, return IRQ_NONE);
 	int ctrl = in_le32(&chip->awacs->control);
 
 	/*printk("pmac: control interrupt.. 0x%x\n", ctrl);*/
@@ -1170,9 +1171,8 @@
 
 #if defined(CONFIG_PM) && defined(CONFIG_PMAC_PBOOK)
 	/* add sleep notifier */
-	snd_pmac_register_sleep_notifier(chip);
-	card->set_power_state = snd_pmac_set_power_state;
-	card->power_state_private_data = chip;
+	if (! snd_pmac_register_sleep_notifier(chip))
+		snd_card_set_pm_callback(chip->card, snd_pmac_suspend, snd_pmac_resume, chip);
 #endif
 
 	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0)
@@ -1197,13 +1197,10 @@
  * Save state when going to sleep, restore it afterwards.
  */
 
-static void snd_pmac_suspend(pmac_t *chip)
+static int snd_pmac_suspend(snd_card_t *card, unsigned int state)
 {
+	pmac_t *chip = snd_magic_cast(pmac_t, card->pm_private_data, return -EINVAL);
 	unsigned long flags;
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D3hot)
-		return;
 
 	if (chip->suspend)
 		chip->suspend(chip);
@@ -1219,14 +1216,12 @@
 		disable_irq(chip->rx_irq);
 	snd_pmac_sound_feature(chip, 0);
 	snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
+	return 0;
 }
 
-static void snd_pmac_resume(pmac_t *chip)
+static int snd_pmac_resume(snd_card_t *card, unsigned int state)
 {
-	snd_card_t *card = chip->card;
-
-	if (card->power_state == SNDRV_CTL_POWER_D0)
-		return;
+	pmac_t *chip = snd_magic_cast(pmac_t, card->pm_private_data, return -EINVAL);
 
 	snd_pmac_sound_feature(chip, 1);
 	if (chip->resume)
@@ -1248,6 +1243,7 @@
 		enable_irq(chip->rx_irq);
 
 	snd_power_change_state(card, SNDRV_CTL_POWER_D0);
+	return 0;
 }
 
 /* the chip is stored statically by snd_pmac_register_sleep_notifier
@@ -1264,10 +1260,10 @@
 
 	switch (when) {
 	case PBOOK_SLEEP_NOW:
-		snd_pmac_suspend(chip);
+		snd_pmac_suspend(chip->card, 0);
 		break;
 	case PBOOK_WAKE:
-		snd_pmac_resume(chip);
+		snd_pmac_resume(chip->card, 0);
 		break;
 	}
 	return PBOOK_SLEEP_OK;
@@ -1280,45 +1276,18 @@
 static int __init snd_pmac_register_sleep_notifier(pmac_t *chip)
 {
 	/* should be protected here.. */
-	if (sleeping_pmac) {
-		snd_printd("sleep notifier already reigistered\n");
-		return -EBUSY;
-	}
+	snd_assert(! sleeping_pmac, return -EBUSY);
 	sleeping_pmac = chip;
 	pmu_register_sleep_notifier(&snd_pmac_sleep_notifier);
-	chip->sleep_registered = 1;
 	return 0;
 }
 						    
 static int snd_pmac_unregister_sleep_notifier(pmac_t *chip)
 {
-	if (! chip->sleep_registered)
-		return 0;
 	/* should be protected here.. */
-	if (sleeping_pmac != chip)
-		return -ENODEV;
+	snd_assert(sleeping_pmac == chip, return -ENODEV);
 	pmu_unregister_sleep_notifier(&snd_pmac_sleep_notifier);
 	sleeping_pmac = NULL;
-	return 0;
-}
-
-/* callback */
-static int snd_pmac_set_power_state(snd_card_t *card, unsigned int power_state)
-{
-	pmac_t *chip = snd_magic_cast(pmac_t, card->power_state_private_data, return -ENXIO);
-	switch (power_state) {
-	case SNDRV_CTL_POWER_D0:
-	case SNDRV_CTL_POWER_D1:
-	case SNDRV_CTL_POWER_D2:
-		snd_pmac_resume(chip);
-		break;
-	case SNDRV_CTL_POWER_D3hot:
-	case SNDRV_CTL_POWER_D3cold:
-		snd_pmac_suspend(chip);
-		break;
-	default:
-		return -EINVAL;
-	}
 	return 0;
 }
 
diff -Nru a/sound/ppc/pmac.h b/sound/ppc/pmac.h
--- a/sound/ppc/pmac.h	Tue May 18 23:41:45 2004
+++ b/sound/ppc/pmac.h	Tue May 18 23:41:45 2004
@@ -162,7 +162,6 @@
 	void (*update_automute)(pmac_t *chip, int do_notify);
 	int (*detect_headphone)(pmac_t *chip);
 #ifdef CONFIG_PMAC_PBOOK
-	unsigned int sleep_registered : 1;
 	void (*suspend)(pmac_t *chip);
 	void (*resume)(pmac_t *chip);
 #endif
@@ -180,6 +179,7 @@
 int snd_pmac_burgundy_init(pmac_t *chip);
 int snd_pmac_daca_init(pmac_t *chip);
 int snd_pmac_tumbler_init(pmac_t *chip);
+int snd_pmac_tumbler_post_init(void);
 
 /* i2c functions */
 typedef struct snd_pmac_keywest {
diff -Nru a/sound/ppc/powermac.c b/sound/ppc/powermac.c
--- a/sound/ppc/powermac.c	Tue May 18 23:41:45 2004
+++ b/sound/ppc/powermac.c	Tue May 18 23:41:45 2004
@@ -20,8 +20,8 @@
 
 #include <sound/driver.h>
 #include <linux/init.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include "pmac.h"
 #include "awacs.h"
@@ -41,17 +41,17 @@
 static int enable_beep = 1;
 #endif
 
-MODULE_PARM(index, "i");
+module_param(index, int, 0444);
 MODULE_PARM_DESC(index, "Index value for " CHIP_NAME " soundchip.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "s");
+module_param(id, charp, 0444);
 MODULE_PARM_DESC(id, "ID string for " CHIP_NAME " soundchip.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-/* MODULE_PARM(enable, "i");
+/* module_param(enable, bool, 0444);
    MODULE_PARM_DESC(enable, "Enable this soundchip.");
    MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC); */
 #ifdef PMAC_SUPPORT_PCM_BEEP
-MODULE_PARM(enable_beep, "i");
+module_param(enable_beep, bool, 0444);
 MODULE_PARM_DESC(enable_beep, "Enable beep using PCM.");
 MODULE_PARM_SYNTAX(enable_beep, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
 #endif
@@ -104,7 +104,7 @@
 		sprintf(card->shortname, "PowerMac %s", name_ext);
 		sprintf(card->longname, "%s (Dev %d) Sub-frame %d",
 			card->shortname, chip->device_id, chip->subframe);
-		if ((err = snd_pmac_tumbler_init(chip)) < 0)
+		if ( snd_pmac_tumbler_init(chip) < 0 || snd_pmac_tumbler_post_init() < 0)
 			goto __error;
 		break;
 	case PMAC_AWACS:
@@ -175,26 +175,3 @@
 
 module_init(alsa_card_pmac_init)
 module_exit(alsa_card_pmac_exit)
-
-#ifndef MODULE
-
-/* format is: snd-pmac=enable,index,id,enable_beep
- */
-
-static int __init alsa_card_pmac_setup(char *str)
-{
-	int __attribute__ ((__unused__)) enable = 1;
-
-	(void)(get_option(&str,&enable) == 2 &&
-	       get_option(&str,&index) == 2 &&
-	       get_id(&str,&id) == 2
-#ifdef PMAC_SUPPORT_PCM_BEEP
-	       && get_option(&str,&enable_beep) == 2
-#endif
-	       );
-	return 1;
-}
-
-__setup("snd-pmac=", alsa_card_pmac_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/ppc/tumbler.c b/sound/ppc/tumbler.c
--- a/sound/ppc/tumbler.c	Tue May 18 23:41:45 2004
+++ b/sound/ppc/tumbler.c	Tue May 18 23:41:45 2004
@@ -684,6 +684,8 @@
 
 static int snapper_set_capture_source(pmac_tumbler_t *mix)
 {
+	if (! mix->i2c.client)
+		return -ENODEV;
 	return snd_pmac_keywest_write_byte(&mix->i2c, TAS_REG_ACS,
 					   mix->capture_source ? 2 : 0);
 }
@@ -870,7 +872,7 @@
 /* interrupt - headphone plug changed */
 static irqreturn_t headphone_intr(int irq, void *devid, struct pt_regs *regs)
 {
-	pmac_t *chip = snd_magic_cast(pmac_t, devid, return);
+	pmac_t *chip = snd_magic_cast(pmac_t, devid, return IRQ_NONE);
 	if (chip->update_automute && chip->initialized) {
 		chip->update_automute(chip, 1);
 		return IRQ_HANDLED;
diff -Nru a/sound/sparc/amd7930.c b/sound/sparc/amd7930.c
--- a/sound/sparc/amd7930.c	Tue May 18 23:41:45 2004
+++ b/sound/sparc/amd7930.c	Tue May 18 23:41:45 2004
@@ -34,13 +34,13 @@
 #include <linux/slab.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
+#include <linux/moduleparam.h>
 
 #include <sound/driver.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/info.h>
 #include <sound/control.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include <asm/io.h>
@@ -50,14 +50,15 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Sun AMD7930 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Sun AMD7930 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Sun AMD7930 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 MODULE_AUTHOR("Thomas K. Dyas and David S. Miller");
@@ -1152,24 +1153,3 @@
 
 module_init(amd7930_init);
 module_exit(amd7930_exit);
-
-#ifndef MODULE
-
-/* format is: snd-sun-amd7930=index,id,enable */
-
-static int __init alsa_card_sun_amd7930_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&index[nr_dev]) == 2 &&
-	       get_option(&str,&id[nr_dev]) == 2 &&
-	       get_id(&str,&enable[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-sun-amd7930=", alsa_card_sun_amd7930_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c
--- a/sound/sparc/cs4231.c	Tue May 18 23:41:45 2004
+++ b/sound/sparc/cs4231.c	Tue May 18 23:41:45 2004
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
+#include <linux/moduleparam.h>
 
 #include <sound/driver.h>
 #include <sound/core.h>
@@ -22,7 +23,6 @@
 #include <sound/info.h>
 #include <sound/control.h>
 #include <sound/timer.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 #include <sound/pcm_params.h>
 
@@ -49,14 +49,15 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for Sun CS4231 soundcard.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for Sun CS4231 soundcard.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable Sun CS4231 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
 MODULE_AUTHOR("Jaroslav Kysela, Derrick J. Brashear and David S. Miller");
@@ -2251,24 +2252,3 @@
 
 module_init(cs4231_init);
 module_exit(cs4231_exit);
-
-#ifndef MODULE
-
-/* format is: snd-sun-cs4231=index,id,enable */
-
-static int __init alsa_card_sun_cs4231_setup(char *str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str,&index[nr_dev]) == 2 &&
-	       get_option(&str,&id[nr_dev]) == 2 &&
-	       get_id(&str,&enable[nr_dev]) == 2);
-	nr_dev++;
-	return 1;
-}
-
-__setup("snd-sun-cs4231=", alsa_card_sun_cs4231_setup);
-
-#endif /* ifndef MODULE */
diff -Nru a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
--- a/sound/usb/usbaudio.c	Tue May 18 23:41:45 2004
+++ b/sound/usb/usbaudio.c	Tue May 18 23:41:45 2004
@@ -45,11 +45,11 @@
 #include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/usb.h>
+#include <linux/moduleparam.h>
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
-#define SNDRV_GET_ID
 #include <sound/initval.h>
 
 #include "usbaudio.h"
@@ -69,26 +69,27 @@
 static int pid[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = -1 }; /* Product ID for this card */
 static int nrpacks = 4;		/* max. number of packets per urb */
 static int async_unlink = 1;
+static int boot_devs;
 
-MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for the USB audio adapter.");
 MODULE_PARM_SYNTAX(index, SNDRV_INDEX_DESC);
-MODULE_PARM(id, "1-" __MODULE_STRING(SNDRV_CARDS) "s");
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for the USB audio adapter.");
 MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
-MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable USB audio adapter.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-MODULE_PARM(vid, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(vid, int, boot_devs, 0444);
 MODULE_PARM_DESC(vid, "Vendor ID for the USB audio device.");
 MODULE_PARM_SYNTAX(vid, SNDRV_ENABLED ",allows:{{-1,0xffff}},base:16");
-MODULE_PARM(pid, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+module_param_array(pid, int, boot_devs, 0444);
 MODULE_PARM_DESC(pid, "Product ID for the USB audio device.");
 MODULE_PARM_SYNTAX(pid, SNDRV_ENABLED ",allows:{{-1,0xffff}},base:16");
-MODULE_PARM(nrpacks, "i");
+module_param(nrpacks, int, 0444);
 MODULE_PARM_DESC(nrpacks, "Max. number of packets per URB.");
 MODULE_PARM_SYNTAX(nrpacks, SNDRV_ENABLED ",allows:{{1,10}}");
-MODULE_PARM(async_unlink, "i");
+module_param(async_unlink, bool, 0444);
 MODULE_PARM_DESC(async_unlink, "Use async unlink mode.");
 MODULE_PARM_SYNTAX(async_unlink, SNDRV_BOOLEAN_TRUE_DESC);
 
@@ -1146,7 +1147,7 @@
 	/* if endpoint has pitch control, enable it */
 	if (fmt->attributes & EP_CS_ATTR_PITCH_CONTROL) {
 		data[0] = 1;
-		if ((err = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), SET_CUR,
+		if ((err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), SET_CUR,
 					   USB_TYPE_CLASS|USB_RECIP_ENDPOINT|USB_DIR_OUT, 
 					   PITCH_CONTROL << 8, ep, data, 1, HZ)) < 0) {
 			snd_printk(KERN_ERR "%d:%d:%d: cannot set enable PITCH\n",
@@ -1172,14 +1173,14 @@
 		data[0] = rate;
 		data[1] = rate >> 8;
 		data[2] = rate >> 16;
-		if ((err = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), SET_CUR,
+		if ((err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), SET_CUR,
 					   USB_TYPE_CLASS|USB_RECIP_ENDPOINT|USB_DIR_OUT, 
 					   SAMPLING_FREQ_CONTROL << 8, ep, data, 3, HZ)) < 0) {
 			snd_printk(KERN_ERR "%d:%d:%d: cannot set freq %d to ep 0x%x\n",
 				   dev->devnum, iface, fmt->altsetting, rate, ep);
 			return err;
 		}
-		if ((err = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), GET_CUR,
+		if ((err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), GET_CUR,
 					   USB_TYPE_CLASS|USB_RECIP_ENDPOINT|USB_DIR_IN,
 					   SAMPLING_FREQ_CONTROL << 8, ep, data, 3, HZ)) < 0) {
 			snd_printk(KERN_ERR "%d:%d:%d: cannot get freq at ep 0x%x\n",
@@ -1231,7 +1232,7 @@
 				   dev->devnum, fmt->iface, fmt->altsetting);
 			return -EIO;
 		}
-		snd_printdd(KERN_INFO "setting usb interface %d:%d\n", fmt->iface, fmt->altset_idx);
+		snd_printdd(KERN_INFO "setting usb interface %d:%d\n", fmt->iface, fmt->altsetting);
 		subs->interface = fmt->iface;
 		subs->format = fmt->altset_idx;
 	}
@@ -1884,6 +1885,32 @@
 	return NULL;
 }
 
+/*
+ * Wrapper for usb_control_msg().
+ * Allocates a temp buffer to prevent dmaing from/to the stack.
+ */
+int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
+		    __u8 requesttype, __u16 value, __u16 index, void *data,
+		    __u16 size, int timeout)
+{
+	int err;
+	void *buf = NULL;
+
+	if (size > 0) {
+		buf = kmalloc(size, GFP_KERNEL);
+		if (!buf)
+			return -ENOMEM;
+		memcpy(buf, data, size);
+	}
+	err = usb_control_msg(dev, pipe, request, requesttype,
+			      value, index, buf, size, timeout);
+	if (size > 0) {
+		memcpy(data, buf, size);
+		kfree(buf);
+	}
+	return err;
+}
+
 
 /*
  * entry point for linux usb interface
@@ -1926,7 +1953,7 @@
 		struct audioformat *fp;
 		fp = list_entry(p, struct audioformat, list);
 		snd_iprintf(buffer, "  Interface %d\n", fp->iface);
-		snd_iprintf(buffer, "    Altset %d\n", fp->altset_idx);
+		snd_iprintf(buffer, "    Altset %d\n", fp->altsetting);
 		snd_iprintf(buffer, "    Format: %s\n", snd_pcm_format_name(fp->format));
 		snd_iprintf(buffer, "    Channels: %d\n", fp->channels);
 		snd_iprintf(buffer, "    Endpoint: %d %s (%s)\n",
@@ -2640,6 +2667,7 @@
 	struct audioformat *fp;
 	struct usb_host_interface *alts;
 	int stream, err;
+	int *rate_table = NULL;
 
 	fp = kmalloc(sizeof(*fp), GFP_KERNEL);
 	if (! fp) {
@@ -2647,16 +2675,30 @@
 		return -ENOMEM;
 	}
 	memcpy(fp, quirk->data, sizeof(*fp));
+	if (fp->nr_rates > 0) {
+		rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL);
+		if (!rate_table) {
+			kfree(fp);
+			return -ENOMEM;
+		}
+		memcpy(rate_table, fp->rate_table, sizeof(int) * fp->nr_rates);
+		fp->rate_table = rate_table;
+	}
+
 	stream = (fp->endpoint & USB_DIR_IN)
 		? SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK;
 	err = add_audio_endpoint(chip, stream, fp);
 	if (err < 0) {
 		kfree(fp);
+		if (rate_table)
+			kfree(rate_table);
 		return err;
 	}
 	if (fp->iface != get_iface_desc(&iface->altsetting[0])->bInterfaceNumber ||
 	    fp->altset_idx >= iface->num_altsetting) {
 		kfree(fp);
+		if (rate_table)
+			kfree(rate_table);
 		return -EINVAL;
 	}
 	alts = &iface->altsetting[fp->altset_idx];
@@ -2700,6 +2742,83 @@
 	return 0;
 }
 
+/*
+ * Create a stream for an Edirol UA-700 interface.  The only way
+ * to detect the sample rate is by looking at wMaxPacketSize.
+ */
+static int create_ua700_quirk(snd_usb_audio_t *chip, struct usb_interface *iface)
+{
+	static const struct audioformat ua700_format = {
+		.format = SNDRV_PCM_FORMAT_S24_3LE,
+		.channels = 2,
+		.fmt_type = USB_FORMAT_TYPE_I,
+		.altsetting = 1,
+		.altset_idx = 1,
+		.rates = SNDRV_PCM_RATE_CONTINUOUS,
+	};
+	struct usb_host_interface *alts;
+	struct usb_interface_descriptor *altsd;
+	struct audioformat *fp;
+	int stream, err;
+
+	/* both PCM and MIDI interfaces have 2 altsettings */
+	if (iface->num_altsetting != 2)
+		return -ENXIO;
+	alts = &iface->altsetting[1];
+	altsd = get_iface_desc(alts);
+
+	if (altsd->bNumEndpoints == 2) {
+		static const snd_usb_midi_endpoint_info_t ep = {
+			.out_cables = 0x0003,
+			.in_cables  = 0x0003
+		};
+		static const snd_usb_audio_quirk_t quirk = {
+			.type = QUIRK_MIDI_FIXED_ENDPOINT,
+			.data = &ep
+		};
+		return snd_usb_create_midi_interface(chip, iface, &quirk);
+	}
+
+	if (altsd->bNumEndpoints != 1)
+		return -ENXIO;
+
+	fp = kmalloc(sizeof(*fp), GFP_KERNEL);
+	if (!fp)
+		return -ENOMEM;
+	memcpy(fp, &ua700_format, sizeof(*fp));
+
+	fp->iface = altsd->bInterfaceNumber;
+	fp->endpoint = get_endpoint(alts, 0)->bEndpointAddress;
+	fp->ep_attr = get_endpoint(alts, 0)->bmAttributes;
+	fp->maxpacksize = get_endpoint(alts, 0)->wMaxPacketSize;
+
+	switch (fp->maxpacksize) {
+	case 0x120:
+		fp->rate_max = fp->rate_min = 44100;
+		break;
+	case 0x138:
+		fp->rate_max = fp->rate_min = 48000;
+		break;
+	case 0x258:
+		fp->rate_max = fp->rate_min = 96000;
+		break;
+	default:
+		snd_printk(KERN_ERR "unknown sample rate\n");
+		kfree(fp);
+		return -ENXIO;
+	}
+
+	stream = (fp->endpoint & USB_DIR_IN)
+		? SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK;
+	err = add_audio_endpoint(chip, stream, fp);
+	if (err < 0) {
+		kfree(fp);
+		return err;
+	}
+	usb_set_interface(chip->dev, fp->iface, 0);
+	return 0;
+}
+
 static int snd_usb_create_quirk(snd_usb_audio_t *chip,
 				struct usb_interface *iface,
 				const snd_usb_audio_quirk_t *quirk);
@@ -2747,7 +2866,7 @@
 	    get_cfg_desc(config)->wTotalLength == EXTIGY_FIRMWARE_SIZE_NEW) {
 		snd_printdd("sending Extigy boot sequence...\n");
 		/* Send message to force it to reconnect with full interface. */
-		err = usb_control_msg(dev, usb_sndctrlpipe(dev,0),
+		err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev,0),
 				      0x10, 0x43, 0x0001, 0x000a, NULL, 0, HZ);
 		if (err < 0) snd_printdd("error sending boot message: %d\n", err);
 		err = usb_get_descriptor(dev, USB_DT_DEVICE, 0,
@@ -2787,6 +2906,8 @@
 	case QUIRK_AUDIO_STANDARD_INTERFACE:
 	case QUIRK_MIDI_STANDARD_INTERFACE:
 		return create_standard_interface_quirk(chip, iface, quirk);
+	case QUIRK_AUDIO_EDIROL_UA700:
+		return create_ua700_quirk(chip, iface);
 	default:
 		snd_printd(KERN_ERR "invalid quirk type %d\n", quirk->type);
 		return -ENXIO;
@@ -3124,26 +3245,3 @@
 
 module_init(snd_usb_audio_init);
 module_exit(snd_usb_audio_cleanup);
-
-#ifndef MODULE
-/*
- * format is snd-usb-audio=enable,index,id,vid,pid
- */
-static int __init snd_usb_audio_module_setup(char* str)
-{
-	static unsigned __initdata nr_dev = 0;
-
-	if (nr_dev >= SNDRV_CARDS)
-		return 0;
-	(void)(get_option(&str, &enable[nr_dev]) == 2 &&
-	       get_option(&str, &index[nr_dev]) == 2 &&
-	       get_id(&str, &id[nr_dev]) == 2 &&
-	       get_option(&str, &vid[nr_dev]) == 2 &&
-	       get_option(&str, &pid[nr_dev]) == 2);
-	++nr_dev;
-	return 1;
-}
-
-__setup("snd-usb-audio=", snd_usb_audio_module_setup);
-
-#endif /* !MODULE */
diff -Nru a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
--- a/sound/usb/usbaudio.h	Tue May 18 23:41:45 2004
+++ b/sound/usb/usbaudio.h	Tue May 18 23:41:45 2004
@@ -154,6 +154,7 @@
 #define QUIRK_AUDIO_FIXED_ENDPOINT	4
 #define QUIRK_AUDIO_STANDARD_INTERFACE	5
 #define QUIRK_MIDI_STANDARD_INTERFACE	6
+#define QUIRK_AUDIO_EDIROL_UA700	7
 
 typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t;
 typedef struct snd_usb_midi_endpoint_info snd_usb_midi_endpoint_info_t;
@@ -185,6 +186,8 @@
 
 /* for QUIRK_AUDIO/MIDI_STANDARD_INTERFACE, data is NULL */
 
+/* for QUIRK_AUDIO_EDIROL_UA700, data is NULL */
+
 /*
  */
 
@@ -196,6 +199,8 @@
 
 void *snd_usb_find_desc(void *descstart, int desclen, void *after, u8 dtype);
 void *snd_usb_find_csint_desc(void *descstart, int desclen, void *after, u8 dsubtype);
+
+int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 value, __u16 index, void *data, __u16 size, int timeout);
 
 int snd_usb_create_mixer(snd_usb_audio_t *chip, int ctrlif);
 
diff -Nru a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
--- a/sound/usb/usbmixer.c	Tue May 18 23:41:45 2004
+++ b/sound/usb/usbmixer.c	Tue May 18 23:41:45 2004
@@ -301,7 +301,7 @@
 	int timeout = 10;
  
 	while (timeout-- > 0) {
-		if (usb_control_msg(cval->chip->dev, usb_rcvctrlpipe(cval->chip->dev, 0),
+		if (snd_usb_ctl_msg(cval->chip->dev, usb_rcvctrlpipe(cval->chip->dev, 0),
 				    request,
 				    USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN,
 				    validx, cval->ctrlif | (cval->id << 8),
@@ -339,7 +339,7 @@
 	buf[0] = value_set & 0xff;
 	buf[1] = (value_set >> 8) & 0xff;
 	while (timeout -- > 0)
-		if (usb_control_msg(cval->chip->dev, usb_sndctrlpipe(cval->chip->dev, 0),
+		if (snd_usb_ctl_msg(cval->chip->dev, usb_sndctrlpipe(cval->chip->dev, 0),
 				    request,
 				    USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
 				    validx, cval->ctrlif | (cval->id << 8),
diff -Nru a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
--- a/sound/usb/usbquirks.h	Tue May 18 23:41:45 2004
+++ b/sound/usb/usbquirks.h	Tue May 18 23:41:45 2004
@@ -113,7 +113,7 @@
 		.product_name = "UA-100",
 		.ifnum = QUIRK_ANY_INTERFACE,
 		.type = QUIRK_COMPOSITE,
-		.data = & (const snd_usb_audio_quirk_t[]) {
+		.data = (const snd_usb_audio_quirk_t[]) {
 			{
 				.ifnum = 0,
 				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
@@ -274,7 +274,7 @@
 		.product_name = "SC-D70",
 		.ifnum = QUIRK_ANY_INTERFACE,
 		.type = QUIRK_COMPOSITE,
-		.data = & (const snd_usb_audio_quirk_t[]) {
+		.data = (const snd_usb_audio_quirk_t[]) {
 			{
 				.ifnum = 0,
 				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
@@ -338,7 +338,7 @@
 		.product_name = "UA-5",
 		.ifnum = QUIRK_ANY_INTERFACE,
 		.type = QUIRK_COMPOSITE,
-		.data = & (const snd_usb_audio_quirk_t[]) {
+		.data = (const snd_usb_audio_quirk_t[]) {
 			{
 				.ifnum = 1,
 				.type = QUIRK_AUDIO_STANDARD_INTERFACE
@@ -443,7 +443,7 @@
 		.product_name = "UA-20",
 		.ifnum = QUIRK_ANY_INTERFACE,
 		.type = QUIRK_COMPOSITE,
-		.data = & (const snd_usb_audio_quirk_t[]) {
+		.data = (const snd_usb_audio_quirk_t[]) {
 			{
 				.ifnum = 1,
 				.type = QUIRK_AUDIO_STANDARD_INTERFACE
@@ -488,16 +488,34 @@
 		}
 	}
 },
-{
+{	/*
+	 * This quirk is for the "Advanced" modes of the Edirol UA-700.
+	 * If the sample format switch is not in an advanced setting, the
+	 * UA-700 has ID 0x0582/0x002c and is standard compliant (no quirks),
+	 * but offers only 16-bit PCM and no MIDI.
+	 */
 	USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b),
 	.driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
 		.vendor_name = "EDIROL",
 		.product_name = "UA-700",
-		.ifnum = 3,
-		.type = QUIRK_MIDI_FIXED_ENDPOINT,
-		.data = & (const snd_usb_midi_endpoint_info_t) {
-			.out_cables = 0x0003,
-			.in_cables  = 0x0003
+		.ifnum = QUIRK_ANY_INTERFACE,
+		.type = QUIRK_COMPOSITE,
+		.data = (const snd_usb_audio_quirk_t[]) {
+			{
+				.ifnum = 1,
+				.type = QUIRK_AUDIO_EDIROL_UA700
+			},
+			{
+				.ifnum = 2,
+				.type = QUIRK_AUDIO_EDIROL_UA700
+			},
+			{
+				.ifnum = 3,
+				.type = QUIRK_AUDIO_EDIROL_UA700
+			},
+			{
+				.ifnum = -1
+			}
 		}
 	}
 },
@@ -580,6 +598,62 @@
 	}
 },
 {
+	USB_DEVICE(0x0582, 0x0044),
+	.driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
+		.vendor_name = "Roland",
+		.product_name = "UA-1000",
+		.ifnum = QUIRK_ANY_INTERFACE,
+		.type = QUIRK_COMPOSITE,
+		.data = (const snd_usb_audio_quirk_t[]) {
+			{
+				.ifnum = 1,
+				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
+				.data = & (const struct audioformat) {
+					.format = SNDRV_PCM_FORMAT_S24,
+					.channels = 12,
+					.iface = 1,
+					.altsetting = 1,
+					.altset_idx = 1,
+					.attributes = 0,
+					.endpoint = 0x81,
+					.ep_attr = 0x01,
+					.rates = SNDRV_PCM_RATE_CONTINUOUS,
+					.rate_min = 48000,
+					.rate_max = 48000,
+				}
+			},
+			{
+				.ifnum = 2,
+				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
+				.data = & (const struct audioformat) {
+					.format = SNDRV_PCM_FORMAT_S24,
+					.channels = 10,
+					.iface = 2,
+					.altsetting = 1,
+					.altset_idx = 1,
+					.attributes = 0,
+					.endpoint = 0x02,
+					.ep_attr = 0x01,
+					.rates = SNDRV_PCM_RATE_CONTINUOUS,
+					.rate_min = 48000,
+					.rate_max = 48000,
+				}
+			},
+			{
+				.ifnum = 3,
+				.type = QUIRK_MIDI_FIXED_ENDPOINT,
+				.data = & (const snd_usb_midi_endpoint_info_t) {
+					.out_cables = 0x0003,
+					.in_cables  = 0x0003
+				}
+			},
+			{
+				.ifnum = -1
+			}
+		}
+	}
+},
+{
 	USB_DEVICE(0x0582, 0x0048),
 	.driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
 		.vendor_name = "EDIROL",
@@ -629,7 +703,7 @@
 		.product_name = "UA-3FX",
 		.ifnum = QUIRK_ANY_INTERFACE,
 		.type = QUIRK_COMPOSITE,
-		.data = & (const snd_usb_audio_quirk_t[]) {
+		.data = (const snd_usb_audio_quirk_t[]) {
 			{
 				.ifnum = 1,
 				.type = QUIRK_AUDIO_STANDARD_INTERFACE