http://linux-sound.bkbits.net/linux-sound perex@suse.cz|ChangeSet|20041129101150|03357 perex # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/12/29 17:50:30-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa # # sound/pci/intel8x0.c # 2004/12/29 17:50:25-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/12/27 00:15:03-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-alsa # # sound/pci/intel8x0.c # 2004/12/27 00:14:58-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/12/16 12:26:24-08:00 akpm@bix.(none) # Merge http://linux-sound.bkbits.net/linux-sound # into bix.(none):/usr/src/bk-alsa # # sound/pci/ymfpci/ymfpci_main.c # 2004/12/16 12:26:18-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/vx222/vx222.c # 2004/12/16 12:26:18-08:00 akpm@bix.(none) +0 -4 # Auto merged # # sound/pci/trident/trident_main.c # 2004/12/16 12:26:18-08:00 akpm@bix.(none) +0 -7 # Auto merged # # sound/pci/via82xx.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/sonicvibes.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/rme9652/rme9652.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -1 # Auto merged # # sound/pci/rme9652/hdsp.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -1 # Auto merged # # sound/pci/rme96.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -1 # Auto merged # # sound/pci/rme32.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -1 # Auto merged # # sound/pci/nm256/nm256.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -8 # Auto merged # # sound/pci/mixart/mixart.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/maestro3.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -9 # Auto merged # # sound/pci/korg1212/korg1212.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -20 # Auto merged # # sound/pci/intel8x0m.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/intel8x0.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -8 # Auto merged # # sound/pci/ice1712/ice1724.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/ice1712/ice1712.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/emu10k1/emu10k1_main.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/cs46xx/cs46xx_lib.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/ali5451/ali5451.c # 2004/12/16 12:26:17-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/fm801.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/es1968.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -8 # Auto merged # # sound/pci/es1938.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -7 # Auto merged # # sound/pci/ens1370.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/cs4281.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -7 # Auto merged # # sound/pci/cmipci.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/bt87x.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -5 # Auto merged # # sound/pci/azt3328.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/atiixp_modem.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/atiixp.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/pci/als4000.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -6 # Auto merged # # sound/core/pcm_native.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -1 # Auto merged # # sound/core/init.c # 2004/12/16 12:26:16-08:00 akpm@bix.(none) +0 -4 # Auto merged # # ChangeSet # 2004/11/29 11:11:50+01:00 perex@suse.cz # Merge # # sound/pci/cs46xx/dsp_spos.c # 2004/11/29 11:11:24+01:00 perex@suse.cz +0 -2 # SCCS merged # # sound/pci/cmipci.c # 2004/11/29 11:04:01+01:00 perex@suse.cz +0 -0 # Auto merged # # ChangeSet # 2004/11/29 10:47:59+01: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/sparc/cs4231.c # 2004/11/29 10:47:35+01:00 perex@suse.cz +0 -0 # Auto merged # # ChangeSet # 2004/11/29 10:31:20+01:00 perex@suse.cz # [ALSA] alternate CS4235 ident string # # CS4236+ driver # The patch adds an alternate CS4235 ident string # # Signed-off-by: Pang Lih Wuei # Signed-off-by: Takashi Iwai # # sound/isa/cs423x/cs4236.c # 2004/11/26 04:31:19+01:00 perex@suse.cz +2 -0 # [ALSA] alternate CS4235 ident string # # D:2004/11/26 11:31:19 # C:CS4236+ driver # F:isa/cs423x/cs4236.c:1.46->1.47 # L:The patch adds an alternate CS4235 ident string # Signed-off-by: Pang Lih Wuei # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 10:30:14+01:00 perex@suse.cz # [ALSA] alternate ALS0200 ident string # # ALS100 driver # The patch adds an alternate ALS0200 ident string # # Signed-off-by: Pang Lih Wuei # Signed-off-by: Takashi Iwai # # sound/isa/als100.c # 2004/11/26 04:30:48+01:00 perex@suse.cz +2 -0 # [ALSA] alternate ALS0200 ident string # # D:2004/11/26 11:30:48 # C:ALS100 driver # F:isa/als100.c:1.28->1.29 # L:The patch adds an alternate ALS0200 ident string # Signed-off-by: Pang Lih Wuei # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 10:29:08+01:00 perex@suse.cz # [ALSA] Disable 'IEC958 Input Monitor' switch for ALC codecs # # AC97 Codec Core # 'IEC958 Input Monitor' switch for ALC codecs produces only the # cracky noises, and KDE seems to turn this on as default in the # initialization. # So, better to remove this switch. # # Signed-off-by: Takashi Iwai # # sound/pci/ac97/ac97_patch.c # 2004/11/25 08:47:05+01:00 perex@suse.cz +4 -2 # [ALSA] Disable 'IEC958 Input Monitor' switch for ALC codecs # # D:2004/11/25 15:47:05 # C:AC97 Codec Core # F:pci/ac97/ac97_patch.c:1.60->1.61 # L:'IEC958 Input Monitor' switch for ALC codecs produces only the # L:cracky noises, and KDE seems to turn this on as default in the # L:initialization. # L:So, better to remove this switch. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 10:27:54+01:00 perex@suse.cz # [ALSA] ALSA ISA drivers: misc cleanups # # AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # Opti9xx drivers,SB16/AWE driver,SB8 driver # The patch below makes cleanups under sound/isa/ including: # - make needlessly global code static # - ad1816a/ad1816a_lib.c: much code was unused starting with the # global function snd_ad1816a_timer # - removed EXPORT_SYMBOL's: # - cs423x/cs4231_lib.c: snd_cs4231_outm # - es1688/es1688_lib.c: snd_es1688_mixer_read # # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/wavefront/wavefront_synth.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +49 -49 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/wavefront/wavefront.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +3 -3 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/sb/sb_common.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +1 -1 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/sb/sb8_main.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +2 -2 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/sb/sb16_main.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +5 -5 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/opti9xx/opti92x-ad1848.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +6 -6 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/opl3sa2.c # 2004/11/25 08:17:52+01:00 perex@suse.cz +5 -5 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/gus/gus_dma.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +6 -6 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/es18xx.c # 2004/11/25 08:17:52+01:00 perex@suse.cz +3 -3 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/es1688/es1688_lib.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +2 -3 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/cs423x/cs4231_lib.c # 2004/11/25 08:17:53+01:00 perex@suse.cz +5 -6 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/ad1848/ad1848_lib.c # 2004/11/25 08:17:52+01:00 perex@suse.cz +2 -2 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/isa/ad1816a/ad1816a_lib.c # 2004/11/25 08:17:52+01:00 perex@suse.cz +7 -3 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/snd_wavefront.h # 2004/11/25 08:17:52+01:00 perex@suse.cz +0 -1 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/sb.h # 2004/11/25 08:17:52+01:00 perex@suse.cz +0 -4 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/gus.h # 2004/11/25 08:17:52+01:00 perex@suse.cz +0 -4 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/es1688.h # 2004/11/25 08:17:52+01:00 perex@suse.cz +0 -1 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/cs4231.h # 2004/11/25 08:17:52+01:00 perex@suse.cz +0 -5 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/ad1848.h # 2004/11/25 08:17:52+01:00 perex@suse.cz +0 -4 # [ALSA] ALSA ISA drivers: misc cleanups # # D:2004/11/25 15:17:52 # C:AD1848 driver,CS4231 driver,ES1688 driver,GUS Library,SB drivers # C:Wavefront drivers,ES18xx driver,OPL3SA2 driver,AD1816A driver # C:Opti9xx drivers,SB16/AWE driver,SB8 driver # F:include/ad1848.h:1.11->1.12 # F:include/cs4231.h:1.8->1.9 # F:include/es1688.h:1.7->1.8 # F:include/gus.h:1.10->1.11 # F:include/sb.h:1.13->1.14 # F:include/snd_wavefront.h:1.5->1.6 # F:isa/es18xx.c:1.50->1.51 # F:isa/opl3sa2.c:1.39->1.40 # F:isa/ad1816a/ad1816a_lib.c:1.24->1.25 # F:isa/ad1848/ad1848_lib.c:1.37->1.38 # F:isa/cs423x/cs4231_lib.c:1.44->1.45 # F:isa/es1688/es1688_lib.c:1.28->1.29 # F:isa/gus/gus_dma.c:1.7->1.8 # F:isa/opti9xx/opti92x-ad1848.c:1.48->1.49 # F:isa/sb/sb16_main.c:1.21->1.22 # F:isa/sb/sb8_main.c:1.17->1.18 # F:isa/sb/sb_common.c:1.21->1.22 # F:isa/wavefront/wavefront.c:1.31->1.32 # F:isa/wavefront/wavefront_synth.c:1.21->1.22 # L:The patch below makes cleanups under sound/isa/ including: # L:- make needlessly global code static # L:- ad1816a/ad1816a_lib.c: much code was unused starting with the # L: global function snd_ad1816a_timer # L:- removed EXPORT_SYMBOL's: # L: - cs423x/cs4231_lib.c: snd_cs4231_outm # L: - es1688/es1688_lib.c: snd_es1688_mixer_read # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 10:26:43+01:00 perex@suse.cz # [ALSA] misc clean up # # Intel8x0 driver # Clean up the module init code after removal of midi/joystick support. # # Signed-off-by: Takashi Iwai # # sound/pci/intel8x0.c # 2004/11/25 04:43:23+01:00 perex@suse.cz +1 -5 # [ALSA] misc clean up # # D:2004/11/25 11:43:23 # C:Intel8x0 driver # F:pci/intel8x0.c:1.179->1.180 # L:Clean up the module init code after removal of midi/joystick support. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 10:09:26+01:00 perex@suse.cz # [ALSA] fix weird placement of static keyword in sound/core/pcm_memory.c # # PCM Midlevel # This patch moves the 'static' keyword to the beginning of the declaration # to eliminate the following warning when building with gcc -W # sound/core/pcm_memory.c:40: warning: 'static' is not at beginning of declaration # # This has no actal imact on the code, but it's one less warning to sift # through when looking for potential trouble-code with -W # I have a hard time thinking of a reason to not apply this trivial patch :) # # Signed-off-by: Jesper Juhl # Signed-off-by: Takashi Iwai # # sound/core/pcm_memory.c # 2004/11/25 04:42:15+01:00 perex@suse.cz +1 -1 # [ALSA] fix weird placement of static keyword in sound/core/pcm_memory.c # # PCM Midlevel # This patch moves the 'static' keyword to the beginning of the declaration # to eliminate the following warning when building with gcc -W # sound/core/pcm_memory.c:40: warning: 'static' is not at beginning of declaration # # This has no actal imact on the code, but it's one less warning to sift # through when looking for potential trouble-code with -W # I have a hard time thinking of a reason to not apply this trivial patch :) # # Signed-off-by: Jesper Juhl # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:25:32+01:00 perex@suse.cz # [ALSA] Fix the detection of Audigy2 ZS # # EMU10K1/EMU10K2 driver # Fix the detection of the older model of Audigy2 ZS. # # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emu10k1_main.c # 2004/11/23 09:39:46+01:00 perex@suse.cz +1 -1 # [ALSA] Fix the detection of Audigy2 ZS # # D:2004/11/23 16:39:46 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emu10k1_main.c:1.40->1.41 # L:Fix the detection of the older model of Audigy2 ZS. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:24:27+01:00 perex@suse.cz # [ALSA] [trivial] Fix compile warnings # # ALSA Core,CS46xx driver,MIXART driver # Fix trivial compile warnings. # # Signed-off-by: Takashi Iwai # # sound/pci/mixart/mixart_core.c # 2004/11/23 09:06:33+01:00 perex@suse.cz +4 -1 # [ALSA] [trivial] Fix compile warnings # # D:2004/11/23 16:06:17 # C:ALSA Core,CS46xx driver,MIXART driver # F:core/memory.c:1.32->1.33 # F:pci/cs46xx/dsp_spos.c:1.28->1.29 # F:pci/mixart/mixart_core.c:1.8->1.9 # L:Fix trivial compile warnings. # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/dsp_spos.c # 2004/11/23 09:06:17+01:00 perex@suse.cz +2 -2 # [ALSA] [trivial] Fix compile warnings # # D:2004/11/23 16:06:17 # C:ALSA Core,CS46xx driver,MIXART driver # F:core/memory.c:1.32->1.33 # F:pci/cs46xx/dsp_spos.c:1.28->1.29 # F:pci/mixart/mixart_core.c:1.8->1.9 # L:Fix trivial compile warnings. # Signed-off-by: Takashi Iwai # # sound/core/memory.c # 2004/11/23 09:06:17+01:00 perex@suse.cz +1 -1 # [ALSA] [trivial] Fix compile warnings # # D:2004/11/23 16:06:17 # C:ALSA Core,CS46xx driver,MIXART driver # F:core/memory.c:1.32->1.33 # F:pci/cs46xx/dsp_spos.c:1.28->1.29 # F:pci/mixart/mixart_core.c:1.8->1.9 # L:Fix trivial compile warnings. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:23:22+01:00 perex@suse.cz # [ALSA] Fixed problem with changing size of etram # # EMU10K1/EMU10K2 driver # It doesn't work to double the etram size, because of a bad comparison # statement. # # Signed-off-by: Mikael Magnusson # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emufx.c # 2004/11/23 08:11:54+01:00 perex@suse.cz +1 -1 # [ALSA] Fixed problem with changing size of etram # # D:2004/11/23 15:11:54 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emufx.c:1.65->1.66 # L:It doesn't work to double the etram size, because of a bad comparison # L:statement. # Signed-off-by: Mikael Magnusson # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:22:20+01:00 perex@suse.cz # [ALSA] add register dump to proc # # EMU10K1/EMU10K2 driver # The register dump proc files are added. # Enabled only when CONFIG_SND_DEBUG=y. # # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emuproc.c # 2004/11/23 08:06:17+01:00 perex@suse.cz +173 -0 # [ALSA] add register dump to proc # # D:2004/11/23 15:06:17 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emuproc.c:1.22->1.23 # L:The register dump proc files are added. # L:Enabled only when CONFIG_SND_DEBUG=y. # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:21:15+01:00 perex@suse.cz # [ALSA] check CONFIG_COMPAT for snd-ioctl32 # # ALSA Core # check CONFIG_COMPAT for selection of snd-ioctl32 module. # # Signed-off-by: Takashi Iwai # # sound/core/Kconfig # 2004/11/23 08:04:38+01:00 perex@suse.cz +1 -1 # [ALSA] check CONFIG_COMPAT for snd-ioctl32 # # D:2004/11/23 15:04:38 # C:ALSA Core # F:core/Kconfig:1.6->1.7 # L:check CONFIG_COMPAT for selection of snd-ioctl32 module. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:20:09+01:00 perex@suse.cz # [ALSA] make some code static # # Sound Core PDAudioCF driver # The patch below makes some needlessly global code static. # # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pcmcia/pdaudiocf/pdaudiocf_core.c # 2004/11/22 11:59:07+01:00 perex@suse.cz +2 -2 # [ALSA] make some code static # # D:2004/11/22 18:59:07 # C:Sound Core PDAudioCF driver # F:pcmcia/pdaudiocf/pdaudiocf.h:1.6->1.7 # F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.4->1.5 # L:The patch below makes some needlessly global code static. # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pcmcia/pdaudiocf/pdaudiocf.h # 2004/11/22 11:59:07+01:00 perex@suse.cz +0 -2 # [ALSA] make some code static # # D:2004/11/22 18:59:07 # C:Sound Core PDAudioCF driver # F:pcmcia/pdaudiocf/pdaudiocf.h:1.6->1.7 # F:pcmcia/pdaudiocf/pdaudiocf_core.c:1.4->1.5 # L:The patch below makes some needlessly global code static. # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:19:06+01:00 perex@suse.cz # [ALSA] Support for Audigy2 Value SB0400 # # EMU10K1/EMU10K2 driver # This adds support for the SB0400 version of the Audigy2 Value, that uses # the new CA0108 chip. # # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emufx.c # 2004/11/22 11:45:50+01:00 perex@suse.cz +4 -0 # [ALSA] Support for Audigy2 Value SB0400 # # D:2004/11/22 18:45:49 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emu10k1.c:1.29->1.30 # F:pci/emu10k1/emu10k1_main.c:1.39->1.40 # F:pci/emu10k1/emufx.c:1.64->1.65 # L:This adds support for the SB0400 version of the Audigy2 Value, that uses # L:the new CA0108 chip. # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emu10k1_main.c # 2004/11/22 11:45:49+01:00 perex@suse.cz +28 -1 # [ALSA] Support for Audigy2 Value SB0400 # # D:2004/11/22 18:45:49 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emu10k1.c:1.29->1.30 # F:pci/emu10k1/emu10k1_main.c:1.39->1.40 # F:pci/emu10k1/emufx.c:1.64->1.65 # L:This adds support for the SB0400 version of the Audigy2 Value, that uses # L:the new CA0108 chip. # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emu10k1.c # 2004/11/22 11:45:49+01:00 perex@suse.cz +24 -2 # [ALSA] Support for Audigy2 Value SB0400 # # D:2004/11/22 18:45:49 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emu10k1.c:1.29->1.30 # F:pci/emu10k1/emu10k1_main.c:1.39->1.40 # F:pci/emu10k1/emufx.c:1.64->1.65 # L:This adds support for the SB0400 version of the Audigy2 Value, that uses # L:the new CA0108 chip. # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:18:01+01:00 perex@suse.cz # [ALSA] Fixes the 'It disables the right channel' bug # # EMU10K1/EMU10K2 driver # # # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # include/sound/emu10k1.h # 2004/11/22 11:42:01+01:00 perex@suse.cz +2 -2 # [ALSA] Fixes the 'It disables the right channel' bug # # D:2004/11/22 18:42:01 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.52->1.53 # L: # Signed-off-by: James Courtier-Dutton # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:16:54+01:00 perex@suse.cz # [ALSA] ALSA PCI drivers: misc cleanups # # EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # RME HDSP driver,RME9652 driver # The patch below does the following cleanups under sound/pci/ : # - make some needlessly global code static # - remove the following unused EXPORT_SYMBOL's: # - trident/trident_main.c: snd_trident_clear_voices # - trident/trident_main.c: snd_trident_synth_bzero # - remove the following unused global functions: # - azt3328.c: snd_azf3328_mixer_read # - emu10k1/io.c: snd_emu10k1_sum_vol_attn # - trident/trident_main.c: snd_trident_detach_synthesizer # - trident/trident_memory.c: snd_trident_synth_bzero # # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/ymfpci/ymfpci_main.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +2 -2 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/trident/trident_synth.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +1 -1 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/trident/trident_memory.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +0 -23 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/trident/trident_main.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +14 -24 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/sonicvibes.c # 2004/11/22 11:36:04+01:00 perex@suse.cz +2 -2 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/rme9652/rme9652.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +1 -1 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/rme9652/hdsp.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +4 -4 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/korg1212/korg1212.c # 2004/11/22 11:36:06+01:00 perex@suse.cz +2 -1 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/io.c # 2004/11/22 11:36:05+01:00 perex@suse.cz +0 -25 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emufx.c # 2004/11/22 11:36:05+01:00 perex@suse.cz +1 -1 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emu10k1_synth.c # 2004/11/22 11:36:05+01:00 perex@suse.cz +2 -2 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/imgs/cwcdma.h # 2004/11/22 11:36:05+01:00 perex@suse.cz +4 -4 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/dsp_spos_scb_lib.c # 2004/11/22 11:36:05+01:00 perex@suse.cz +8 -4 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/dsp_spos.c # 2004/11/22 11:36:05+01:00 perex@suse.cz +5 -3 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/cs46xx_lib.h # 2004/11/22 11:36:05+01:00 perex@suse.cz +0 -40 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/cs46xx_lib.c # 2004/11/22 11:36:04+01:00 perex@suse.cz +24 -10 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/azt3328.c # 2004/11/22 11:36:04+01:00 perex@suse.cz +5 -24 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # sound/pci/ac97/ac97_codec.c # 2004/11/22 11:36:04+01:00 perex@suse.cz +1 -1 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/ymfpci.h # 2004/11/22 11:36:04+01:00 perex@suse.cz +0 -3 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/trident.h # 2004/11/22 11:36:04+01:00 perex@suse.cz +0 -4 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # include/sound/emu10k1.h # 2004/11/22 11:36:04+01:00 perex@suse.cz +0 -2 # [ALSA] ALSA PCI drivers: misc cleanups # # D:2004/11/22 18:36:04 # C:EMU10K1/EMU10K2 driver,Trident driver,YMFPCI driver,AZT3328 driver # C:SonicVibes driver,AC97 Codec Core,CS46xx driver,KORG1212 driver # C:RME HDSP driver,RME9652 driver # F:include/emu10k1.h:1.51->1.52 # F:include/trident.h:1.20->1.21 # F:include/ymfpci.h:1.17->1.18 # F:pci/azt3328.c:1.21->1.22 # F:pci/sonicvibes.c:1.43->1.44 # F:pci/ac97/ac97_codec.c:1.153->1.154 # F:pci/cs46xx/cs46xx_lib.c:1.88->1.89 # F:pci/cs46xx/cs46xx_lib.h:1.13->1.14 # F:pci/cs46xx/dsp_spos.c:1.27->1.28 # F:pci/cs46xx/dsp_spos_scb_lib.c:1.25->1.26 # F:pci/cs46xx/imgs/cwcdma.h:1.1->1.2 # F:pci/emu10k1/emu10k1_synth.c:1.9->1.10 # F:pci/emu10k1/emufx.c:1.63->1.64 # F:pci/emu10k1/io.c:1.7->1.8 # F:pci/korg1212/korg1212.c:1.51->1.52 # F:pci/rme9652/hdsp.c:1.75->1.76 # F:pci/rme9652/rme9652.c:1.55->1.56 # F:pci/trident/trident_main.c:1.65->1.66 # F:pci/trident/trident_memory.c:1.17->1.18 # F:pci/trident/trident_synth.c:1.16->1.17 # F:pci/ymfpci/ymfpci_main.c:1.59->1.60 # L:The patch below does the following cleanups under sound/pci/ : # L:- make some needlessly global code static # L:- remove the following unused EXPORT_SYMBOL's: # L: - trident/trident_main.c: snd_trident_clear_voices # L: - trident/trident_main.c: snd_trident_synth_bzero # L:- remove the following unused global functions: # L: - azt3328.c: snd_azf3328_mixer_read # L: - emu10k1/io.c: snd_emu10k1_sum_vol_attn # L: - trident/trident_main.c: snd_trident_detach_synthesizer # L: - trident/trident_memory.c: snd_trident_synth_bzero # Signed-off-by: Adrian Bunk # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:15:45+01:00 perex@suse.cz # [ALSA] fix display of send routing in /proc # # EMU10K1/EMU10K2 driver # The emu10k1's send routing is a per channel setting. The emu10k1 has 4 # sends per channel, the Audigy 8. Currently we only display the first 4 # sends for the first channel. This patch updates the /proc file to # display the send routing for all 64 channels, and to display the last 4 # sends if present. # # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emuproc.c # 2004/11/22 06:18:36+01:00 perex@suse.cz +30 -17 # [ALSA] fix display of send routing in /proc # # D:2004/11/22 13:18:36 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emuproc.c:1.21->1.22 # L:The emu10k1's send routing is a per channel setting. The emu10k1 has 4 # L:sends per channel, the Audigy 8. Currently we only display the first 4 # L:sends for the first channel. This patch updates the /proc file to # L:display the send routing for all 64 channels, and to display the last 4 # L:sends if present. # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:14:38+01:00 perex@suse.cz # [ALSA] AD18xx/19xx resume fix # # AC97 Codec Core # Added resume callback so that the codec-specific resume code can be # called properly. Moved AD-specific initialization code into it. # # Signed-off-by: Takashi Iwai # # sound/pci/ac97/ac97_patch.c # 2004/11/19 06:51:32+01:00 perex@suse.cz +80 -6 # [ALSA] AD18xx/19xx resume fix # # D:2004/11/19 13:51:32 # C:AC97 Codec Core # F:include/ac97_codec.h:1.56->1.57 # F:pci/ac97/ac97_codec.c:1.152->1.153 # F:pci/ac97/ac97_local.h:1.8->1.9 # F:pci/ac97/ac97_patch.c:1.59->1.60 # L:Added resume callback so that the codec-specific resume code can be # L:called properly. Moved AD-specific initialization code into it. # Signed-off-by: Takashi Iwai # # sound/pci/ac97/ac97_local.h # 2004/11/19 06:51:32+01:00 perex@suse.cz +2 -0 # [ALSA] AD18xx/19xx resume fix # # D:2004/11/19 13:51:32 # C:AC97 Codec Core # F:include/ac97_codec.h:1.56->1.57 # F:pci/ac97/ac97_codec.c:1.152->1.153 # F:pci/ac97/ac97_local.h:1.8->1.9 # F:pci/ac97/ac97_patch.c:1.59->1.60 # L:Added resume callback so that the codec-specific resume code can be # L:called properly. Moved AD-specific initialization code into it. # Signed-off-by: Takashi Iwai # # sound/pci/ac97/ac97_codec.c # 2004/11/19 06:51:32+01:00 perex@suse.cz +46 -61 # [ALSA] AD18xx/19xx resume fix # # D:2004/11/19 13:51:32 # C:AC97 Codec Core # F:include/ac97_codec.h:1.56->1.57 # F:pci/ac97/ac97_codec.c:1.152->1.153 # F:pci/ac97/ac97_local.h:1.8->1.9 # F:pci/ac97/ac97_patch.c:1.59->1.60 # L:Added resume callback so that the codec-specific resume code can be # L:called properly. Moved AD-specific initialization code into it. # Signed-off-by: Takashi Iwai # # include/sound/ac97_codec.h # 2004/11/19 06:51:32+01:00 perex@suse.cz +1 -0 # [ALSA] AD18xx/19xx resume fix # # D:2004/11/19 13:51:32 # C:AC97 Codec Core # F:include/ac97_codec.h:1.56->1.57 # F:pci/ac97/ac97_codec.c:1.152->1.153 # F:pci/ac97/ac97_local.h:1.8->1.9 # F:pci/ac97/ac97_patch.c:1.59->1.60 # L:Added resume callback so that the codec-specific resume code can be # L:called properly. Moved AD-specific initialization code into it. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:13:36+01:00 perex@suse.cz # [ALSA] sort DXS whitelist # # VIA82xx driver # DXS whitelist entries are sorted. # # Signed-off-by: Takashi Iwai # # sound/pci/via82xx.c # 2004/11/18 12:46:26+01:00 perex@suse.cz +4 -4 # [ALSA] sort DXS whitelist # # D:2004/11/18 19:46:26 # C:VIA82xx driver # F:pci/via82xx.c:1.129->1.130 # L:DXS whitelist entries are sorted. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:12:32+01:00 perex@suse.cz # [ALSA] via82xx: Enable DXS on ABIT KV8 Pro # # VIA82xx driver # From Marko Kreen : # # Enable DXS for via audio chip on ABIT KV8 Pro. # # Works for me. # # Signed-off-by: Takashi Iwai # # sound/pci/via82xx.c # 2004/11/18 12:43:16+01:00 perex@suse.cz +1 -0 # [ALSA] via82xx: Enable DXS on ABIT KV8 Pro # # D:2004/11/18 19:43:16 # C:VIA82xx driver # F:pci/via82xx.c:1.128->1.129 # L:From Marko Kreen : # L: # L:Enable DXS for via audio chip on ABIT KV8 Pro. # L: # L:Works for me. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:11:28+01:00 perex@suse.cz # [ALSA] Addition of pci_disable_device() and cleanup # # Documentation # Added pci_disable_device() in the removal and error paths. # Replaced with C-style comments in many places. # # Signed-off-by: Takashi Iwai # # Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl # 2004/11/18 09:34:15+01:00 perex@suse.cz +88 -66 # [ALSA] Addition of pci_disable_device() and cleanup # # D:2004/11/18 16:34:15 # C:Documentation # F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.43->1.44 # L:Added pci_disable_device() in the removal and error paths. # L:Replaced with C-style comments in many places. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:10:14+01:00 perex@suse.cz # [ALSA] Add pci_disable_device() to removal and error paths # # ALS4000 driver,ATIIXP driver,ATIIXP-modem 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,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 # pci_disable_device() is called properly in the removal and error # paths. Also, the pci_set_master() is added to the resume callbacks if # missing (just to be sure). # # Signed-off-by: Takashi Iwai # # sound/pci/ymfpci/ymfpci_main.c # 2004/11/18 07:52:54+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/vx222/vx222.c # 2004/11/18 07:52:53+01:00 perex@suse.cz +4 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/via82xx.c # 2004/11/18 07:52:51+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/trident/trident_main.c # 2004/11/18 07:52:53+01:00 perex@suse.cz +7 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/sonicvibes.c # 2004/11/18 07:52:51+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/rme9652/rme9652.c # 2004/11/18 07:52:53+01:00 perex@suse.cz +1 -0 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/rme9652/hdsp.c # 2004/11/18 07:52:53+01:00 perex@suse.cz +1 -0 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/rme96.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +1 -0 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/rme32.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +1 -0 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/nm256/nm256.c # 2004/11/18 07:52:52+01:00 perex@suse.cz +8 -4 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/mixart/mixart.c # 2004/11/18 07:52:52+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/maestro3.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +9 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/korg1212/korg1212.c # 2004/11/18 07:52:52+01:00 perex@suse.cz +20 -4 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/intel8x0m.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/intel8x0.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/ice1712/ice1724.c # 2004/11/18 07:52:52+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/ice1712/ice1712.c # 2004/11/18 07:52:52+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/fm801.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/es1968.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +8 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/es1938.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +7 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/ens1370.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emu10k1_main.c # 2004/11/18 07:52:51+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/cs46xx/cs46xx_lib.c # 2004/11/18 07:52:51+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/cs4281.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +7 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/cmipci.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/bt87x.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +5 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/azt3328.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/atiixp_modem.c # 2004/11/18 07:52:50+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/atiixp.c # 2004/11/18 07:52:49+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/als4000.c # 2004/11/18 07:52:49+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # sound/pci/ali5451/ali5451.c # 2004/11/18 07:52:51+01:00 perex@suse.cz +6 -1 # [ALSA] Add pci_disable_device() to removal and error paths # # D:2004/11/18 14:52:49 # C:ALS4000 driver,ATIIXP driver,ATIIXP-modem driver,AZT3328 driver # C:BT87x driver,CMIPCI driver,CS4281 driver,ENS1370/1+ driver # C:ES1938 driver,ES1968 driver,FM801 driver,Intel8x0 driver # C:Intel8x0-modem driver,Maestro3 driver,RME32 driver,RME96 driver # C:SonicVibes driver,VIA82xx driver,ALI5451 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 # F:pci/als4000.c:1.38->1.39 # F:pci/atiixp.c:1.25->1.26 # F:pci/atiixp_modem.c:1.9->1.10 # F:pci/azt3328.c:1.20->1.21 # F:pci/bt87x.c:1.17->1.18 # F:pci/cmipci.c:1.74->1.75 # F:pci/cs4281.c:1.66->1.67 # F:pci/ens1370.c:1.70->1.71 # F:pci/es1938.c:1.42->1.43 # F:pci/es1968.c:1.78->1.79 # F:pci/fm801.c:1.53->1.54 # F:pci/intel8x0.c:1.178->1.179 # F:pci/intel8x0m.c:1.22->1.23 # F:pci/maestro3.c:1.63->1.64 # F:pci/rme32.c:1.49->1.50 # F:pci/rme96.c:1.46->1.47 # F:pci/sonicvibes.c:1.42->1.43 # F:pci/via82xx.c:1.127->1.128 # F:pci/ali5451/ali5451.c:1.57->1.58 # F:pci/cs46xx/cs46xx_lib.c:1.87->1.88 # F:pci/emu10k1/emu10k1_main.c:1.38->1.39 # F:pci/ice1712/ice1712.c:1.63->1.64 # F:pci/ice1712/ice1724.c:1.47->1.48 # F:pci/korg1212/korg1212.c:1.50->1.51 # F:pci/mixart/mixart.c:1.20->1.21 # F:pci/nm256/nm256.c:1.54->1.55 # F:pci/rme9652/hdsp.c:1.74->1.75 # F:pci/rme9652/rme9652.c:1.54->1.55 # F:pci/trident/trident_main.c:1.64->1.65 # F:pci/vx222/vx222.c:1.10->1.11 # F:pci/ymfpci/ymfpci_main.c:1.58->1.59 # L:pci_disable_device() is called properly in the removal and error # L:paths. Also, the pci_set_master() is added to the resume callbacks if # L:missing (just to be sure). # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:09:03+01:00 perex@suse.cz # [ALSA] whitespace cleanup # # EMU10K1/EMU10K2 driver # # # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emumixer.c # 2004/11/18 06:32:00+01:00 perex@suse.cz +35 -35 # [ALSA] whitespace cleanup # # D:2004/11/18 13:32:00 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emumixer.c:1.26->1.27 # L: # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:07:59+01:00 perex@suse.cz # [ALSA] minor send routing cleanup # # EMU10K1/EMU10K2 driver # Use snd_emu10k1_compose_audigy_fxrt* macro where appropriate. Also add # a few comments to explain send routing structure. # # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emupcm.c # 2004/11/17 06:38:10+01:00 perex@suse.cz +3 -8 # [ALSA] minor send routing cleanup # # D:2004/11/17 13:38:10 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.50->1.51 # F:pci/emu10k1/emupcm.c:1.33->1.34 # L:Use snd_emu10k1_compose_audigy_fxrt* macro where appropriate. Also add # L:a few comments to explain send routing structure. # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # include/sound/emu10k1.h # 2004/11/17 06:38:10+01:00 perex@suse.cz +1 -0 # [ALSA] minor send routing cleanup # # D:2004/11/17 13:38:10 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.50->1.51 # F:pci/emu10k1/emupcm.c:1.33->1.34 # L:Use snd_emu10k1_compose_audigy_fxrt* macro where appropriate. Also add # L:a few comments to explain send routing structure. # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:06:58+01:00 perex@suse.cz # [ALSA] fix chorus/reverb FX loader # # EMU8000 driver # Fixed the chorus/reverb FX loader callback. # The header bytes must be eliminated. # # Signed-off-by: Takashi Iwai # # sound/isa/sb/emu8000_callback.c # 2004/11/16 08:43:28+01:00 perex@suse.cz +4 -0 # [ALSA] fix chorus/reverb FX loader # # D:2004/11/16 15:43:28 # C:EMU8000 driver # F:isa/sb/emu8000_callback.c:1.10->1.11 # L:Fixed the chorus/reverb FX loader callback. # L:The header bytes must be eliminated. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:05:55+01:00 perex@suse.cz # [ALSA] fix MIDI GS chorus/reverb mode # # ALSA sequencer # Fixed the parsing of MIDI GS chorus/reverb mode SYSEX messages. # They were swapped. # # Signed-off-by: Takashi Iwai # # sound/core/seq/seq_midi_emul.c # 2004/11/16 08:41:03+01:00 perex@suse.cz +2 -2 # [ALSA] fix MIDI GS chorus/reverb mode # # D:2004/11/16 15:41:03 # C:ALSA sequencer # F:core/seq/seq_midi_emul.c:1.11->1.12 # L:Fixed the parsing of MIDI GS chorus/reverb mode SYSEX messages. # L:They were swapped. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:04:54+01:00 perex@suse.cz # [ALSA] fix iomem mmap # # PCM Midlevel # The patch adds the definition vm_private_data again to # snd_pcm_lib_mmap_iomem(). It got lost during the rewrite of # the mmap stuff. # # Signed-off-by: Martin Langer # Signed-off-by: Takashi Iwai # # sound/core/pcm_native.c # 2004/11/16 08:19:03+01:00 perex@suse.cz +1 -0 # [ALSA] fix iomem mmap # # D:2004/11/16 15:19:03 # C:PCM Midlevel # F:core/pcm_native.c:1.107->1.108 # L:The patch adds the definition vm_private_data again to # L:snd_pcm_lib_mmap_iomem(). It got lost during the rewrite of # L:the mmap stuff. # Signed-off-by: Martin Langer # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:03:52+01:00 perex@suse.cz # [ALSA] add Line/Headphone jack detection for AD1981A/B # # AC97 Codec Core # Line/Headphone Jack Sense mixer switches are added to # AD1981A/B. # # HP sense is activated as default. # # Signed-off-by: Takashi Iwai # # sound/pci/ac97/ac97_patch.c # 2004/11/16 08:00:41+01:00 perex@suse.cz +21 -2 # [ALSA] add Line/Headphone jack detection for AD1981A/B # # D:2004/11/16 15:00:41 # C:AC97 Codec Core # F:pci/ac97/ac97_patch.c:1.58->1.59 # L:Line/Headphone Jack Sense mixer switches are added to # L:AD1981A/B. # L: # L:HP sense is activated as default. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:02:48+01:00 perex@suse.cz # [ALSA] Add pci_save_state() in suspend # # ALSA Core # Added pci_save_state() in the ALSA suspend core callback since # its call was removed from the PCI core driver in the recent # version. # # Signed-off-by: Takashi Iwai # # sound/core/init.c # 2004/11/16 02:51:57+01:00 perex@suse.cz +4 -1 # [ALSA] Add pci_save_state() in suspend # # D:2004/11/16 09:51:57 # C:ALSA Core # F:core/init.c:1.50->1.51 # L:Added pci_save_state() in the ALSA suspend core callback since # L:its call was removed from the PCI core driver in the recent # L:version. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:01:49+01:00 perex@suse.cz # [ALSA] fix sleep in atomic during prepare callback # # Intel8x0 driver # Fixed the sleep in spinlock during prepare callback. # This happened only on Nforce chips. # # Signed-off-by: Takashi Iwai # # sound/pci/intel8x0.c # 2004/11/16 02:44:23+01:00 perex@suse.cz +2 -0 # [ALSA] fix sleep in atomic during prepare callback # # D:2004/11/16 09:44:23 # C:Intel8x0 driver # F:pci/intel8x0.c:1.177->1.178 # L:Fixed the sleep in spinlock during prepare callback. # L:This happened only on Nforce chips. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 09:00:41+01:00 perex@suse.cz # [ALSA] AC97 quirks for Dell # # Intel8x0 driver # Added ac97 quirks for some dell machines. # # Signed-off-by: Takashi Iwai # # sound/pci/intel8x0.c # 2004/11/15 12:09:55+01:00 perex@suse.cz +12 -0 # [ALSA] AC97 quirks for Dell # # D:2004/11/15 19:09:55 # C:Intel8x0 driver # F:pci/intel8x0.c:1.176->1.177 # L:Added ac97 quirks for some dell machines. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 08:59:30+01:00 perex@suse.cz # [ALSA] Fix WM8770 Init # # ICE1712 driver # Corrects WM8770 ADC mux initialization # # Signed-off-by: Peter Christensen # Signed-off-by: Takashi Iwai # # sound/pci/ice1712/aureon.c # 2004/11/15 12:08:44+01:00 perex@suse.cz +3 -3 # [ALSA] Fix WM8770 Init # # D:2004/11/15 19:08:44 # C:ICE1712 driver # F:pci/ice1712/aureon.c:1.22->1.23 # L:Corrects WM8770 ADC mux initialization # Signed-off-by: Peter Christensen # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/29 08:58:10+01:00 perex@suse.cz # [ALSA] Fix the missing line in the patch for hdsp accurate_ptr # # RME HDSP driver # Fixed missing line in the patch for hdsp accurate_ptr. # # Signed-off-by: Takashi Iwai # # sound/pci/rme9652/hdsp.c # 2004/11/15 12:06:51+01:00 perex@suse.cz +1 -0 # [ALSA] Fix the missing line in the patch for hdsp accurate_ptr # # D:2004/11/15 19:06:51 # C:RME HDSP driver # F:pci/rme9652/hdsp.c:1.73->1.74 # L:Fixed missing line in the patch for hdsp accurate_ptr. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/11 19:18:27+01:00 perex@suse.cz # ALSA 1.0.7 # # include/sound/version.h # 2004/11/11 19:17:49+01:00 perex@suse.cz +2 -2 # ALSA 1.0.7 # # ChangeSet # 2004/11/11 11:52:13+01:00 perex@suse.cz # [ALSA] nonblock_open=1 by default for OSS PCM API emulation # # Documentation,ALSA<-OSS emulation # # # Signed-off-by: Jaroslav Kysela # # sound/core/oss/pcm_oss.c # 2004/11/10 23:41:05+01:00 perex@suse.cz +1 -1 # [ALSA] nonblock_open=1 by default for OSS PCM API emulation # # D:2004/11/11 06:41:03 # C:Documentation,ALSA<-OSS emulation # F:Documentation/OSS-Emulation.txt:1.7->1.8 # F:core/oss/pcm_oss.c:1.80->1.81 # L: # Signed-off-by: Jaroslav Kysela # # Documentation/sound/alsa/OSS-Emulation.txt # 2004/11/10 23:41:03+01:00 perex@suse.cz +5 -6 # [ALSA] nonblock_open=1 by default for OSS PCM API emulation # # D:2004/11/11 06:41:03 # C:Documentation,ALSA<-OSS emulation # F:Documentation/OSS-Emulation.txt:1.7->1.8 # F:core/oss/pcm_oss.c:1.80->1.81 # L: # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/11/11 11:51:08+01:00 perex@suse.cz # [ALSA] fix parsing of mixer unit descriptors # # USB generic driver # MU descriptor parsing code completely rewritten; the old code confused # the number of input audio channel clusters and the number of input # channels. Furthermore, check all bmControls bits so that mixer # controls are created even if the first output channel doesn't have # a control. # # Signed-off-by: Clemens Ladisch # # sound/usb/usbmixer.c # 2004/11/10 10:29:55+01:00 perex@suse.cz +40 -19 # [ALSA] fix parsing of mixer unit descriptors # # D:2004/11/10 17:29:55 # C:USB generic driver # F:usb/usbmixer.c:1.32->1.33 # L:MU descriptor parsing code completely rewritten; the old code confused # L:the number of input audio channel clusters and the number of input # L:channels. Furthermore, check all bmControls bits so that mixer # L:controls are created even if the first output channel doesn't have # L:a control. # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/11/11 11:50:04+01:00 perex@suse.cz # [ALSA] read bmControls array in correct order # # USB generic driver # The driver used some code from audio.c that reads the bmControl array # backwards; this would not work here as we get a pointer to the # beginning of the array. # # Signed-off-by: Clemens Ladisch # # sound/usb/usbmixer.c # 2004/11/10 06:48:03+01:00 perex@suse.cz +1 -1 # [ALSA] read bmControls array in correct order # # D:2004/11/10 13:48:03 # C:USB generic driver # F:usb/usbmixer.c:1.31->1.32 # L:The driver used some code from audio.c that reads the bmControl array # L:backwards; this would not work here as we get a pointer to the # L:beginning of the array. # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/11/11 11:48:57+01:00 perex@suse.cz # [ALSA] handle missing control bitmap when parsing MUDs # # USB generic driver # The AudioTrak Maya44 USB has a mixer unit descriptor without a # bmControl field; handle this as if all bits are zero. # # Signed-off-by: Clemens Ladisch # # sound/usb/usbmixer.c # 2004/11/10 06:44:15+01:00 perex@suse.cz +5 -2 # [ALSA] handle missing control bitmap when parsing MUDs # # D:2004/11/10 13:44:15 # C:USB generic driver # F:usb/usbmixer.c:1.30->1.31 # L:The AudioTrak Maya44 USB has a mixer unit descriptor without a # L:bmControl field; handle this as if all bits are zero. # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/11/11 11:47:49+01:00 perex@suse.cz # [ALSA] emu10k1 - fixed remaining problems with new DSP code loading # # EMU10K1/EMU10K2 driver # # # Signed-off-by: Jaroslav Kysela # # sound/pci/emu10k1/emufx.c # 2004/11/10 04:54:36+01:00 perex@suse.cz +12 -22 # [ALSA] emu10k1 - fixed remaining problems with new DSP code loading # # D:2004/11/10 11:54:36 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emufx.c:1.62->1.63 # L: # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/11/11 11:46:44+01:00 perex@suse.cz # [ALSA] [emu10k1] add interval timer support # # EMU10K1/EMU10K2 driver # # # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/irq.c # 2004/11/10 02:49:12+01:00 perex@suse.cz +2 -2 # [ALSA] [emu10k1] add interval timer support # # D:2004/11/10 09:49:11 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.49->1.50 # F:pci/emu10k1/Makefile:1.10->1.11 # F:pci/emu10k1/emu10k1.c:1.28->1.29 # F:pci/emu10k1/irq.c:1.10->1.11 # F:pci/emu10k1/timer.c:INITIAL->1.1 # L: # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/emu10k1.c # 2004/11/10 02:49:12+01:00 perex@suse.cz +6 -0 # [ALSA] [emu10k1] add interval timer support # # D:2004/11/10 09:49:11 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.49->1.50 # F:pci/emu10k1/Makefile:1.10->1.11 # F:pci/emu10k1/emu10k1.c:1.28->1.29 # F:pci/emu10k1/irq.c:1.10->1.11 # F:pci/emu10k1/timer.c:INITIAL->1.1 # L: # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/Makefile # 2004/11/10 02:49:12+01:00 perex@suse.cz +1 -1 # [ALSA] [emu10k1] add interval timer support # # D:2004/11/10 09:49:11 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.49->1.50 # F:pci/emu10k1/Makefile:1.10->1.11 # F:pci/emu10k1/emu10k1.c:1.28->1.29 # F:pci/emu10k1/irq.c:1.10->1.11 # F:pci/emu10k1/timer.c:INITIAL->1.1 # L: # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # include/sound/emu10k1.h # 2004/11/10 02:49:11+01:00 perex@suse.cz +4 -0 # [ALSA] [emu10k1] add interval timer support # # D:2004/11/10 09:49:11 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.49->1.50 # F:pci/emu10k1/Makefile:1.10->1.11 # F:pci/emu10k1/emu10k1.c:1.28->1.29 # F:pci/emu10k1/irq.c:1.10->1.11 # F:pci/emu10k1/timer.c:INITIAL->1.1 # L: # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/timer.c # 2004/11/11 10:45:36+01:00 perex@suse.cz +99 -0 # [ALSA] [emu10k1] add interval timer support # # D:2004/11/10 09:49:11 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.49->1.50 # F:pci/emu10k1/Makefile:1.10->1.11 # F:pci/emu10k1/emu10k1.c:1.28->1.29 # F:pci/emu10k1/irq.c:1.10->1.11 # F:pci/emu10k1/timer.c:INITIAL->1.1 # L: # Signed-off-by: Lee Revell # Signed-off-by: Takashi Iwai # # sound/pci/emu10k1/timer.c # 2004/11/11 10:45:36+01:00 perex@suse.cz +0 -0 # BitKeeper file /home/perex/bk/linux-sound/work/sound/pci/emu10k1/timer.c # # ChangeSet # 2004/11/11 11:45:39+01:00 perex@suse.cz # [ALSA] Fixed issues with Abit AV8 # # VIA82xx driver # Added Abit AV8 sound card to the white list to use # VIA_DXS_NO_VRA by default. This resolves issues with # programs wanting to use 41k streams. It also fixes # gstreamer issue with alsasink module interaction. # # Signed-off-by: Jerone Young # Signed-off-by: Takashi Iwai # # sound/pci/via82xx.c # 2004/11/09 10:43:36+01:00 perex@suse.cz +1 -0 # [ALSA] Fixed issues with Abit AV8 # # D:2004/11/09 17:43:36 # C:VIA82xx driver # F:pci/via82xx.c:1.126->1.127 # L:Added Abit AV8 sound card to the white list to use # L:VIA_DXS_NO_VRA by default. This resolves issues with # L:programs wanting to use 41k streams. It also fixes # L:gstreamer issue with alsasink module interaction. # Signed-off-by: Jerone Young # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/11 11:44:32+01:00 perex@suse.cz # [ALSA] Add subvendor ID to the pci id table of vx222 driver # # Digigram VX222 driver # The subsystem ID is added to the pci id table of vx222 driver # to make the matching more strict since it (PLX) conflicts with # other devices. # # Signed-off-by: Takashi Iwai # # sound/pci/vx222/vx222.c # 2004/11/09 09:05:37+01:00 perex@suse.cz +2 -2 # [ALSA] Add subvendor ID to the pci id table of vx222 driver # # D:2004/11/09 16:05:37 # C:Digigram VX222 driver # F:pci/vx222/vx222.c:1.9->1.10 # L:The subsystem ID is added to the pci id table of vx222 driver # L:to make the matching more strict since it (PLX) conflicts with # L:other devices. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/11 11:43:26+01:00 perex@suse.cz # [ALSA] removes unneeded spin_lock_irqsave()s from snd-es1968 # # ES1968 driver # spin_lock_irqsave(&chip->reg_lock) was called a second time in sequence from # snd_es1968_bob_start() called from es1968_measure_clock(). # While this didn't cause harm on my UP laptop with mainline kernels, # it made 'insmod snd-es1968' hang on kernel 2.6.9-mm1-RT-V0.6.9. # The patch assumes that 2 callpaths don't need explicit spinlock protection: # 1: The trigger callback, because it is called with IRQs disabled. # 2. PM's suspend/resume callbacks, because those are called while ortdinary # user processes are frozen. # Thus the spin_lock_irqsave(&chip->reg_lock) calls in snd_es1968_bob_start() # / snd_es1968_bob_stop() are not needed. # # Signed-off-by: Karsten Wiese # Signed-off-by: Takashi Iwai # # sound/pci/es1968.c # 2004/11/09 02:18:44+01:00 perex@suse.cz +0 -6 # [ALSA] removes unneeded spin_lock_irqsave()s from snd-es1968 # # D:2004/11/09 09:18:44 # C:ES1968 driver # F:pci/es1968.c:1.77->1.78 # L:spin_lock_irqsave(&chip->reg_lock) was called a second time in sequence from # L:snd_es1968_bob_start() called from es1968_measure_clock(). # L:While this didn't cause harm on my UP laptop with mainline kernels, # L:it made 'insmod snd-es1968' hang on kernel 2.6.9-mm1-RT-V0.6.9. # L:The patch assumes that 2 callpaths don't need explicit spinlock protection: # L:1: The trigger callback, because it is called with IRQs disabled. # L:2. PM's suspend/resume callbacks, because those are called while ortdinary # L: user processes are frozen. # L: Thus the spin_lock_irqsave(&chip->reg_lock) calls in snd_es1968_bob_start() # L: / snd_es1968_bob_stop() are not needed. # Signed-off-by: Karsten Wiese # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/11 11:42:23+01:00 perex@suse.cz # [ALSA] Fixed the description of module_parm_array() # # Documentation # Fixed the description about module_param_array() for the latest change. # # Signed-off-by: Takashi Iwai # # Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl # 2004/11/09 02:16:33+01:00 perex@suse.cz +3 -7 # [ALSA] Fixed the description of module_parm_array() # # D:2004/11/09 09:16:33 # C:Documentation # F:Documentation/DocBook/writing-an-alsa-driver.tmpl:1.42->1.43 # L:Fixed the description about module_param_array() for the latest change. # Signed-off-by: Takashi Iwai # # ChangeSet # 2004/11/11 11:41:13+01:00 perex@suse.cz # [ALSA] remove snd_seq_simple_id # # Instrument layer,GUS Library,Trident driver # remove uses of the snd_seq_simple_id symbol because it is # no longer exported # # Signed-off-by: Clemens Ladisch # # sound/pci/trident/trident_synth.c # 2004/11/09 01:05:14+01:00 perex@suse.cz +1 -1 # [ALSA] remove snd_seq_simple_id # # D:2004/11/09 08:05:14 # C:Instrument layer,GUS Library,Trident driver # F:include/ainstr_simple.h:1.4->1.5 # F:isa/gus/gus_sample.c:1.5->1.6 # F:pci/trident/trident_synth.c:1.15->1.16 # L:remove uses of the snd_seq_simple_id symbol because it is # L:no longer exported # Signed-off-by: Clemens Ladisch # # sound/isa/gus/gus_sample.c # 2004/11/09 01:05:14+01:00 perex@suse.cz +1 -1 # [ALSA] remove snd_seq_simple_id # # D:2004/11/09 08:05:14 # C:Instrument layer,GUS Library,Trident driver # F:include/ainstr_simple.h:1.4->1.5 # F:isa/gus/gus_sample.c:1.5->1.6 # F:pci/trident/trident_synth.c:1.15->1.16 # L:remove uses of the snd_seq_simple_id symbol because it is # L:no longer exported # Signed-off-by: Clemens Ladisch # # include/sound/ainstr_simple.h # 2004/11/09 01:05:14+01:00 perex@suse.cz +0 -2 # [ALSA] remove snd_seq_simple_id # # D:2004/11/09 08:05:14 # C:Instrument layer,GUS Library,Trident driver # F:include/ainstr_simple.h:1.4->1.5 # F:isa/gus/gus_sample.c:1.5->1.6 # F:pci/trident/trident_synth.c:1.15->1.16 # L:remove uses of the snd_seq_simple_id symbol because it is # L:no longer exported # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/11/11 11:40:08+01:00 perex@suse.cz # [ALSA] Added SNDRV_HWDEP_IFACE_BLUETOOTH # # ALSA Core # # # Signed-off-by: Marcel Holtmann # Signed-off-by: Jaroslav Kysela # # include/sound/asound.h # 2004/11/08 05:20:03+01:00 perex@suse.cz +2 -1 # [ALSA] Added SNDRV_HWDEP_IFACE_BLUETOOTH # # D:2004/11/08 12:20:03 # C:ALSA Core # F:include/asound.h:1.45->1.46 # L: # Signed-off-by: Marcel Holtmann # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/11/11 11:39:05+01:00 perex@suse.cz # [ALSA] emu10k1 - another attempt to correct the new emufx DSP code # # EMU10K1/EMU10K2 driver # # # Signed-off-by: Jaroslav Kysela # # sound/pci/emu10k1/emufx.c # 2004/11/07 23:42:44+01:00 perex@suse.cz +8 -6 # [ALSA] emu10k1 - another attempt to correct the new emufx DSP code # # D:2004/11/08 06:42:44 # C:EMU10K1/EMU10K2 driver # F:pci/emu10k1/emufx.c:1.61->1.62 # L: # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/11/11 11:37:58+01:00 perex@suse.cz # [ALSA] replace schedule_timeout() with msleep() # # SPARC cs4231 driver # Uses msleep() instead of schedule_timeout() to guarantee the task # delays as expected. # # Signed-off-by: Nishanth Aravamudan # Signed-off-by: Clemens Ladisch # # sound/sparc/cs4231.c # 2004/11/04 00:57:41+01:00 perex@suse.cz +8 -9 # [ALSA] replace schedule_timeout() with msleep() # # D:2004/11/04 07:57:41 # C:SPARC cs4231 driver # F:sparc/cs4231.c:1.18->1.19 # L:Uses msleep() instead of schedule_timeout() to guarantee the task # L:delays as expected. # Signed-off-by: Nishanth Aravamudan # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/11/11 11:22:49+01:00 perex@suse.cz # [ALSA] replace schedule_timeout() with msleep() # # CS4231 driver # Uses msleep() instead of schedule_timeout() to guarantee # the task delays as expected. This lead to several related changes, as # the current code assumes the value of HZ is 100. Use timeout as an # iteration variable to count out how many 10ms delays should be used. # # Signed-off-by: Nishanth Aravamudan # Signed-off-by: Clemens Ladisch # # sound/isa/cs423x/cs4231_lib.c # 2004/11/03 02:10:40+01:00 perex@suse.cz +6 -15 # [ALSA] replace schedule_timeout() with msleep() # # CS4231 driver # Uses msleep() instead of schedule_timeout() to guarantee # the task delays as expected. This lead to several related changes, as # the current code assumes the value of HZ is 100. Use timeout as an # iteration variable to count out how many 10ms delays should be used. # # Signed-off-by: Nishanth Aravamudan # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/11/11 10:09:08+01:00 perex@suse.cz # Merge # # sound/core/info.c # 2004/11/11 10:08:40+01:00 perex@suse.cz +1 -5 # SCCS merged # # ChangeSet # 2004/10/30 15:01:05+02:00 perex@suse.cz # [ALSA] emu10k1 - fixes against the last emufx changes # # EMU10K1/EMU10K2 driver # The indirect pointers are allocated correctly now for default DSP code. # Also, one bug in emu10k1_fx8010_code_t has been fixed as well. # # Signed-off-by: Jaroslav Kysela # # sound/pci/emu10k1/emufx.c # 2004/10/30 02:44:20+02:00 perex@suse.cz +38 -24 # [ALSA] emu10k1 - fixes against the last emufx changes # # D:2004/10/30 08:44:19 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.48->1.49 # F:pci/emu10k1/emufx.c:1.60->1.61 # L:The indirect pointers are allocated correctly now for default DSP code. # L:Also, one bug in emu10k1_fx8010_code_t has been fixed as well. # Signed-off-by: Jaroslav Kysela # # include/sound/emu10k1.h # 2004/10/30 02:44:19+02:00 perex@suse.cz +3 -3 # [ALSA] emu10k1 - fixes against the last emufx changes # # D:2004/10/30 08:44:19 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.48->1.49 # F:pci/emu10k1/emufx.c:1.60->1.61 # L:The indirect pointers are allocated correctly now for default DSP code. # L:Also, one bug in emu10k1_fx8010_code_t has been fixed as well. # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:40:37+02:00 perex@suse.cz # [ALSA] fixed emu10k1_fx8010_code_t structure to be less than 8192 bytes # # EMU10K1/EMU10K2 driver # This patch fixes emu10k1_fx8010_code_t structure using indirect pointers # to be less than 8192 bytes to follow the ioctl semantics. # # Signed-off-by: Jaroslav Kysela # # sound/pci/emu10k1/emufx.c # 2004/10/28 08:24:17+02:00 perex@suse.cz +100 -55 # [ALSA] fixed emu10k1_fx8010_code_t structure to be less than 8192 bytes # # D:2004/10/28 14:24:17 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.47->1.48 # F:pci/emu10k1/emufx.c:1.59->1.60 # L:This patch fixes emu10k1_fx8010_code_t structure using indirect pointers # L:to be less than 8192 bytes to follow the ioctl semantics. # Signed-off-by: Jaroslav Kysela # # include/sound/emu10k1.h # 2004/10/28 08:24:17+02:00 perex@suse.cz +4 -4 # [ALSA] fixed emu10k1_fx8010_code_t structure to be less than 8192 bytes # # D:2004/10/28 14:24:17 # C:EMU10K1/EMU10K2 driver # F:include/emu10k1.h:1.47->1.48 # F:pci/emu10k1/emufx.c:1.59->1.60 # L:This patch fixes emu10k1_fx8010_code_t structure using indirect pointers # L:to be less than 8192 bytes to follow the ioctl semantics. # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:19:01+02:00 perex@suse.cz # [ALSA] remove kernel version info from proc file # # ALSA Core # The kernel version information isn't necessary for the driver # in the kernel tree, so move it to the alsa-driver package. # # This removes a dependency to . # # Signed-off-by: Clemens Ladisch # # sound/core/info.c # 2004/10/28 02:10:50+02:00 perex@suse.cz +3 -12 # [ALSA] remove kernel version info from proc file # # D:2004/10/28 08:10:50 # C:ALSA Core # F:core/info.c:1.48->1.49 # L:The kernel version information isn't necessary for the driver # L:in the kernel tree, so move it to the alsa-driver package. # L: # L:This removes a dependency to . # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:17:57+02:00 perex@suse.cz # [ALSA] Limit parity error messages # # BT87x driver # Some systems generate tons of PCI parity errors, so shut up # when more than 20 have been detected. # # Signed-off-by: Clemens Ladisch # # sound/pci/bt87x.c # 2004/10/27 11:51:57+02:00 perex@suse.cz +43 -18 # [ALSA] Limit parity error messages # # D:2004/10/27 17:51:57 # C:BT87x driver # F:pci/bt87x.c:1.16->1.17 # L:Some systems generate tons of PCI parity errors, so shut up # L:when more than 20 have been detected. # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:16:52+02:00 perex@suse.cz # [ALSA] remove dead exports # # ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # Alsa currently has tons of dead exports, often with totally unused # functions behind them. # This removes some of them. # # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/isa/es1688/es1688_lib.c # 2004/10/27 02:53:01+02:00 perex@suse.cz +1 -2 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/isa/ad1848/ad1848_lib.c # 2004/10/27 02:53:01+02:00 perex@suse.cz +6 -12 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/core/sound.c # 2004/10/27 02:53:00+02:00 perex@suse.cz +0 -1 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/core/seq/instr/ainstr_simple.c # 2004/10/27 02:53:00+02:00 perex@suse.cz +1 -4 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/core/seq/instr/ainstr_iw.c # 2004/10/27 02:53:00+02:00 perex@suse.cz +1 -4 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/core/seq/instr/ainstr_gf1.c # 2004/10/27 02:53:00+02:00 perex@suse.cz +1 -4 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/core/seq/instr/ainstr_fm.c # 2004/10/27 02:53:00+02:00 perex@suse.cz +1 -4 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # sound/core/init.c # 2004/10/27 02:52:59+02:00 perex@suse.cz +0 -3 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # include/sound/es1688.h # 2004/10/27 02:53:01+02:00 perex@suse.cz +0 -2 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # include/sound/core.h # 2004/10/27 02:53:01+02:00 perex@suse.cz +0 -1 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # include/sound/ainstr_iw.h # 2004/10/27 02:53:01+02:00 perex@suse.cz +0 -2 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # include/sound/ainstr_gf1.h # 2004/10/27 02:53:01+02:00 perex@suse.cz +0 -2 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # include/sound/ainstr_fm.h # 2004/10/27 02:53:00+02:00 perex@suse.cz +0 -2 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # include/sound/ad1848.h # 2004/10/27 02:53:00+02:00 perex@suse.cz +0 -5 # [ALSA] remove dead exports # # D:2004/10/27 08:52:59 # C:ALSA Core,Instrument layer,AD1848 driver,ES1688 driver # F:core/init.c:1.49->1.50 # F:core/sound.c:1.66->1.67 # F:core/seq/instr/ainstr_fm.c:1.8->1.9 # F:core/seq/instr/ainstr_gf1.c:1.9->1.10 # F:core/seq/instr/ainstr_iw.c:1.10->1.11 # F:core/seq/instr/ainstr_simple.c:1.8->1.9 # F:include/ad1848.h:1.10->1.11 # F:include/ainstr_fm.h:1.3->1.4 # F:include/ainstr_gf1.h:1.4->1.5 # F:include/ainstr_iw.h:1.4->1.5 # F:include/core.h:1.59->1.60 # F:include/es1688.h:1.6->1.7 # F:isa/ad1848/ad1848_lib.c:1.36->1.37 # F:isa/es1688/es1688_lib.c:1.27->1.28 # L:Alsa currently has tons of dead exports, often with totally unused # L:functions behind them. # L:This removes some of them. # Signed-off-by: Christoph Hellwig # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:15:45+02:00 perex@suse.cz # [ALSA] remove old compatibility code # # USB USX2Y # # # Signed-off-by: Clemens Ladisch # # sound/usb/usx2y/usbusx2yaudio.c # 2004/10/27 02:38:35+02:00 perex@suse.cz +1 -1 # [ALSA] remove old compatibility code # # D:2004/10/27 08:38:35 # C:USB USX2Y # F:usb/usx2y/usbusx2yaudio.c:1.5->1.6 # L: # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:14:41+02:00 perex@suse.cz # [ALSA] fix data type mismatch in sign_invert # # au88x0 driver # the last sign_invert cleanup introduced a data type mismatch # (an unsigned value can never be negative) # # Signed-off-by: Clemens Ladisch # # sound/pci/au88x0/au88x0_eq.c # 2004/10/27 02:31:16+02:00 perex@suse.cz +1 -1 # [ALSA] fix data type mismatch in sign_invert # # D:2004/10/27 08:31:16 # C:au88x0 driver # F:pci/au88x0/au88x0_eq.c:1.7->1.8 # L:the last sign_invert cleanup introduced a data type mismatch # L:(an unsigned value can never be negative) # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:13:39+02:00 perex@suse.cz # [ALSA] au88x0: comment and whitespace cleanup # # au88x0 driver # Remove an obsolete comment and cleanup up some whitespace a bit # # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0.c # 2004/10/26 08:12:31+02:00 perex@suse.cz +5 -8 # [ALSA] au88x0: comment and whitespace cleanup # # D:2004/10/26 14:12:31 # C:au88x0 driver # F:pci/au88x0/au88x0.c:1.15->1.16 # L:Remove an obsolete comment and cleanup up some whitespace a bit # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:12:40+02:00 perex@suse.cz # [ALSA] au88x0: name typo # # au88x0 driver # Fix the spelling of my name # # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0_core.c # 2004/10/26 08:11:34+02:00 perex@suse.cz +1 -1 # [ALSA] au88x0: name typo # # D:2004/10/26 14:11:34 # C:au88x0 driver # F:pci/au88x0/au88x0.c:1.14->1.15 # F:pci/au88x0/au88x0_core.c:1.6->1.7 # L:Fix the spelling of my name # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0.c # 2004/10/26 08:11:34+02:00 perex@suse.cz +1 -1 # [ALSA] au88x0: name typo # # D:2004/10/26 14:11:34 # C:au88x0 driver # F:pci/au88x0/au88x0.c:1.14->1.15 # F:pci/au88x0/au88x0_core.c:1.6->1.7 # L:Fix the spelling of my name # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:11:35+02:00 perex@suse.cz # [ALSA] au88x0: sign_invert cleanup # # au88x0 driver # Remove unecessary ' & 0xffff'ing of the result of sign_invert # # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0_eq.c # 2004/10/26 08:10:54+02:00 perex@suse.cz +15 -15 # [ALSA] au88x0: sign_invert cleanup # # D:2004/10/26 14:10:54 # C:au88x0 driver # F:pci/au88x0/au88x0_eq.c:1.6->1.7 # L:Remove unecessary ' & 0xffff'ing of the result of sign_invert # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:10:29+02:00 perex@suse.cz # [ALSA] au88x0: set-levels cleanup # # au88x0 driver # Cleanup vortex_EqHw_SetLevels and add a bit of documentation # # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0_eq.c # 2004/10/26 08:09:32+02:00 perex@suse.cz +15 -11 # [ALSA] au88x0: set-levels cleanup # # D:2004/10/26 14:09:32 # C:au88x0 driver # F:pci/au88x0/au88x0_eq.c:1.5->1.6 # L:Cleanup vortex_EqHw_SetLevels and add a bit of documentation # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:09:28+02:00 perex@suse.cz # [ALSA] au88x0: fix is-quad oops # # au88x0 driver # Fixes an oops on module removal caused by dereferencing the codec pointer. # This is not the best solution, but it is the easiest and fixes things for # now. # # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0_mixer.c # 2004/10/26 08:08:31+02:00 perex@suse.cz +3 -1 # [ALSA] au88x0: fix is-quad oops # # D:2004/10/26 14:08:31 # C:au88x0 driver # F:pci/au88x0/au88x0.h:1.9->1.10 # F:pci/au88x0/au88x0_mixer.c:1.3->1.4 # L:Fixes an oops on module removal caused by dereferencing the codec pointer. # L:This is not the best solution, but it is the easiest and fixes things for # L:now. # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0.h # 2004/10/26 08:08:31+02:00 perex@suse.cz +4 -1 # [ALSA] au88x0: fix is-quad oops # # D:2004/10/26 14:08:31 # C:au88x0 driver # F:pci/au88x0/au88x0.h:1.9->1.10 # F:pci/au88x0/au88x0_mixer.c:1.3->1.4 # L:Fixes an oops on module removal caused by dereferencing the codec pointer. # L:This is not the best solution, but it is the easiest and fixes things for # L:now. # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:08:26+02:00 perex@suse.cz # [ALSA] au88x0: add resetup dma # # au88x0 driver # Add adbdma_resetup for refreshing the hw page table on pcm start # # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0_pcm.c # 2004/10/26 08:04:51+02:00 perex@suse.cz +3 -1 # [ALSA] au88x0: add resetup dma # # D:2004/10/26 14:04:51 # C:au88x0 driver # F:pci/au88x0/au88x0.h:1.8->1.9 # F:pci/au88x0/au88x0_core.c:1.5->1.6 # F:pci/au88x0/au88x0_pcm.c:1.4->1.5 # L:Add adbdma_resetup for refreshing the hw page table on pcm start # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0_core.c # 2004/10/26 08:04:51+02:00 perex@suse.cz +27 -0 # [ALSA] au88x0: add resetup dma # # D:2004/10/26 14:04:51 # C:au88x0 driver # F:pci/au88x0/au88x0.h:1.8->1.9 # F:pci/au88x0/au88x0_core.c:1.5->1.6 # F:pci/au88x0/au88x0_pcm.c:1.4->1.5 # L:Add adbdma_resetup for refreshing the hw page table on pcm start # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # sound/pci/au88x0/au88x0.h # 2004/10/26 08:04:51+02:00 perex@suse.cz +1 -0 # [ALSA] au88x0: add resetup dma # # D:2004/10/26 14:04:51 # C:au88x0 driver # F:pci/au88x0/au88x0.h:1.8->1.9 # F:pci/au88x0/au88x0_core.c:1.5->1.6 # F:pci/au88x0/au88x0_pcm.c:1.4->1.5 # L:Add adbdma_resetup for refreshing the hw page table on pcm start # Signed-off-by: Jeff Muizelaar # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:07:18+02:00 perex@suse.cz # [ALSA] snd-usb-usx2y - crash fix for OHCI USB-HCDs # # USB USX2Y # Version: 0.8.6 # Work on this started, when rumors spread that OHCI equipped machines would # crash. This was due to me missing two facts: # 1) Ohci has a bigger usb frame number wrap around. # 2) It only supports URB_ISO_ASAP when submitting iso urbs. # These issues are fixed now. # # Signed-off-by: Karsten Wiese # Signed-off-by: Jaroslav Kysela # # sound/usb/usx2y/usbusx2yaudio.c # 2004/10/26 08:03:03+02:00 perex@suse.cz +394 -373 # [ALSA] snd-usb-usx2y - crash fix for OHCI USB-HCDs # # D:2004/10/26 14:03:03 # C:USB USX2Y # F:usb/usx2y/usX2Yhwdep.c:1.2->1.3 # F:usb/usx2y/usbusx2y.c:1.4->1.5 # F:usb/usx2y/usbusx2y.h:1.1->1.2 # F:usb/usx2y/usbusx2yaudio.c:1.4->1.5 # L:Version: 0.8.6 # L:Work on this started, when rumors spread that OHCI equipped machines would # L:crash. This was due to me missing two facts: # L:1) Ohci has a bigger usb frame number wrap around. # L:2) It only supports URB_ISO_ASAP when submitting iso urbs. # L:These issues are fixed now. # Signed-off-by: Karsten Wiese # Signed-off-by: Jaroslav Kysela # # sound/usb/usx2y/usbusx2y.h # 2004/10/26 08:03:03+02:00 perex@suse.cz +33 -12 # [ALSA] snd-usb-usx2y - crash fix for OHCI USB-HCDs # # D:2004/10/26 14:03:03 # C:USB USX2Y # F:usb/usx2y/usX2Yhwdep.c:1.2->1.3 # F:usb/usx2y/usbusx2y.c:1.4->1.5 # F:usb/usx2y/usbusx2y.h:1.1->1.2 # F:usb/usx2y/usbusx2yaudio.c:1.4->1.5 # L:Version: 0.8.6 # L:Work on this started, when rumors spread that OHCI equipped machines would # L:crash. This was due to me missing two facts: # L:1) Ohci has a bigger usb frame number wrap around. # L:2) It only supports URB_ISO_ASAP when submitting iso urbs. # L:These issues are fixed now. # Signed-off-by: Karsten Wiese # Signed-off-by: Jaroslav Kysela # # sound/usb/usx2y/usbusx2y.c # 2004/10/26 08:03:03+02:00 perex@suse.cz +21 -4 # [ALSA] snd-usb-usx2y - crash fix for OHCI USB-HCDs # # D:2004/10/26 14:03:03 # C:USB USX2Y # F:usb/usx2y/usX2Yhwdep.c:1.2->1.3 # F:usb/usx2y/usbusx2y.c:1.4->1.5 # F:usb/usx2y/usbusx2y.h:1.1->1.2 # F:usb/usx2y/usbusx2yaudio.c:1.4->1.5 # L:Version: 0.8.6 # L:Work on this started, when rumors spread that OHCI equipped machines would # L:crash. This was due to me missing two facts: # L:1) Ohci has a bigger usb frame number wrap around. # L:2) It only supports URB_ISO_ASAP when submitting iso urbs. # L:These issues are fixed now. # Signed-off-by: Karsten Wiese # Signed-off-by: Jaroslav Kysela # # sound/usb/usx2y/usX2Yhwdep.c # 2004/10/26 08:03:03+02:00 perex@suse.cz +2 -8 # [ALSA] snd-usb-usx2y - crash fix for OHCI USB-HCDs # # D:2004/10/26 14:03:03 # C:USB USX2Y # F:usb/usx2y/usX2Yhwdep.c:1.2->1.3 # F:usb/usx2y/usbusx2y.c:1.4->1.5 # F:usb/usx2y/usbusx2y.h:1.1->1.2 # F:usb/usx2y/usbusx2yaudio.c:1.4->1.5 # L:Version: 0.8.6 # L:Work on this started, when rumors spread that OHCI equipped machines would # L:crash. This was due to me missing two facts: # L:1) Ohci has a bigger usb frame number wrap around. # L:2) It only supports URB_ISO_ASAP when submitting iso urbs. # L:These issues are fixed now. # Signed-off-by: Karsten Wiese # Signed-off-by: Jaroslav Kysela # # ChangeSet # 2004/10/29 17:02:54+02:00 perex@suse.cz # [ALSA] rearrange OSS SPARC dependencies # # Sound Core # rearrange the SPARC symbols in the OSS dependencies to # prevent alsa-driver's mod-deps from throwing up # # Signed-off-by: Clemens Ladisch # # sound/Kconfig # 2004/10/26 01:03:18+02:00 perex@suse.cz +1 -1 # [ALSA] rearrange OSS SPARC dependencies # # D:2004/10/26 07:03:18 # C:Sound Core # F:Kconfig:1.8->1.9 # L:rearrange the SPARC symbols in the OSS dependencies to # L:prevent alsa-driver's mod-deps from throwing up # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:01:52+02:00 perex@suse.cz # [ALSA] fix sequencer sleeping in interrupt context # # ALSA sequencer,ALSA<-OSS sequencer # # # Signed-off-by: Clemens Ladisch # # sound/core/seq/seq_clientmgr.c # 2004/10/25 04:43:30+02:00 perex@suse.cz +1 -1 # [ALSA] fix sequencer sleeping in interrupt context # # D:2004/10/25 10:43:30 # C:ALSA sequencer,ALSA<-OSS sequencer # F:core/seq/seq_clientmgr.c:1.38->1.39 # F:core/seq/oss/seq_oss_timer.c:1.7->1.8 # L: # Signed-off-by: Clemens Ladisch # # sound/core/seq/oss/seq_oss_timer.c # 2004/10/25 04:43:30+02:00 perex@suse.cz +1 -1 # [ALSA] fix sequencer sleeping in interrupt context # # D:2004/10/25 10:43:30 # C:ALSA sequencer,ALSA<-OSS sequencer # F:core/seq/seq_clientmgr.c:1.38->1.39 # F:core/seq/oss/seq_oss_timer.c:1.7->1.8 # L: # Signed-off-by: Clemens Ladisch # # ChangeSet # 2004/10/29 17:00:31+02:00 perex@suse.cz # [ALSA] use blacklist/whitelist for (non-)audio Bt878 cards # # Documentation,PCI drivers,BT87x driver # Some Bt87x cards use PCI function 1 for MPEG data instead of # audio data, so we blacklist those in the audio driver. # # Further add a whitelist for cards where audio is known to work # (many other cards do not implement the audio connection). # Unknown cards can be enabled manually. # # Signed-off-by: Clemens Ladisch # # sound/pci/bt87x.c # 2004/10/25 03:41:06+02:00 perex@suse.cz +72 -16 # [ALSA] use blacklist/whitelist for (non-)audio Bt878 cards # # D:2004/10/25 09:41:07 # C:Documentation,PCI drivers,BT87x driver # F:Documentation/ALSA-Configuration.txt:1.53->1.54 # F:Documentation/Bt87x.txt:INITIAL->1.1 # F:pci/Kconfig:1.35->1.36 # F:pci/bt87x.c:1.15->1.16 # L:Some Bt87x cards use PCI function 1 for MPEG data instead of # L:audio data, so we blacklist those in the audio driver. # L: # L:Further add a whitelist for cards where audio is known to work # L:(many other cards do not implement the audio connection). # L:Unknown cards can be enabled manually. # Signed-off-by: Clemens Ladisch # # sound/pci/Kconfig # 2004/10/25 03:40:56+02:00 perex@suse.cz +3 -2 # [ALSA] use blacklist/whitelist for (non-)audio Bt878 cards # # D:2004/10/25 09:41:07 # C:Documentation,PCI drivers,BT87x driver # F:Documentation/ALSA-Configuration.txt:1.53->1.54 # F:Documentation/Bt87x.txt:INITIAL->1.1 # F:pci/Kconfig:1.35->1.36 # F:pci/bt87x.c:1.15->1.16 # L:Some Bt87x cards use PCI function 1 for MPEG data instead of # L:audio data, so we blacklist those in the audio driver. # L: # L:Further add a whitelist for cards where audio is known to work # L:(many other cards do not implement the audio connection). # L:Unknown cards can be enabled manually. # Signed-off-by: Clemens Ladisch # # Documentation/sound/alsa/ALSA-Configuration.txt # 2004/10/25 03:41:07+02:00 perex@suse.cz +1 -0 # [ALSA] use blacklist/whitelist for (non-)audio Bt878 cards # # D:2004/10/25 09:41:07 # C:Documentation,PCI drivers,BT87x driver # F:Documentation/ALSA-Configuration.txt:1.53->1.54 # F:Documentation/Bt87x.txt:INITIAL->1.1 # F:pci/Kconfig:1.35->1.36 # F:pci/bt87x.c:1.15->1.16 # L:Some Bt87x cards use PCI function 1 for MPEG data instead of # L:audio data, so we blacklist those in the audio driver. # L: # L:Further add a whitelist for cards where audio is known to work # L:(many other cards do not implement the audio connection). # L:Unknown cards can be enabled manually. # Signed-off-by: Clemens Ladisch # # Documentation/sound/alsa/Bt87x.txt # 2004/10/29 16:45:58+02:00 perex@suse.cz +78 -0 # [ALSA] use blacklist/whitelist for (non-)audio Bt878 cards # # D:2004/10/25 09:41:07 # C:Documentation,PCI drivers,BT87x driver # F:Documentation/ALSA-Configuration.txt:1.53->1.54 # F:Documentation/Bt87x.txt:INITIAL->1.1 # F:pci/Kconfig:1.35->1.36 # F:pci/bt87x.c:1.15->1.16 # L:Some Bt87x cards use PCI function 1 for MPEG data instead of # L:audio data, so we blacklist those in the audio driver. # L: # L:Further add a whitelist for cards where audio is known to work # L:(many other cards do not implement the audio connection). # L:Unknown cards can be enabled manually. # Signed-off-by: Clemens Ladisch # # Documentation/sound/alsa/Bt87x.txt # 2004/10/29 16:45:58+02:00 perex@suse.cz +0 -0 # BitKeeper file /home/perex/bk/linux-sound/work/Documentation/sound/alsa/Bt87x.txt # diff -Nru a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt --- a/Documentation/sound/alsa/ALSA-Configuration.txt 2005-01-02 23:05:38 -08:00 +++ b/Documentation/sound/alsa/ALSA-Configuration.txt 2005-01-02 23:05:38 -08:00 @@ -252,6 +252,7 @@ Module for video cards based on Bt87x chips. digital_rate - Override the default digital rate (Hz) + load_all - Load the driver even if the card model isn't known Module supports up to 8 cards. diff -Nru a/Documentation/sound/alsa/Bt87x.txt b/Documentation/sound/alsa/Bt87x.txt --- /dev/null Wed Dec 31 16:00:00 196900 +++ b/Documentation/sound/alsa/Bt87x.txt 2005-01-02 23:05:38 -08:00 @@ -0,0 +1,78 @@ +Intro +===== + +You might have noticed that the bt878 grabber cards have actually +_two_ PCI functions: + +$ lspci +[ ... ] +00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02) +00:0a.1 Multimedia controller: Brooktree Corporation Bt878 (rev 02) +[ ... ] + +The first does video, it is backward compatible to the bt848. The second +does audio. snd-bt87x is a driver for the second function. It's a sound +driver which can be used for recording sound (and _only_ recording, no +playback). As most TV cards come with a short cable which can be plugged +into your sound card's line-in you probably don't need this driver if all +you want to do is just watching TV... + +Some cards do not bother to connect anything to the audio input pins of +the chip, and some other cards use the audio function to transport MPEG +video data, so it's quite possible that audio recording may not work +with your card. + + +Driver Status +============= + +The driver is now stable. However, it doesn't know about many TV cards, +and it refuses to load for cards it doesn't know. + +If the driver complains ("Unknown TV card found, the audio driver will +not load"), you can specify the load_all=1 option to force the driver to +try to use the audio capture function of your card. If the frequency of +recorded data is not right, try to specify the digital_rate option with +other values than the default 32000 (often it's 44100 or 64000). + +If you have an unknown card, please mail the ID and board name to +, regardless of whether audio capture works or +not, so that future versions of this driver know about your card. + + +Audio modes +=========== + +The chip knows two different modes (digital/analog). snd-bt87x +registers two PCM devices, one for each mode. They cannot be used at +the same time. + + +Digital audio mode +================== + +The first device (hw:X,0) gives you 16 bit stereo sound. The sample +rate depends on the external source which feeds the Bt87x with digital +sound via I2S interface. + + +Analog audio mode (A/D) +======================= + +The second device (hw:X,1) gives you 8 or 16 bit mono sound. Supported +sample rates are between 119466 and 448000 Hz (yes, these numbers are +that high). If you've set the CONFIG_SND_BT87X_OVERCLOCK option, the +maximum sample rate is 1792000 Hz, but audio data becomes unusable +beyond 896000 Hz on my card. + +The chip has three analog inputs. Consequently you'll get a mixer +device to control these. + + +Have fun, + + Clemens + + +Written by Clemens Ladisch +big parts copied from btaudio.txt by Gerd Knorr 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 2005-01-02 23:05:38 -08:00 +++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl 2005-01-02 23:05:38 -08:00 @@ -397,12 +397,12 @@ #include #include - // module parameters (see "Module Parameters") + /* module parameters (see "Module Parameters") */ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; - // definition of the chip-specific record + /* definition of the chip-specific record */ typedef struct snd_mychip mychip_t; struct snd_mychip { snd_card_t *card; @@ -410,23 +410,26 @@ // "PCI Resource Managements" }; - // chip-specific destructor - // (see "PCI Resource Managements") + /* chip-specific destructor + * (see "PCI Resource Managements") + */ static int snd_mychip_free(mychip_t *chip) { - // will be implemented later... + .... // will be implemented later... } - // component-destructor - // (see "Management of Cards and Components") + /* component-destructor + * (see "Management of Cards and Components") + */ static int snd_mychip_dev_free(snd_device_t *device) { mychip_t *chip = device->device_data; return snd_mychip_free(chip); } - // chip-specific constructor - // (see "Management of Cards and Components") + /* chip-specific constructor + * (see "Management of Cards and Components") + */ static int __devinit snd_mychip_create(snd_card_t *card, struct pci_dev *pci, mychip_t **rchip) @@ -441,8 +444,9 @@ // check PCI availability here // (see "PCI Resource Managements") + .... - // allocate a chip-specific data with zero filled + /* allocate a chip-specific data with zero filled */ chip = kcalloc(1, sizeof(*chip), GFP_KERNEL); if (chip == NULL) return -ENOMEM; @@ -451,6 +455,7 @@ // rest of initialization here; will be implemented // later, see "PCI Resource Managements" + .... if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { @@ -461,7 +466,7 @@ return 0; } - // constructor -- see "Constructor" sub-section + /* constructor -- see "Constructor" sub-section */ static int __devinit snd_mychip_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) { @@ -470,7 +475,7 @@ mychip_t *chip; int err; - // (1) + /* (1) */ if (dev >= SNDRV_CARDS) return -ENODEV; if (!enable[dev]) { @@ -478,39 +483,39 @@ return -ENOENT; } - // (2) + /* (2) */ card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); if (card == NULL) return -ENOMEM; - // (3) + /* (3) */ if ((err = snd_mychip_create(card, pci, &chip)) < 0) { snd_card_free(card); return err; } - // (4) + /* (4) */ strcpy(card->driver, "My Chip"); strcpy(card->shortname, "My Own Chip 123"); sprintf(card->longname, "%s at 0x%lx irq %i", card->shortname, chip->ioport, chip->irq); - // (5) - // implemented later + /* (5) */ + .... // implemented later - // (6) + /* (6) */ if ((err = snd_card_register(card)) < 0) { snd_card_free(card); return err; } - // (7) + /* (7) */ pci_set_drvdata(pci, card); dev++; return 0; } - // destructor -- see "Destructor" sub-section + /* destructor -- see "Destructor" sub-section */ static void __devexit snd_mychip_remove(struct pci_dev *pci) { snd_card_free(pci_get_drvdata(pci)); @@ -1089,20 +1094,22 @@ static int snd_mychip_free(mychip_t *chip) { - // disable hardware here if any - // (not implemented in this document) + /* disable hardware here if any */ + .... // (not implemented in this document) - // release the irq + /* release the irq */ if (chip->irq >= 0) free_irq(chip->irq, (void *)chip); - // release the i/o ports + /* release the i/o ports */ pci_release_regions(chip->pci); - // release the data + /* disable the PCI entry */ + pci_disable_device(chip->pci); + /* release the data */ kfree(chip); return 0; } - // chip-specific constructor + /* chip-specific constructor */ static int __devinit snd_mychip_create(snd_card_t *card, struct pci_dev *pci, mychip_t **rchip) @@ -1115,27 +1122,32 @@ *rchip = NULL; - // check PCI availability (28bit DMA) + /* initialize the PCI entry */ if ((err = pci_enable_device(pci)) < 0) return err; + /* check PCI availability (28bit DMA) */ if (pci_set_dma_mask(pci, 0x0fffffff) < 0 || pci_set_consistent_dma_mask(pci, 0x0fffffff) < 0) { printk(KERN_ERR "error to set 28bit mask DMA\n"); + pci_disable_device(pci); return -ENXIO; } chip = kcalloc(1, sizeof(*chip), GFP_KERNEL); - if (chip == NULL) + if (chip == NULL) { + pci_disable_device(pci); return -ENOMEM; + } - // initialize the stuff + /* initialize the stuff */ chip->card = card; chip->pci = pci; chip->irq = -1; - // (1) PCI resource allocation + /* (1) PCI resource allocation */ if ((err = pci_request_regions(pci, "My Chip")) < 0) { kfree(chip); + pci_disable_device(pci); return err; } chip->port = pci_resource_start(pci, 0); @@ -1148,8 +1160,8 @@ } chip->irq = pci->irq; - // (2) initialization of the chip hardware - // (not implemented in this document) + /* (2) initialization of the chip hardware */ + .... // (not implemented in this document) if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { @@ -1160,7 +1172,7 @@ return 0; } - // PCI IDs + /* PCI IDs */ static struct pci_device_id snd_mychip_ids[] = { { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, @@ -1169,7 +1181,7 @@ }; MODULE_DEVICE_TABLE(pci, snd_mychip_ids); - // pci_driver definition + /* pci_driver definition */ static struct pci_driver driver = { .name = "My Own Chip", .id_table = snd_mychip_ids, @@ -1177,13 +1189,13 @@ .remove = __devexit_p(snd_mychip_remove), }; - // initialization of the module + /* initialization of the module */ static int __init alsa_card_mychip_init(void) { return pci_module_init(&driver); } - // clean up the module + /* clean up the module */ static void __exit alsa_card_mychip_exit(void) { pci_unregister_driver(&driver); @@ -1228,6 +1240,7 @@ if (pci_set_dma_mask(pci, 0x0fffffff) < 0 || pci_set_consistent_dma_mask(pci, 0x0fffffff) < 0) { printk(KERN_ERR "error to set 28bit mask DMA\n"); + pci_disable_device(pci); return -ENXIO; } @@ -1285,6 +1298,7 @@ port = pci_resource_start(pci, 0); @@ -1434,6 +1448,11 @@ + Don't forget to call pci_disable_device() + before all finished. + + + And finally, release the chip-specific record. @@ -1801,8 +1820,9 @@ mychip_t *chip = snd_pcm_substream_chip(substream); snd_pcm_runtime_t *runtime = substream->runtime; - // set up the hardware with the current configuration - // for example... + /* set up the hardware with the current configuration + * for example... + */ mychip_set_sample_format(chip, runtime->format); mychip_set_sample_rate(chip, runtime->rate); mychip_set_channels(chip, runtime->channels); @@ -1835,7 +1855,7 @@ mychip_t *chip = snd_pcm_substream_chip(substream); unsigned int current_ptr; - // get the current hardware pointer + /* get the current hardware pointer */ current_ptr = mychip_get_hw_pointer(chip); return current_ptr; } @@ -2068,18 +2088,19 @@ static void mychip_pcm_free(snd_pcm_t *pcm) { mychip_t *chip = snd_pcm_chip(pcm); - // free your own data + /* free your own data */ kfree(chip->my_private_pcm_data); - // do what you like else... + // do what you like else + .... } static int __devinit snd_mychip_new_pcm(mychip_t *chip) { snd_pcm_t *pcm; .... - // allocate your own data + /* allocate your own data */ chip->my_private_pcm_data = kmalloc(...); - // set the destructor + /* set the destructor */ pcm->private_data = chip; pcm->private_free = mychip_pcm_free; .... @@ -2231,7 +2252,7 @@ runtime; ... - runtime->hw = snd_mychip_playback_hw; // common definition + runtime->hw = snd_mychip_playback_hw; /* common definition */ if (chip->model == VERY_OLD_ONE) runtime->hw.channels_max = 1; ]]> @@ -3030,7 +3051,7 @@ spin_lock(&chip->lock); .... if (pcm_irq_invoked(chip)) { - // call updater, unlock before it + /* call updater, unlock before it */ spin_unlock(&chip->lock); snd_pcm_period_elapsed(chip->substream); spin_lock(&chip->lock); @@ -3075,24 +3096,25 @@ .... if (pcm_irq_invoked(chip)) { unsigned int last_ptr, size; - // get the current hardware pointer (in frames) + /* get the current hardware pointer (in frames) */ last_ptr = get_hw_ptr(chip); - // calculate the processed frames since the - // last update + /* calculate the processed frames since the + * last update + */ if (last_ptr < chip->last_ptr) size = runtime->buffer_size + last_ptr - chip->last_ptr; else size = last_ptr - chip->last_ptr; - // remember the last updated point + /* remember the last updated point */ chip->last_ptr = last_ptr; - // accumulate the size + /* accumulate the size */ chip->size += size; - // over the period boundary? + /* over the period boundary? */ if (chip->size >= runtime->period_size) { - // reset the accumulator + /* reset the accumulator */ chip->size %= runtime->period_size; - // call updater + /* call updater */ spin_unlock(&chip->lock); snd_pcm_period_elapsed(substream); spin_lock(&chip->lock); @@ -3216,7 +3238,7 @@ snd_mask_t *f = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); snd_mask_t fmt; - snd_mask_any(&fmt); // Init the struct + snd_mask_any(&fmt); /* Init the struct */ if (c->min < 2) { fmt.bits[0] &= SNDRV_PCM_FMTBIT_S16_LE; return snd_mask_refine(f, &fmt); @@ -5143,15 +5165,15 @@ pm_private_data; - // (2) + /* (2) */ snd_pcm_suspend_all(chip->pcm); - // (3) + /* (3) */ snd_mychip_save_registers(chip); - // (4) + /* (4) */ snd_mychip_stop_hardware(chip); - // (5) + /* (5) */ snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); return 0; } @@ -5185,19 +5207,19 @@ pm_private_data; - // (2) + /* (2) */ pci_enable_device(chip->pci); - // (3) + /* (3) */ snd_mychip_reinit_chip(chip); - // (4) + /* (4) */ snd_mychip_restore_registers(chip); - // (5) + /* (5) */ snd_ac97_resume(chip->ac97); - // (6) + /* (6) */ snd_mychip_restart_chip(chip); - // (7) + /* (7) */ snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; } @@ -5314,19 +5336,15 @@ - - Here boot_devs is passed but simply ignored since we don't care - the number of parsed parameters. diff -Nru a/Documentation/sound/alsa/OSS-Emulation.txt b/Documentation/sound/alsa/OSS-Emulation.txt --- a/Documentation/sound/alsa/OSS-Emulation.txt 2005-01-02 23:05:38 -08:00 +++ b/Documentation/sound/alsa/OSS-Emulation.txt 2005-01-02 23:05:38 -08:00 @@ -164,16 +164,15 @@ The block and non-block options are used to change the behavior of opening the device file. -As default, ALSA behaves as defined in POSIX, i.e. blocks the file -when it's busy until the device becomes free (unless O_NONBLOCK is -specified). Some applications assume the non-block open behavior, -which are actually implemented in some real OSS drivers. + +As default, ALSA behaves as original OSS drivers, i.e. does not block +the file when it's busy. The -EBUSY error is returned in this case. This blocking behavior can be changed globally via nonblock_open -module option of snd-pcm-oss. For using the non-block mode as default +module option of snd-pcm-oss. For using the blocking mode as default for OSS devices, define like the following: - options snd-pcm-oss nonblock_open=1 + options snd-pcm-oss nonblock_open=0 The partial-frag and no-silence commands have been added recently. Both commands are for optimization use only. The former command diff -Nru a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h --- a/include/sound/ac97_codec.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ac97_codec.h 2005-01-02 23:05:38 -08:00 @@ -423,6 +423,7 @@ int (*build_specific) (ac97_t *ac97); int (*build_spdif) (ac97_t *ac97); int (*build_post_spdif) (ac97_t *ac97); + void (*resume) (ac97_t *ac97); }; struct _snd_ac97_bus_ops { diff -Nru a/include/sound/ad1848.h b/include/sound/ad1848.h --- a/include/sound/ad1848.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ad1848.h 2005-01-02 23:05:38 -08:00 @@ -157,10 +157,6 @@ /* exported functions */ void snd_ad1848_out(ad1848_t *chip, unsigned char reg, unsigned char value); -void snd_ad1848_dout(ad1848_t *chip, unsigned char reg, unsigned char value); -unsigned char snd_ad1848_in(ad1848_t *chip, unsigned char reg); -void snd_ad1848_mce_up(ad1848_t *chip); -void snd_ad1848_mce_down(ad1848_t *chip); int snd_ad1848_create(snd_card_t * card, unsigned long port, @@ -171,7 +167,6 @@ int snd_ad1848_pcm(ad1848_t * chip, int device, snd_pcm_t **rpcm); const snd_pcm_ops_t *snd_ad1848_get_pcm_ops(int direction); int snd_ad1848_mixer(ad1848_t * chip); -irqreturn_t snd_ad1848_interrupt(int irq, void *dev_id, struct pt_regs *regs); /* exported mixer stuffs */ enum { AD1848_MIX_SINGLE, AD1848_MIX_DOUBLE, AD1848_MIX_CAPTURE }; @@ -207,9 +202,5 @@ { return snd_ad1848_add_ctl(chip, c->name, c->index, c->type, c->private_value); } - -#ifdef CONFIG_SND_DEBUG -void snd_ad1848_debug(ad1848_t *chip); -#endif #endif /* __SOUND_AD1848_H */ diff -Nru a/include/sound/ainstr_fm.h b/include/sound/ainstr_fm.h --- a/include/sound/ainstr_fm.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ainstr_fm.h 2005-01-02 23:05:38 -08:00 @@ -122,8 +122,6 @@ #include "seq_instr.h" -extern char *snd_seq_fm_id; - int snd_seq_fm_init(snd_seq_kinstr_ops_t * ops, snd_seq_kinstr_ops_t * next); diff -Nru a/include/sound/ainstr_gf1.h b/include/sound/ainstr_gf1.h --- a/include/sound/ainstr_gf1.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ainstr_gf1.h 2005-01-02 23:05:38 -08:00 @@ -203,8 +203,6 @@ #include "seq_instr.h" -extern char *snd_seq_gf1_id; - typedef struct { void *private_data; int (*info)(void *private_data, gf1_info_t *info); diff -Nru a/include/sound/ainstr_iw.h b/include/sound/ainstr_iw.h --- a/include/sound/ainstr_iw.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ainstr_iw.h 2005-01-02 23:05:38 -08:00 @@ -351,8 +351,6 @@ #include "seq_instr.h" -extern char *snd_seq_iwffff_id; - typedef struct { void *private_data; int (*info)(void *private_data, iwffff_info_t *info); diff -Nru a/include/sound/ainstr_simple.h b/include/sound/ainstr_simple.h --- a/include/sound/ainstr_simple.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ainstr_simple.h 2005-01-02 23:05:38 -08:00 @@ -134,8 +134,6 @@ #include "seq_instr.h" -extern char *snd_seq_simple_id; - typedef struct { void *private_data; int (*info)(void *private_data, simple_instrument_info_t *info); diff -Nru a/include/sound/asound.h b/include/sound/asound.h --- a/include/sound/asound.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/asound.h 2005-01-02 23:05:38 -08:00 @@ -110,9 +110,10 @@ SNDRV_HWDEP_IFACE_MIXART, /* Digigram miXart cards */ SNDRV_HWDEP_IFACE_USX2Y, /* Tascam US122, US224 & US428 usb */ SNDRV_HWDEP_IFACE_EMUX_WAVETABLE, /* EmuX wavetable */ + SNDRV_HWDEP_IFACE_BLUETOOTH, /* Bluetooth audio */ /* Don't forget to change the following: */ - SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_EMUX_WAVETABLE, + SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_BLUETOOTH, }; struct sndrv_hwdep_info { diff -Nru a/include/sound/core.h b/include/sound/core.h --- a/include/sound/core.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/core.h 2005-01-02 23:05:38 -08:00 @@ -312,7 +312,6 @@ /* init.c */ -extern int snd_cards_count; extern unsigned int snd_cards_lock; extern snd_card_t *snd_cards[SNDRV_CARDS]; extern rwlock_t snd_card_rwlock; diff -Nru a/include/sound/cs4231.h b/include/sound/cs4231.h --- a/include/sound/cs4231.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/cs4231.h 2005-01-02 23:05:38 -08:00 @@ -309,7 +309,6 @@ void snd_cs4231_out(cs4231_t *chip, unsigned char reg, unsigned char val); unsigned char snd_cs4231_in(cs4231_t *chip, unsigned char reg); -void snd_cs4231_outm(cs4231_t *chip, unsigned char reg, unsigned char mask, unsigned char val); void snd_cs4236_ext_out(cs4231_t *chip, unsigned char reg, unsigned char val); unsigned char snd_cs4236_ext_in(cs4231_t *chip, unsigned char reg); void snd_cs4231_mce_up(cs4231_t *chip); @@ -363,9 +362,5 @@ int snd_cs4231_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo); int snd_cs4231_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol); int snd_cs4231_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol); - -#ifdef CONFIG_SND_DEBUG -void snd_cs4231_debug(cs4231_t *chip); -#endif #endif /* __SOUND_CS4231_H */ diff -Nru a/include/sound/emu10k1.h b/include/sound/emu10k1.h --- a/include/sound/emu10k1.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/emu10k1.h 2005-01-02 23:05:38 -08:00 @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -828,6 +829,7 @@ }; typedef struct { + /* mono, left, right x 8 sends (4 on emu10k1) */ unsigned char send_routing[3][8]; unsigned char send_volume[3][8]; unsigned short attn[3]; @@ -838,10 +840,10 @@ ((route[0] | (route[1] << 4) | (route[2] << 8) | (route[3] << 12)) << 16) #define snd_emu10k1_compose_audigy_fxrt1(route) \ -(((unsigned int)route[0] | ((unsigned int)route[1] << 8) | ((unsigned int)route[2] << 16) | ((unsigned int)route[3] << 12)) << 24) +((unsigned int)route[0] | ((unsigned int)route[1] << 8) | ((unsigned int)route[2] << 16) | ((unsigned int)route[3] << 24)) #define snd_emu10k1_compose_audigy_fxrt2(route) \ -(((unsigned int)route[4] | ((unsigned int)route[5] << 8) | ((unsigned int)route[6] << 16) | ((unsigned int)route[7] << 12)) << 24) +((unsigned int)route[4] | ((unsigned int)route[5] << 8) | ((unsigned int)route[6] << 16) | ((unsigned int)route[7] << 24)) typedef struct snd_emu10k1_memblk { snd_util_memblk_t mem; @@ -1000,6 +1002,8 @@ snd_pcm_substream_t *pcm_capture_mic_substream; snd_pcm_substream_t *pcm_capture_efx_substream; + snd_timer_t *timer; + emu10k1_midi_t midi; emu10k1_midi_t midi2; /* for audigy */ @@ -1019,6 +1023,7 @@ int snd_emu10k1_pcm_efx(emu10k1_t * emu, int device, snd_pcm_t ** rpcm); int snd_emu10k1_fx8010_pcm(emu10k1_t * emu, int device, snd_pcm_t ** rpcm); int snd_emu10k1_mixer(emu10k1_t * emu); +int snd_emu10k1_timer(emu10k1_t * emu, int device); int snd_emu10k1_fx8010_new(emu10k1_t *emu, int device, snd_hwdep_t ** rhwdep); irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs); @@ -1032,7 +1037,6 @@ /* I/O functions */ unsigned int snd_emu10k1_ptr_read(emu10k1_t * emu, unsigned int reg, unsigned int chn); void snd_emu10k1_ptr_write(emu10k1_t *emu, unsigned int reg, unsigned int chn, unsigned int data); -void snd_emu10k1_efx_write(emu10k1_t *emu, unsigned int pc, unsigned int data); unsigned int snd_emu10k1_efx_read(emu10k1_t *emu, unsigned int pc); void snd_emu10k1_intr_enable(emu10k1_t *emu, unsigned int intrenb); void snd_emu10k1_intr_disable(emu10k1_t *emu, unsigned int intrenb); @@ -1046,7 +1050,6 @@ unsigned short snd_emu10k1_ac97_read(ac97_t *ac97, unsigned short reg); void snd_emu10k1_ac97_write(ac97_t *ac97, unsigned short reg, unsigned short data); unsigned int snd_emu10k1_rate_to_pitch(unsigned int rate); -unsigned char snd_emu10k1_sum_vol_attn(unsigned int value); /* memory allocation */ snd_util_memblk_t *snd_emu10k1_alloc_pages(emu10k1_t *emu, snd_pcm_substream_t *substream); @@ -1334,7 +1337,7 @@ char name[128]; DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */ - unsigned int gpr_map[0x200]; /* initializers */ + u_int32_t __user *gpr_map; /* initializers */ unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */ emu10k1_fx8010_control_gpr_t __user *gpr_add_controls; /* GPR controls to add/replace */ @@ -1347,11 +1350,11 @@ emu10k1_fx8010_control_gpr_t __user *gpr_list_controls; /* listed GPR controls */ DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */ - unsigned int tram_data_map[0x100]; /* data initializers */ - unsigned int tram_addr_map[0x100]; /* map initializers */ + u_int32_t __user *tram_data_map; /* data initializers */ + u_int32_t __user *tram_addr_map; /* map initializers */ DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */ - unsigned int code[1024][2]; /* one instruction - 64 bits */ + u_int32_t __user *code; /* one instruction - 64 bits */ } emu10k1_fx8010_code_t; typedef struct { diff -Nru a/include/sound/es1688.h b/include/sound/es1688.h --- a/include/sound/es1688.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/es1688.h 2005-01-02 23:05:38 -08:00 @@ -108,9 +108,6 @@ */ void snd_es1688_mixer_write(es1688_t *chip, unsigned char reg, unsigned char data); -unsigned char snd_es1688_mixer_read(es1688_t *chip, unsigned char reg); - -irqreturn_t snd_es1688_interrupt(int irq, void *dev_id, struct pt_regs *regs); int snd_es1688_create(snd_card_t * card, unsigned long port, diff -Nru a/include/sound/gus.h b/include/sound/gus.h --- a/include/sound/gus.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/gus.h 2005-01-02 23:05:38 -08:00 @@ -598,10 +598,6 @@ /* gus_dma.c */ -void snd_gf1_dma_program(snd_gus_card_t * gus, unsigned int addr, - unsigned long buf_addr, unsigned int count, - unsigned int cmd); -void snd_gf1_dma_ack(snd_gus_card_t * gus); int snd_gf1_dma_init(snd_gus_card_t * gus); int snd_gf1_dma_done(snd_gus_card_t * gus); int snd_gf1_dma_transfer_block(snd_gus_card_t * gus, diff -Nru a/include/sound/sb.h b/include/sound/sb.h --- a/include/sound/sb.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/sb.h 2005-01-02 23:05:38 -08:00 @@ -311,10 +311,6 @@ int snd_sb16dsp_configure(sb_t *chip); /* sb16.c */ irqreturn_t snd_sb16dsp_interrupt(int irq, void *dev_id, struct pt_regs *regs); -int snd_sb16_playback_open(snd_pcm_substream_t *substream); -int snd_sb16_capture_open(snd_pcm_substream_t *substream); -int snd_sb16_playback_close(snd_pcm_substream_t *substream); -int snd_sb16_capture_close(snd_pcm_substream_t *substream); /* exported mixer stuffs */ enum { diff -Nru a/include/sound/snd_wavefront.h b/include/sound/snd_wavefront.h --- a/include/sound/snd_wavefront.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/snd_wavefront.h 2005-01-02 23:05:38 -08:00 @@ -107,7 +107,6 @@ }; extern void snd_wavefront_internal_interrupt (snd_wavefront_card_t *card); -extern int snd_wavefront_interrupt_bits (int irq); extern int snd_wavefront_detect_irq (snd_wavefront_t *dev) ; extern int snd_wavefront_check_irq (snd_wavefront_t *dev, int irq); extern int snd_wavefront_restart (snd_wavefront_t *dev); diff -Nru a/include/sound/trident.h b/include/sound/trident.h --- a/include/sound/trident.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/trident.h 2005-01-02 23:05:38 -08:00 @@ -457,27 +457,23 @@ int pcm_spdif_device, int max_wavetable_size, trident_t ** rtrident); -int snd_trident_free(trident_t *trident); void snd_trident_gameport(trident_t *trident); int snd_trident_pcm(trident_t * trident, int device, snd_pcm_t **rpcm); int snd_trident_foldback_pcm(trident_t * trident, int device, snd_pcm_t **rpcm); int snd_trident_spdif_pcm(trident_t * trident, int device, snd_pcm_t **rpcm); int snd_trident_attach_synthesizer(trident_t * trident); -int snd_trident_detach_synthesizer(trident_t * trident); snd_trident_voice_t *snd_trident_alloc_voice(trident_t * trident, int type, int client, int port); void snd_trident_free_voice(trident_t * trident, snd_trident_voice_t *voice); void snd_trident_start_voice(trident_t * trident, unsigned int voice); void snd_trident_stop_voice(trident_t * trident, unsigned int voice); void snd_trident_write_voice_regs(trident_t * trident, snd_trident_voice_t *voice); -void snd_trident_clear_voices(trident_t * trident, unsigned short v_min, unsigned short v_max); /* TLB memory allocation */ snd_util_memblk_t *snd_trident_alloc_pages(trident_t *trident, snd_pcm_substream_t *substream); int snd_trident_free_pages(trident_t *trident, snd_util_memblk_t *blk); snd_util_memblk_t *snd_trident_synth_alloc(trident_t *trident, unsigned int size); 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 __user *data, int size); #endif /* __SOUND_TRIDENT_H */ diff -Nru a/include/sound/version.h b/include/sound/version.h --- a/include/sound/version.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/version.h 2005-01-02 23:05:38 -08:00 @@ -1,3 +1,3 @@ /* include/version.h. Generated by configure. */ -#define CONFIG_SND_VERSION "1.0.6" -#define CONFIG_SND_DATE " (Sun Aug 15 07:17:53 2004 UTC)" +#define CONFIG_SND_VERSION "1.0.7" +#define CONFIG_SND_DATE " (Thu Nov 11 10:36:46 2004 UTC)" diff -Nru a/include/sound/ymfpci.h b/include/sound/ymfpci.h --- a/include/sound/ymfpci.h 2005-01-02 23:05:38 -08:00 +++ b/include/sound/ymfpci.h 2005-01-02 23:05:38 -08:00 @@ -389,9 +389,6 @@ int snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch); int snd_ymfpci_timer(ymfpci_t *chip, int device); -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); - #if defined(CONFIG_GAMEPORT) || (defined(MODULE) && defined(CONFIG_GAMEPORT_MODULE)) #define SUPPORT_JOYSTICK #endif diff -Nru a/sound/Kconfig b/sound/Kconfig --- a/sound/Kconfig 2005-01-02 23:05:38 -08:00 +++ b/sound/Kconfig 2005-01-02 23:05:38 -08:00 @@ -70,7 +70,7 @@ endmenu menu "Open Sound System" - depends on SOUND!=n && (BROKEN || !(SPARC32 || SPARC64)) + depends on SOUND!=n && (BROKEN || (!SPARC32 && !SPARC64)) config SOUND_PRIME tristate "Open Sound System (DEPRECATED)" diff -Nru a/sound/core/Kconfig b/sound/core/Kconfig --- a/sound/core/Kconfig 2005-01-02 23:05:38 -08:00 +++ b/sound/core/Kconfig 2005-01-02 23:05:38 -08:00 @@ -83,7 +83,7 @@ config SND_BIT32_EMUL tristate "Emulation for 32-bit applications" - depends on SND && (MIPS64 || SPARC64 || PPC64 || X86_64 && IA32_EMULATION) + depends on SND && COMPAT select SND_PCM select SND_RAWMIDI select SND_TIMER diff -Nru a/sound/core/info.c b/sound/core/info.c --- a/sound/core/info.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/info.c 2005-01-02 23:05:38 -08:00 @@ -20,18 +20,14 @@ */ #include -#include #include #include #include #include -#include -#include - #include -#include #include #include +#include #include #include #include @@ -962,18 +958,10 @@ static void snd_info_version_read(snd_info_entry_t *entry, snd_info_buffer_t * buffer) { - static char *kernel_version = system_utsname.release; - snd_iprintf(buffer, - "Advanced Linux Sound Architecture Driver Version " CONFIG_SND_VERSION CONFIG_SND_DATE ".\n" - "Compiled on " __DATE__ " for kernel %s" -#ifdef CONFIG_SMP - " (SMP)" -#endif -#ifdef MODVERSIONS - " with versioned symbols" -#endif - ".\n", kernel_version); + "Advanced Linux Sound Architecture Driver Version " + CONFIG_SND_VERSION CONFIG_SND_DATE ".\n" + ); } static int __init snd_info_version_init(void) diff -Nru a/sound/core/init.c b/sound/core/init.c --- a/sound/core/init.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/init.c 2005-01-02 23:05:38 -08:00 @@ -37,7 +37,6 @@ struct snd_shutdown_f_ops *next; }; -int snd_cards_count = 0; unsigned int snd_cards_lock = 0; /* locked for registering/using */ snd_card_t *snd_cards[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS-1)] = NULL}; rwlock_t snd_card_rwlock = RW_LOCK_UNLOCKED; @@ -251,7 +250,6 @@ return -EINVAL; write_lock(&snd_card_rwlock); snd_cards[card->number] = NULL; - snd_cards_count--; write_unlock(&snd_card_rwlock); #ifdef CONFIG_PM @@ -441,7 +439,6 @@ if (card->id[0] == '\0') choose_default_id(card); snd_cards[card->number] = card; - snd_cards_count++; write_unlock(&snd_card_rwlock); if ((err = snd_info_card_register(card)) < 0) { snd_printd("unable to create card info\n"); diff -Nru a/sound/core/memory.c b/sound/core/memory.c --- a/sound/core/memory.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/memory.c 2005-01-02 23:05:38 -08:00 @@ -267,7 +267,7 @@ size_t c = count; if (c > sizeof(buf)) c = sizeof(buf); - memcpy_fromio(buf, src, c); + memcpy_fromio(buf, (void __iomem *)src, c); if (copy_to_user(dst, buf, c)) return -EFAULT; count -= c; diff -Nru a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c --- a/sound/core/oss/pcm_oss.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/oss/pcm_oss.c 2005-01-02 23:05:38 -08:00 @@ -46,7 +46,7 @@ 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 nonblock_open = 1; MODULE_AUTHOR("Jaroslav Kysela , Abramo Bagnara "); MODULE_DESCRIPTION("PCM OSS emulation for ALSA."); diff -Nru a/sound/core/pcm_memory.c b/sound/core/pcm_memory.c --- a/sound/core/pcm_memory.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/pcm_memory.c 2005-01-02 23:05:38 -08:00 @@ -37,7 +37,7 @@ module_param(maximum_substreams, int, 0444); MODULE_PARM_DESC(maximum_substreams, "Maximum substreams with preallocated DMA memory."); -const static size_t snd_minimum_buffer = 16384; +static const size_t snd_minimum_buffer = 16384; /* diff -Nru a/sound/core/seq/instr/ainstr_fm.c b/sound/core/seq/instr/ainstr_fm.c --- a/sound/core/seq/instr/ainstr_fm.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/instr/ainstr_fm.c 2005-01-02 23:05:38 -08:00 @@ -30,8 +30,6 @@ MODULE_DESCRIPTION("Advanced Linux Sound Architecture FM Instrument support."); MODULE_LICENSE("GPL"); -char *snd_seq_fm_id = SNDRV_SEQ_INSTR_ID_OPL2_3; - static int snd_seq_fm_put(void *private_data, snd_seq_kinstr_t *instr, char __user *instr_data, long len, int atomic, int cmd) { @@ -129,7 +127,7 @@ memset(ops, 0, sizeof(*ops)); // ops->private_data = private_data; ops->add_len = sizeof(fm_instrument_t); - ops->instr_type = snd_seq_fm_id; + ops->instr_type = SNDRV_SEQ_INSTR_ID_OPL2_3; ops->put = snd_seq_fm_put; ops->get = snd_seq_fm_get; ops->get_size = snd_seq_fm_get_size; @@ -155,5 +153,4 @@ module_init(alsa_ainstr_fm_init) module_exit(alsa_ainstr_fm_exit) -EXPORT_SYMBOL(snd_seq_fm_id); EXPORT_SYMBOL(snd_seq_fm_init); diff -Nru a/sound/core/seq/instr/ainstr_gf1.c b/sound/core/seq/instr/ainstr_gf1.c --- a/sound/core/seq/instr/ainstr_gf1.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/instr/ainstr_gf1.c 2005-01-02 23:05:38 -08:00 @@ -31,8 +31,6 @@ MODULE_DESCRIPTION("Advanced Linux Sound Architecture GF1 (GUS) Patch support."); MODULE_LICENSE("GPL"); -char *snd_seq_gf1_id = SNDRV_SEQ_INSTR_ID_GUS_PATCH; - static unsigned int snd_seq_gf1_size(unsigned int size, unsigned int format) { unsigned int result = size; @@ -331,7 +329,7 @@ ops->private_data = private_data; ops->kops.private_data = ops; ops->kops.add_len = sizeof(gf1_instrument_t); - ops->kops.instr_type = snd_seq_gf1_id; + ops->kops.instr_type = SNDRV_SEQ_INSTR_ID_GUS_PATCH; ops->kops.put = snd_seq_gf1_put; ops->kops.get = snd_seq_gf1_get; ops->kops.get_size = snd_seq_gf1_get_size; @@ -357,5 +355,4 @@ module_init(alsa_ainstr_gf1_init) module_exit(alsa_ainstr_gf1_exit) -EXPORT_SYMBOL(snd_seq_gf1_id); EXPORT_SYMBOL(snd_seq_gf1_init); diff -Nru a/sound/core/seq/instr/ainstr_iw.c b/sound/core/seq/instr/ainstr_iw.c --- a/sound/core/seq/instr/ainstr_iw.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/instr/ainstr_iw.c 2005-01-02 23:05:38 -08:00 @@ -31,8 +31,6 @@ MODULE_DESCRIPTION("Advanced Linux Sound Architecture IWFFFF support."); MODULE_LICENSE("GPL"); -char *snd_seq_iwffff_id = SNDRV_SEQ_INSTR_ID_INTERWAVE; - static unsigned int snd_seq_iwffff_size(unsigned int size, unsigned int format) { unsigned int result = size; @@ -595,7 +593,7 @@ ops->private_data = private_data; ops->kops.private_data = ops; ops->kops.add_len = sizeof(iwffff_instrument_t); - ops->kops.instr_type = snd_seq_iwffff_id; + ops->kops.instr_type = SNDRV_SEQ_INSTR_ID_INTERWAVE; ops->kops.put = snd_seq_iwffff_put; ops->kops.get = snd_seq_iwffff_get; ops->kops.get_size = snd_seq_iwffff_get_size; @@ -621,5 +619,4 @@ module_init(alsa_ainstr_iw_init) module_exit(alsa_ainstr_iw_exit) -EXPORT_SYMBOL(snd_seq_iwffff_id); EXPORT_SYMBOL(snd_seq_iwffff_init); diff -Nru a/sound/core/seq/instr/ainstr_simple.c b/sound/core/seq/instr/ainstr_simple.c --- a/sound/core/seq/instr/ainstr_simple.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/instr/ainstr_simple.c 2005-01-02 23:05:38 -08:00 @@ -31,8 +31,6 @@ MODULE_DESCRIPTION("Advanced Linux Sound Architecture Simple Instrument support."); MODULE_LICENSE("GPL"); -char *snd_seq_simple_id = SNDRV_SEQ_INSTR_ID_SIMPLE; - static unsigned int snd_seq_simple_size(unsigned int size, unsigned int format) { unsigned int result = size; @@ -188,7 +186,7 @@ ops->private_data = private_data; ops->kops.private_data = ops; ops->kops.add_len = sizeof(simple_instrument_t); - ops->kops.instr_type = snd_seq_simple_id; + ops->kops.instr_type = SNDRV_SEQ_INSTR_ID_SIMPLE; ops->kops.put = snd_seq_simple_put; ops->kops.get = snd_seq_simple_get; ops->kops.get_size = snd_seq_simple_get_size; @@ -214,5 +212,4 @@ module_init(alsa_ainstr_simple_init) module_exit(alsa_ainstr_simple_exit) -EXPORT_SYMBOL(snd_seq_simple_id); EXPORT_SYMBOL(snd_seq_simple_init); diff -Nru a/sound/core/seq/oss/seq_oss_timer.c b/sound/core/seq/oss/seq_oss_timer.c --- a/sound/core/seq/oss/seq_oss_timer.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/oss/seq_oss_timer.c 2005-01-02 23:05:38 -08:00 @@ -149,7 +149,7 @@ ev.queue = dp->queue; ev.data.queue.queue = dp->queue; ev.data.queue.param.value = value; - return snd_seq_kernel_client_dispatch(dp->cseq, &ev, 0, 0); + return snd_seq_kernel_client_dispatch(dp->cseq, &ev, 1, 0); } /* diff -Nru a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c --- a/sound/core/seq/seq_clientmgr.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/seq_clientmgr.c 2005-01-02 23:05:38 -08:00 @@ -904,7 +904,7 @@ return -ENXIO; /* queue is not allocated */ /* allocate an event cell */ - err = snd_seq_event_dup(client->pool, event, &cell, !blocking && !atomic, file); + err = snd_seq_event_dup(client->pool, event, &cell, !blocking || atomic, file); if (err < 0) return err; diff -Nru a/sound/core/seq/seq_midi_emul.c b/sound/core/seq/seq_midi_emul.c --- a/sound/core/seq/seq_midi_emul.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/seq/seq_midi_emul.c 2005-01-02 23:05:38 -08:00 @@ -549,12 +549,12 @@ } else if (buf[5] == 0x01 && buf[6] == 0x30) { /* reverb mode */ - parsed = SNDRV_MIDI_SYSEX_GS_CHORUS_MODE; + parsed = SNDRV_MIDI_SYSEX_GS_REVERB_MODE; chset->gs_reverb_mode = buf[7]; } else if (buf[5] == 0x01 && buf[6] == 0x38) { /* chorus mode */ - parsed = SNDRV_MIDI_SYSEX_GS_REVERB_MODE; + parsed = SNDRV_MIDI_SYSEX_GS_CHORUS_MODE; chset->gs_chorus_mode = buf[7]; } else if (buf[5] == 0x00 && buf[6] == 0x04) { diff -Nru a/sound/core/sound.c b/sound/core/sound.c --- a/sound/core/sound.c 2005-01-02 23:05:38 -08:00 +++ b/sound/core/sound.c 2005-01-02 23:05:38 -08:00 @@ -411,7 +411,6 @@ EXPORT_SYMBOL(copy_to_user_fromio); EXPORT_SYMBOL(copy_from_user_toio); /* init.c */ -EXPORT_SYMBOL(snd_cards_count); EXPORT_SYMBOL(snd_cards); #if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE) EXPORT_SYMBOL(snd_mixer_oss_notify_callback); diff -Nru a/sound/isa/ad1816a/ad1816a_lib.c b/sound/isa/ad1816a/ad1816a_lib.c --- a/sound/isa/ad1816a/ad1816a_lib.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/ad1816a/ad1816a_lib.c 2005-01-02 23:05:38 -08:00 @@ -46,20 +46,20 @@ return -EBUSY; } -inline unsigned char snd_ad1816a_in(ad1816a_t *chip, unsigned char reg) +static inline unsigned char snd_ad1816a_in(ad1816a_t *chip, unsigned char reg) { snd_ad1816a_busy_wait(chip); return inb(AD1816A_REG(reg)); } -inline void snd_ad1816a_out(ad1816a_t *chip, unsigned char reg, +static inline void snd_ad1816a_out(ad1816a_t *chip, unsigned char reg, unsigned char value) { snd_ad1816a_busy_wait(chip); outb(value, AD1816A_REG(reg)); } -inline void snd_ad1816a_out_mask(ad1816a_t *chip, unsigned char reg, +static inline void snd_ad1816a_out_mask(ad1816a_t *chip, unsigned char reg, unsigned char mask, unsigned char value) { snd_ad1816a_out(chip, reg, @@ -372,6 +372,7 @@ .fifo_size = 0, }; +#if 0 /* not used now */ static int snd_ad1816a_timer_close(snd_timer_t *timer) { ad1816a_t *chip = snd_timer_chip(timer); @@ -435,6 +436,7 @@ .start = snd_ad1816a_timer_start, .stop = snd_ad1816a_timer_stop, }; +#endif /* not used now */ static int snd_ad1816a_playback_open(snd_pcm_substream_t *substream) @@ -692,6 +694,7 @@ return 0; } +#if 0 /* not used now */ static void snd_ad1816a_timer_free(snd_timer_t *timer) { ad1816a_t *chip = timer->private_data; @@ -720,6 +723,7 @@ *rtimer = timer; return 0; } +#endif /* not used now */ /* * diff -Nru a/sound/isa/ad1848/ad1848_lib.c b/sound/isa/ad1848/ad1848_lib.c --- a/sound/isa/ad1848/ad1848_lib.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/ad1848/ad1848_lib.c 2005-01-02 23:05:38 -08:00 @@ -119,9 +119,8 @@ #endif } -void snd_ad1848_dout(ad1848_t *chip, - unsigned char reg, - unsigned char value) +static void snd_ad1848_dout(ad1848_t *chip, + unsigned char reg, unsigned char value) { int timeout; @@ -132,7 +131,7 @@ mb(); } -unsigned char snd_ad1848_in(ad1848_t *chip, unsigned char reg) +static unsigned char snd_ad1848_in(ad1848_t *chip, unsigned char reg) { int timeout; @@ -147,9 +146,9 @@ return inb(AD1848P(chip, REG)); } -#ifdef CONFIG_SND_DEBUG +#if 0 -void snd_ad1848_debug(ad1848_t *chip) +static void snd_ad1848_debug(ad1848_t *chip) { printk("AD1848 REGS: INDEX = 0x%02x ", inb(AD1848P(chip, REGSEL))); printk(" STATUS = 0x%02x\n", inb(AD1848P(chip, STATUS))); @@ -177,7 +176,7 @@ * AD1848 detection / MCE routines */ -void snd_ad1848_mce_up(ad1848_t *chip) +static void snd_ad1848_mce_up(ad1848_t *chip) { unsigned long flags; int timeout; @@ -198,7 +197,7 @@ spin_unlock_irqrestore(&chip->reg_lock, flags); } -void snd_ad1848_mce_down(ad1848_t *chip) +static void snd_ad1848_mce_down(ad1848_t *chip) { unsigned long flags; int timeout; @@ -584,7 +583,7 @@ return 0; } -irqreturn_t snd_ad1848_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t snd_ad1848_interrupt(int irq, void *dev_id, struct pt_regs *regs) { ad1848_t *chip = dev_id; @@ -1264,12 +1263,7 @@ return 0; } -EXPORT_SYMBOL(snd_ad1848_in); EXPORT_SYMBOL(snd_ad1848_out); -EXPORT_SYMBOL(snd_ad1848_dout); -EXPORT_SYMBOL(snd_ad1848_mce_up); -EXPORT_SYMBOL(snd_ad1848_mce_down); -EXPORT_SYMBOL(snd_ad1848_interrupt); EXPORT_SYMBOL(snd_ad1848_create); EXPORT_SYMBOL(snd_ad1848_pcm); EXPORT_SYMBOL(snd_ad1848_get_pcm_ops); diff -Nru a/sound/isa/als100.c b/sound/isa/als100.c --- a/sound/isa/als100.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/als100.c 2005-01-02 23:05:38 -08:00 @@ -94,6 +94,8 @@ { .id = "ALS0120", .devs = { { "@@@2001" }, { "@X@2001" }, { "@H@2001" } } }, /* ALS200 */ { .id = "ALS0200", .devs = { { "@@@0020" }, { "@X@0020" }, { "@H@0001" } } }, + /* ALS200 OEM */ + { .id = "ALS0200", .devs = { { "@@@0020" }, { "@X@0020" }, { "@H@0020" } } }, /* RTL3000 */ { .id = "RTL3000", .devs = { { "@@@2001" }, { "@X@2001" }, { "@H@2001" } } }, { .id = "", } /* end */ diff -Nru a/sound/isa/cs423x/cs4231_lib.c b/sound/isa/cs423x/cs4231_lib.c --- a/sound/isa/cs423x/cs4231_lib.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/cs423x/cs4231_lib.c 2005-01-02 23:05:38 -08:00 @@ -166,8 +166,8 @@ #endif } -void snd_cs4231_outm(cs4231_t *chip, unsigned char reg, - unsigned char mask, unsigned char value) +static void snd_cs4231_outm(cs4231_t *chip, unsigned char reg, + unsigned char mask, unsigned char value) { int timeout; unsigned char tmp; @@ -271,9 +271,9 @@ #endif } -#ifdef CONFIG_SND_DEBUG +#if 0 -void snd_cs4231_debug(cs4231_t *chip) +static void snd_cs4231_debug(cs4231_t *chip) { printk("CS4231 REGS: INDEX = 0x%02x ", cs4231_inb(chip, CS4231P(REGSEL))); printk(" STATUS = 0x%02x\n", cs4231_inb(chip, CS4231P(STATUS))); @@ -356,7 +356,6 @@ { unsigned long flags; int timeout; - signed long time; snd_cs4231_busy_wait(chip); #if 0 @@ -390,34 +389,26 @@ #if 0 printk("(2) timeout = %i, jiffies = %li\n", timeout, jiffies); #endif - timeout = HZ / 4 / 2; - time = 2; + /* in 10 ms increments, check condition, up to 250 ms */ + timeout = 25; while (snd_cs4231_in(chip, CS4231_TEST_INIT) & CS4231_CALIB_IN_PROGRESS) { - set_current_state(TASK_INTERRUPTIBLE); - time = schedule_timeout(time); - if (time > 0) - continue; - time = 2; if (--timeout < 0) { snd_printk("mce_down - auto calibration time out (2)\n"); return; } + msleep(10); } #if 0 printk("(3) jiffies = %li\n", jiffies); #endif - timeout = HZ / 10 / 2; - time = 2; + /* in 10 ms increments, check condition, up to 100 ms */ + timeout = 10; while (cs4231_inb(chip, CS4231P(REGSEL)) & CS4231_INIT) { - set_current_state(TASK_INTERRUPTIBLE); - time = schedule_timeout(time); - if (time > 0) - continue; - time = 2; if (--timeout < 0) { snd_printk(KERN_ERR "mce_down - auto calibration time out (3)\n"); return; } + msleep(10); } #if 0 printk("(4) jiffies = %li\n", jiffies); @@ -1035,7 +1026,7 @@ */ -int snd_cs4231_probe(cs4231_t *chip) +static int snd_cs4231_probe(cs4231_t *chip) { unsigned long flags; int i, id, rev; @@ -1943,7 +1934,6 @@ EXPORT_SYMBOL(snd_cs4231_out); EXPORT_SYMBOL(snd_cs4231_in); -EXPORT_SYMBOL(snd_cs4231_outm); EXPORT_SYMBOL(snd_cs4236_ext_out); EXPORT_SYMBOL(snd_cs4236_ext_in); EXPORT_SYMBOL(snd_cs4231_mce_up); diff -Nru a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c --- a/sound/isa/cs423x/cs4236.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/cs423x/cs4236.c 2005-01-02 23:05:38 -08:00 @@ -242,6 +242,8 @@ { .id = "CSCd937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } }, /* CS4235 without MPU401 */ { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" } } }, + /* Unknown SiS530 - CS4235 */ + { .id = "CSC4825", .devs = { { "CSC0100" }, { "CSC0110" } } }, /* IBM IntelliStation M Pro 6898 11U - CS4236B */ { .id = "CSCe835", .devs = { { "CSC0000" }, { "CSC0010" } } }, /* IBM PC 300PL Onboard - CS4236B */ diff -Nru a/sound/isa/es1688/es1688_lib.c b/sound/isa/es1688/es1688_lib.c --- a/sound/isa/es1688/es1688_lib.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/es1688/es1688_lib.c 2005-01-02 23:05:38 -08:00 @@ -70,7 +70,7 @@ return snd_es1688_dsp_command(chip, data); } -int snd_es1688_read(es1688_t *chip, unsigned char reg) +static int snd_es1688_read(es1688_t *chip, unsigned char reg) { /* Read a byte from an extended mode register of ES1688 */ if (!snd_es1688_dsp_command(chip, 0xc0)) @@ -89,7 +89,7 @@ udelay(10); } -unsigned char snd_es1688_mixer_read(es1688_t *chip, unsigned char reg) +static unsigned char snd_es1688_mixer_read(es1688_t *chip, unsigned char reg) { unsigned char result; @@ -479,7 +479,7 @@ return snd_es1688_trigger(chip, cmd, 0x0f); } -irqreturn_t snd_es1688_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t snd_es1688_interrupt(int irq, void *dev_id, struct pt_regs *regs) { es1688_t *chip = dev_id; @@ -1041,8 +1041,6 @@ } EXPORT_SYMBOL(snd_es1688_mixer_write); -EXPORT_SYMBOL(snd_es1688_mixer_read); -EXPORT_SYMBOL(snd_es1688_interrupt); EXPORT_SYMBOL(snd_es1688_create); EXPORT_SYMBOL(snd_es1688_pcm); EXPORT_SYMBOL(snd_es1688_mixer); diff -Nru a/sound/isa/es18xx.c b/sound/isa/es18xx.c --- a/sound/isa/es18xx.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/es18xx.c 2005-01-02 23:05:38 -08:00 @@ -268,7 +268,7 @@ return ret; } -inline void snd_es18xx_mixer_write(es18xx_t *chip, +static inline void snd_es18xx_mixer_write(es18xx_t *chip, unsigned char reg, unsigned char data) { unsigned long flags; @@ -281,7 +281,7 @@ #endif } -inline int snd_es18xx_mixer_read(es18xx_t *chip, unsigned char reg) +static inline int snd_es18xx_mixer_read(es18xx_t *chip, unsigned char reg) { unsigned long flags; int data; @@ -1569,7 +1569,7 @@ snd_pcm_lib_preallocate_free_for_all(pcm); } -int __devinit snd_es18xx_pcm(es18xx_t *chip, int device, snd_pcm_t ** rpcm) +static int __devinit snd_es18xx_pcm(es18xx_t *chip, int device, snd_pcm_t ** rpcm) { snd_pcm_t *pcm; char str[16]; diff -Nru a/sound/isa/gus/gus_dma.c b/sound/isa/gus/gus_dma.c --- a/sound/isa/gus/gus_dma.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/gus/gus_dma.c 2005-01-02 23:05:38 -08:00 @@ -25,7 +25,7 @@ #include #include -void snd_gf1_dma_ack(snd_gus_card_t * gus) +static void snd_gf1_dma_ack(snd_gus_card_t * gus) { unsigned long flags; @@ -35,11 +35,11 @@ spin_unlock_irqrestore(&gus->reg_lock, flags); } -void snd_gf1_dma_program(snd_gus_card_t * gus, - unsigned int addr, - unsigned long buf_addr, - unsigned int count, - unsigned int cmd) +static void snd_gf1_dma_program(snd_gus_card_t * gus, + unsigned int addr, + unsigned long buf_addr, + unsigned int count, + unsigned int cmd) { unsigned long flags; unsigned int address; diff -Nru a/sound/isa/gus/gus_sample.c b/sound/isa/gus/gus_sample.c --- a/sound/isa/gus/gus_sample.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/gus/gus_sample.c 2005-01-02 23:05:38 -08:00 @@ -42,7 +42,7 @@ instr = snd_seq_instr_find(gus->gf1.ilist, &v->instr, 0, 1); if (instr != NULL) { if (instr->ops) { - if (instr->ops->instr_type == snd_seq_simple_id) + if (!strcmp(instr->ops->instr_type, SNDRV_SEQ_INSTR_ID_SIMPLE)) snd_gf1_simple_init(v); } snd_seq_instr_free_use(gus->gf1.ilist, instr); diff -Nru a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c --- a/sound/isa/opl3sa2.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/opl3sa2.c 2005-01-02 23:05:38 -08:00 @@ -341,7 +341,7 @@ return 0; } -int snd_opl3sa2_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_opl3sa2_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) { opl3sa2_t *chip = snd_kcontrol_chip(kcontrol); unsigned long flags; @@ -358,7 +358,7 @@ return 0; } -int snd_opl3sa2_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_opl3sa2_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) { opl3sa2_t *chip = snd_kcontrol_chip(kcontrol); unsigned long flags; @@ -388,7 +388,7 @@ .get = snd_opl3sa2_get_double, .put = snd_opl3sa2_put_double, \ .private_value = left_reg | (right_reg << 8) | (shift_left << 16) | (shift_right << 19) | (mask << 24) | (invert << 22) } -int snd_opl3sa2_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) +static int snd_opl3sa2_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) { int mask = (kcontrol->private_value >> 24) & 0xff; @@ -399,7 +399,7 @@ return 0; } -int snd_opl3sa2_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_opl3sa2_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) { opl3sa2_t *chip = snd_kcontrol_chip(kcontrol); unsigned long flags; @@ -421,7 +421,7 @@ return 0; } -int snd_opl3sa2_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) +static int snd_opl3sa2_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) { opl3sa2_t *chip = snd_kcontrol_chip(kcontrol); unsigned long flags; diff -Nru a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c --- a/sound/isa/opti9xx/opti92x-ad1848.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/opti9xx/opti92x-ad1848.c 2005-01-02 23:05:38 -08:00 @@ -1095,7 +1095,7 @@ spin_unlock_irqrestore(&chip->lock, flags); } -irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id, struct pt_regs *regs) { opti93x_t *codec = dev_id; unsigned char status; @@ -1263,9 +1263,9 @@ } } -int snd_opti93x_create(snd_card_t *card, opti9xx_t *chip, - int dma1, int dma2, - opti93x_t **rcodec) +static int snd_opti93x_create(snd_card_t *card, opti9xx_t *chip, + int dma1, int dma2, + opti93x_t **rcodec) { static snd_device_ops_t ops = { .dev_free = snd_opti93x_dev_free, @@ -1359,7 +1359,7 @@ snd_pcm_lib_preallocate_free_for_all(pcm); } -int snd_opti93x_pcm(opti93x_t *codec, int device, snd_pcm_t **rpcm) +static int snd_opti93x_pcm(opti93x_t *codec, int device, snd_pcm_t **rpcm) { int error; snd_pcm_t *pcm; @@ -1603,7 +1603,7 @@ } }; -int snd_opti93x_mixer(opti93x_t *chip) +static int snd_opti93x_mixer(opti93x_t *chip) { snd_card_t *card; snd_kcontrol_new_t knew; diff -Nru a/sound/isa/sb/emu8000_callback.c b/sound/isa/sb/emu8000_callback.c --- a/sound/isa/sb/emu8000_callback.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/sb/emu8000_callback.c 2005-01-02 23:05:38 -08:00 @@ -528,6 +528,10 @@ emu8000_t *hw; hw = emu->hw; + /* skip header */ + buf += 16; + len -= 16; + switch (type) { case SNDRV_EMU8000_LOAD_CHORUS_FX: return snd_emu8000_load_chorus_fx(hw, mode, buf, len); diff -Nru a/sound/isa/sb/sb16_main.c b/sound/isa/sb/sb16_main.c --- a/sound/isa/sb/sb16_main.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/sb/sb16_main.c 2005-01-02 23:05:38 -08:00 @@ -509,7 +509,7 @@ * open/close */ -int snd_sb16_playback_open(snd_pcm_substream_t * substream) +static int snd_sb16_playback_open(snd_pcm_substream_t * substream) { unsigned long flags; sb_t *chip = snd_pcm_substream_chip(substream); @@ -566,7 +566,7 @@ return 0; } -int snd_sb16_playback_close(snd_pcm_substream_t * substream) +static int snd_sb16_playback_close(snd_pcm_substream_t * substream) { unsigned long flags; sb_t *chip = snd_pcm_substream_chip(substream); @@ -579,7 +579,7 @@ return 0; } -int snd_sb16_capture_open(snd_pcm_substream_t * substream) +static int snd_sb16_capture_open(snd_pcm_substream_t * substream) { unsigned long flags; sb_t *chip = snd_pcm_substream_chip(substream); @@ -636,7 +636,7 @@ return 0; } -int snd_sb16_capture_close(snd_pcm_substream_t * substream) +static int snd_sb16_capture_close(snd_pcm_substream_t * substream) { unsigned long flags; sb_t *chip = snd_pcm_substream_chip(substream); @@ -728,7 +728,7 @@ return change; } -snd_kcontrol_new_t snd_sb16_dma_control = { +static snd_kcontrol_new_t snd_sb16_dma_control = { .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = "16-bit DMA Allocation", .info = snd_sb16_dma_control_info, diff -Nru a/sound/isa/sb/sb8_main.c b/sound/isa/sb/sb8_main.c --- a/sound/isa/sb/sb8_main.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/sb/sb8_main.c 2005-01-02 23:05:38 -08:00 @@ -425,7 +425,7 @@ * */ -int snd_sb8_open(snd_pcm_substream_t *substream) +static int snd_sb8_open(snd_pcm_substream_t *substream) { sb_t *chip = snd_pcm_substream_chip(substream); snd_pcm_runtime_t *runtime = substream->runtime; @@ -471,7 +471,7 @@ return 0; } -int snd_sb8_close(snd_pcm_substream_t *substream) +static int snd_sb8_close(snd_pcm_substream_t *substream) { unsigned long flags; sb_t *chip = snd_pcm_substream_chip(substream); diff -Nru a/sound/isa/sb/sb_common.c b/sound/isa/sb/sb_common.c --- a/sound/isa/sb/sb_common.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/sb/sb_common.c 2005-01-02 23:05:38 -08:00 @@ -92,7 +92,7 @@ return -ENODEV; } -int snd_sbdsp_version(sb_t * chip) +static int snd_sbdsp_version(sb_t * chip) { unsigned int result = -ENODEV; diff -Nru a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c --- a/sound/isa/wavefront/wavefront.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/wavefront/wavefront.c 2005-01-02 23:05:38 -08:00 @@ -279,7 +279,7 @@ return IRQ_HANDLED; } -snd_hwdep_t * __devinit +static snd_hwdep_t * __devinit snd_wavefront_new_synth (snd_card_t *card, int hw_dev, snd_wavefront_card_t *acard) @@ -305,7 +305,7 @@ return wavefront_synth; } -snd_hwdep_t * __devinit +static snd_hwdep_t * __devinit snd_wavefront_new_fx (snd_card_t *card, int hw_dev, snd_wavefront_card_t *acard, @@ -332,7 +332,7 @@ static snd_wavefront_mpu_id internal_id = internal_mpu; static snd_wavefront_mpu_id external_id = external_mpu; -snd_rawmidi_t * __devinit +static snd_rawmidi_t * __devinit snd_wavefront_new_midi (snd_card_t *card, int midi_dev, snd_wavefront_card_t *acard, diff -Nru a/sound/isa/wavefront/wavefront_synth.c b/sound/isa/wavefront/wavefront_synth.c --- a/sound/isa/wavefront/wavefront_synth.c 2005-01-02 23:05:38 -08:00 +++ b/sound/isa/wavefront/wavefront_synth.c 2005-01-02 23:05:38 -08:00 @@ -32,58 +32,58 @@ #include #include -int wf_raw = 0; /* we normally check for "raw state" to firmware - loading. if non-zero, then during driver loading, the - state of the board is ignored, and we reset the - board and load the firmware anyway. - */ +static int wf_raw = 0; /* we normally check for "raw state" to firmware + loading. if non-zero, then during driver loading, the + state of the board is ignored, and we reset the + board and load the firmware anyway. + */ -int fx_raw = 1; /* if this is zero, we'll leave the FX processor in - whatever state it is when the driver is loaded. - The default is to download the microprogram and - associated coefficients to set it up for "default" - operation, whatever that means. - */ - -int debug_default = 0; /* you can set this to control debugging - during driver loading. it takes any combination - of the WF_DEBUG_* flags defined in - wavefront.h - */ +static int fx_raw = 1; /* if this is zero, we'll leave the FX processor in + whatever state it is when the driver is loaded. + The default is to download the microprogram and + associated coefficients to set it up for "default" + operation, whatever that means. + */ + +static int debug_default = 0; /* you can set this to control debugging + during driver loading. it takes any combination + of the WF_DEBUG_* flags defined in + wavefront.h + */ /* XXX this needs to be made firmware and hardware version dependent */ -char *ospath = "/etc/sound/wavefront.os"; /* where to find a processed - version of the WaveFront OS - */ - -int wait_usecs = 150; /* This magic number seems to give pretty optimal - throughput based on my limited experimentation. - If you want to play around with it and find a better - value, be my guest. Remember, the idea is to - get a number that causes us to just busy wait - for as many WaveFront commands as possible, without - coming up with a number so large that we hog the - whole CPU. - - Specifically, with this number, out of about 134,000 - status waits, only about 250 result in a sleep. - */ - -int sleep_interval = 100; /* HZ/sleep_interval seconds per sleep */ -int sleep_tries = 50; /* number of times we'll try to sleep */ - -int reset_time = 2; /* hundreths of a second we wait after a HW - reset for the expected interrupt. - */ - -int ramcheck_time = 20; /* time in seconds to wait while ROM code - checks on-board RAM. - */ - -int osrun_time = 10; /* time in seconds we wait for the OS to - start running. - */ +static char *ospath = "/etc/sound/wavefront.os"; /* where to find a processed + version of the WaveFront OS + */ + +static int wait_usecs = 150; /* This magic number seems to give pretty optimal + throughput based on my limited experimentation. + If you want to play around with it and find a better + value, be my guest. Remember, the idea is to + get a number that causes us to just busy wait + for as many WaveFront commands as possible, without + coming up with a number so large that we hog the + whole CPU. + + Specifically, with this number, out of about 134,000 + status waits, only about 250 result in a sleep. + */ + +static int sleep_interval = 100; /* HZ/sleep_interval seconds per sleep */ +static int sleep_tries = 50; /* number of times we'll try to sleep */ + +static int reset_time = 2; /* hundreths of a second we wait after a HW + reset for the expected interrupt. + */ + +static int ramcheck_time = 20; /* time in seconds to wait while ROM code + checks on-board RAM. + */ + +static int osrun_time = 10; /* time in seconds we wait for the OS to + start running. + */ module_param(wf_raw, int, 0444); MODULE_PARM_DESC(wf_raw, "if non-zero, assume that we need to boot the OS"); module_param(fx_raw, int, 0444); @@ -1709,7 +1709,7 @@ 7 Unused */ -int __init +static int __init snd_wavefront_interrupt_bits (int irq) { diff -Nru a/sound/pci/Kconfig b/sound/pci/Kconfig --- a/sound/pci/Kconfig 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/Kconfig 2005-01-02 23:05:38 -08:00 @@ -106,8 +106,9 @@ depends on SND select SND_PCM help - Say Y here to include support for recording audio from TV - cards based on Brooktree Bt878/Bt879 chips. + If you want to record audio from TV cards based on + Brooktree Bt878/Bt879 chips, say Y here and read + . To compile this driver as a module, choose M here: the module will be called snd-bt87x. diff -Nru a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c --- a/sound/pci/ac97/ac97_codec.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/ac97/ac97_codec.c 2005-01-02 23:05:38 -08:00 @@ -633,7 +633,7 @@ (val1 << shift_left) | (val2 << shift_right)); } -int snd_ac97_getput_page(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol, +static int snd_ac97_getput_page(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol, int (*func)(snd_kcontrol_t *, snd_ctl_elem_value_t *)) { ac97_t *ac97 = snd_kcontrol_chip(kcontrol); @@ -2213,6 +2213,46 @@ snd_ac97_powerdown(ac97); } +/* + * restore ac97 status + */ +void snd_ac97_restore_status(ac97_t *ac97) +{ + int i; + + for (i = 2; i < 0x7c ; i += 2) { + if (i == AC97_POWERDOWN || i == AC97_EXTENDED_ID) + continue; + /* restore only accessible registers + * some chip (e.g. nm256) may hang up when unsupported registers + * are accessed..! + */ + if (test_bit(i, ac97->reg_accessed)) { + snd_ac97_write(ac97, i, ac97->regs[i]); + snd_ac97_read(ac97, i); + } + } +} + +/* + * restore IEC958 status + */ +void snd_ac97_restore_iec958(ac97_t *ac97) +{ + if (ac97->ext_id & AC97_EI_SPDIF) { + if (ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_SPDIF) { + /* reset spdif status */ + snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0); + snd_ac97_write(ac97, AC97_EXTENDED_STATUS, ac97->regs[AC97_EXTENDED_STATUS]); + if (ac97->flags & AC97_CS_SPDIF) + snd_ac97_write(ac97, AC97_CSR_SPDIF, ac97->regs[AC97_CSR_SPDIF]); + else + snd_ac97_write(ac97, AC97_SPDIF, ac97->regs[AC97_SPDIF]); + snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); /* turn on again */ + } + } +} + /** * snd_ac97_resume - General resume function for AC97 codec * @ac97: the ac97 instance @@ -2222,7 +2262,7 @@ */ void snd_ac97_resume(ac97_t *ac97) { - int i, is_ad18xx, codec; + int i; if (ac97->bus->ops->reset) { ac97->bus->ops->reset(ac97); @@ -2264,66 +2304,11 @@ if (ac97->bus->ops->init) ac97->bus->ops->init(ac97); - is_ad18xx = (ac97->flags & AC97_AD_MULTI); - if (is_ad18xx) { - /* restore the AD18xx codec configurations */ - for (codec = 0; codec < 3; codec++) { - if (! ac97->spec.ad18xx.id[codec]) - continue; - /* select single codec */ - snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, - ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]); - ac97->bus->ops->write(ac97, AC97_AD_CODEC_CFG, ac97->spec.ad18xx.codec_cfg[codec]); - } - /* select all codecs */ - snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, 0x7000); - } - - /* restore ac97 status */ - for (i = 2; i < 0x7c ; i += 2) { - if (i == AC97_POWERDOWN || i == AC97_EXTENDED_ID) - continue; - /* restore only accessible registers - * some chip (e.g. nm256) may hang up when unsupported registers - * are accessed..! - */ - if (test_bit(i, ac97->reg_accessed)) { - if (is_ad18xx) { - /* handle multi codecs for AD18xx */ - if (i == AC97_PCM) { - for (codec = 0; codec < 3; codec++) { - if (! ac97->spec.ad18xx.id[codec]) - continue; - /* select single codec */ - snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, - ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]); - /* update PCM bits */ - ac97->bus->ops->write(ac97, AC97_PCM, ac97->spec.ad18xx.pcmreg[codec]); - } - /* select all codecs */ - snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, 0x7000); - continue; - } else if (i == AC97_AD_TEST || - i == AC97_AD_CODEC_CFG || - i == AC97_AD_SERIAL_CFG) - continue; /* ignore */ - } - snd_ac97_write(ac97, i, ac97->regs[i]); - snd_ac97_read(ac97, i); - } - } - - if (ac97->ext_id & AC97_EI_SPDIF) { - if (ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_SPDIF) { - /* reset spdif status */ - snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0); - snd_ac97_write(ac97, AC97_EXTENDED_STATUS, ac97->regs[AC97_EXTENDED_STATUS]); - if (ac97->flags & AC97_CS_SPDIF) - snd_ac97_write(ac97, AC97_CSR_SPDIF, ac97->regs[AC97_CSR_SPDIF]); - else - snd_ac97_write(ac97, AC97_SPDIF, ac97->regs[AC97_SPDIF]); - snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); /* turn on again */ - } + if (ac97->build_ops->resume) + ac97->build_ops->resume(ac97); + else { + snd_ac97_restore_status(ac97); + snd_ac97_restore_iec958(ac97); } } #endif diff -Nru a/sound/pci/ac97/ac97_local.h b/sound/pci/ac97/ac97_local.h --- a/sound/pci/ac97/ac97_local.h 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/ac97/ac97_local.h 2005-01-02 23:05:38 -08:00 @@ -49,6 +49,8 @@ int snd_ac97_rename_ctl(ac97_t *ac97, const char *src, const char *dst, const char *suffix); int snd_ac97_swap_ctl(ac97_t *ac97, const char *s1, const char *s2, const char *suffix); void snd_ac97_rename_vol_ctl(ac97_t *ac97, const char *src, const char *dst); +void snd_ac97_restore_status(ac97_t *ac97); +void snd_ac97_restore_iec958(ac97_t *ac97); /* ac97_proc.c */ #ifdef CONFIG_PROC_FS diff -Nru a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c --- a/sound/pci/ac97/ac97_patch.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/ac97/ac97_patch.c 2005-01-02 23:05:38 -08:00 @@ -775,6 +775,69 @@ /* * Analog Device AD18xx, AD19xx codecs */ +static void ad18xx_resume(ac97_t *ac97) +{ + static unsigned short setup_regs[] = { + AC97_AD_MISC, AC97_AD_SERIAL_CFG, AC97_AD_JACK_SPDIF, + }; + int i, codec; + + for (i = 0; i < (int)ARRAY_SIZE(setup_regs); i++) { + unsigned short reg = setup_regs[i]; + if (test_bit(reg, ac97->reg_accessed)) { + snd_ac97_write(ac97, reg, ac97->regs[reg]); + snd_ac97_read(ac97, reg); + } + } + + if (! (ac97->flags & AC97_AD_MULTI)) + /* normal restore */ + snd_ac97_restore_status(ac97); + else { + /* restore the AD18xx codec configurations */ + for (codec = 0; codec < 3; codec++) { + if (! ac97->spec.ad18xx.id[codec]) + continue; + /* select single codec */ + snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, + ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]); + ac97->bus->ops->write(ac97, AC97_AD_CODEC_CFG, ac97->spec.ad18xx.codec_cfg[codec]); + } + /* select all codecs */ + snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, 0x7000); + + /* restore status */ + for (i = 2; i < 0x7c ; i += 2) { + if (i == AC97_POWERDOWN || i == AC97_EXTENDED_ID) + continue; + if (test_bit(i, ac97->reg_accessed)) { + /* handle multi codecs for AD18xx */ + if (i == AC97_PCM) { + for (codec = 0; codec < 3; codec++) { + if (! ac97->spec.ad18xx.id[codec]) + continue; + /* select single codec */ + snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, + ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]); + /* update PCM bits */ + ac97->bus->ops->write(ac97, AC97_PCM, ac97->spec.ad18xx.pcmreg[codec]); + } + /* select all codecs */ + snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x7000, 0x7000); + continue; + } else if (i == AC97_AD_TEST || + i == AC97_AD_CODEC_CFG || + i == AC97_AD_SERIAL_CFG) + continue; /* ignore */ + } + snd_ac97_write(ac97, i, ac97->regs[i]); + snd_ac97_read(ac97, i); + } + } + + snd_ac97_restore_iec958(ac97); +} + int patch_ad1819(ac97_t * ac97) { unsigned short scfg; @@ -843,6 +906,10 @@ } } +static struct snd_ac97_build_ops patch_ad1881_build_ops = { + .resume = &ad18xx_resume +}; + int patch_ad1881(ac97_t * ac97) { static const char cfg_idxs[3][2] = { @@ -897,6 +964,7 @@ ac97->id &= 0xffff0000; ac97->id |= ac97->spec.ad18xx.id[0]; } + ac97->build_ops = &patch_ad1881_build_ops; return 0; } @@ -919,7 +987,8 @@ } static struct snd_ac97_build_ops patch_ad1885_build_ops = { - .build_specific = &patch_ad1885_specific + .build_specific = &patch_ad1885_specific, + .resume = &ad18xx_resume }; int patch_ad1885(ac97_t * ac97) @@ -1013,8 +1082,21 @@ return patch_build_controls(ac97, &snd_ac97_ad198x_spdif_source, 1); } +static const snd_kcontrol_new_t snd_ac97_ad1981x_jack_sense[] = { + AC97_SINGLE("Headphone Jack Sense", AC97_AD_JACK_SPDIF, 11, 1, 0), + AC97_SINGLE("Line Jack Sense", AC97_AD_JACK_SPDIF, 12, 1, 0), +}; + +static int patch_ad1981a_specific(ac97_t * ac97) +{ + return patch_build_controls(ac97, snd_ac97_ad1981x_jack_sense, + ARRAY_SIZE(snd_ac97_ad1981x_jack_sense)); +} + static struct snd_ac97_build_ops patch_ad1981a_build_ops = { - .build_post_spdif = patch_ad198x_post_spdif + .build_post_spdif = patch_ad198x_post_spdif, + .build_specific = patch_ad1981a_specific, + .resume = ad18xx_resume }; int patch_ad1981a(ac97_t *ac97) @@ -1023,6 +1105,7 @@ ac97->build_ops = &patch_ad1981a_build_ops; snd_ac97_update_bits(ac97, AC97_AD_MISC, AC97_AD198X_MSPLT, AC97_AD198X_MSPLT); ac97->flags |= AC97_STEREO_MUTES; + snd_ac97_update_bits(ac97, AC97_AD_JACK_SPDIF, 1<<11, 1<<11); /* HP jack sense */ return 0; } @@ -1031,12 +1114,18 @@ static int patch_ad1981b_specific(ac97_t *ac97) { - return patch_build_controls(ac97, &snd_ac97_ad198x_2cmic, 1); + int err; + + if ((err = patch_build_controls(ac97, &snd_ac97_ad198x_2cmic, 1)) < 0) + return err; + return patch_build_controls(ac97, snd_ac97_ad1981x_jack_sense, + ARRAY_SIZE(snd_ac97_ad1981x_jack_sense)); } static struct snd_ac97_build_ops patch_ad1981b_build_ops = { .build_post_spdif = patch_ad198x_post_spdif, - .build_specific = patch_ad1981b_specific + .build_specific = patch_ad1981b_specific, + .resume = ad18xx_resume }; int patch_ad1981b(ac97_t *ac97) @@ -1045,6 +1134,7 @@ ac97->build_ops = &patch_ad1981b_build_ops; snd_ac97_update_bits(ac97, AC97_AD_MISC, AC97_AD198X_MSPLT, AC97_AD198X_MSPLT); ac97->flags |= AC97_STEREO_MUTES; + snd_ac97_update_bits(ac97, AC97_AD_JACK_SPDIF, 1<<11, 1<<11); /* HP jack sense */ return 0; } @@ -1150,7 +1240,8 @@ static struct snd_ac97_build_ops patch_ad1888_build_ops = { .build_post_spdif = patch_ad198x_post_spdif, - .build_specific = patch_ad1888_specific + .build_specific = patch_ad1888_specific, + .resume = ad18xx_resume }; int patch_ad1888(ac97_t * ac97) @@ -1184,7 +1275,8 @@ static struct snd_ac97_build_ops patch_ad1980_build_ops = { .build_post_spdif = patch_ad198x_post_spdif, - .build_specific = patch_ad1980_specific + .build_specific = patch_ad1980_specific, + .resume = ad18xx_resume }; int patch_ad1980(ac97_t * ac97) @@ -1210,7 +1302,8 @@ static struct snd_ac97_build_ops patch_ad1985_build_ops = { .build_post_spdif = patch_ad198x_post_spdif, - .build_specific = patch_ad1985_specific + .build_specific = patch_ad1985_specific, + .resume = ad18xx_resume }; int patch_ad1985(ac97_t * ac97) @@ -1304,7 +1397,8 @@ static const snd_kcontrol_new_t snd_ac97_spdif_controls_alc650[] = { AC97_SINGLE("IEC958 Capture Switch", AC97_ALC650_MULTICH, 11, 1, 0), AC97_SINGLE("Analog to IEC958 Output", AC97_ALC650_MULTICH, 12, 1, 0), - AC97_SINGLE("IEC958 Input Monitor", AC97_ALC650_MULTICH, 13, 1, 0), + /* disable this controls since it doesn't work as expected */ + /* AC97_SINGLE("IEC958 Input Monitor", AC97_ALC650_MULTICH, 13, 1, 0), */ }; static int patch_alc650_specific(ac97_t * ac97) @@ -1454,7 +1548,8 @@ static const snd_kcontrol_new_t snd_ac97_spdif_controls_alc655[] = { AC97_PAGE_SINGLE("IEC958 Capture Switch", AC97_ALC650_MULTICH, 11, 1, 0, 0), - AC97_PAGE_SINGLE("IEC958 Input Monitor", AC97_ALC650_MULTICH, 14, 1, 0, 0), + /* disable this controls since it doesn't work as expected */ + /* AC97_PAGE_SINGLE("IEC958 Input Monitor", AC97_ALC650_MULTICH, 14, 1, 0, 0), */ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = "IEC958 Playback Route", diff -Nru a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c --- a/sound/pci/au88x0/au88x0.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/au88x0/au88x0.c 2005-01-02 23:05:38 -08:00 @@ -4,7 +4,7 @@ * * This driver is the result of the OpenVortex Project from Savannah * (savannah.nongnu.org/projects/openvortex). I would like to thank - * the developers of OpenVortex, Jeff Muizelar and Kester Maddock, from + * the developers of OpenVortex, Jeff Muizelaar and Kester Maddock, from * whom i got plenty of help, and their codebase was invaluable. * Thanks to the ALSA developers, they helped a lot working out * the ALSA part. @@ -170,9 +170,8 @@ if ((err = pci_request_regions(pci, CARD_NAME_SHORT)) != 0) goto regions_out; - chip->mmio = - ioremap_nocache(pci_resource_start(pci, 0), - pci_resource_len(pci, 0)); + chip->mmio = ioremap_nocache(pci_resource_start(pci, 0), + pci_resource_len(pci, 0)); if (!chip->mmio) { printk(KERN_ERR "MMIO area remap failed.\n"); err = -ENOMEM; @@ -187,10 +186,9 @@ goto core_out; } - if ((err = - request_irq(pci->irq, vortex_interrupt, - SA_INTERRUPT | SA_SHIRQ, CARD_NAME_SHORT, - (void *)chip)) != 0) { + if ((err = request_irq(pci->irq, vortex_interrupt, + SA_INTERRUPT | SA_SHIRQ, CARD_NAME_SHORT, + chip)) != 0) { printk(KERN_ERR "cannot grab irq\n"); goto irq_out; } @@ -214,7 +212,6 @@ irq_out: vortex_core_shutdown(chip); core_out: - //FIXME: the type of chip->mmio might need to be changed?? iounmap(chip->mmio); ioremap_out: pci_release_regions(chip->pci_dev); diff -Nru a/sound/pci/au88x0/au88x0.h b/sound/pci/au88x0/au88x0.h --- a/sound/pci/au88x0/au88x0.h 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/au88x0/au88x0.h 2005-01-02 23:05:38 -08:00 @@ -80,7 +80,8 @@ #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)) +#define VORTEX_IS_QUAD(x) ((x)->isquad) /* Check if chip has bug. */ #define IS_BAD_CHIP(x) (\ (x->rev == 0xfe && x->device == PCI_DEVICE_ID_AUREAL_VORTEX_2) || \ @@ -164,6 +165,8 @@ int xt_mode; /* 1: speakers, 0:headphones. */ #endif + int isquad; /* cache of extended ID codec flag. */ + /* Gameport stuff. */ struct gameport *gameport; @@ -208,6 +211,7 @@ static void vortex_adbdma_pausefifo(vortex_t * vortex, int adbdma); static void vortex_adbdma_resumefifo(vortex_t * vortex, int adbdma); static int inline vortex_adbdma_getlinearpos(vortex_t * vortex, int adbdma); +static void vortex_adbdma_resetup(vortex_t *vortex, int adbdma); #ifndef CHIP_AU8810 static void vortex_wtdma_startfifo(vortex_t * vortex, int wtdma); diff -Nru a/sound/pci/au88x0/au88x0_core.c b/sound/pci/au88x0/au88x0_core.c --- a/sound/pci/au88x0/au88x0_core.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/au88x0/au88x0_core.c 2005-01-02 23:05:38 -08:00 @@ -21,7 +21,7 @@ These functions are mainly the result of translations made from the original disassembly of the au88x0 binary drivers, written by Aureal before they went down. - Many thanks to the Jeff Muizelar, Kester Maddock, and whoever + Many thanks to the Jeff Muizelaar, Kester Maddock, and whoever contributed to the OpenVortex project. The author of this file, put the few available pieces together and translated the rest of the riddle (Mix, Src and connection stuff). @@ -1221,6 +1221,33 @@ adbdma, dma->period_virt, dma->period_real, delta); return delta; +} + + +static void vortex_adbdma_resetup(vortex_t *vortex, int adbdma) { + stream_t *dma = &vortex->dma_adb[adbdma]; + int p, pp, i; + + /* refresh hw page table */ + for (i=0 ; i < 4 && i < dma->nr_periods; i++) { + /* p: audio buffer page index */ + p = dma->period_virt + i; + if (p >= dma->nr_periods) + p -= dma->nr_periods; + /* pp: hardware DMA page index. */ + pp = dma->period_real + i; + if (dma->nr_periods < 4) { + if (pp >= dma->nr_periods) + pp -= dma->nr_periods; + } + else { + if (pp >= 4) + pp -= 4; + } + hwwrite(vortex->mmio, VORTEX_ADBDMA_BUFBASE+(((adbdma << 2)+pp) << 2), snd_sgbuf_get_addr(dma->sgbuf, dma->period_bytes * p)); + /* Force write thru cache. */ + hwread(vortex->mmio, VORTEX_ADBDMA_BUFBASE + (((adbdma << 2)+pp) << 2)); + } } static int inline vortex_adbdma_getlinearpos(vortex_t * vortex, int adbdma) diff -Nru a/sound/pci/au88x0/au88x0_eq.c b/sound/pci/au88x0/au88x0_eq.c --- a/sound/pci/au88x0/au88x0_eq.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/au88x0/au88x0_eq.c 2005-01-02 23:05:38 -08:00 @@ -45,6 +45,8 @@ #define VORTEX_EQ_SOURCE (VORTEX_EQ_BASE + 0x430) #define VORTEX_EQ_CTRL (VORTEX_EQ_BASE + 0x440) +#define VORTEX_BAND_COEFF_SIZE 0x30 + /* CEqHw.s */ static void vortex_EqHw_SetTimeConsts(vortex_t * vortex, u16 gain, u16 level) { @@ -52,10 +54,10 @@ hwwrite(vortex->mmio, 0x2b3c8, level); } -static inline short sign_invert(short a) +static inline u16 sign_invert(u16 a) { /* -(-32768) -> -32768 so we do -(-32768) -> 32767 to make the result positive */ - if (a == -32768) + if (a == (u16)-32768) return 32767; else return -a; @@ -71,13 +73,13 @@ hwwrite(vortex->mmio, 0x2b004 + n * 0x30, coefs[i + 1]); if (eqhw->this08 == 0) { - hwwrite(vortex->mmio, 0x2b008 + n * 0x30, coefs[i + 2] & 0xffff); - hwwrite(vortex->mmio, 0x2b00c + n * 0x30, coefs[i + 3] & 0xffff); - hwwrite(vortex->mmio, 0x2b010 + n * 0x30, coefs[i + 4] & 0xffff); + hwwrite(vortex->mmio, 0x2b008 + n * 0x30, coefs[i + 2]); + hwwrite(vortex->mmio, 0x2b00c + n * 0x30, coefs[i + 3]); + hwwrite(vortex->mmio, 0x2b010 + n * 0x30, coefs[i + 4]); } else { - hwwrite(vortex->mmio, 0x2b008 + n * 0x30, sign_invert(coefs[2 + i]) & 0xffff); - hwwrite(vortex->mmio, 0x2b00c + n * 0x30, sign_invert(coefs[3 + i]) & 0xffff); - hwwrite(vortex->mmio, 0x2b010 + n * 0x30, sign_invert(coefs[4 + i]) & 0xffff); + hwwrite(vortex->mmio, 0x2b008 + n * 0x30, sign_invert(coefs[2 + i])); + hwwrite(vortex->mmio, 0x2b00c + n * 0x30, sign_invert(coefs[3 + i])); + hwwrite(vortex->mmio, 0x2b010 + n * 0x30, sign_invert(coefs[4 + i])); } i += 5; } @@ -93,13 +95,13 @@ hwwrite(vortex->mmio, 0x2b1e4 + n * 0x30, coefs[1 + i]); if (eqhw->this08 == 0) { - hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, coefs[2 + i] & 0xffff); - hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, coefs[3 + i] & 0xffff); - hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, coefs[4 + i] & 0xffff); + hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, coefs[2 + i]); + hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, coefs[3 + i]); + hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, coefs[4 + i]); } else { - hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, sign_invert(coefs[2 + i]) & 0xffff); - hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, sign_invert(coefs[3 + i]) & 0xffff); - hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, sign_invert(coefs[4 + i]) & 0xffff); + hwwrite(vortex->mmio, 0x2b1e8 + n * 0x30, sign_invert(coefs[2 + i])); + hwwrite(vortex->mmio, 0x2b1ec + n * 0x30, sign_invert(coefs[3 + i])); + hwwrite(vortex->mmio, 0x2b1f0 + n * 0x30, sign_invert(coefs[4 + i])); } i += 5; } @@ -176,8 +178,8 @@ hwwrite(vortex->mmio, 0x2b3d4, a); hwwrite(vortex->mmio, 0x2b3ec, b); } else { - hwwrite(vortex->mmio, 0x2b3d4, sign_invert(a) & 0xffff); - hwwrite(vortex->mmio, 0x2b3ec, sign_invert(b) & 0xffff); + hwwrite(vortex->mmio, 0x2b3d4, sign_invert(a)); + hwwrite(vortex->mmio, 0x2b3ec, sign_invert(b)); } } @@ -319,25 +321,27 @@ #endif /* EQ band levels settings */ -static void vortex_EqHw_SetLevels(vortex_t * vortex, u16 a[]) +static void vortex_EqHw_SetLevels(vortex_t * vortex, u16 peaks[]) { eqhw_t *eqhw = &(vortex->eq.this04); - int ebx; + int i; - for (ebx = 0; ebx < eqhw->this04; ebx++) { - hwwrite(vortex->mmio, 0x2b024 + ebx * 0x30, a[ebx]); + /* set left peaks */ + for (i = 0; i < eqhw->this04; i++) { + hwwrite(vortex->mmio, 0x2b024 + i * VORTEX_BAND_COEFF_SIZE, peaks[i]); } - hwwrite(vortex->mmio, 0x2b3cc, a[eqhw->this04]); - hwwrite(vortex->mmio, 0x2b3d8, a[eqhw->this04 + 1]); + hwwrite(vortex->mmio, 0x2b3cc, peaks[eqhw->this04]); + hwwrite(vortex->mmio, 0x2b3d8, peaks[eqhw->this04 + 1]); - for (ebx = 0; ebx < eqhw->this04; ebx++) { - hwwrite(vortex->mmio, 0x2b204 + ebx * 0x30, - a[ebx + (eqhw->this04 + 2)]); + /* set right peaks */ + for (i = 0; i < eqhw->this04; i++) { + hwwrite(vortex->mmio, 0x2b204 + i * VORTEX_BAND_COEFF_SIZE, + peaks[i + (eqhw->this04 + 2)]); } - hwwrite(vortex->mmio, 0x2b3e4, a[2 + (eqhw->this04 * 2)]); - hwwrite(vortex->mmio, 0x2b3f0, a[3 + (eqhw->this04 * 2)]); + hwwrite(vortex->mmio, 0x2b3e4, peaks[2 + (eqhw->this04 * 2)]); + hwwrite(vortex->mmio, 0x2b3f0, peaks[3 + (eqhw->this04 * 2)]); } #if 0 diff -Nru a/sound/pci/au88x0/au88x0_mixer.c b/sound/pci/au88x0/au88x0_mixer.c --- a/sound/pci/au88x0/au88x0_mixer.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/au88x0/au88x0_mixer.c 2005-01-02 23:05:38 -08:00 @@ -26,5 +26,7 @@ memset(&ac97, 0, sizeof(ac97)); // Intialize AC97 codec stuff. ac97.private_data = vortex; - return snd_ac97_mixer(pbus, &ac97, &vortex->codec); + err = snd_ac97_mixer(pbus, &ac97, &vortex->codec); + vortex->isquad = ((vortex->codec == NULL) ? 0 : (vortex->codec->ext_id&0x80)); + return err; } diff -Nru a/sound/pci/au88x0/au88x0_pcm.c b/sound/pci/au88x0/au88x0_pcm.c --- a/sound/pci/au88x0/au88x0_pcm.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/au88x0/au88x0_pcm.c 2005-01-02 23:05:38 -08:00 @@ -313,8 +313,10 @@ // do something to start the PCM engine //printk(KERN_INFO "vortex: start %d\n", dma); stream->fifo_enabled = 1; - if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) + if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) { + vortex_adbdma_resetup(chip, dma); vortex_adbdma_startfifo(chip, dma); + } #ifndef CHIP_AU8810 else { printk(KERN_INFO "vortex: wt start %d\n", dma); diff -Nru a/sound/pci/azt3328.c b/sound/pci/azt3328.c --- a/sound/pci/azt3328.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/azt3328.c 2005-01-02 23:05:38 -08:00 @@ -214,17 +214,17 @@ MODULE_DEVICE_TABLE(pci, snd_azf3328_ids); -void snd_azf3328_io2_write(azf3328_t *chip, int reg, unsigned char value) +static void snd_azf3328_io2_write(azf3328_t *chip, int reg, unsigned char value) { outb(value, chip->io2_port + reg); } -unsigned char snd_azf3328_io2_read(azf3328_t *chip, int reg) +static unsigned char snd_azf3328_io2_read(azf3328_t *chip, int reg) { return inb(chip->io2_port + reg); } -void snd_azf3328_mixer_write(azf3328_t *chip, int reg, unsigned long value, int type) +static void snd_azf3328_mixer_write(azf3328_t *chip, int reg, unsigned long value, int type) { switch(type) { case WORD_VALUE: @@ -239,26 +239,7 @@ } } -unsigned long snd_azf3328_mixer_read(azf3328_t *chip, int reg, int type) -{ - unsigned long res = 0; - - switch(type) { - case WORD_VALUE: - res = (unsigned long)inw(chip->mixer_port + reg); - break; - case DWORD_VALUE: - res = (unsigned long)inl(chip->mixer_port + reg); - break; - case BYTE_VALUE: - res = (unsigned long)inb(chip->mixer_port + reg); - break; - } - - return res; -} - -void snd_azf3328_mixer_set_mute(azf3328_t *chip, int reg, int do_mute) +static void snd_azf3328_mixer_set_mute(azf3328_t *chip, int reg, int do_mute) { unsigned char oldval; @@ -272,7 +253,7 @@ outb(oldval, chip->mixer_port + reg + 1); } -void snd_azf3328_mixer_write_volume_gradually(azf3328_t *chip, int reg, unsigned char dst_vol_left, unsigned char dst_vol_right, int chan_sel, int delay) +static void snd_azf3328_mixer_write_volume_gradually(azf3328_t *chip, int reg, unsigned char dst_vol_left, unsigned char dst_vol_right, int chan_sel, int delay) { unsigned char curr_vol_left = 0, curr_vol_right = 0; int left_done = 0, right_done = 0; diff -Nru a/sound/pci/bt87x.c b/sound/pci/bt87x.c --- a/sound/pci/bt87x.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/bt87x.c 2005-01-02 23:05:38 -08:00 @@ -45,6 +45,7 @@ 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 load_all; /* allow to load the non-whitelisted cards */ module_param_array(index, int, NULL, 0444); MODULE_PARM_DESC(index, "Index value for Bt87x soundcard"); @@ -54,6 +55,8 @@ MODULE_PARM_DESC(enable, "Enable Bt87x soundcard"); module_param_array(digital_rate, int, NULL, 0444); MODULE_PARM_DESC(digital_rate, "Digital input rate for Bt87x soundcard"); +module_param(load_all, bool, 0444); +MODULE_PARM_DESC(load_all, "Allow to load the non-whitelisted cards"); #ifndef PCI_VENDOR_ID_BROOKTREE @@ -173,7 +176,11 @@ unsigned int lines; u32 reg_control; + u32 interrupt_mask; + int current_line; + + int pci_parity_errors; }; enum { DEVICE_DIGITAL, DEVICE_ANALOG }; @@ -246,33 +253,53 @@ } } +static void snd_bt87x_pci_error(bt87x_t *chip, unsigned int status) +{ + u16 pci_status; + + pci_read_config_word(chip->pci, PCI_STATUS, &pci_status); + pci_status &= PCI_STATUS_PARITY | PCI_STATUS_SIG_TARGET_ABORT | + PCI_STATUS_REC_TARGET_ABORT | PCI_STATUS_REC_MASTER_ABORT | + PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY; + pci_write_config_word(chip->pci, PCI_STATUS, pci_status); + if (pci_status != PCI_STATUS_DETECTED_PARITY) + snd_printk(KERN_ERR "Aieee - PCI error! status %#08x, PCI status %#04x\n", + status & ERROR_INTERRUPTS, pci_status); + else { + snd_printk(KERN_ERR "Aieee - PCI parity error detected!\n"); + /* error 'handling' similar to aic7xxx_pci.c: */ + chip->pci_parity_errors++; + if (chip->pci_parity_errors > 20) { + snd_printk(KERN_ERR "Too many PCI parity errors observed.\n"); + snd_printk(KERN_ERR "Some device on this bus is generating bad parity.\n"); + snd_printk(KERN_ERR "This is an error *observed by*, not *generated by*, this card.\n"); + snd_printk(KERN_ERR "PCI parity error checking has been disabled.\n"); + chip->interrupt_mask &= ~(INT_PPERR | INT_RIPERR); + snd_bt87x_writel(chip, REG_INT_MASK, chip->interrupt_mask); + } + } +} + static irqreturn_t snd_bt87x_interrupt(int irq, void *dev_id, struct pt_regs *regs) { bt87x_t *chip = dev_id; - unsigned int status; + unsigned int status, irq_status; status = snd_bt87x_readl(chip, REG_INT_STAT); - if (!(status & MY_INTERRUPTS)) + irq_status = status & chip->interrupt_mask; + if (!irq_status) return IRQ_NONE; - snd_bt87x_writel(chip, REG_INT_STAT, status & MY_INTERRUPTS); + snd_bt87x_writel(chip, REG_INT_STAT, irq_status); - if (status & ERROR_INTERRUPTS) { - if (status & (INT_FBUS | INT_FTRGT)) + if (irq_status & ERROR_INTERRUPTS) { + if (irq_status & (INT_FBUS | INT_FTRGT)) snd_printk(KERN_WARNING "FIFO overrun, status %#08x\n", status); - if (status & INT_OCERR) + if (irq_status & INT_OCERR) snd_printk(KERN_ERR "internal RISC error, status %#08x\n", status); - if (status & (INT_PPERR | INT_RIPERR | INT_PABORT)) { - u16 pci_status; - pci_read_config_word(chip->pci, PCI_STATUS, &pci_status); - pci_write_config_word(chip->pci, PCI_STATUS, pci_status & - (PCI_STATUS_PARITY | PCI_STATUS_SIG_TARGET_ABORT | - PCI_STATUS_REC_TARGET_ABORT | PCI_STATUS_REC_MASTER_ABORT | - PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY)); - snd_printk(KERN_ERR "Aieee - PCI error! status %#08x, PCI status %#04x\n", - status, pci_status); - } + if (irq_status & (INT_PPERR | INT_RIPERR | INT_PABORT)) + snd_bt87x_pci_error(chip, irq_status); } - if ((status & INT_RISCI) && (chip->reg_control & CTL_ACAP_EN)) { + if ((irq_status & INT_RISCI) && (chip->reg_control & CTL_ACAP_EN)) { int current_block, irq_block; /* assume that exactly one line has been recorded */ @@ -458,7 +485,7 @@ snd_bt87x_writel(chip, REG_RISC_STRT_ADD, chip->dma_risc.addr); snd_bt87x_writel(chip, REG_PACKET_LEN, chip->line_bytes | (chip->lines << 16)); - snd_bt87x_writel(chip, REG_INT_MASK, MY_INTERRUPTS); + snd_bt87x_writel(chip, REG_INT_MASK, chip->interrupt_mask); snd_bt87x_writel(chip, REG_GPIO_DMA_CTL, chip->reg_control); spin_unlock(&chip->reg_lock); return 0; @@ -717,6 +744,7 @@ } chip->reg_control = CTL_DA_ES2 | CTL_PKTP_16 | (15 << CTL_DA_SDR_SHIFT); + chip->interrupt_mask = MY_INTERRUPTS; snd_bt87x_writel(chip, REG_GPIO_DMA_CTL, chip->reg_control); snd_bt87x_writel(chip, REG_INT_MASK, 0); snd_bt87x_writel(chip, REG_INT_STAT, MY_INTERRUPTS); @@ -741,13 +769,73 @@ return 0; } +#define BT_DEVICE(chip, subvend, subdev, rate) \ + { .vendor = PCI_VENDOR_ID_BROOKTREE, \ + .device = PCI_DEVICE_ID_BROOKTREE_##chip, \ + .subvendor = subvend, .subdevice = subdev, \ + .driver_data = rate } + +/* driver_data is the default digital_rate value for that device */ +static struct pci_device_id snd_bt87x_ids[] = { + BT_DEVICE(878, 0x0070, 0x13eb, 32000), /* Hauppauge WinTV series */ + BT_DEVICE(879, 0x0070, 0x13eb, 32000), /* Hauppauge WinTV series */ + BT_DEVICE(878, 0x0070, 0xff01, 44100), /* Viewcast Osprey 200 */ + { } +}; +MODULE_DEVICE_TABLE(pci, snd_bt87x_ids); + +/* cards known not to have audio + * (DVB cards use the audio function to transfer MPEG data) */ +static struct { + unsigned short subvendor, subdevice; +} blacklist[] __devinitdata = { + {0x0071, 0x0101}, /* Nebula Electronics DigiTV */ + {0x11bd, 0x0026}, /* Pinnacle PCTV SAT CI */ + {0x1461, 0x0761}, /* AVermedia AverTV DVB-T */ + {0x1461, 0x0771}, /* AVermedia DVB-T 771 */ + {0x1822, 0x0001}, /* Twinhan VisionPlus DVB-T */ + {0x18ac, 0xdb10}, /* DVICO FusionHDTV DVB-T Lite */ + {0x270f, 0xfc00}, /* Chaintech Digitop DST-1000 DVB-S */ +}; + +/* return the rate of the card, or a negative value if it's blacklisted */ +static int __devinit snd_bt87x_detect_card(struct pci_dev *pci) +{ + int i; + const struct pci_device_id *supported; + + supported = pci_match_device(snd_bt87x_ids, pci); + if (supported) + return supported->driver_data; + + for (i = 0; i < ARRAY_SIZE(blacklist); ++i) + if (blacklist[i].subvendor == pci->subsystem_vendor && + blacklist[i].subdevice == pci->subsystem_device) { + snd_printdd(KERN_INFO "card %#04x:%#04x has no audio\n", + pci->subsystem_vendor, pci->subsystem_device); + return -EBUSY; + } + + snd_printk(KERN_INFO "unknown card %#04x:%#04x, using default rate 32000\n", + pci->subsystem_vendor, pci->subsystem_device); + snd_printk(KERN_DEBUG "please mail id, board name, and, " + "if it works, the correct digital_rate option to " + "\n"); + return 32000; /* default rate */ +} + static int __devinit snd_bt87x_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) { static int dev; snd_card_t *card; bt87x_t *chip; - int err; + int err, rate; + + rate = pci_id->driver_data; + if (! rate) + if ((rate = snd_bt87x_detect_card(pci)) <= 0) + return -ENODEV; if (dev >= SNDRV_CARDS) return -ENODEV; @@ -767,7 +855,7 @@ if (digital_rate[dev] > 0) chip->dig_rate = digital_rate[dev]; else - chip->dig_rate = (int)pci_id->driver_data; + chip->dig_rate = rate; err = snd_bt87x_pcm(chip, DEVICE_DIGITAL, "Bt87x Digital"); if (err < 0) @@ -811,22 +899,13 @@ pci_set_drvdata(pci, NULL); } -#define BT_DEVICE(chip, subvend, subdev, rate) \ - { .vendor = PCI_VENDOR_ID_BROOKTREE, \ - .device = PCI_DEVICE_ID_BROOKTREE_##chip, \ - .subvendor = subvend, .subdevice = subdev, \ - .driver_data = rate } - -/* driver_data is the default digital_rate value for that device */ -static struct pci_device_id snd_bt87x_ids[] = { - BT_DEVICE(878, 0x0070, 0xff01, 44100), /* Osprey 200 */ - - /* default entries for 32kHz and generic Bt87x cards */ - BT_DEVICE(878, PCI_ANY_ID, PCI_ANY_ID, 32000), - BT_DEVICE(879, PCI_ANY_ID, PCI_ANY_ID, 32000), +/* default entries for all Bt87x cards - it's not exported */ +/* driver_data is set to 0 to call detection */ +static struct pci_device_id snd_bt87x_default_ids[] = { + BT_DEVICE(878, PCI_ANY_ID, PCI_ANY_ID, 0), + BT_DEVICE(879, PCI_ANY_ID, PCI_ANY_ID, 0), { } }; -MODULE_DEVICE_TABLE(pci, snd_bt87x_ids); static struct pci_driver driver = { .name = "Bt87x", @@ -837,6 +916,8 @@ static int __init alsa_card_bt87x_init(void) { + if (load_all) + driver.id_table = snd_bt87x_default_ids; return pci_module_init(&driver); } diff -Nru a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c --- a/sound/pci/cs46xx/cs46xx_lib.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/cs46xx/cs46xx_lib.c 2005-01-02 23:05:38 -08:00 @@ -68,6 +68,20 @@ static void amp_voyetra(cs46xx_t *chip, int change); +#ifdef CONFIG_SND_CS46XX_NEW_DSP +static snd_pcm_ops_t snd_cs46xx_playback_rear_ops; +static snd_pcm_ops_t snd_cs46xx_playback_indirect_rear_ops; +static snd_pcm_ops_t snd_cs46xx_playback_clfe_ops; +static snd_pcm_ops_t snd_cs46xx_playback_indirect_clfe_ops; +static snd_pcm_ops_t snd_cs46xx_playback_iec958_ops; +static snd_pcm_ops_t snd_cs46xx_playback_indirect_iec958_ops; +#endif + +static snd_pcm_ops_t snd_cs46xx_playback_ops; +static snd_pcm_ops_t snd_cs46xx_playback_indirect_ops; +static snd_pcm_ops_t snd_cs46xx_capture_ops; +static snd_pcm_ops_t snd_cs46xx_capture_indirect_ops; + static unsigned short snd_cs46xx_codec_read(cs46xx_t *chip, unsigned short reg, int codec_index) @@ -1446,7 +1460,7 @@ } #ifdef CONFIG_SND_CS46XX_NEW_DSP -snd_pcm_ops_t snd_cs46xx_playback_rear_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_rear_ops = { .open = snd_cs46xx_playback_open_rear, .close = snd_cs46xx_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1457,7 +1471,7 @@ .pointer = snd_cs46xx_playback_direct_pointer, }; -snd_pcm_ops_t snd_cs46xx_playback_indirect_rear_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_indirect_rear_ops = { .open = snd_cs46xx_playback_open_rear, .close = snd_cs46xx_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1469,7 +1483,7 @@ .ack = snd_cs46xx_playback_transfer, }; -snd_pcm_ops_t snd_cs46xx_playback_clfe_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_clfe_ops = { .open = snd_cs46xx_playback_open_clfe, .close = snd_cs46xx_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1480,7 +1494,7 @@ .pointer = snd_cs46xx_playback_direct_pointer, }; -snd_pcm_ops_t snd_cs46xx_playback_indirect_clfe_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_indirect_clfe_ops = { .open = snd_cs46xx_playback_open_clfe, .close = snd_cs46xx_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1492,7 +1506,7 @@ .ack = snd_cs46xx_playback_transfer, }; -snd_pcm_ops_t snd_cs46xx_playback_iec958_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_iec958_ops = { .open = snd_cs46xx_playback_open_iec958, .close = snd_cs46xx_playback_close_iec958, .ioctl = snd_pcm_lib_ioctl, @@ -1503,7 +1517,7 @@ .pointer = snd_cs46xx_playback_direct_pointer, }; -snd_pcm_ops_t snd_cs46xx_playback_indirect_iec958_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_indirect_iec958_ops = { .open = snd_cs46xx_playback_open_iec958, .close = snd_cs46xx_playback_close_iec958, .ioctl = snd_pcm_lib_ioctl, @@ -1517,7 +1531,7 @@ #endif -snd_pcm_ops_t snd_cs46xx_playback_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_ops = { .open = snd_cs46xx_playback_open, .close = snd_cs46xx_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1528,7 +1542,7 @@ .pointer = snd_cs46xx_playback_direct_pointer, }; -snd_pcm_ops_t snd_cs46xx_playback_indirect_ops = { +static snd_pcm_ops_t snd_cs46xx_playback_indirect_ops = { .open = snd_cs46xx_playback_open, .close = snd_cs46xx_playback_close, .ioctl = snd_pcm_lib_ioctl, @@ -1540,7 +1554,7 @@ .ack = snd_cs46xx_playback_transfer, }; -snd_pcm_ops_t snd_cs46xx_capture_ops = { +static snd_pcm_ops_t snd_cs46xx_capture_ops = { .open = snd_cs46xx_capture_open, .close = snd_cs46xx_capture_close, .ioctl = snd_pcm_lib_ioctl, @@ -1551,7 +1565,7 @@ .pointer = snd_cs46xx_capture_direct_pointer, }; -snd_pcm_ops_t snd_cs46xx_capture_indirect_ops = { +static snd_pcm_ops_t snd_cs46xx_capture_indirect_ops = { .open = snd_cs46xx_capture_open, .close = snd_cs46xx_capture_close, .ioctl = snd_pcm_lib_ioctl, diff -Nru a/sound/pci/cs46xx/cs46xx_lib.h b/sound/pci/cs46xx/cs46xx_lib.h --- a/sound/pci/cs46xx/cs46xx_lib.h 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/cs46xx/cs46xx_lib.h 2005-01-02 23:05:38 -08:00 @@ -53,18 +53,6 @@ #define BA1_DWORD_SIZE (13 * 1024 + 512) #define BA1_MEMORY_COUNT 3 -extern snd_pcm_ops_t snd_cs46xx_playback_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_indirect_ops; -extern snd_pcm_ops_t snd_cs46xx_capture_ops; -extern snd_pcm_ops_t snd_cs46xx_capture_indirect_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_rear_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_indirect_rear_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_iec958_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_indirect_iec958_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_clfe_ops; -extern snd_pcm_ops_t snd_cs46xx_playback_indirect_clfe_ops; - - /* * common I/O routines */ @@ -99,11 +87,9 @@ void cs46xx_dsp_spos_destroy (cs46xx_t * chip); int cs46xx_dsp_load_module (cs46xx_t * chip,dsp_module_desc_t * module); symbol_entry_t * cs46xx_dsp_lookup_symbol (cs46xx_t * chip,char * symbol_name,int symbol_type); -symbol_entry_t * cs46xx_dsp_lookup_symbol_addr (cs46xx_t * chip,u32 address,int symbol_type); int cs46xx_dsp_proc_init (snd_card_t * card, cs46xx_t *chip); int cs46xx_dsp_proc_done (cs46xx_t *chip); int cs46xx_dsp_scb_and_task_init (cs46xx_t *chip); -int cs46xx_dsp_async_init (cs46xx_t *chip,dsp_scb_descriptor_t * fg_entry); int snd_cs46xx_download (cs46xx_t *chip,u32 *src,unsigned long offset, unsigned long len); int snd_cs46xx_clear_BA1(cs46xx_t *chip,unsigned long offset,unsigned long len); @@ -120,8 +106,6 @@ dsp_scb_descriptor_t * cs46xx_dsp_create_scb (cs46xx_t *chip,char * name, u32 * scb_data,u32 dest); void cs46xx_dsp_proc_free_scb_desc (dsp_scb_descriptor_t * scb); void cs46xx_dsp_proc_register_scb_desc (cs46xx_t *chip,dsp_scb_descriptor_t * scb); -dsp_task_descriptor_t * cs46xx_dsp_create_task_tree (cs46xx_t *chip,char * name, - u32 * task_data,u32 dest,int size); dsp_scb_descriptor_t * cs46xx_dsp_create_timing_master_scb (cs46xx_t *chip); dsp_scb_descriptor_t * cs46xx_dsp_create_codec_out_scb(cs46xx_t * chip,char * codec_name, u16 channel_disp,u16 fifo_addr, @@ -136,21 +120,11 @@ dsp_scb_descriptor_t * parent_scb, int scb_child_type); void cs46xx_dsp_remove_scb (cs46xx_t *chip,dsp_scb_descriptor_t * scb); -dsp_scb_descriptor_t * cs46xx_dsp_create_generic_scb (cs46xx_t *chip,char * name, - u32 * scb_data,u32 dest, - char * task_entry_name, - dsp_scb_descriptor_t * parent_scb, - int scb_child_type); dsp_scb_descriptor_t * cs46xx_dsp_create_codec_in_scb(cs46xx_t * chip,char * codec_name, u16 channel_disp,u16 fifo_addr, u16 sample_buffer_addr, u32 dest,dsp_scb_descriptor_t * parent_scb, int scb_child_type); -dsp_scb_descriptor_t * cs46xx_dsp_create_pcm_reader_scb(cs46xx_t * chip,char * scb_name, - u16 sample_buffer_addr,u32 dest, - int virtual_channel,u32 playback_hw_addr, - dsp_scb_descriptor_t * parent_scb, - int scb_child_type); dsp_scb_descriptor_t * cs46xx_dsp_create_src_task_scb(cs46xx_t * chip,char * scb_name, int sample_rate, u16 src_buffer_addr, @@ -169,15 +143,6 @@ u32 dest, dsp_scb_descriptor_t * parent_scb, int scb_child_type); -dsp_scb_descriptor_t * cs46xx_dsp_create_pcm_serial_input_scb(cs46xx_t * chip,char * scb_name,u32 dest, - dsp_scb_descriptor_t * input_scb, - dsp_scb_descriptor_t * parent_scb, - int scb_child_type); -dsp_scb_descriptor_t * cs46xx_dsp_create_asynch_fg_tx_scb(cs46xx_t * chip,char * scb_name,u32 dest, - u16 hfg_scb_address, - u16 asynch_buffer_address, - dsp_scb_descriptor_t * parent_scb, - int scb_child_type); dsp_scb_descriptor_t * cs46xx_dsp_create_asynch_fg_rx_scb(cs46xx_t * chip,char * scb_name,u32 dest, u16 hfg_scb_address, u16 asynch_buffer_address, @@ -190,11 +155,6 @@ u16 mix_buffer_addr,u16 writeback_spb,u32 dest, dsp_scb_descriptor_t * parent_scb, int scb_child_type); -dsp_scb_descriptor_t * cs46xx_dsp_create_output_snoop_scb(cs46xx_t * chip,char * scb_name,u32 dest, - u16 snoop_buffer_address, - dsp_scb_descriptor_t * snoop_scb, - dsp_scb_descriptor_t * parent_scb, - int scb_child_type); dsp_scb_descriptor_t * cs46xx_dsp_create_magic_snoop_scb(cs46xx_t * chip,char * scb_name,u32 dest, u16 snoop_buffer_address, dsp_scb_descriptor_t * snoop_scb, diff -Nru a/sound/pci/cs46xx/dsp_spos.c b/sound/pci/cs46xx/dsp_spos.c --- a/sound/pci/cs46xx/dsp_spos.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/cs46xx/dsp_spos.c 2005-01-02 23:05:38 -08:00 @@ -37,6 +37,8 @@ #include "cs46xx_lib.h" #include "dsp_spos.h" +static int cs46xx_dsp_async_init (cs46xx_t *chip, dsp_scb_descriptor_t * fg_entry); + static wide_opcode_t wide_opcodes[] = { WIDE_FOR_BEGIN_LOOP, WIDE_FOR_BEGIN_LOOP2, @@ -439,7 +441,7 @@ } -symbol_entry_t * cs46xx_dsp_lookup_symbol_addr (cs46xx_t * chip, u32 address, int symbol_type) +static symbol_entry_t * cs46xx_dsp_lookup_symbol_addr (cs46xx_t * chip, u32 address, int symbol_type) { int i; dsp_spos_instance_t * ins = chip->dsp_spos_instance; @@ -914,7 +916,7 @@ int i; for (i = 0; i < size; ++i) { - if (debug_tree) printk ("addr %p, val %08x\n", spdst,task_data[i]); + if (debug_tree) printk ("addr %p, val %08x\n",spdst,task_data[i]); writel(task_data[i],spdst); spdst += sizeof(u32); } @@ -928,7 +930,7 @@ int i; for (i = 0; i < 0x10; ++i) { - if (debug_scb) printk ("addr %p, val %08x\n", spdst,scb_data[i]); + if (debug_scb) printk ("addr %p, val %08x\n",spdst,scb_data[i]); writel(scb_data[i],spdst); spdst += sizeof(u32); } @@ -1019,7 +1021,7 @@ } -dsp_task_descriptor_t * cs46xx_dsp_create_task_tree (cs46xx_t *chip,char * name, u32 * task_data,u32 dest,int size) +static dsp_task_descriptor_t * cs46xx_dsp_create_task_tree (cs46xx_t *chip,char * name, u32 * task_data,u32 dest,int size) { dsp_task_descriptor_t * desc; @@ -1452,7 +1454,7 @@ return -EINVAL; } -int cs46xx_dsp_async_init (cs46xx_t *chip, dsp_scb_descriptor_t * fg_entry) +static int cs46xx_dsp_async_init (cs46xx_t *chip, dsp_scb_descriptor_t * fg_entry) { dsp_spos_instance_t * ins = chip->dsp_spos_instance; symbol_entry_t * s16_async_codec_input_task; diff -Nru a/sound/pci/cs46xx/dsp_spos_scb_lib.c b/sound/pci/cs46xx/dsp_spos_scb_lib.c --- a/sound/pci/cs46xx/dsp_spos_scb_lib.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/cs46xx/dsp_spos_scb_lib.c 2005-01-02 23:05:38 -08:00 @@ -342,7 +342,7 @@ return scb; } -dsp_scb_descriptor_t * +static dsp_scb_descriptor_t * cs46xx_dsp_create_generic_scb (cs46xx_t *chip,char * name, u32 * scb_data,u32 dest, char * task_entry_name, dsp_scb_descriptor_t * parent_scb, @@ -481,7 +481,7 @@ } -dsp_scb_descriptor_t * +static dsp_scb_descriptor_t * cs46xx_dsp_create_pcm_reader_scb(cs46xx_t * chip,char * scb_name, u16 sample_buffer_addr,u32 dest, int virtual_channel, u32 playback_hw_addr, @@ -687,6 +687,7 @@ return scb; } +#if 0 /* not used */ dsp_scb_descriptor_t * cs46xx_dsp_create_filter_scb(cs46xx_t * chip,char * scb_name, u16 buffer_addr,u32 dest, @@ -735,6 +736,7 @@ return scb; } +#endif /* not used */ dsp_scb_descriptor_t * cs46xx_dsp_create_mix_only_scb(cs46xx_t * chip,char * scb_name, @@ -874,7 +876,7 @@ } -dsp_scb_descriptor_t * +static dsp_scb_descriptor_t * cs46xx_dsp_create_pcm_serial_input_scb(cs46xx_t * chip,char * scb_name,u32 dest, dsp_scb_descriptor_t * input_scb, dsp_scb_descriptor_t * parent_scb, @@ -917,7 +919,7 @@ } -dsp_scb_descriptor_t * +static dsp_scb_descriptor_t * cs46xx_dsp_create_asynch_fg_tx_scb(cs46xx_t * chip,char * scb_name,u32 dest, u16 hfg_scb_address, u16 asynch_buffer_address, @@ -1013,6 +1015,7 @@ } +#if 0 /* not used */ dsp_scb_descriptor_t * cs46xx_dsp_create_output_snoop_scb(cs46xx_t * chip,char * scb_name,u32 dest, u16 snoop_buffer_address, @@ -1052,6 +1055,7 @@ scb_child_type); return scb; } +#endif /* not used */ dsp_scb_descriptor_t * diff -Nru a/sound/pci/cs46xx/imgs/cwcdma.h b/sound/pci/cs46xx/imgs/cwcdma.h --- a/sound/pci/cs46xx/imgs/cwcdma.h 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/cs46xx/imgs/cwcdma.h 2005-01-02 23:05:38 -08:00 @@ -3,7 +3,7 @@ #ifndef __HEADER_cwcdma_H__ #define __HEADER_cwcdma_H__ -symbol_entry_t cwcdma_symbols[] = { +static symbol_entry_t cwcdma_symbols[] = { { 0x8000, "EXECCHILD",0x03 }, { 0x8001, "EXECCHILD_98",0x03 }, { 0x8003, "EXECCHILD_PUSH1IND",0x03 }, @@ -33,7 +33,7 @@ { 0x0018, "#CODE_END",0x00 }, }; /* cwcdma symbols */ -u32 cwcdma_code[] = { +static u32 cwcdma_code[] = { /* OVERLAYBEGINADDRESS */ /* 0000 */ 0x00002731,0x00001400,0x0004c108,0x000e5044, /* 0002 */ 0x0005f608,0x00000000,0x000007ae,0x000be300, @@ -51,11 +51,11 @@ /* #CODE_END */ -segment_desc_t cwcdma_segments[] = { +static segment_desc_t cwcdma_segments[] = { { SEGTYPE_SP_PROGRAM, 0x00000000, 0x00000030, cwcdma_code }, }; -dsp_module_desc_t cwcdma_module = { +static dsp_module_desc_t cwcdma_module = { "cwcdma", { 27, diff -Nru a/sound/pci/emu10k1/Makefile b/sound/pci/emu10k1/Makefile --- a/sound/pci/emu10k1/Makefile 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/Makefile 2005-01-02 23:05:38 -08:00 @@ -5,7 +5,7 @@ snd-emu10k1-objs := emu10k1.o emu10k1_main.o \ irq.o memory.o voice.o emumpu401.o emupcm.o io.o \ - emuproc.o emumixer.o emufx.o + emuproc.o emumixer.o emufx.o timer.o snd-emu10k1-synth-objs := emu10k1_synth.o emu10k1_callback.o emu10k1_patch.o # diff -Nru a/sound/pci/emu10k1/emu10k1.c b/sound/pci/emu10k1/emu10k1.c --- a/sound/pci/emu10k1/emu10k1.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emu10k1.c 2005-01-02 23:05:38 -08:00 @@ -2,6 +2,9 @@ * The driver for the EMU10K1 (SB Live!) based soundcards * Copyright (c) by Jaroslav Kysela * + * Copyright (c) by James Courtier-Dutton + * Added support for Audigy 2 Value. + * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,6 +20,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + * */ #include @@ -68,12 +72,27 @@ module_param_array(enable_ir, bool, NULL, 0444); MODULE_PARM_DESC(enable_ir, "Enable IR."); +/* + * Class 0401: 1102:0008 (rev 00) Subsystem: 1102:1001 -> Audigy2 Value Model:SB0400 + */ static struct pci_device_id snd_emu10k1_ids[] = { { 0x1102, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* EMU10K1 */ { 0x1102, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, /* Audigy */ + { 0x1102, 0x0008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, /* Audigy 2 Value SB0400 */ { 0, } }; +/* + * Audigy 2 Value notes: + * A_IOCFG Input (GPIO) + * 0x400 = Front analog jack plugged in. (Green socket) + * 0x1000 = Read analog jack plugged in. (Black socket) + * 0x2000 = Center/LFE analog jack plugged in. (Orange socket) + * A_IOCFG Output (GPIO) + * 0x60 = Sound out of front Left. + * Win sets it to 0xXX61 + */ + MODULE_DEVICE_TABLE(pci, snd_emu10k1_ids); static int __devinit snd_card_emu10k1_probe(struct pci_dev *pci, @@ -124,6 +143,12 @@ snd_card_free(card); return err; } + + if ((err = snd_emu10k1_timer(emu, 0)) < 0) { + snd_card_free(card); + return err; + } + if (emu->audigy) { if ((err = snd_emu10k1_audigy_midi(emu)) < 0) { snd_card_free(card); @@ -155,7 +180,10 @@ } #endif - if (emu->audigy && (emu->revision == 4) ) { + if (emu->audigy && (emu->serial == 0x10011102) ) { + strcpy(card->driver, "Audigy2"); + strcpy(card->shortname, "Sound Blaster Audigy2_Value"); + } else if (emu->audigy && (emu->revision == 4) ) { strcpy(card->driver, "Audigy2"); strcpy(card->shortname, "Sound Blaster Audigy2"); } else if (emu->audigy) { @@ -168,7 +196,7 @@ strcpy(card->driver, "EMU10K1"); strcpy(card->shortname, "Sound Blaster Live!"); } - sprintf(card->longname, "%s (rev.%d) at 0x%lx, irq %i", card->shortname, emu->revision, emu->port, emu->irq); + sprintf(card->longname, "%s (rev.%d, serial:0x%x) at 0x%lx, irq %i", card->shortname, emu->revision, emu->serial, emu->port, emu->irq); if ((err = snd_card_register(card)) < 0) { snd_card_free(card); diff -Nru a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c --- a/sound/pci/emu10k1/emu10k1_main.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emu10k1_main.c 2005-01-02 23:05:38 -08:00 @@ -3,6 +3,10 @@ * Creative Labs, Inc. * Routines for control of EMU10K1 chips * + * Copyright (c) by James Courtier-Dutton + * Added support for Audigy 2 Value. + * + * * BUGS: * -- * @@ -183,6 +187,26 @@ outl(0x6E0000, emu->port + 0x20); outl(0xFF00FF00, emu->port + 0x24); } + if (emu->audigy && (emu->serial == 0x10011102) ) { /* audigy2 Value */ + /* Hacks for Alice3 to work independent of haP16V driver */ + u32 tmp; + + snd_printk(KERN_ERR "Audigy2 value:Special config.\n"); + //Setup SRCMulti_I2S SamplingRate + tmp = snd_emu10k1_ptr_read(emu, A_SPDIF_SAMPLERATE, 0); + tmp &= 0xfffff1ff; + tmp |= (0x2<<9); + snd_emu10k1_ptr_write(emu, A_SPDIF_SAMPLERATE, 0, tmp); + + /* Setup SRCSel (Enable Spdif,I2S SRCMulti) */ + outl(0x600000, emu->port + 0x20); + outl(0x14, emu->port + 0x24); + + /* Setup SRCMulti Input Audio Enable */ + outl(0x7b0000, emu->port + 0x20); + outl(0xFF000000, emu->port + 0x24); + } + /* * Clear page with silence & setup all pointers to this page @@ -267,6 +291,9 @@ * This has to be done after init ALice3 I2SOut beyond 48KHz. * So, sequence is important. */ outl(inl(emu->port + A_IOCFG) | 0x0040, emu->port + A_IOCFG); + } else if (emu->serial == 0x10011102) { /* audigy2 value */ + /* Unmute Analog now. */ + outl(inl(emu->port + A_IOCFG) | 0x0060, emu->port + A_IOCFG); } else { /* Disable routing from AC97 line out to Front speakers */ outl(inl(emu->port + A_IOCFG) | 0x0080, emu->port + A_IOCFG); @@ -590,7 +617,7 @@ *remu = NULL; // is_audigy = (int)pci->driver_data; - is_audigy = (pci->device == 0x0004); + is_audigy = (pci->device == 0x0004) || ( (pci->device == 0x0008) ); /* enable PCI device */ if ((err = pci_enable_device(pci)) < 0) @@ -689,7 +716,7 @@ emu->no_ac97 = 1; } - if (emu->revision == 4 && emu->model == 0x2002) { + if (emu->revision == 4 && (emu->model == 0x2001 || emu->model == 0x2002)) { /* Audigy 2 ZS */ snd_printdd(KERN_INFO "Audigy2 ZS is detected. setting 7.1 mode.\n"); emu->spk71 = 1; diff -Nru a/sound/pci/emu10k1/emu10k1_synth.c b/sound/pci/emu10k1/emu10k1_synth.c --- a/sound/pci/emu10k1/emu10k1_synth.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emu10k1_synth.c 2005-01-02 23:05:38 -08:00 @@ -28,7 +28,7 @@ /* * create a new hardware dependent device for Emu10k1 */ -int snd_emu10k1_synth_new_device(snd_seq_device_t *dev) +static int snd_emu10k1_synth_new_device(snd_seq_device_t *dev) { snd_emux_t *emu; emu10k1_t *hw; @@ -76,7 +76,7 @@ return 0; } -int snd_emu10k1_synth_delete_device(snd_seq_device_t *dev) +static int snd_emu10k1_synth_delete_device(snd_seq_device_t *dev) { snd_emux_t *emu; emu10k1_t *hw; diff -Nru a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c --- a/sound/pci/emu10k1/emufx.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emufx.c 2005-01-02 23:05:38 -08:00 @@ -437,7 +437,7 @@ } int snd_emu10k1_fx8010_unregister_irq_handler(emu10k1_t *emu, - snd_emu10k1_fx8010_irq_t *irq) + snd_emu10k1_fx8010_irq_t *irq) { snd_emu10k1_fx8010_irq_t *tmp; unsigned long flags; @@ -470,8 +470,8 @@ { snd_assert(*ptr < 512, return); set_bit(*ptr, icode->code_valid); - icode->code[*ptr ][0] = ((x & 0x3ff) << 10) | (y & 0x3ff); - icode->code[(*ptr)++][1] = ((op & 0x0f) << 20) | ((r & 0x3ff) << 10) | (a & 0x3ff); + icode->code[(*ptr) * 2 + 0] = ((x & 0x3ff) << 10) | (y & 0x3ff); + icode->code[(*ptr)++ * 2 + 1] = ((op & 0x0f) << 20) | ((r & 0x3ff) << 10) | (a & 0x3ff); } #define OP(icode, ptr, op, r, a, x, y) \ @@ -482,14 +482,14 @@ { snd_assert(*ptr < 1024, return); set_bit(*ptr, icode->code_valid); - icode->code[*ptr ][0] = ((x & 0x7ff) << 12) | (y & 0x7ff); - icode->code[(*ptr)++][1] = ((op & 0x0f) << 24) | ((r & 0x7ff) << 12) | (a & 0x7ff); + icode->code[(*ptr) * 2 + 0] = ((x & 0x7ff) << 12) | (y & 0x7ff); + icode->code[(*ptr)++ * 2 + 1] = ((op & 0x0f) << 24) | ((r & 0x7ff) << 12) | (a & 0x7ff); } #define A_OP(icode, ptr, op, r, a, x, y) \ snd_emu10k1_audigy_write_op(icode, ptr, op, r, a, x, y) -void snd_emu10k1_efx_write(emu10k1_t *emu, unsigned int pc, unsigned int data) +static void snd_emu10k1_efx_write(emu10k1_t *emu, unsigned int pc, unsigned int data) { pc += emu->audigy ? A_MICROCODEBASE : MICROCODEBASE; snd_emu10k1_ptr_write(emu, pc, 0, data); @@ -501,83 +501,108 @@ return snd_emu10k1_ptr_read(emu, pc, 0); } -static void snd_emu10k1_gpr_poke(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_gpr_poke(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { int gpr; + u32 val; for (gpr = 0; gpr < (emu->audigy ? 0x200 : 0x100); gpr++) { if (!test_bit(gpr, icode->gpr_valid)) continue; - snd_emu10k1_ptr_write(emu, emu->gpr_base + gpr, 0, icode->gpr_map[gpr]); + if (get_user(val, &icode->gpr_map[gpr])) + return -EFAULT; + snd_emu10k1_ptr_write(emu, emu->gpr_base + gpr, 0, val); } + return 0; } -static void snd_emu10k1_gpr_peek(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_gpr_peek(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { int gpr; + u32 val; for (gpr = 0; gpr < (emu->audigy ? 0x200 : 0x100); gpr++) { set_bit(gpr, icode->gpr_valid); - icode->gpr_map[gpr] = snd_emu10k1_ptr_read(emu, emu->gpr_base + gpr, 0); + val = snd_emu10k1_ptr_read(emu, emu->gpr_base + gpr, 0); + if (put_user(val, &icode->gpr_map[gpr])) + return -EFAULT; } + return 0; } -static void snd_emu10k1_tram_poke(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_tram_poke(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { int tram; + u32 addr, val; for (tram = 0; tram < (emu->audigy ? 0x100 : 0xa0); tram++) { if (!test_bit(tram, icode->tram_valid)) continue; - snd_emu10k1_ptr_write(emu, TANKMEMDATAREGBASE + tram, 0, icode->tram_data_map[tram]); - if (!emu->audigy) - snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + tram, 0, icode->tram_addr_map[tram]); - else { - snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + tram, 0, icode->tram_addr_map[tram] << 12); - snd_emu10k1_ptr_write(emu, A_TANKMEMCTLREGBASE + tram, 0, icode->tram_addr_map[tram] >> 20); + if (get_user(val, &icode->tram_data_map[tram]) || + get_user(addr, &icode->tram_addr_map[tram])) + return -EFAULT; + snd_emu10k1_ptr_write(emu, TANKMEMDATAREGBASE + tram, 0, val); + if (!emu->audigy) { + snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + tram, 0, addr); + } else { + snd_emu10k1_ptr_write(emu, TANKMEMADDRREGBASE + tram, 0, addr << 12); + snd_emu10k1_ptr_write(emu, A_TANKMEMCTLREGBASE + tram, 0, addr >> 20); } } + return 0; } -static void snd_emu10k1_tram_peek(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_tram_peek(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { int tram; + u32 val, addr; memset(icode->tram_valid, 0, sizeof(icode->tram_valid)); for (tram = 0; tram < (emu->audigy ? 0x100 : 0xa0); tram++) { set_bit(tram, icode->tram_valid); - icode->tram_data_map[tram] = snd_emu10k1_ptr_read(emu, TANKMEMDATAREGBASE + tram, 0); - if (!emu->audigy) - icode->tram_addr_map[tram] = snd_emu10k1_ptr_read(emu, TANKMEMADDRREGBASE + tram, 0); - else { - icode->tram_addr_map[tram] = snd_emu10k1_ptr_read(emu, TANKMEMADDRREGBASE + tram, 0) >> 12; - icode->tram_addr_map[tram] |= snd_emu10k1_ptr_read(emu, A_TANKMEMCTLREGBASE + tram, 0) << 20; + val = snd_emu10k1_ptr_read(emu, TANKMEMDATAREGBASE + tram, 0); + if (!emu->audigy) { + addr = snd_emu10k1_ptr_read(emu, TANKMEMADDRREGBASE + tram, 0); + } else { + addr = snd_emu10k1_ptr_read(emu, TANKMEMADDRREGBASE + tram, 0) >> 12; + addr |= snd_emu10k1_ptr_read(emu, A_TANKMEMCTLREGBASE + tram, 0) << 20; } + if (put_user(val, &icode->tram_data_map[tram]) || + put_user(addr, &icode->tram_addr_map[tram])) + return -EFAULT; } + return 0; } -static void snd_emu10k1_code_poke(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_code_poke(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { - u32 pc; + u32 pc, lo, hi; - for (pc = 0; pc < (emu->audigy ? 1024 : 512); pc++) { - if (!test_bit(pc, icode->code_valid)) + for (pc = 0; pc < (emu->audigy ? 2*1024 : 2*512); pc += 2) { + if (!test_bit(pc / 2, icode->code_valid)) continue; - snd_emu10k1_efx_write(emu, pc * 2, icode->code[pc][0]); - snd_emu10k1_efx_write(emu, pc * 2 + 1, icode->code[pc][1]); + if (get_user(lo, &icode->code[pc + 0]) || + get_user(hi, &icode->code[pc + 1])) + return -EFAULT; + snd_emu10k1_efx_write(emu, pc + 0, lo); + snd_emu10k1_efx_write(emu, pc + 1, hi); } + return 0; } -static void snd_emu10k1_code_peek(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_code_peek(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { u32 pc; memset(icode->code_valid, 0, sizeof(icode->code_valid)); - for (pc = 0; pc < (emu->audigy ? 1024 : 512); pc++) { - set_bit(pc, icode->code_valid); - icode->code[pc][0] = snd_emu10k1_efx_read(emu, pc * 2); - icode->code[pc][1] = snd_emu10k1_efx_read(emu, pc * 2 + 1); + for (pc = 0; pc < (emu->audigy ? 2*1024 : 2*512); pc += 2) { + set_bit(pc / 2, icode->code_valid); + if (put_user(snd_emu10k1_efx_read(emu, pc + 0), &icode->code[pc + 0])) + return -EFAULT; + if (put_user(snd_emu10k1_efx_read(emu, pc + 1), &icode->code[pc + 1])) + return -EFAULT; } + return 0; } static snd_emu10k1_fx8010_ctl_t *snd_emu10k1_look_for_ctl(emu10k1_t *emu, snd_ctl_elem_id_t *id) @@ -647,7 +672,7 @@ kfree(ctl); } -static void snd_emu10k1_add_controls(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_add_controls(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { unsigned int i, j; emu10k1_fx8010_control_gpr_t __user *_gctl; @@ -656,17 +681,20 @@ snd_kcontrol_new_t knew; snd_kcontrol_t *kctl; snd_ctl_elem_value_t *val; + int err = 0; val = (snd_ctl_elem_value_t *)kmalloc(sizeof(*val), GFP_KERNEL); if (!val) - return; + return -ENOMEM; for (i = 0, _gctl = icode->gpr_add_controls; i < icode->gpr_add_control_count; i++, _gctl++) { - if (copy_from_user(&gctl, _gctl, sizeof(gctl))) - break; + if (copy_from_user(&gctl, _gctl, sizeof(gctl))) { + err = -EFAULT; + goto __error; + } snd_runtime_check(gctl.id.iface == SNDRV_CTL_ELEM_IFACE_MIXER || - gctl.id.iface == SNDRV_CTL_ELEM_IFACE_PCM, continue); - snd_runtime_check(gctl.id.name[0] != '\0', continue); + gctl.id.iface == SNDRV_CTL_ELEM_IFACE_PCM, err = -EINVAL; goto __error); + snd_runtime_check(gctl.id.name[0] != '\0', err = -EINVAL; goto __error); ctl = snd_emu10k1_look_for_ctl(emu, &gctl.id); memset(&knew, 0, sizeof(knew)); knew.iface = gctl.id.iface; @@ -694,9 +722,9 @@ continue; knew.private_value = (unsigned long)ctl; memcpy(ctl, &nctl, sizeof(nctl)); - if (snd_ctl_add(emu->card, kctl = snd_ctl_new1(&knew, emu)) < 0) { + if ((err = snd_ctl_add(emu->card, kctl = snd_ctl_new1(&knew, emu))) < 0) { kfree(ctl); - continue; + goto __error; } kctl->private_free = snd_emu10k1_ctl_private_free; ctl->kcontrol = kctl; @@ -711,10 +739,12 @@ } snd_emu10k1_gpr_ctl_put(ctl->kcontrol, val); } + __error: kfree(val); + return err; } -static void snd_emu10k1_del_controls(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) +static int snd_emu10k1_del_controls(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) { unsigned int i; snd_ctl_elem_id_t id; @@ -724,13 +754,14 @@ for (i = 0, _id = icode->gpr_del_controls; i < icode->gpr_del_control_count; i++, _id++) { - snd_runtime_check(copy_from_user(&id, _id, sizeof(id)) == 0, continue); + snd_runtime_check(copy_from_user(&id, _id, sizeof(id)) == 0, return -EFAULT); down_write(&card->controls_rwsem); ctl = snd_emu10k1_look_for_ctl(emu, &id); if (ctl) snd_ctl_remove(card, ctl->kcontrol); up_write(&card->controls_rwsem); } + return 0; } static int snd_emu10k1_list_controls(emu10k1_t *emu, emu10k1_fx8010_code_t *icode) @@ -789,11 +820,12 @@ else snd_emu10k1_ptr_write(emu, DBG, 0, emu->fx8010.dbg | EMU10K1_DBG_SINGLE_STEP); /* ok, do the main job */ - snd_emu10k1_del_controls(emu, icode); - snd_emu10k1_gpr_poke(emu, icode); - snd_emu10k1_tram_poke(emu, icode); - snd_emu10k1_code_poke(emu, icode); - snd_emu10k1_add_controls(emu, icode); + if ((err = snd_emu10k1_del_controls(emu, icode)) < 0 || + (err = snd_emu10k1_gpr_poke(emu, icode)) < 0 || + (err = snd_emu10k1_tram_poke(emu, icode)) < 0 || + (err = snd_emu10k1_code_poke(emu, icode)) < 0 || + (err = snd_emu10k1_add_controls(emu, icode)) < 0) + goto __error; /* start FX processor when the DSP code is updated */ if (emu->audigy) snd_emu10k1_ptr_write(emu, A_DBG, 0, emu->fx8010.dbg); @@ -811,10 +843,13 @@ down(&emu->fx8010.lock); strlcpy(icode->name, emu->fx8010.name, sizeof(icode->name)); /* ok, do the main job */ - snd_emu10k1_gpr_peek(emu, icode); - snd_emu10k1_tram_peek(emu, icode); - snd_emu10k1_code_peek(emu, icode); - err = snd_emu10k1_list_controls(emu, icode); + err = snd_emu10k1_gpr_peek(emu, icode); + if (err >= 0) + err = snd_emu10k1_tram_peek(emu, icode); + if (err >= 0) + err = snd_emu10k1_code_peek(emu, icode); + if (err >= 0) + err = snd_emu10k1_list_controls(emu, icode); up(&emu->fx8010.lock); return err; } @@ -957,20 +992,24 @@ const int stereo_mix = capture + 2; const int tmp = 0x88; u32 ptr; - emu10k1_fx8010_code_t *icode; - emu10k1_fx8010_control_gpr_t *controls, *ctl; + emu10k1_fx8010_code_t *icode = NULL; + emu10k1_fx8010_control_gpr_t *controls = NULL, *ctl; mm_segment_t seg; spin_lock_init(&emu->fx8010.irq_lock); INIT_LIST_HEAD(&emu->fx8010.gpr_ctl); - if ((icode = kcalloc(1, sizeof(*icode), GFP_KERNEL)) == NULL) - return -ENOMEM; - if ((controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, sizeof(*controls), GFP_KERNEL)) == NULL) { - kfree(icode); - return -ENOMEM; + if ((icode = kcalloc(1, sizeof(*icode), GFP_KERNEL)) == NULL || + (icode->gpr_map = kcalloc(512 + 256 + 256 + 2 * 1024, sizeof(u_int32_t), GFP_KERNEL)) == NULL || + (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, sizeof(*controls), GFP_KERNEL)) == NULL) { + err = -ENOMEM; + goto __err; } + icode->tram_data_map = icode->gpr_map + 512; + icode->tram_addr_map = icode->tram_data_map + 256; + icode->code = icode->tram_addr_map + 256; + /* clear free GPRs */ for (i = 0; i < 512; i++) set_bit(i, icode->gpr_valid); @@ -1312,8 +1351,12 @@ A_PUT_OUTPUT(A_EXTOUT_LFE, playback+5 + SND_EMU10K1_PLAYBACK_CHANNELS); /* ADC buffer */ +#ifdef EMU10K1_CAPTURE_DIGITAL_OUT + A_PUT_STEREO_OUTPUT(A_EXTOUT_ADC_CAP_L, A_EXTOUT_ADC_CAP_R, playback + SND_EMU10K1_PLAYBACK_CHANNELS); +#else A_PUT_OUTPUT(A_EXTOUT_ADC_CAP_L, capture); A_PUT_OUTPUT(A_EXTOUT_ADC_CAP_R, capture+1); +#endif /* * ok, set up done.. @@ -1335,8 +1378,13 @@ snd_leave_user(seg); __err: - kfree(controls); - kfree(icode); + if (controls != NULL) + kfree(controls); + if (icode != NULL) { + if (icode->gpr_map != NULL) + kfree(icode->gpr_map); + kfree(icode); + } return err; } @@ -1398,8 +1446,8 @@ int err, i, z, gpr, tmp, playback, capture; u32 ptr; emu10k1_fx8010_code_t *icode; - emu10k1_fx8010_pcm_t *ipcm; - emu10k1_fx8010_control_gpr_t *controls, *ctl; + emu10k1_fx8010_pcm_t *ipcm = NULL; + emu10k1_fx8010_control_gpr_t *controls = NULL, *ctl; mm_segment_t seg; spin_lock_init(&emu->fx8010.irq_lock); @@ -1407,15 +1455,16 @@ if ((icode = kcalloc(1, sizeof(*icode), GFP_KERNEL)) == NULL) return -ENOMEM; - if ((controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, sizeof(emu10k1_fx8010_control_gpr_t), GFP_KERNEL)) == NULL) { - kfree(icode); - return -ENOMEM; - } - if ((ipcm = kcalloc(1, sizeof(*ipcm), GFP_KERNEL)) == NULL) { - kfree(controls); - kfree(icode); - return -ENOMEM; + if ((icode->gpr_map = kcalloc(256 + 160 + 160 + 2 * 512, sizeof(u_int32_t), GFP_KERNEL)) == NULL || + (controls = kcalloc(SND_EMU10K1_GPR_CONTROLS, sizeof(emu10k1_fx8010_control_gpr_t), GFP_KERNEL)) == NULL || + (ipcm = kcalloc(1, sizeof(*ipcm), GFP_KERNEL)) == NULL) { + err = -ENOMEM; + goto __err; } + + icode->tram_data_map = icode->gpr_map + 256; + icode->tram_addr_map = icode->tram_data_map + 160; + icode->code = icode->tram_addr_map + 160; /* clear free GPRs */ for (i = 0; i < 256; i++) @@ -1906,9 +1955,15 @@ if (err >= 0) err = snd_emu10k1_ipcm_poke(emu, ipcm); __err: - kfree(ipcm); - kfree(controls); - kfree(icode); + if (ipcm != NULL) + kfree(ipcm); + if (controls != NULL) + kfree(controls); + if (icode != NULL) { + if (icode->gpr_map != NULL) + kfree(icode->gpr_map); + kfree(icode); + } return err; } @@ -1959,7 +2014,7 @@ } size = 0x2000 << size_reg; } - if (emu->fx8010.etram_pages.bytes == size) + if ((emu->fx8010.etram_pages.bytes / 2) == size) return 0; spin_lock_irq(&emu->emu_lock); outl(HCFG_LOCKTANKCACHE_MASK | inl(emu->port + HCFG), emu->port + HCFG); diff -Nru a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c --- a/sound/pci/emu10k1/emumixer.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emumixer.c 2005-01-02 23:05:38 -08:00 @@ -54,7 +54,7 @@ ucontrol->value.iec958.status[2] = (emu->spdif_bits[idx] >> 16) & 0xff; ucontrol->value.iec958.status[3] = (emu->spdif_bits[idx] >> 24) & 0xff; spin_unlock_irqrestore(&emu->reg_lock, flags); - return 0; + return 0; } static int snd_emu10k1_spdif_get_mask(snd_kcontrol_t * kcontrol, @@ -64,7 +64,7 @@ ucontrol->value.iec958.status[1] = 0xff; ucontrol->value.iec958.status[2] = 0xff; ucontrol->value.iec958.status[3] = 0xff; - return 0; + return 0; } static int snd_emu10k1_spdif_put(snd_kcontrol_t * kcontrol, @@ -87,27 +87,27 @@ emu->spdif_bits[idx] = val; } spin_unlock_irqrestore(&emu->reg_lock, flags); - return change; + return change; } static snd_kcontrol_new_t snd_emu10k1_spdif_mask_control = { .access = SNDRV_CTL_ELEM_ACCESS_READ, - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,MASK), + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,MASK), .count = 4, - .info = snd_emu10k1_spdif_info, - .get = snd_emu10k1_spdif_get_mask + .info = snd_emu10k1_spdif_info, + .get = snd_emu10k1_spdif_get_mask }; static snd_kcontrol_new_t snd_emu10k1_spdif_control = { - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT), + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT), .count = 4, - .info = snd_emu10k1_spdif_info, - .get = snd_emu10k1_spdif_get, - .put = snd_emu10k1_spdif_put + .info = snd_emu10k1_spdif_info, + .get = snd_emu10k1_spdif_get, + .put = snd_emu10k1_spdif_put }; @@ -165,7 +165,7 @@ ucontrol->value.integer.value[(voice * num_efx) + idx] = mix->send_routing[voice][idx] & mask; spin_unlock_irqrestore(&emu->reg_lock, flags); - return 0; + return 0; } static int snd_emu10k1_send_routing_put(snd_kcontrol_t * kcontrol, @@ -199,18 +199,18 @@ } } spin_unlock_irqrestore(&emu->reg_lock, flags); - return change; + return change; } static snd_kcontrol_new_t snd_emu10k1_send_routing_control = { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE, - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .name = "EMU10K1 PCM Send Routing", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "EMU10K1 PCM Send Routing", .count = 32, - .info = snd_emu10k1_send_routing_info, - .get = snd_emu10k1_send_routing_get, - .put = snd_emu10k1_send_routing_put + .info = snd_emu10k1_send_routing_info, + .get = snd_emu10k1_send_routing_get, + .put = snd_emu10k1_send_routing_put }; static int snd_emu10k1_send_volume_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) @@ -236,7 +236,7 @@ for (idx = 0; idx < 3*num_efx; idx++) ucontrol->value.integer.value[idx] = mix->send_volume[idx/num_efx][idx%num_efx]; spin_unlock_irqrestore(&emu->reg_lock, flags); - return 0; + return 0; } static int snd_emu10k1_send_volume_put(snd_kcontrol_t * kcontrol, @@ -268,18 +268,18 @@ } } spin_unlock_irqrestore(&emu->reg_lock, flags); - return change; + return change; } static snd_kcontrol_new_t snd_emu10k1_send_volume_control = { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE, - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .name = "EMU10K1 PCM Send Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "EMU10K1 PCM Send Volume", .count = 32, - .info = snd_emu10k1_send_volume_info, - .get = snd_emu10k1_send_volume_get, - .put = snd_emu10k1_send_volume_put + .info = snd_emu10k1_send_volume_info, + .get = snd_emu10k1_send_volume_get, + .put = snd_emu10k1_send_volume_put }; static int snd_emu10k1_attn_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) @@ -303,7 +303,7 @@ for (idx = 0; idx < 3; idx++) ucontrol->value.integer.value[idx] = mix->attn[idx]; spin_unlock_irqrestore(&emu->reg_lock, flags); - return 0; + return 0; } static int snd_emu10k1_attn_put(snd_kcontrol_t * kcontrol, @@ -331,18 +331,18 @@ } } spin_unlock_irqrestore(&emu->reg_lock, flags); - return change; + return change; } static snd_kcontrol_new_t snd_emu10k1_attn_control = { .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE, - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - .name = "EMU10K1 PCM Volume", + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "EMU10K1 PCM Volume", .count = 32, - .info = snd_emu10k1_attn_info, - .get = snd_emu10k1_attn_get, - .put = snd_emu10k1_attn_put + .info = snd_emu10k1_attn_info, + .get = snd_emu10k1_attn_get, + .put = snd_emu10k1_attn_put }; static int snd_emu10k1_shared_spdif_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) @@ -363,7 +363,7 @@ ucontrol->value.integer.value[0] = inl(emu->port + A_IOCFG) & A_IOCFG_GPOUT0 ? 1 : 0; else ucontrol->value.integer.value[0] = inl(emu->port + HCFG) & HCFG_GPOUT0 ? 1 : 0; - return 0; + return 0; } static int snd_emu10k1_shared_spdif_put(snd_kcontrol_t * kcontrol, @@ -394,7 +394,7 @@ outl(reg | val, emu->port + HCFG); } spin_unlock_irqrestore(&emu->reg_lock, flags); - return change; + return change; } static snd_kcontrol_new_t snd_emu10k1_shared_spdif __devinitdata = diff -Nru a/sound/pci/emu10k1/emupcm.c b/sound/pci/emu10k1/emupcm.c --- a/sound/pci/emu10k1/emupcm.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emupcm.c 2005-01-02 23:05:38 -08:00 @@ -267,6 +267,7 @@ send_routing[3] = 3; memset(send_amount, 0, sizeof(send_amount)); } else { + /* mono, left, right (master voice = left) */ tmp = stereo ? (master ? 1 : 2) : 0; memcpy(send_routing, &mix->send_routing[tmp][0], 8); memcpy(send_amount, &mix->send_volume[tmp][0], 8); @@ -292,15 +293,9 @@ // setup routing if (emu->audigy) { snd_emu10k1_ptr_write(emu, A_FXRT1, voice, - ((unsigned int)send_routing[3] << 24) | - ((unsigned int)send_routing[2] << 16) | - ((unsigned int)send_routing[1] << 8) | - (unsigned int)send_routing[0]); + snd_emu10k1_compose_audigy_fxrt1(send_routing)); snd_emu10k1_ptr_write(emu, A_FXRT2, voice, - ((unsigned int)send_routing[7] << 24) | - ((unsigned int)send_routing[6] << 16) | - ((unsigned int)send_routing[5] << 8) | - (unsigned int)send_routing[4]); + snd_emu10k1_compose_audigy_fxrt2(send_routing)); snd_emu10k1_ptr_write(emu, A_SENDAMOUNTS, voice, ((unsigned int)send_amount[4] << 24) | ((unsigned int)send_amount[5] << 16) | diff -Nru a/sound/pci/emu10k1/emuproc.c b/sound/pci/emu10k1/emuproc.c --- a/sound/pci/emu10k1/emuproc.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/emuproc.c 2005-01-02 23:05:38 -08:00 @@ -175,32 +175,45 @@ }; emu10k1_t *emu = entry->private_data; - unsigned int val; + unsigned int val, val1; int nefx = emu->audigy ? 64 : 32; char **outputs = emu->audigy ? audigy_outs : creative_outs; int idx; snd_iprintf(buffer, "EMU10K1\n\n"); - val = emu->audigy ? - snd_emu10k1_ptr_read(emu, A_FXRT1, 0) : - snd_emu10k1_ptr_read(emu, FXRT, 0); snd_iprintf(buffer, "Card : %s\n", emu->audigy ? "Audigy" : (emu->APS ? "EMU APS" : "Creative")); snd_iprintf(buffer, "Internal TRAM (words) : 0x%x\n", emu->fx8010.itram_size); snd_iprintf(buffer, "External TRAM (words) : 0x%x\n", (int)emu->fx8010.etram_pages.bytes); snd_iprintf(buffer, "\n"); - if (emu->audigy) { - snd_iprintf(buffer, "Effect Send Routing : A=%i, B=%i, C=%i, D=%i\n", - val & 0x3f, - (val >> 8) & 0x3f, - (val >> 16) & 0x3f, - (val >> 24) & 0x3f); - } else { - snd_iprintf(buffer, "Effect Send Routing : A=%i, B=%i, C=%i, D=%i\n", - (val >> 16) & 0x0f, - (val >> 20) & 0x0f, - (val >> 24) & 0x0f, - (val >> 28) & 0x0f); + snd_iprintf(buffer, "Effect Send Routing :\n"); + for (idx = 0; idx < NUM_G; idx++) { + val = emu->audigy ? + snd_emu10k1_ptr_read(emu, A_FXRT1, idx) : + snd_emu10k1_ptr_read(emu, FXRT, idx); + val1 = emu->audigy ? + snd_emu10k1_ptr_read(emu, A_FXRT2, idx) : + 0; + if (emu->audigy) { + snd_iprintf(buffer, "Ch%i: A=%i, B=%i, C=%i, D=%i, ", + idx, + val & 0x3f, + (val >> 8) & 0x3f, + (val >> 16) & 0x3f, + (val >> 24) & 0x3f); + snd_iprintf(buffer, "E=%i, F=%i, G=%i, H=%i\n", + val1 & 0x3f, + (val1 >> 8) & 0x3f, + (val1 >> 16) & 0x3f, + (val1 >> 24) & 0x3f); + } else { + snd_iprintf(buffer, "Ch%i: A=%i, B=%i, C=%i, D=%i\n", + idx, + (val >> 16) & 0x0f, + (val >> 20) & 0x0f, + (val >> 24) & 0x0f, + (val >> 28) & 0x0f); + } } snd_iprintf(buffer, "\nCaptured FX Outputs :\n"); for (idx = 0; idx < nefx; idx++) { @@ -309,6 +322,152 @@ return 0; } +#ifdef CONFIG_SND_DEBUG +static void snd_emu_proc_io_reg_read(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + emu10k1_t *emu = entry->private_data; + unsigned long value; + unsigned long flags; + int i; + snd_iprintf(buffer, "IO Registers:\n\n"); + for(i = 0; i < 0x40; i+=4) { + spin_lock_irqsave(&emu->emu_lock, flags); + value = inl(emu->port + i); + spin_unlock_irqrestore(&emu->emu_lock, flags); + snd_iprintf(buffer, "%02X: %08lX\n", i, value); + } +} + +static void snd_emu_proc_io_reg_write(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + emu10k1_t *emu = entry->private_data; + unsigned long flags; + char line[64]; + u32 reg, val; + while (!snd_info_get_line(buffer, line, sizeof(line))) { + if (sscanf(line, "%x %x", ®, &val) != 2) + continue; + if ((reg < 0x40) && (reg >=0) && (val <= 0xffffffff) ) { + spin_lock_irqsave(&emu->emu_lock, flags); + outl(val, emu->port + (reg & 0xfffffffc)); + spin_unlock_irqrestore(&emu->emu_lock, flags); + } + } +} + +static unsigned int snd_ptr_read(emu10k1_t * emu, + unsigned int iobase, + unsigned int reg, + unsigned int chn) +{ + unsigned long flags; + unsigned int regptr, val; + + regptr = (reg << 16) | chn; + + spin_lock_irqsave(&emu->emu_lock, flags); + outl(regptr, emu->port + iobase + PTR); + val = inl(emu->port + iobase + DATA); + spin_unlock_irqrestore(&emu->emu_lock, flags); + return val; +} + +static void snd_ptr_write(emu10k1_t *emu, + unsigned int iobase, + unsigned int reg, + unsigned int chn, + unsigned int data) +{ + unsigned int regptr; + unsigned long flags; + + regptr = (reg << 16) | chn; + + spin_lock_irqsave(&emu->emu_lock, flags); + outl(regptr, emu->port + iobase + PTR); + outl(data, emu->port + iobase + DATA); + spin_unlock_irqrestore(&emu->emu_lock, flags); +} + + +static void snd_emu_proc_ptr_reg_read(snd_info_entry_t *entry, + snd_info_buffer_t * buffer, int iobase, int offset, int length) +{ + emu10k1_t *emu = entry->private_data; + unsigned long value; + int i,j; + if (offset+length > 0x80) { + snd_iprintf(buffer, "Input values out of range\n"); + return; + } + snd_iprintf(buffer, "Registers 0x%x\n", iobase); + for(i = offset; i < offset+length; i++) { + snd_iprintf(buffer, "%02X: ",i); + for (j = 0; j < 4; j++) { + if(iobase == 0) + value = snd_ptr_read(emu, 0, i, j); + else + value = snd_ptr_read(emu, 0x20, i, j); + snd_iprintf(buffer, "%08lX ", value); + } + snd_iprintf(buffer, "\n"); + } +} + +static void snd_emu_proc_ptr_reg_write(snd_info_entry_t *entry, + snd_info_buffer_t * buffer, int iobase) +{ + emu10k1_t *emu = entry->private_data; + char line[64]; + unsigned int reg, channel_id , val; + while (!snd_info_get_line(buffer, line, sizeof(line))) { + if (sscanf(line, "%x %x %x", ®, &channel_id, &val) != 3) + continue; + if ((reg < 0x80) && (reg >=0) && (val <= 0xffffffff) && (channel_id >=0) && (channel_id <= 3) ) + snd_ptr_write(emu, iobase, reg, channel_id, val); + } +} + +static void snd_emu_proc_ptr_reg_write00(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + snd_emu_proc_ptr_reg_write(entry, buffer, 0); +} + +static void snd_emu_proc_ptr_reg_write20(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + snd_emu_proc_ptr_reg_write(entry, buffer, 0x20); +} + + +static void snd_emu_proc_ptr_reg_read00a(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + snd_emu_proc_ptr_reg_read(entry, buffer, 0, 0, 0x40); +} + +static void snd_emu_proc_ptr_reg_read00b(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + snd_emu_proc_ptr_reg_read(entry, buffer, 0, 0x40, 0x40); +} + +static void snd_emu_proc_ptr_reg_read20a(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + snd_emu_proc_ptr_reg_read(entry, buffer, 0x20, 0, 0x40); +} + +static void snd_emu_proc_ptr_reg_read20b(snd_info_entry_t *entry, + snd_info_buffer_t * buffer) +{ + snd_emu_proc_ptr_reg_read(entry, buffer, 0x20, 0x40, 0x40); +} +#endif + static struct snd_info_entry_ops snd_emu10k1_proc_ops_fx8010 = { .read = snd_emu10k1_fx8010_read, }; @@ -316,9 +475,36 @@ int __devinit snd_emu10k1_proc_init(emu10k1_t * emu) { snd_info_entry_t *entry; +#ifdef CONFIG_SND_DEBUG + if (! snd_card_proc_new(emu->card, "io_regs", &entry)) { + snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_io_reg_read); + entry->c.text.write_size = 64; + entry->c.text.write = snd_emu_proc_io_reg_write; + } + if (! snd_card_proc_new(emu->card, "ptr_regs00a", &entry)) { + snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read00a); + entry->c.text.write_size = 64; + entry->c.text.write = snd_emu_proc_ptr_reg_write00; + } + if (! snd_card_proc_new(emu->card, "ptr_regs00b", &entry)) { + snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read00b); + entry->c.text.write_size = 64; + entry->c.text.write = snd_emu_proc_ptr_reg_write00; + } + if (! snd_card_proc_new(emu->card, "ptr_regs20a", &entry)) { + snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read20a); + entry->c.text.write_size = 64; + entry->c.text.write = snd_emu_proc_ptr_reg_write20; + } + if (! snd_card_proc_new(emu->card, "ptr_regs20b", &entry)) { + snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_ptr_reg_read20b); + entry->c.text.write_size = 64; + entry->c.text.write = snd_emu_proc_ptr_reg_write20; + } +#endif if (! snd_card_proc_new(emu->card, "emu10k1", &entry)) - snd_info_set_text_ops(entry, emu, 1024, snd_emu10k1_proc_read); + snd_info_set_text_ops(entry, emu, 2048, snd_emu10k1_proc_read); if (! snd_card_proc_new(emu->card, "fx8010_gpr", &entry)) { entry->content = SNDRV_INFO_CONTENT_DATA; diff -Nru a/sound/pci/emu10k1/io.c b/sound/pci/emu10k1/io.c --- a/sound/pci/emu10k1/io.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/io.c 2005-01-02 23:05:38 -08:00 @@ -313,28 +313,3 @@ return 0; /* Should never reach this point */ } -/* - * Returns an attenuation based upon a cumulative volume value - * Algorithm calculates 0x200 - 0x10 log2 (input) - */ - -unsigned char snd_emu10k1_sum_vol_attn(unsigned int value) -{ - unsigned short count = 16, ans; - - if (value == 0) - return 0xFF; - - /* Find first SET bit. This is the integer part of the value */ - while ((value & 0x10000) == 0) { - value <<= 1; - count--; - } - - /* The REST of the data is the fractional part. */ - ans = (unsigned short) (0x110 - ((count << 4) + ((value & 0x0FFFFL) >> 12))); - if (ans > 0xFF) - ans = 0xFF; - - return (unsigned char) ans; -} diff -Nru a/sound/pci/emu10k1/irq.c b/sound/pci/emu10k1/irq.c --- a/sound/pci/emu10k1/irq.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/emu10k1/irq.c 2005-01-02 23:05:38 -08:00 @@ -112,8 +112,8 @@ status &= ~(IPR_A_MIDITRANSBUFEMPTY2|IPR_A_MIDIRECVBUFEMPTY2); } if (status & IPR_INTERVALTIMER) { - if (emu->timer_interrupt) - emu->timer_interrupt(emu); + if (emu->timer) + snd_timer_interrupt(emu->timer, emu->timer->sticks); else snd_emu10k1_intr_disable(emu, INTE_INTERVALTIMERENB); status &= ~IPR_INTERVALTIMER; diff -Nru a/sound/pci/emu10k1/timer.c b/sound/pci/emu10k1/timer.c --- /dev/null Wed Dec 31 16:00:00 196900 +++ b/sound/pci/emu10k1/timer.c 2005-01-02 23:05:38 -08:00 @@ -0,0 +1,99 @@ +/* + * Copyright (c) by Lee Revell + * + * Routines for control of EMU10K1 chips + * + * Copied from similar code by Clemens Ladisch in the ymfpci driver + * + * BUGS: + * -- + * + * TODO: + * -- + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include + +static int snd_emu10k1_timer_start(snd_timer_t *timer) +{ + emu10k1_t *emu; + unsigned long flags; + unsigned int delay; + + emu = snd_timer_chip(timer); + delay = timer->sticks - 1; + if (delay < 5 ) /* minimum time is 5 ticks */ + delay = 5; + spin_lock_irqsave(&emu->reg_lock, flags); + snd_emu10k1_intr_enable(emu, INTE_INTERVALTIMERENB); + outw(delay & TIMER_RATE_MASK, emu->port + TIMER); + spin_unlock_irqrestore(&emu->reg_lock, flags); + return 0; +} + +static int snd_emu10k1_timer_stop(snd_timer_t *timer) +{ + emu10k1_t *emu; + unsigned long flags; + + emu = snd_timer_chip(timer); + spin_lock_irqsave(&emu->reg_lock, flags); + snd_emu10k1_intr_disable(emu, INTE_INTERVALTIMERENB); + spin_unlock_irqrestore(&emu->reg_lock, flags); + return 0; +} + +static int snd_emu10k1_timer_precise_resolution(snd_timer_t *timer, + unsigned long *num, unsigned long *den) +{ + *num = 1; + *den = 48000; + return 0; +} + +static struct _snd_timer_hardware snd_emu10k1_timer_hw = { + .flags = SNDRV_TIMER_HW_AUTO, + .resolution = 20833, /* 1 sample @ 48KHZ = 20.833...us */ + .ticks = 1024, + .start = snd_emu10k1_timer_start, + .stop = snd_emu10k1_timer_stop, + .precise_resolution = snd_emu10k1_timer_precise_resolution, +}; + +int __devinit snd_emu10k1_timer(emu10k1_t *emu, int device) +{ + snd_timer_t *timer = NULL; + snd_timer_id_t tid; + int err; + + tid.dev_class = SNDRV_TIMER_CLASS_CARD; + tid.dev_sclass = SNDRV_TIMER_SCLASS_NONE; + tid.card = emu->card->number; + tid.device = device; + tid.subdevice = 0; + if ((err = snd_timer_new(emu->card, "EMU10K1", &tid, &timer)) >= 0) { + strcpy(timer->name, "EMU10K1 timer"); + timer->private_data = emu; + timer->hw = snd_emu10k1_timer_hw; + } + emu->timer = timer; + return err; +} diff -Nru a/sound/pci/es1968.c b/sound/pci/es1968.c --- a/sound/pci/es1968.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/es1968.c 2005-01-02 23:05:38 -08:00 @@ -837,23 +837,19 @@ static void snd_es1968_bob_stop(es1968_t *chip) { u16 reg; - unsigned long flags; - spin_lock_irqsave(&chip->reg_lock, flags); reg = __maestro_read(chip, 0x11); reg &= ~ESM_BOB_ENABLE; __maestro_write(chip, 0x11, reg); reg = __maestro_read(chip, 0x17); reg &= ~ESM_BOB_START; __maestro_write(chip, 0x17, reg); - spin_unlock_irqrestore(&chip->reg_lock, flags); } static void snd_es1968_bob_start(es1968_t *chip) { int prescale; int divide; - unsigned long flags; /* compute ideal interrupt frequency for buffer size & play rate */ /* first, find best prescaler value to match freq */ @@ -882,13 +878,11 @@ } else if (divide > 1) divide--; - spin_lock_irqsave(&chip->reg_lock, flags); __maestro_write(chip, 6, 0x9000 | (prescale << 5) | divide); /* set reg */ /* Now set IDR 11/17 */ __maestro_write(chip, 0x11, __maestro_read(chip, 0x11) | 1); __maestro_write(chip, 0x17, __maestro_read(chip, 0x17) | 1); - spin_unlock_irqrestore(&chip->reg_lock, flags); } /* call with substream spinlock */ diff -Nru a/sound/pci/ice1712/aureon.c b/sound/pci/ice1712/aureon.c --- a/sound/pci/ice1712/aureon.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/ice1712/aureon.c 2005-01-02 23:05:38 -08:00 @@ -1290,9 +1290,9 @@ { static unsigned short wm_inits_aureon[] = { /* These come first to reduce init pop noise */ - 0x1b, 0x005, /* ADC Mux (AC'97 source) */ - 0x1c, 0x00B, /* Out Mux1 (VOUT1 = ADC+AUX, VOUT2 = ADC) */ - 0x1d, 0x009, /* Out Mux2 (VOUT2 = ADC, VOUT3 = ADC) */ + 0x1b, 0x044, /* ADC Mux (AC'97 source) */ + 0x1c, 0x00B, /* Out Mux1 (VOUT1 = DAC+AUX, VOUT2 = DAC) */ + 0x1d, 0x009, /* Out Mux2 (VOUT2 = DAC, VOUT3 = DAC) */ 0x18, 0x000, /* All power-up */ diff -Nru a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c --- a/sound/pci/intel8x0.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/intel8x0.c 2005-01-02 23:05:38 -08:00 @@ -1743,6 +1743,12 @@ }, { .vendor = 0x1028, + .device = 0x010d, + .name = "Dell", /* which model? AD1885 */ + .type = AC97_TUNE_HP_ONLY + }, + { + .vendor = 0x1028, .device = 0x0126, .name = "Dell Optiplex GX260", /* AD1981A */ .type = AC97_TUNE_HP_ONLY @@ -1753,6 +1759,12 @@ .name = "Dell Precision 450", /* AD1981B*/ .type = AC97_TUNE_HP_ONLY }, + { + .vendor = 0x1028, + .device = 0x0147, + .name = "Dell", /* which model? AD1981B*/ + .type = AC97_TUNE_HP_ONLY + }, { /* FIXME: which codec? */ .vendor = 0x103c, .device = 0x00c3, @@ -2765,11 +2777,7 @@ static int __init alsa_card_intel8x0_init(void) { - int err; - - if ((err = pci_module_init(&driver)) < 0) - return err; - return 0; + return pci_module_init(&driver); } static void __exit alsa_card_intel8x0_exit(void) diff -Nru a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c --- a/sound/pci/korg1212/korg1212.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/korg1212/korg1212.c 2005-01-02 23:05:38 -08:00 @@ -472,7 +472,8 @@ "SPDIF-R", }; -u16 ClockSourceSelector[] = {0x8000, // selects source as ADAT at 44.1 kHz +static u16 ClockSourceSelector[] = + {0x8000, // selects source as ADAT at 44.1 kHz 0x0000, // selects source as ADAT at 48 kHz 0x8001, // selects source as S/PDIF at 44.1 kHz 0x0001, // selects source as S/PDIF at 48 kHz diff -Nru a/sound/pci/mixart/mixart_core.c b/sound/pci/mixart/mixart_core.c --- a/sound/pci/mixart/mixart_core.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/mixart/mixart_core.c 2005-01-02 23:05:38 -08:00 @@ -72,9 +72,12 @@ static int get_msg(mixart_mgr_t *mgr, mixart_msg_t *resp, u32 msg_frame_address ) { unsigned long flags; - u32 headptr, i; + u32 headptr; u32 size; int err; +#ifndef __BIG_ENDIAN + unsigned int i; +#endif spin_lock_irqsave(&mgr->msg_lock, flags); err = 0; diff -Nru a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c --- a/sound/pci/rme9652/hdsp.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/rme9652/hdsp.c 2005-01-02 23:05:38 -08:00 @@ -934,6 +934,7 @@ } position &= HDSP_BufferPositionMask; + position /= 4; position &= (hdsp->period_bytes/2) - 1; return position; } @@ -1443,14 +1444,14 @@ return 0; } -snd_rawmidi_ops_t snd_hdsp_midi_output = +static snd_rawmidi_ops_t snd_hdsp_midi_output = { .open = snd_hdsp_midi_output_open, .close = snd_hdsp_midi_output_close, .trigger = snd_hdsp_midi_output_trigger, }; -snd_rawmidi_ops_t snd_hdsp_midi_input = +static snd_rawmidi_ops_t snd_hdsp_midi_input = { .open = snd_hdsp_midi_input_open, .close = snd_hdsp_midi_input_close, @@ -3137,7 +3138,7 @@ static snd_kcontrol_new_t snd_hdsp_96xx_aeb = HDSP_AEB("Analog Extension Board", 0); static snd_kcontrol_new_t snd_hdsp_adat_sync_check = HDSP_ADAT_SYNC_CHECK; -int snd_hdsp_create_controls(snd_card_t *card, hdsp_t *hdsp) +static int snd_hdsp_create_controls(snd_card_t *card, hdsp_t *hdsp) { unsigned int idx; int err; @@ -3651,7 +3652,7 @@ return 0; } -void hdsp_midi_tasklet(unsigned long arg) +static void hdsp_midi_tasklet(unsigned long arg) { hdsp_t *hdsp = (hdsp_t *)arg; diff -Nru a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c --- a/sound/pci/rme9652/rme9652.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/rme9652/rme9652.c 2005-01-02 23:05:38 -08:00 @@ -1584,7 +1584,7 @@ static snd_kcontrol_new_t snd_rme9652_adat1_input = RME9652_ADAT1_IN("ADAT1 Input Source", 0); -int snd_rme9652_create_controls(snd_card_t *card, rme9652_t *rme9652) +static int snd_rme9652_create_controls(snd_card_t *card, rme9652_t *rme9652) { unsigned int idx; int err; diff -Nru a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c --- a/sound/pci/sonicvibes.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/sonicvibes.c 2005-01-02 23:05:38 -08:00 @@ -357,8 +357,8 @@ return value; } -#ifdef CONFIG_SND_DEBUG -void snd_sonicvibes_debug(sonicvibes_t * sonic) +#if 0 +static void snd_sonicvibes_debug(sonicvibes_t * sonic) { printk("SV REGS: INDEX = 0x%02x ", inb(SV_REG(sonic, INDEX))); printk(" STATUS = 0x%02x\n", inb(SV_REG(sonic, STATUS))); diff -Nru a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c --- a/sound/pci/trident/trident_main.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/trident/trident_main.c 2005-01-02 23:05:38 -08:00 @@ -53,6 +53,9 @@ #endif static int snd_trident_sis_reset(trident_t *trident); +static void snd_trident_clear_voices(trident_t * trident, unsigned short v_min, unsigned short v_max); +static int snd_trident_free(trident_t *trident); + /* * common I/O routines */ @@ -632,7 +635,7 @@ Returns: Delta value. ---------------------------------------------------------------------------*/ -unsigned int snd_trident_convert_rate(unsigned int rate) +static unsigned int snd_trident_convert_rate(unsigned int rate) { unsigned int delta; @@ -692,7 +695,7 @@ Returns: Delta value. ---------------------------------------------------------------------------*/ -unsigned int snd_trident_spurious_threshold(unsigned int rate, unsigned int period_size) +static unsigned int snd_trident_spurious_threshold(unsigned int rate, unsigned int period_size) { unsigned int res = (rate * period_size) / 48000; if (res < 64) @@ -713,7 +716,7 @@ Returns: Control value. ---------------------------------------------------------------------------*/ -unsigned int snd_trident_control_mode(snd_pcm_substream_t *substream) +static unsigned int snd_trident_control_mode(snd_pcm_substream_t *substream) { unsigned int CTRL; snd_pcm_runtime_t *runtime = substream->runtime; @@ -770,8 +773,8 @@ ---------------------------------------------------------------------------*/ -int snd_trident_allocate_pcm_mem(snd_pcm_substream_t * substream, - snd_pcm_hw_params_t * hw_params) +static int snd_trident_allocate_pcm_mem(snd_pcm_substream_t * substream, + snd_pcm_hw_params_t * hw_params) { trident_t *trident = snd_pcm_substream_chip(substream); snd_pcm_runtime_t *runtime = substream->runtime; @@ -804,8 +807,8 @@ ---------------------------------------------------------------------------*/ -int snd_trident_allocate_evoice(snd_pcm_substream_t * substream, - snd_pcm_hw_params_t * hw_params) +static int snd_trident_allocate_evoice(snd_pcm_substream_t * substream, + snd_pcm_hw_params_t * hw_params) { trident_t *trident = snd_pcm_substream_chip(substream); snd_pcm_runtime_t *runtime = substream->runtime; @@ -3658,7 +3661,7 @@ ---------------------------------------------------------------------------*/ -int snd_trident_free(trident_t *trident) +static int snd_trident_free(trident_t *trident) { #if defined(CONFIG_GAMEPORT) || (defined(MODULE) && defined(CONFIG_GAMEPORT_MODULE)) if (trident->gameport) { @@ -3807,9 +3810,9 @@ } /*--------------------------------------------------------------------------- - snd_trident_attach_synthesizer, snd_trident_detach_synthesizer + snd_trident_attach_synthesizer - Description: Attach/detach synthesizer hooks + Description: Attach synthesizer hooks Paramters: trident - device specific private data for 4DWave card @@ -3828,17 +3831,6 @@ return 0; } -int snd_trident_detach_synthesizer(trident_t *trident) -{ -#if defined(CONFIG_SND_SEQUENCER) || (defined(MODULE) && defined(CONFIG_SND_SEQUENCER_MODULE)) - if (trident->seq_dev) { - snd_device_free(trident->card, trident->seq_dev); - trident->seq_dev = NULL; - } -#endif - return 0; -} - snd_trident_voice_t *snd_trident_alloc_voice(trident_t * trident, int type, int client, int port) { snd_trident_voice_t *pvoice; @@ -3911,7 +3903,7 @@ private_free(voice); } -void snd_trident_clear_voices(trident_t * trident, unsigned short v_min, unsigned short v_max) +static void snd_trident_clear_voices(trident_t * trident, unsigned short v_min, unsigned short v_max) { unsigned int i, val, mask[2] = { 0, 0 }; @@ -4001,9 +3993,7 @@ EXPORT_SYMBOL(snd_trident_start_voice); EXPORT_SYMBOL(snd_trident_stop_voice); EXPORT_SYMBOL(snd_trident_write_voice_regs); -EXPORT_SYMBOL(snd_trident_clear_voices); /* trident_memory.c symbols */ EXPORT_SYMBOL(snd_trident_synth_alloc); EXPORT_SYMBOL(snd_trident_synth_free); -EXPORT_SYMBOL(snd_trident_synth_bzero); EXPORT_SYMBOL(snd_trident_synth_copy_from_user); diff -Nru a/sound/pci/trident/trident_memory.c b/sound/pci/trident/trident_memory.c --- a/sound/pci/trident/trident_memory.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/trident/trident_memory.c 2005-01-02 23:05:38 -08:00 @@ -450,29 +450,6 @@ } /* - * bzero(blk + offset, size) - */ -int snd_trident_synth_bzero(trident_t *trident, snd_util_memblk_t *blk, int offset, int size) -{ - int page, nextofs, end_offset, temp, temp1; - - offset += blk->offset; - end_offset = offset + size; - page = get_aligned_page(offset) + 1; - do { - nextofs = aligned_page_offset(page); - temp = nextofs - offset; - temp1 = end_offset - offset; - if (temp1 < temp) - temp = temp1; - memset(offset_ptr(trident, offset), 0, temp); - offset = nextofs; - page++; - } while (offset < end_offset); - return 0; -} - -/* * copy_from_user(blk + offset, data, size) */ int snd_trident_synth_copy_from_user(trident_t *trident, snd_util_memblk_t *blk, int offset, const char __user *data, int size) diff -Nru a/sound/pci/trident/trident_synth.c b/sound/pci/trident/trident_synth.c --- a/sound/pci/trident/trident_synth.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/trident/trident_synth.c 2005-01-02 23:05:38 -08:00 @@ -618,7 +618,7 @@ instr = snd_seq_instr_find(trident->synth.ilist, &v->instr, 0, 1); if (instr != NULL) { if (instr->ops) { - if (instr->ops->instr_type == snd_seq_simple_id) + if (!strcmp(instr->ops->instr_type, SNDRV_SEQ_INSTR_ID_SIMPLE)) snd_trident_simple_init(v); } snd_seq_instr_free_use(trident->synth.ilist, instr); @@ -811,7 +811,7 @@ snd_seq_instr_list_free_cond(p->trident->synth.ilist, &ifree, client, 0); } -int snd_trident_synth_event_input(snd_seq_event_t * ev, int direct, void *private_data, int atomic, int hop) +static int snd_trident_synth_event_input(snd_seq_event_t * ev, int direct, void *private_data, int atomic, int hop) { snd_trident_port_t *p = (snd_trident_port_t *) private_data; diff -Nru a/sound/pci/via82xx.c b/sound/pci/via82xx.c --- a/sound/pci/via82xx.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/via82xx.c 2005-01-02 23:05:38 -08:00 @@ -2107,11 +2107,13 @@ { .vendor = 0x1297, .device = 0xa232, .action = VIA_DXS_ENABLE }, /* Shuttle ?? */ { .vendor = 0x1297, .device = 0xc160, .action = VIA_DXS_ENABLE }, /* Shuttle SK41G */ { .vendor = 0x1458, .device = 0xa002, .action = VIA_DXS_ENABLE }, /* Gigabyte GA-7VAXP */ - { .vendor = 0x147b, .device = 0x1401, .action = VIA_DXS_ENABLE }, /* ABIT KD7(-RAID) */ - { .vendor = 0x14ff, .device = 0x0403, .action = VIA_DXS_ENABLE }, /* Twinhead mobo */ { .vendor = 0x1462, .device = 0x3800, .action = VIA_DXS_ENABLE }, /* MSI KT266 */ - { .vendor = 0x1462, .device = 0x7120, .action = VIA_DXS_ENABLE }, /* MSI KT4V */ { .vendor = 0x1462, .device = 0x5901, .action = VIA_DXS_NO_VRA }, /* MSI KT6 Delta-SR */ + { .vendor = 0x1462, .device = 0x7120, .action = VIA_DXS_ENABLE }, /* MSI KT4V */ + { .vendor = 0x147b, .device = 0x1401, .action = VIA_DXS_ENABLE }, /* ABIT KD7(-RAID) */ + { .vendor = 0x147b, .device = 0x1413, .action = VIA_DXS_ENABLE }, /* ABIT KV8 Pro */ + { .vendor = 0x147b, .device = 0x1415, .action = VIA_DXS_NO_VRA }, /* Abit AV8 */ + { .vendor = 0x14ff, .device = 0x0403, .action = VIA_DXS_ENABLE }, /* Twinhead mobo */ { .vendor = 0x1584, .device = 0x8120, .action = VIA_DXS_ENABLE }, /* Gericom/Targa/Vobis/Uniwill laptop */ { .vendor = 0x1584, .device = 0x8123, .action = VIA_DXS_NO_VRA }, /* Uniwill (Targa Visionary XP-210) */ { .vendor = 0x161f, .device = 0x202b, .action = VIA_DXS_NO_VRA }, /* Amira Note book */ diff -Nru a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c --- a/sound/pci/vx222/vx222.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/vx222/vx222.c 2005-01-02 23:05:38 -08:00 @@ -61,8 +61,8 @@ }; static struct pci_device_id snd_vx222_ids[] = { - { 0x10b5, 0x9050, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VX_PCI_VX222_OLD, }, /* PLX */ - { 0x10b5, 0x9030, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VX_PCI_VX222_NEW, }, /* PLX */ + { 0x10b5, 0x9050, 0x1369, PCI_ANY_ID, 0, 0, VX_PCI_VX222_OLD, }, /* PLX */ + { 0x10b5, 0x9030, 0x1369, PCI_ANY_ID, 0, 0, VX_PCI_VX222_NEW, }, /* PLX */ { 0, } }; diff -Nru a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c --- a/sound/pci/ymfpci/ymfpci_main.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pci/ymfpci/ymfpci_main.c 2005-01-02 23:05:38 -08:00 @@ -258,7 +258,7 @@ return -ENOMEM; } -int snd_ymfpci_voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int pair, ymfpci_voice_t **rvoice) +static int snd_ymfpci_voice_alloc(ymfpci_t *chip, ymfpci_voice_type_t type, int pair, ymfpci_voice_t **rvoice) { unsigned long flags; int result; @@ -278,7 +278,7 @@ return result; } -int snd_ymfpci_voice_free(ymfpci_t *chip, ymfpci_voice_t *pvoice) +static int snd_ymfpci_voice_free(ymfpci_t *chip, ymfpci_voice_t *pvoice) { unsigned long flags; diff -Nru a/sound/pcmcia/pdaudiocf/pdaudiocf.h b/sound/pcmcia/pdaudiocf/pdaudiocf.h --- a/sound/pcmcia/pdaudiocf/pdaudiocf.h 2005-01-02 23:05:38 -08:00 +++ b/sound/pcmcia/pdaudiocf/pdaudiocf.h 2005-01-02 23:05:38 -08:00 @@ -130,8 +130,6 @@ return inw(chip->port + reg); } -unsigned char pdacf_ak4117_read(void *private_data, unsigned char reg); -void pdacf_ak4117_write(void *private_data, unsigned char reg, unsigned char val); pdacf_t *snd_pdacf_create(snd_card_t *card); int snd_pdacf_ak4117_create(pdacf_t *pdacf); void snd_pdacf_powerdown(pdacf_t *chip); diff -Nru a/sound/pcmcia/pdaudiocf/pdaudiocf_core.c b/sound/pcmcia/pdaudiocf/pdaudiocf_core.c --- a/sound/pcmcia/pdaudiocf/pdaudiocf_core.c 2005-01-02 23:05:38 -08:00 +++ b/sound/pcmcia/pdaudiocf/pdaudiocf_core.c 2005-01-02 23:05:38 -08:00 @@ -28,7 +28,7 @@ /* * */ -unsigned char pdacf_ak4117_read(void *private_data, unsigned char reg) +static unsigned char pdacf_ak4117_read(void *private_data, unsigned char reg) { pdacf_t *chip = private_data; unsigned long timeout; @@ -60,7 +60,7 @@ return res; } -void pdacf_ak4117_write(void *private_data, unsigned char reg, unsigned char val) +static void pdacf_ak4117_write(void *private_data, unsigned char reg, unsigned char val) { pdacf_t *chip = private_data; unsigned long timeout; diff -Nru a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c --- a/sound/sparc/cs4231.c 2005-01-02 23:05:38 -08:00 +++ b/sound/sparc/cs4231.c 2005-01-02 23:05:38 -08:00 @@ -560,7 +560,6 @@ { unsigned long flags; int timeout; - signed long time; spin_lock_irqsave(&chip->lock, flags); snd_cs4231_busy_wait(chip); @@ -594,29 +593,29 @@ #if 0 printk("(2) timeout = %i, jiffies = %li\n", timeout, jiffies); #endif - time = HZ / 4; + /* in 10ms increments, check condition, up to 250ms */ + timeout = 25; while (snd_cs4231_in(chip, CS4231_TEST_INIT) & CS4231_CALIB_IN_PROGRESS) { spin_unlock_irqrestore(&chip->lock, flags); - if (time <= 0) { + if (--timeout < 0) { snd_printk("mce_down - auto calibration time out (2)\n"); return; } - set_current_state(TASK_INTERRUPTIBLE); - time = schedule_timeout(time); + msleep(10); spin_lock_irqsave(&chip->lock, flags); } #if 0 printk("(3) jiffies = %li\n", jiffies); #endif - time = HZ / 10; + /* in 10ms increments, check condition, up to 100ms */ + timeout = 10; while (__cs4231_readb(chip, CS4231P(chip, REGSEL)) & CS4231_INIT) { spin_unlock_irqrestore(&chip->lock, flags); - if (time <= 0) { + if (--timeout < 0) { snd_printk("mce_down - auto calibration time out (3)\n"); return; } - set_current_state(TASK_INTERRUPTIBLE); - time = schedule_timeout(time); + msleep(10); spin_lock_irqsave(&chip->lock, flags); } spin_unlock_irqrestore(&chip->lock, flags); diff -Nru a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c --- a/sound/usb/usbmixer.c 2005-01-02 23:05:38 -08:00 +++ b/sound/usb/usbmixer.c 2005-01-02 23:05:38 -08:00 @@ -374,7 +374,7 @@ static int check_matrix_bitmap(unsigned char *bmap, int ich, int och, int num_outs) { int idx = ich * num_outs + och; - return bmap[-(idx >> 3)] & (0x80 >> (idx & 7)); + return bmap[idx >> 3] & (0x80 >> (idx & 7)); } @@ -931,14 +931,14 @@ */ static void build_mixer_unit_ctl(mixer_build_t *state, unsigned char *desc, - int in_ch, int unitid) + int in_pin, int in_ch, int unitid, + usb_audio_term_t *iterm) { usb_mixer_elem_info_t *cval; - unsigned int num_ins = desc[4]; - unsigned int num_outs = desc[5 + num_ins]; + unsigned int input_pins = desc[4]; + unsigned int num_outs = desc[5 + input_pins]; unsigned int i, len; snd_kcontrol_t *kctl; - usb_audio_term_t iterm; if (check_ignored_ctl(state, unitid, 0)) return; @@ -947,16 +947,13 @@ if (! cval) return; - if (check_input_term(state, desc[5 + in_ch], &iterm) < 0) - return; - cval->chip = state->chip; cval->ctrlif = state->ctrlif; cval->id = unitid; cval->control = in_ch + 1; /* based on 1 */ cval->val_type = USB_MIXER_S16; for (i = 0; i < num_outs; i++) { - if (check_matrix_bitmap(desc + 9 + num_ins, in_ch, i, num_outs)) { + if (check_matrix_bitmap(desc + 9 + input_pins, in_ch, i, num_outs)) { cval->cmask |= (1 << i); cval->channels++; } @@ -975,9 +972,9 @@ len = check_mapped_name(state, unitid, 0, kctl->id.name, sizeof(kctl->id.name)); if (! len) - len = get_term_name(state, &iterm, kctl->id.name, sizeof(kctl->id.name), 0); + len = get_term_name(state, iterm, kctl->id.name, sizeof(kctl->id.name), 0); if (! len) - len = sprintf(kctl->id.name, "Mixer Source %d", in_ch); + len = sprintf(kctl->id.name, "Mixer Source %d", in_ch + 1); strlcat(kctl->id.name + len, " Volume", sizeof(kctl->id.name)); snd_printdd(KERN_INFO "[%d] MU [%s] ch = %d, val = %d/%d\n", @@ -991,17 +988,44 @@ */ static int parse_audio_mixer_unit(mixer_build_t *state, int unitid, unsigned char *desc) { - int num_ins, num_outs; - int i, err; - if (desc[0] < 12 || ! (num_ins = desc[4]) || ! (num_outs = desc[5 + num_ins])) + usb_audio_term_t iterm; + int input_pins, num_ins, num_outs; + int pin, ich, err; + + if (desc[0] < 11 || ! (input_pins = desc[4]) || ! (num_outs = desc[5 + input_pins])) { + snd_printk(KERN_ERR "invalid MIXER UNIT descriptor %d\n", unitid); return -EINVAL; + } + /* no bmControls field (e.g. Maya44) -> ignore */ + if (desc[0] <= 10 + input_pins) { + snd_printdd(KERN_INFO "MU %d has no bmControls field\n", unitid); + return 0; + } - for (i = 0; i < num_ins; i++) { - err = parse_audio_unit(state, desc[5 + i]); + num_ins = 0; + ich = 0; + for (pin = 0; pin < input_pins; pin++) { + err = parse_audio_unit(state, desc[5 + pin]); if (err < 0) return err; - if (check_matrix_bitmap(desc + 9 + num_ins, i, 0, num_outs)) - build_mixer_unit_ctl(state, desc, i, unitid); + err = check_input_term(state, desc[5 + pin], &iterm); + if (err < 0) + return err; + num_ins += iterm.channels; + for (; ich < num_ins; ++ich) { + int och, ich_has_controls = 0; + + for (och = 0; och < num_outs; ++och) { + if (check_matrix_bitmap(desc + 9 + input_pins, + ich, och, num_outs)) { + ich_has_controls = 1; + break; + } + } + if (ich_has_controls) + build_mixer_unit_ctl(state, desc, pin, ich, + unitid, &iterm); + } } return 0; } diff -Nru a/sound/usb/usx2y/usX2Yhwdep.c b/sound/usb/usx2y/usX2Yhwdep.c --- a/sound/usb/usx2y/usX2Yhwdep.c 2005-01-02 23:05:38 -08:00 +++ b/sound/usb/usx2y/usX2Yhwdep.c 2005-01-02 23:05:38 -08:00 @@ -95,20 +95,14 @@ { unsigned int mask = 0; usX2Ydev_t *us428 = (usX2Ydev_t*)hw->private_data; - static unsigned LastN; - + us428ctls_sharedmem_t *shm = us428->us428ctls_sharedmem; if (us428->chip_status & USX2Y_STAT_CHIP_HUP) return POLLHUP; poll_wait(file, &us428->us428ctls_wait_queue_head, wait); - down(&us428->open_mutex); - if (us428->us428ctls_sharedmem - && us428->us428ctls_sharedmem->CtlSnapShotLast != LastN) { + if (shm != NULL && shm->CtlSnapShotLast != shm->CtlSnapShotRed) mask |= POLLIN; - LastN = us428->us428ctls_sharedmem->CtlSnapShotLast; - } - up(&us428->open_mutex); return mask; } diff -Nru a/sound/usb/usx2y/usbusx2y.c b/sound/usb/usx2y/usbusx2y.c --- a/sound/usb/usx2y/usbusx2y.c 2005-01-02 23:05:38 -08:00 +++ b/sound/usb/usx2y/usbusx2y.c 2005-01-02 23:05:38 -08:00 @@ -1,6 +1,22 @@ /* - * usbus428.c - ALSA USB US-428 Driver + * usbusy2y.c - ALSA USB US-428 Driver * +2004-10-26 Karsten Wiese + Version 0.8.6: + wake_up() process waiting in usX2Y_urbs_start() on error. + +2004-10-21 Karsten Wiese + Version 0.8.5: + nrpacks is runtime or compiletime configurable now with tested values from 1 to 4. + +2004-10-03 Karsten Wiese + Version 0.8.2: + Avoid any possible racing while in prepare callback. + +2004-09-30 Karsten Wiese + Version 0.8.0: + Simplified things and made ohci work again. + 2004-09-20 Karsten Wiese Version 0.7.3: Use usb_kill_urb() instead of deprecated (kernel 2.6.9) usb_unlink_urb(). @@ -84,7 +100,7 @@ Version 0.0.2: midi works with snd-usb-midi, audio (only fullduplex now) with i.e. bristol. The firmware has been sniffed from win2k us-428 driver 3.09. - * Copyright (c) 2002 Karsten Wiese + * Copyright (c) 2002 - 2004 Karsten Wiese * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -119,7 +135,7 @@ MODULE_AUTHOR("Karsten Wiese "); -MODULE_DESCRIPTION("TASCAM "NAME_ALLCAPS" Version 0.7.3"); +MODULE_DESCRIPTION("TASCAM "NAME_ALLCAPS" Version 0.8.6"); MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("{{TASCAM(0x1604), "NAME_ALLCAPS"(0x8001)(0x8005)(0x8007) }}"); @@ -325,7 +341,8 @@ card->private_free = snd_usX2Y_card_private_free; usX2Y(card)->chip.dev = device; usX2Y(card)->chip.card = card; - init_MUTEX (&usX2Y(card)->open_mutex); + init_waitqueue_head(&usX2Y(card)->prepare_wait_queue); + init_MUTEX (&usX2Y(card)->prepare_mutex); INIT_LIST_HEAD(&usX2Y(card)->chip.midi_list); strcpy(card->driver, "USB "NAME_ALLCAPS""); sprintf(card->shortname, "TASCAM "NAME_ALLCAPS""); diff -Nru a/sound/usb/usx2y/usbusx2y.h b/sound/usb/usx2y/usbusx2y.h --- a/sound/usb/usx2y/usbusx2y.h 2005-01-02 23:05:38 -08:00 +++ b/sound/usb/usx2y/usbusx2y.h 2005-01-02 23:05:38 -08:00 @@ -3,15 +3,8 @@ #include "../usbaudio.h" #include "usbus428ctldefs.h" -#define NRURBS 2 /* */ -#define NRPACKS 1 /* FIXME: Currently only 1 works. - usb-frames/ms per urb: 1 and 2 are supported. - setting to 2 will PERHAPS make it easier for slow machines. - Jitter will be higher though. - On my PIII 500Mhz Laptop setting to 1 is the only way to go - for PLAYING synths. i.e. Jack & Aeolus sound quit nicely - at 4 periods 64 frames. - */ +#define NRURBS 2 + #define URBS_AsyncSeq 10 #define URB_DataLen_AsyncSeq 32 @@ -40,13 +33,41 @@ snd_usX2Y_AsyncSeq_t AS04; unsigned int rate, format; - int refframes; int chip_status; - struct semaphore open_mutex; + struct semaphore prepare_mutex; us428ctls_sharedmem_t *us428ctls_sharedmem; + int wait_iso_frame; wait_queue_head_t us428ctls_wait_queue_head; - snd_usX2Y_substream_t *substream[4]; + snd_usX2Y_substream_t *subs[4]; + snd_usX2Y_substream_t * volatile prepare_subs; + wait_queue_head_t prepare_wait_queue; } usX2Ydev_t; + + +struct snd_usX2Y_substream { + usX2Ydev_t *usX2Y; + snd_pcm_substream_t *pcm_substream; + + int endpoint; + unsigned int maxpacksize; /* max packet size in bytes */ + + atomic_t state; +#define state_STOPPED 0 +#define state_STARTING1 1 +#define state_STARTING2 2 +#define state_STARTING3 3 +#define state_PREPARED 4 +#define state_PRERUNNING 6 +#define state_RUNNING 8 + + int hwptr; /* free frame position in the buffer (only for playback) */ + int hwptr_done; /* processed frame position in the buffer */ + int transfer_done; /* processed frames since last period update */ + + struct urb *urb[NRURBS]; /* data urb table */ + struct urb *completed_urb; + char *tmpbuf; /* temporary buffer for playback */ +}; #define usX2Y(c) ((usX2Ydev_t*)(c)->private_data) diff -Nru a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c --- a/sound/usb/usx2y/usbusx2yaudio.c 2005-01-02 23:05:38 -08:00 +++ b/sound/usb/usx2y/usbusx2yaudio.c 2005-01-02 23:05:38 -08:00 @@ -1,10 +1,9 @@ /* - * US-428 AUDIO - - * Copyright (c) 2002-2003 by Karsten Wiese - + * US-X2Y AUDIO + * Copyright (c) 2002-2004 by Karsten Wiese + * * based on - + * * (Tentative) USB Audio Driver for ALSA * * Main and PCM part @@ -42,33 +41,30 @@ #include "usx2y.h" #include "usbusx2y.h" - -struct snd_usX2Y_substream { - usX2Ydev_t *usX2Y; - snd_pcm_substream_t *pcm_substream; - - unsigned char endpoint; - unsigned int datapipe; /* the data i/o pipe */ - unsigned int maxpacksize; /* max packet size in bytes */ - - char prepared, - running, - stalled; - - int hwptr; /* free frame position in the buffer (only for playback) */ - int hwptr_done; /* processed frame position in the buffer */ - int transfer_done; /* processed frames since last period update */ - - struct urb *urb[NRURBS]; /* data urb table */ - int next_urb_complete; - struct urb *completed_urb; - char *tmpbuf; /* temporary buffer for playback */ - volatile int submitted_urbs; - wait_queue_head_t wait_queue; -}; - - - +#define USX2Y_NRPACKS 4 /* Default value used for nr of packs per urb. + 1 to 4 have been tested ok on uhci. + To use 3 on ohci, you'd need a patch: + look for "0000425-linux-2.6.9-rc4-mm1_ohci-hcd.patch.gz" on + "https://bugtrack.alsa-project.org/alsa-bug/bug_view_page.php?bug_id=0000425" + . + 1, 2 and 4 work out of the box on ohci, if I recall correctly. + Bigger is safer operation, + smaller gives lower latencies. + */ +#define USX2Y_NRPACKS_VARIABLE y /* If your system works ok with this module's parameter + nrpacks set to 1, you might as well comment + this #define out, and thereby produce smaller, faster code. + You'd also set USX2Y_NRPACKS to 1 then. + */ + +#ifdef USX2Y_NRPACKS_VARIABLE + static int nrpacks = USX2Y_NRPACKS; /* number of packets per urb */ + #define nr_of_packs() nrpacks + module_param(nrpacks, int, 0444); + MODULE_PARM_DESC(nrpacks, "Number of packets per URB."); +#else + #define nr_of_packs() USX2Y_NRPACKS +#endif @@ -80,15 +76,15 @@ int i, len, lens = 0, hwptr_done = subs->hwptr_done; usX2Ydev_t *usX2Y = subs->usX2Y; - for (i = 0; i < NRPACKS; i++) { + for (i = 0; i < nr_of_packs(); i++) { cp = (unsigned char*)urb->transfer_buffer + urb->iso_frame_desc[i].offset; if (urb->iso_frame_desc[i].status) { /* active? hmm, skip this */ - snd_printdd("activ frame status %i\n", urb->iso_frame_desc[i].status); + snd_printk("activ frame status %i. Most propably some hardware problem.\n", urb->iso_frame_desc[i].status); return urb->iso_frame_desc[i].status; } len = urb->iso_frame_desc[i].actual_length / usX2Y->stride; if (! len) { - snd_printk("0 == len ERROR!\n"); + snd_printd("0 == len ERROR!\n"); continue; } @@ -134,7 +130,7 @@ snd_pcm_runtime_t *runtime = subs->pcm_substream->runtime; count = 0; - for (pack = 0; pack < NRPACKS; pack++) { + for (pack = 0; pack < nr_of_packs(); pack++) { /* calculate the size of a packet */ counts = cap_urb->iso_frame_desc[pack].actual_length / usX2Y->stride; count += counts; @@ -142,28 +138,32 @@ snd_printk("should not be here with counts=%i\n", counts); return -EPIPE; } - /* set up descriptor */ - urb->iso_frame_desc[pack].offset = pack ? urb->iso_frame_desc[pack - 1].offset + urb->iso_frame_desc[pack - 1].length : 0; - urb->iso_frame_desc[pack].length = counts * usX2Y->stride; - } - if (subs->hwptr + count > runtime->buffer_size) { - /* err, the transferred area goes over buffer boundary. - * copy the data to the temp buffer. - */ - int len; - len = runtime->buffer_size - subs->hwptr; - urb->transfer_buffer = subs->tmpbuf; - memcpy(subs->tmpbuf, runtime->dma_area + subs->hwptr * usX2Y->stride, len * usX2Y->stride); - memcpy(subs->tmpbuf + len * usX2Y->stride, runtime->dma_area, (count - len) * usX2Y->stride); - subs->hwptr += count; - subs->hwptr -= runtime->buffer_size; - } else { - /* set the buffer pointer */ - urb->transfer_buffer = runtime->dma_area + subs->hwptr * usX2Y->stride; - if ((subs->hwptr += count) >= runtime->buffer_size) + urb->iso_frame_desc[pack].offset = pack ? + urb->iso_frame_desc[pack - 1].offset + urb->iso_frame_desc[pack - 1].length : + 0; + urb->iso_frame_desc[pack].length = cap_urb->iso_frame_desc[pack].actual_length; + } + if (atomic_read(&subs->state) >= state_PRERUNNING) + if (subs->hwptr + count > runtime->buffer_size) { + /* err, the transferred area goes over buffer boundary. + * copy the data to the temp buffer. + */ + int len; + len = runtime->buffer_size - subs->hwptr; + urb->transfer_buffer = subs->tmpbuf; + memcpy(subs->tmpbuf, runtime->dma_area + subs->hwptr * usX2Y->stride, len * usX2Y->stride); + memcpy(subs->tmpbuf + len * usX2Y->stride, runtime->dma_area, (count - len) * usX2Y->stride); + subs->hwptr += count; + subs->hwptr -= runtime->buffer_size; + } else { + /* set the buffer pointer */ + urb->transfer_buffer = runtime->dma_area + subs->hwptr * usX2Y->stride; + if ((subs->hwptr += count) >= runtime->buffer_size) subs->hwptr -= runtime->buffer_size; - } + } + else + urb->transfer_buffer = subs->tmpbuf; urb->transfer_buffer_length = count * usX2Y->stride; return 0; } @@ -173,14 +173,10 @@ * * update the current position and call callback if a period is processed. */ -inline static int usX2Y_urb_play_retire(snd_usX2Y_substream_t *subs, struct urb *urb) +static void usX2Y_urb_play_retire(snd_usX2Y_substream_t *subs, struct urb *urb) { snd_pcm_runtime_t *runtime = subs->pcm_substream->runtime; - int len = (urb->iso_frame_desc[0].actual_length -#if NRPACKS > 1 - + urb->iso_frame_desc[1].actual_length -#endif - ) / subs->usX2Y->stride; + int len = urb->actual_length / subs->usX2Y->stride; subs->transfer_done += len; subs->hwptr_done += len; @@ -190,224 +186,206 @@ subs->transfer_done -= runtime->period_size; snd_pcm_period_elapsed(subs->pcm_substream); } - return 0; } -inline static int usX2Y_urb_submit(snd_usX2Y_substream_t *subs, struct urb *urb, int frame) +static int usX2Y_urb_submit(snd_usX2Y_substream_t *subs, struct urb *urb, int frame) { int err; if (!urb) return -ENODEV; - urb->start_frame = (frame + NRURBS*NRPACKS) & (1024 - 1); + urb->start_frame = (frame + NRURBS * nr_of_packs()); // let hcd do rollover sanity checks urb->hcpriv = NULL; urb->dev = subs->usX2Y->chip.dev; /* we need to set this at each time */ if ((err = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { - snd_printk("%i\n", err); + snd_printk("usb_submit_urb() returned %i\n", err); return err; - } else { - subs->submitted_urbs++; - if (subs->next_urb_complete < 0) - subs->next_urb_complete = 0; } return 0; } - -static inline int frame_distance(int from, int to) +static inline int usX2Y_usbframe_complete(snd_usX2Y_substream_t *capsubs, snd_usX2Y_substream_t *playbacksubs, int frame) { - int distance = to - from; - if (distance < -512) - distance += 1024; - else - if (distance > 511) - distance -= 1024; - return distance; -} + int err, state; + { + struct urb *urb = playbacksubs->completed_urb; + state = atomic_read(&playbacksubs->state); + if (NULL != urb) { + if (state == state_RUNNING) + usX2Y_urb_play_retire(playbacksubs, urb); + else + if (state >= state_PRERUNNING) { + atomic_inc(&playbacksubs->state); + } + } else { + switch (state) { + case state_STARTING1: + urb = playbacksubs->urb[0]; + atomic_inc(&playbacksubs->state); + break; + case state_STARTING2: + urb = playbacksubs->urb[1]; + atomic_inc(&playbacksubs->state); + break; + } + } + if (urb) { + if ((err = usX2Y_urb_play_prepare(playbacksubs, capsubs->completed_urb, urb)) || + (err = usX2Y_urb_submit(playbacksubs, urb, frame))) { + return err; + } + } -static void usX2Y_subs_set_next_urb_complete(snd_usX2Y_substream_t *subs) -{ - int next_urb_complete = subs->next_urb_complete + 1; - int distance; - if (next_urb_complete >= NRURBS) - next_urb_complete = 0; - distance = frame_distance(subs->completed_urb->start_frame, - subs->urb[next_urb_complete]->start_frame); - if (1 == distance) { - subs->next_urb_complete = next_urb_complete; - } else { - snd_printdd("distance %i not set_nuc %i %i %i \n", distance, subs->endpoint, next_urb_complete, subs->urb[next_urb_complete]->status); - subs->next_urb_complete = -1; + playbacksubs->completed_urb = NULL; } + state = atomic_read(&capsubs->state); + if (state >= state_PREPARED) { + if (state == state_RUNNING) { + if ((err = usX2Y_urb_capt_retire(capsubs))) + return err; + } else + if (state >= state_PRERUNNING) { + atomic_inc(&capsubs->state); + } + if ((err = usX2Y_urb_submit(capsubs, capsubs->completed_urb, frame))) + return err; + } + capsubs->completed_urb = NULL; + return 0; } -static inline void usX2Y_usbframe_complete(snd_usX2Y_substream_t *capsubs, snd_usX2Y_substream_t *playbacksubs, int frame) +static void usX2Y_clients_stop(usX2Ydev_t *usX2Y) { - { - struct urb *urb; - if ((urb = playbacksubs->completed_urb)) { - if (playbacksubs->prepared) - usX2Y_urb_play_retire(playbacksubs, urb); - usX2Y_subs_set_next_urb_complete(playbacksubs); + int s, u; + for (s = 0; s < 4; s++) { + snd_usX2Y_substream_t *subs = usX2Y->subs[s]; + if (subs) { + snd_printdd("%i %p state=%i\n", s, subs, atomic_read(&subs->state)); + atomic_set(&subs->state, state_STOPPED); } - if (playbacksubs->running) { - if (NULL == urb) - urb = playbacksubs->urb[playbacksubs->next_urb_complete + 1]; - if (urb && 0 == usX2Y_urb_play_prepare(playbacksubs, - capsubs->completed_urb, - urb)) { - if (usX2Y_urb_submit(playbacksubs, urb, frame) < 0) - return; - } else - snd_pcm_stop(playbacksubs->pcm_substream, SNDRV_PCM_STATE_XRUN); + } + for (s = 0; s < 4; s++) { + snd_usX2Y_substream_t *subs = usX2Y->subs[s]; + if (subs) { + if (atomic_read(&subs->state) >= state_PRERUNNING) { + snd_pcm_stop(subs->pcm_substream, SNDRV_PCM_STATE_XRUN); + } + for (u = 0; u < NRURBS; u++) { + struct urb *urb = subs->urb[u]; + if (NULL != urb) + snd_printdd("%i status=%i start_frame=%i\n", u, urb->status, urb->start_frame); + } } - playbacksubs->completed_urb = NULL; } - if (capsubs->running) - usX2Y_urb_capt_retire(capsubs); - usX2Y_subs_set_next_urb_complete(capsubs); - if (capsubs->prepared) - usX2Y_urb_submit(capsubs, capsubs->completed_urb, frame); - capsubs->completed_urb = NULL; + usX2Y->prepare_subs = NULL; + wake_up(&usX2Y->prepare_wait_queue); } - -static void usX2Y_clients_stop(snd_usX2Y_substream_t *subs) +static void usX2Y_error_urb_status(usX2Ydev_t *usX2Y, snd_usX2Y_substream_t *subs, struct urb *urb) { - usX2Ydev_t *usX2Y = subs->usX2Y; - int i; - for (i = 0; i < 4; i++) { - snd_usX2Y_substream_t *substream = usX2Y->substream[i]; - if (substream && substream->running) - snd_pcm_stop(substream->pcm_substream, SNDRV_PCM_STATE_XRUN); - } + snd_printk("ep=%i stalled with status=%i\n", subs->endpoint, urb->status); + urb->status = 0; + usX2Y_clients_stop(usX2Y); } +static void usX2Y_error_sequence(usX2Ydev_t *usX2Y, snd_usX2Y_substream_t *subs, struct urb *urb) +{ + snd_printk("Sequence Error!(hcd_frame=%i ep=%i%s;wait=%i,frame=%i).\n" + "Most propably some urb of usb-frame %i is still missing.\n" + "Cause could be too long delays in usb-hcd interrupt handling.\n", + usb_get_current_frame_number(usX2Y->chip.dev), + subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out", usX2Y->wait_iso_frame, urb->start_frame, usX2Y->wait_iso_frame); + usX2Y_clients_stop(usX2Y); +} static void i_usX2Y_urb_complete(struct urb *urb, struct pt_regs *regs) { snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t*)urb->context; + usX2Ydev_t *usX2Y = subs->usX2Y; - subs->submitted_urbs--; - if (urb->status) { - snd_printk("ep=%i stalled with status=%i\n", subs->endpoint, urb->status); - subs->stalled = 1; - usX2Y_clients_stop(subs); - urb->status = 0; + if (unlikely(atomic_read(&subs->state) < state_PREPARED)) { + snd_printdd("hcd_frame=%i ep=%i%s status=%i start_frame=%i\n", usb_get_current_frame_number(usX2Y->chip.dev), subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out", urb->status, urb->start_frame); + return; + } + if (unlikely(urb->status)) { + usX2Y_error_urb_status(usX2Y, subs, urb); return; } - if (urb == subs->urb[subs->next_urb_complete]) { + if (likely((0xFFFF & urb->start_frame) == usX2Y->wait_iso_frame)) subs->completed_urb = urb; - } else { - snd_printk("Sequence Error!(ep=%i;nuc=%i,frame=%i)\n", - subs->endpoint, subs->next_urb_complete, urb->start_frame); - subs->stalled = 1; - usX2Y_clients_stop(subs); + else { + usX2Y_error_sequence(usX2Y, subs, urb); return; } - if (waitqueue_active(&subs->wait_queue)) - wake_up(&subs->wait_queue); { - snd_usX2Y_substream_t *capsubs = subs->usX2Y->substream[SNDRV_PCM_STREAM_CAPTURE], - *playbacksubs = subs->usX2Y->substream[SNDRV_PCM_STREAM_PLAYBACK]; - if (capsubs->completed_urb && - (playbacksubs->completed_urb || - !playbacksubs->prepared || - (playbacksubs->prepared && (playbacksubs->next_urb_complete < 0 || // not started yet - frame_distance(capsubs->completed_urb->start_frame, - playbacksubs->urb[playbacksubs->next_urb_complete]->start_frame) - > 0 || // other expected later - playbacksubs->stalled)))) - usX2Y_usbframe_complete(capsubs, playbacksubs, urb->start_frame); + snd_usX2Y_substream_t *capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE], + *playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; + if (capsubs->completed_urb && atomic_read(&capsubs->state) >= state_PREPARED && + (playbacksubs->completed_urb || atomic_read(&playbacksubs->state) < state_PREPARED)) { + if (!usX2Y_usbframe_complete(capsubs, playbacksubs, urb->start_frame)) { + if (nr_of_packs() <= urb->start_frame && + urb->start_frame <= (2 * nr_of_packs() - 1)) // uhci and ohci + usX2Y->wait_iso_frame = urb->start_frame - nr_of_packs(); + else + usX2Y->wait_iso_frame += nr_of_packs(); + } else { + snd_printdd("\n"); + usX2Y_clients_stop(usX2Y); + } + } } } - -static int usX2Y_urbs_capt_start(snd_usX2Y_substream_t *subs) +static void usX2Y_urbs_set_complete(usX2Ydev_t * usX2Y, void (*complete)(struct urb *, struct pt_regs *)) { - int i, err; - - for (i = 0; i < NRURBS; i++) { - unsigned long pack; - struct urb *urb = subs->urb[i]; - urb->dev = subs->usX2Y->chip.dev; - urb->transfer_flags = URB_ISO_ASAP; - for (pack = 0; pack < NRPACKS; pack++) { - urb->iso_frame_desc[pack].offset = subs->maxpacksize * pack; - urb->iso_frame_desc[pack].length = subs->maxpacksize; - } - urb->transfer_buffer_length = subs->maxpacksize * NRPACKS; - if ((err = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { - snd_printk (KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err); - return -EPIPE; - } else { - subs->submitted_urbs++; - } - urb->transfer_flags = 0; + int s, u; + for (s = 0; s < 4; s++) { + snd_usX2Y_substream_t *subs = usX2Y->subs[s]; + if (NULL != subs) + for (u = 0; u < NRURBS; u++) { + struct urb * urb = subs->urb[u]; + if (NULL != urb) + urb->complete = complete; + } } - subs->stalled = 0; - subs->next_urb_complete = 0; - subs->prepared = 1; - return 0; } -/* - * wait until all urbs are processed. - */ -static int usX2Y_urbs_wait_clear(snd_usX2Y_substream_t *subs) -{ - int timeout = HZ; - - do { - if (0 == subs->submitted_urbs) - break; - set_current_state(TASK_UNINTERRUPTIBLE); - snd_printdd("snd_usX2Y_urbs_wait_clear waiting\n"); - schedule_timeout(1); - } while (--timeout > 0); - if (subs->submitted_urbs) - snd_printk(KERN_ERR "timeout: still %d active urbs..\n", subs->submitted_urbs); - return 0; -} -/* - * return the current pcm pointer. just return the hwptr_done value. - */ -static snd_pcm_uframes_t snd_usX2Y_pcm_pointer(snd_pcm_substream_t *substream) +static void usX2Y_subs_startup_finish(usX2Ydev_t * usX2Y) { - snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t *)substream->runtime->private_data; - return subs->hwptr_done; + usX2Y_urbs_set_complete(usX2Y, i_usX2Y_urb_complete); + usX2Y->prepare_subs = NULL; } -/* - * start/stop substream - */ -static int snd_usX2Y_pcm_trigger(snd_pcm_substream_t *substream, int cmd) + +static void i_usX2Y_subs_startup(struct urb *urb, struct pt_regs *regs) { - snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t *)substream->runtime->private_data; + snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t*)urb->context; + usX2Ydev_t *usX2Y = subs->usX2Y; + snd_usX2Y_substream_t *prepare_subs = usX2Y->prepare_subs; + if (NULL != prepare_subs) + if (urb->start_frame == prepare_subs->urb[0]->start_frame) { + usX2Y_subs_startup_finish(usX2Y); + atomic_inc(&prepare_subs->state); + wake_up(&usX2Y->prepare_wait_queue); + } - switch (cmd) { - case SNDRV_PCM_TRIGGER_START: - snd_printdd("snd_usX2Y_pcm_trigger(START)\n"); - if (subs->usX2Y->substream[SNDRV_PCM_STREAM_CAPTURE]->stalled) - return -EPIPE; - else - subs->running = 1; - break; - case SNDRV_PCM_TRIGGER_STOP: - snd_printdd("snd_usX2Y_pcm_trigger(STOP)\n"); - subs->running = 0; - break; - default: - return -EINVAL; - } - return 0; + i_usX2Y_urb_complete(urb, regs); } +static void usX2Y_subs_prepare(snd_usX2Y_substream_t *subs) +{ + snd_printdd("usX2Y_substream_prepare(%p) ep=%i urb0=%p urb1=%p\n", subs, subs->endpoint, subs->urb[0], subs->urb[1]); + /* reset the pointer */ + subs->hwptr = 0; + subs->hwptr_done = 0; + subs->transfer_done = 0; +} static void usX2Y_urb_release(struct urb** urb, int free_tb) { if (*urb) { + usb_kill_urb(*urb); if (free_tb) kfree((*urb)->transfer_buffer); usb_free_urb(*urb); @@ -415,97 +393,181 @@ } } /* - * release a substream + * release a substreams urbs */ static void usX2Y_urbs_release(snd_usX2Y_substream_t *subs) { int i; - snd_printdd("snd_usX2Y_urbs_release() %i\n", subs->endpoint); - usX2Y_urbs_wait_clear(subs); + snd_printdd("usX2Y_urbs_release() %i\n", subs->endpoint); for (i = 0; i < NRURBS; i++) - usX2Y_urb_release(subs->urb + i, subs != subs->usX2Y->substream[SNDRV_PCM_STREAM_PLAYBACK]); + usX2Y_urb_release(subs->urb + i, subs != subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]); if (subs->tmpbuf) { kfree(subs->tmpbuf); subs->tmpbuf = NULL; } } - -static void usX2Y_substream_prepare(snd_usX2Y_substream_t *subs) -{ - snd_printdd("usX2Y_substream_prepare() ep=%i urb0=%p urb1=%p\n", subs->endpoint, subs->urb[0], subs->urb[1]); - /* reset the pointer */ - subs->hwptr = 0; - subs->hwptr_done = 0; - subs->transfer_done = 0; -} - - /* * initialize a substream's urbs */ static int usX2Y_urbs_allocate(snd_usX2Y_substream_t *subs) { int i; - int is_playback = subs == subs->usX2Y->substream[SNDRV_PCM_STREAM_PLAYBACK]; + unsigned int datapipe; /* the data i/o pipe */ + int is_playback = subs == subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; struct usb_device *dev = subs->usX2Y->chip.dev; - snd_assert(!subs->prepared, return 0); - if (is_playback) { /* allocate a temporary buffer for playback */ - subs->datapipe = usb_sndisocpipe(dev, subs->endpoint); + datapipe = usb_sndisocpipe(dev, subs->endpoint); subs->maxpacksize = dev->epmaxpacketout[subs->endpoint]; if (NULL == subs->tmpbuf) { - subs->tmpbuf = kcalloc(NRPACKS, subs->maxpacksize, GFP_KERNEL); + subs->tmpbuf = kcalloc(nr_of_packs(), subs->maxpacksize, GFP_KERNEL); if (NULL == subs->tmpbuf) { snd_printk(KERN_ERR "cannot malloc tmpbuf\n"); return -ENOMEM; } } } else { - subs->datapipe = usb_rcvisocpipe(dev, subs->endpoint); + datapipe = usb_rcvisocpipe(dev, subs->endpoint); subs->maxpacksize = dev->epmaxpacketin[subs->endpoint]; } /* allocate and initialize data urbs */ for (i = 0; i < NRURBS; i++) { struct urb** purb = subs->urb + i; - if (*purb) + if (*purb) { + usb_kill_urb(*purb); continue; - *purb = usb_alloc_urb(NRPACKS, GFP_KERNEL); + } + *purb = usb_alloc_urb(nr_of_packs(), GFP_KERNEL); if (NULL == *purb) { usX2Y_urbs_release(subs); return -ENOMEM; } if (!is_playback && !(*purb)->transfer_buffer) { /* allocate a capture buffer per urb */ - (*purb)->transfer_buffer = kmalloc(subs->maxpacksize*NRPACKS, GFP_KERNEL); + (*purb)->transfer_buffer = kmalloc(subs->maxpacksize * nr_of_packs(), GFP_KERNEL); if (NULL == (*purb)->transfer_buffer) { usX2Y_urbs_release(subs); return -ENOMEM; } } (*purb)->dev = dev; - (*purb)->pipe = subs->datapipe; - (*purb)->number_of_packets = NRPACKS; + (*purb)->pipe = datapipe; + (*purb)->number_of_packets = nr_of_packs(); (*purb)->context = subs; (*purb)->interval = 1; - (*purb)->complete = snd_usb_complete_callback(i_usX2Y_urb_complete); + (*purb)->complete = i_usX2Y_subs_startup; } return 0; } -static void i_usX2Y_04Int(struct urb* urb, struct pt_regs *regs) +static void usX2Y_subs_startup(snd_usX2Y_substream_t *subs) { - usX2Ydev_t* usX2Y = urb->context; - - if (urb->status) { - snd_printk("snd_usX2Y_04Int() urb->status=%i\n", urb->status); - return; + usX2Ydev_t *usX2Y = subs->usX2Y; + usX2Y->prepare_subs = subs; + subs->urb[0]->start_frame = -1; + wmb(); + usX2Y_urbs_set_complete(usX2Y, i_usX2Y_subs_startup); +} + +static int usX2Y_urbs_start(snd_usX2Y_substream_t *subs) +{ + int i, err; + usX2Ydev_t *usX2Y = subs->usX2Y; + + if ((err = usX2Y_urbs_allocate(subs)) < 0) + return err; + subs->completed_urb = NULL; + for (i = 0; i < 4; i++) { + snd_usX2Y_substream_t *subs = usX2Y->subs[i]; + if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED) + goto start; } - if (0 == --usX2Y->US04->len) - wake_up(&usX2Y->In04WaitQueue); + usX2Y->wait_iso_frame = -1; + start: + { + usX2Y_subs_startup(subs); + for (i = 0; i < NRURBS; i++) { + struct urb *urb = subs->urb[i]; + if (usb_pipein(urb->pipe)) { + unsigned long pack; + if (0 == i) + atomic_set(&subs->state, state_STARTING3); + urb->dev = usX2Y->chip.dev; + urb->transfer_flags = URB_ISO_ASAP; + for (pack = 0; pack < nr_of_packs(); pack++) { + urb->iso_frame_desc[pack].offset = subs->maxpacksize * pack; + urb->iso_frame_desc[pack].length = subs->maxpacksize; + } + urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs(); + if ((err = usb_submit_urb(urb, GFP_ATOMIC)) < 0) { + snd_printk (KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err); + err = -EPIPE; + goto cleanup; + } else { + if (0 > usX2Y->wait_iso_frame) + usX2Y->wait_iso_frame = urb->start_frame; + } + urb->transfer_flags = 0; + } else { + atomic_set(&subs->state, state_STARTING1); + break; + } + } + err = 0; + wait_event(usX2Y->prepare_wait_queue, NULL == usX2Y->prepare_subs); + if (atomic_read(&subs->state) != state_PREPARED) { + err = -EPIPE; + } + + cleanup: + if (err) { + usX2Y_subs_startup_finish(usX2Y); + usX2Y_clients_stop(usX2Y); // something is completely wroong > stop evrything + } + } + return err; +} + +/* + * return the current pcm pointer. just return the hwptr_done value. + */ +static snd_pcm_uframes_t snd_usX2Y_pcm_pointer(snd_pcm_substream_t *substream) +{ + snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t *)substream->runtime->private_data; + return subs->hwptr_done; +} +/* + * start/stop substream + */ +static int snd_usX2Y_pcm_trigger(snd_pcm_substream_t *substream, int cmd) +{ + snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t *)substream->runtime->private_data; + + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: + snd_printdd("snd_usX2Y_pcm_trigger(START)\n"); + if (atomic_read(&subs->state) == state_PREPARED && + atomic_read(&subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]->state) >= state_PREPARED) { + atomic_set(&subs->state, state_PRERUNNING); + } else { + snd_printdd("\n"); + return -EPIPE; + } + break; + case SNDRV_PCM_TRIGGER_STOP: + snd_printdd("snd_usX2Y_pcm_trigger(STOP)\n"); + if (atomic_read(&subs->state) >= state_PRERUNNING) + atomic_set(&subs->state, state_PREPARED); + break; + default: + return -EINVAL; + } + return 0; } + + /* * allocate a buffer, setup samplerate * @@ -592,76 +654,74 @@ }; #define NOOF_SETRATE_URBS ARRAY_SIZE(SetRate48000) +static void i_usX2Y_04Int(struct urb* urb, struct pt_regs *regs) +{ + usX2Ydev_t* usX2Y = urb->context; + + if (urb->status) { + snd_printk("snd_usX2Y_04Int() urb->status=%i\n", urb->status); + } + if (0 == --usX2Y->US04->len) + wake_up(&usX2Y->In04WaitQueue); +} + static int usX2Y_rate_set(usX2Ydev_t *usX2Y, int rate) { int err = 0, i; snd_usX2Y_urbSeq_t *us = NULL; int *usbdata = NULL; - DECLARE_WAITQUEUE(wait, current); struct s_c2 *ra = rate == 48000 ? SetRate48000 : SetRate44100; if (usX2Y->rate != rate) { - do { - us = kmalloc(sizeof(*us) + sizeof(struct urb*) * NOOF_SETRATE_URBS, GFP_KERNEL); - if (NULL == us) { + us = kmalloc(sizeof(*us) + sizeof(struct urb*) * NOOF_SETRATE_URBS, GFP_KERNEL); + if (NULL == us) { + err = -ENOMEM; + goto cleanup; + } + memset(us, 0, sizeof(*us) + sizeof(struct urb*) * NOOF_SETRATE_URBS); + usbdata = kmalloc(sizeof(int)*NOOF_SETRATE_URBS, GFP_KERNEL); + if (NULL == usbdata) { + err = -ENOMEM; + goto cleanup; + } + for (i = 0; i < NOOF_SETRATE_URBS; ++i) { + if (NULL == (us->urb[i] = usb_alloc_urb(0, GFP_KERNEL))) { err = -ENOMEM; - break; + goto cleanup; } - memset(us, 0, sizeof(*us) + sizeof(struct urb*) * NOOF_SETRATE_URBS); - usbdata = kmalloc(sizeof(int)*NOOF_SETRATE_URBS, GFP_KERNEL); - if (NULL == usbdata) { - err = -ENOMEM; - break; - } - for (i = 0; i < NOOF_SETRATE_URBS; ++i) { - if (NULL == (us->urb[i] = usb_alloc_urb(0, GFP_KERNEL))) { - err = -ENOMEM; - break; - } - ((char*)(usbdata + i))[0] = ra[i].c1; - ((char*)(usbdata + i))[1] = ra[i].c2; - usb_fill_bulk_urb(us->urb[i], usX2Y->chip.dev, usb_sndbulkpipe(usX2Y->chip.dev, 4), - usbdata + i, 2, i_usX2Y_04Int, usX2Y); + ((char*)(usbdata + i))[0] = ra[i].c1; + ((char*)(usbdata + i))[1] = ra[i].c2; + usb_fill_bulk_urb(us->urb[i], usX2Y->chip.dev, usb_sndbulkpipe(usX2Y->chip.dev, 4), + usbdata + i, 2, i_usX2Y_04Int, usX2Y); #ifdef OLD_USB - us->urb[i]->transfer_flags = USB_QUEUE_BULK; + us->urb[i]->transfer_flags = USB_QUEUE_BULK; #endif - } - if (err) - break; - - add_wait_queue(&usX2Y->In04WaitQueue, &wait); - set_current_state(TASK_INTERRUPTIBLE); - us->submitted = 0; - us->len = NOOF_SETRATE_URBS; - usX2Y->US04 = us; - - do { - signed long timeout = schedule_timeout(HZ/2); - - if (signal_pending(current)) { - err = -ERESTARTSYS; - break; - } - if (0 == timeout) { - err = -ENODEV; - break; - } - usX2Y->rate = rate; - usX2Y->refframes = rate == 48000 ? 47 : 44; - } while (0); - - remove_wait_queue(&usX2Y->In04WaitQueue, &wait); - } while (0); - + } + us->submitted = 0; + us->len = NOOF_SETRATE_URBS; + usX2Y->US04 = us; + wait_event_timeout(usX2Y->In04WaitQueue, 0 == us->len, HZ); + usX2Y->US04 = NULL; + if (us->len) + err = -ENODEV; + cleanup: if (us) { us->submitted = 2*NOOF_SETRATE_URBS; for (i = 0; i < NOOF_SETRATE_URBS; ++i) { - usb_kill_urb(us->urb[i]); - usb_free_urb(us->urb[i]); + struct urb *urb = us->urb[i]; + if (urb->status) { + if (!err) + err = -ENODEV; + usb_kill_urb(urb); + } + usb_free_urb(urb); } usX2Y->US04 = NULL; kfree(usbdata); kfree(us); + if (!err) { + usX2Y->rate = rate; + } } } @@ -745,27 +805,28 @@ { snd_pcm_runtime_t *runtime = substream->runtime; snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t *)runtime->private_data; + down(&subs->usX2Y->prepare_mutex); snd_printdd("snd_usX2Y_hw_free(%p)\n", substream); if (SNDRV_PCM_STREAM_PLAYBACK == substream->stream) { - snd_usX2Y_substream_t *cap_subs = subs->usX2Y->substream[SNDRV_PCM_STREAM_CAPTURE]; - subs->prepared = 0; + snd_usX2Y_substream_t *cap_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]; + atomic_set(&subs->state, state_STOPPED); usX2Y_urbs_release(subs); if (!cap_subs->pcm_substream || !cap_subs->pcm_substream->runtime || !cap_subs->pcm_substream->runtime->status || cap_subs->pcm_substream->runtime->status->state < SNDRV_PCM_STATE_PREPARED) { - cap_subs->prepared = 0; + atomic_set(&cap_subs->state, state_STOPPED); usX2Y_urbs_release(cap_subs); } } else { - snd_usX2Y_substream_t *playback_subs = subs->usX2Y->substream[SNDRV_PCM_STREAM_PLAYBACK]; - if (!playback_subs->prepared) { - subs->prepared = 0; + snd_usX2Y_substream_t *playback_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; + if (atomic_read(&playback_subs->state) < state_PREPARED) { + atomic_set(&subs->state, state_STOPPED); usX2Y_urbs_release(subs); } } - + up(&subs->usX2Y->prepare_mutex); return snd_pcm_lib_free_pages(substream); } /* @@ -777,71 +838,32 @@ { snd_pcm_runtime_t *runtime = substream->runtime; snd_usX2Y_substream_t *subs = (snd_usX2Y_substream_t *)runtime->private_data; - snd_usX2Y_substream_t *capsubs = subs->usX2Y->substream[SNDRV_PCM_STREAM_CAPTURE]; + usX2Ydev_t *usX2Y = subs->usX2Y; + snd_usX2Y_substream_t *capsubs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]; int err = 0; snd_printdd("snd_usX2Y_pcm_prepare(%p)\n", substream); + down(&usX2Y->prepare_mutex); + usX2Y_subs_prepare(subs); // Start hardware streams // SyncStream first.... - if (! capsubs->prepared) { - if (subs->usX2Y->format != runtime->format) - if ((err = usX2Y_format_set(subs->usX2Y, runtime->format)) < 0) - return err; - if (subs->usX2Y->rate != runtime->rate) - if ((err = usX2Y_rate_set(subs->usX2Y, runtime->rate)) < 0) - return err; - snd_printdd("starting capture pipe for playpipe\n"); - usX2Y_urbs_allocate(capsubs); - capsubs->completed_urb = NULL; - { - DECLARE_WAITQUEUE(wait, current); - add_wait_queue(&capsubs->wait_queue, &wait); - if (0 <= (err = usX2Y_urbs_capt_start(capsubs))) { - signed long timeout; - set_current_state(TASK_INTERRUPTIBLE); - timeout = schedule_timeout(HZ/4); - if (signal_pending(current)) - err = -ERESTARTSYS; - else { - snd_printdd("%li\n", HZ/4 - timeout); - if (0 == timeout) - err = -EPIPE; - } - } - remove_wait_queue(&capsubs->wait_queue, &wait); - if (0 > err) - return err; - } + if (atomic_read(&capsubs->state) < state_PREPARED) { + if (usX2Y->format != runtime->format) + if ((err = usX2Y_format_set(usX2Y, runtime->format)) < 0) + goto up_prepare_mutex; + if (usX2Y->rate != runtime->rate) + if ((err = usX2Y_rate_set(usX2Y, runtime->rate)) < 0) + goto up_prepare_mutex; + snd_printdd("starting capture pipe for %s\n", subs == capsubs ? "self" : "playpipe"); + if (0 > (err = usX2Y_urbs_start(capsubs))) + goto up_prepare_mutex; } - if (subs != capsubs) { - int u; - if (!subs->prepared) { - if ((err = usX2Y_urbs_allocate(subs)) < 0) - return err; - subs->prepared = 1; - } - while (subs->submitted_urbs) - for (u = 0; u < NRURBS; u++) { - snd_printdd("%i\n", subs->urb[u]->status); - while(subs->urb[u]->status || NULL != subs->urb[u]->hcpriv) { - signed long timeout; - snd_printdd("ep=%i waiting for urb=%p status=%i hcpriv=%p\n", - subs->endpoint, subs->urb[u], - subs->urb[u]->status, subs->urb[u]->hcpriv); - set_current_state(TASK_INTERRUPTIBLE); - timeout = schedule_timeout(HZ/10); - if (signal_pending(current)) { - return -ERESTARTSYS; - } - } - } - subs->completed_urb = NULL; - subs->next_urb_complete = -1; - subs->stalled = 0; - } + if (subs != capsubs && atomic_read(&subs->state) < state_PREPARED) + err = usX2Y_urbs_start(subs); - usX2Y_substream_prepare(subs); + up_prepare_mutex: + up(&usX2Y->prepare_mutex); return err; } @@ -933,7 +955,7 @@ snd_pcm_t *pcm; int err, i; snd_usX2Y_substream_t **usX2Y_substream = - usX2Y(card)->substream + 2 * usX2Y(card)->chip.pcm_devs; + usX2Y(card)->subs + 2 * usX2Y(card)->chip.pcm_devs; for (i = playback_endpoint ? SNDRV_PCM_STREAM_PLAYBACK : SNDRV_PCM_STREAM_CAPTURE; i <= SNDRV_PCM_STREAM_CAPTURE; ++i) { @@ -942,7 +964,6 @@ snd_printk(KERN_ERR "cannot malloc\n"); return -ENOMEM; } - init_waitqueue_head(&usX2Y_substream[i]->wait_queue); usX2Y_substream[i]->usX2Y = usX2Y(card); }