Changeset 112
- Timestamp:
- May 31, 2007, 6:45:32 AM (18 years ago)
- Location:
- GPL/branches/alsa-resync1/alsa-kernel
- Files:
-
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/branches/alsa-resync1/alsa-kernel/core/info.c
r92 r112 43 43 * 44 44 */ 45 static inline void dec_mod_count(struct module *module) 46 { 47 if (module) 48 __MOD_DEC_USE_COUNT(module); 49 } 45 50 46 51 int snd_info_check_reserved_words(const char *str) … … 54 59 "detect", 55 60 "devices", 56 "oss -devices",61 "oss", 57 62 "cards", 58 63 "timers", … … 126 131 127 132 static struct proc_dir_entry *snd_proc_root = NULL; 133 struct proc_dir_entry *snd_proc_dev = NULL; 128 134 snd_info_entry_t *snd_seq_root = NULL; 129 135 #ifdef CONFIG_SND_OSSEMUL … … 643 649 return -ENOMEM; 644 650 snd_proc_root = p; 651 p = snd_create_proc_entry("dev", S_IFDIR | S_IRUGO | S_IXUGO, snd_proc_root); 652 if (p == NULL) 653 return -ENOMEM; 654 snd_proc_dev = p; 645 655 #ifdef CONFIG_SND_OSSEMUL 646 656 { … … 697 707 snd_info_unregister(snd_seq_root); 698 708 #endif 709 #ifdef CONFIG_SND_OSSEMUL 710 if (snd_oss_root) 711 snd_info_unregister(snd_oss_root); 712 #endif 713 snd_remove_proc_entry(snd_proc_root, snd_proc_dev); 699 714 snd_remove_proc_entry(&proc_root, snd_proc_root); 700 715 } -
GPL/branches/alsa-resync1/alsa-kernel/core/rtctimer.c
r92 r112 19 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 20 * 21 *22 *================================================================23 * For enabling this timer, apply the patch file to your kernel.24 * The configure script checks the patch automatically.25 * The patches, rtc-xxx.dif, are found under utils/patches, where26 * xxx is the kernel version.27 *================================================================28 *29 21 */ 30 22 … … 32 24 #include <linux/init.h> 33 25 #include <linux/time.h> 26 #include <linux/interrupt.h> 34 27 #include <sound/core.h> 35 28 #include <sound/timer.h> … … 56 49 57 50 /* 58 * The har ware depenant description for this timer.51 * The hardware dependent description for this timer. 59 52 */ 60 53 static struct _snd_timer_hardware rtc_hw = { … … 69 62 int rtctimer_freq = RTC_FREQ; /* frequency */ 70 63 static snd_timer_t *rtctimer; 71 static volatile int rtc_inc = 0;64 static atomic_t rtc_inc = ATOMIC_INIT(0); 72 65 static rtc_task_t rtc_task; 73 66 … … 80 73 rtctimer_open(snd_timer_t *t) 81 74 { 75 int err; 76 77 err = rtc_register(&rtc_task); 78 if (err < 0) 79 return err; 80 t->private_data = &rtc_task; 82 81 MOD_INC_USE_COUNT; 83 82 return 0; … … 87 86 rtctimer_close(snd_timer_t *t) 88 87 { 88 rtc_task_t *rtc = t->private_data; 89 if (rtc) { 90 rtc_unregister(rtc); 91 t->private_data = NULL; 92 } 89 93 MOD_DEC_USE_COUNT; 90 94 return 0; … … 98 102 rtc_control(rtc, RTC_IRQP_SET, rtctimer_freq); 99 103 rtc_control(rtc, RTC_PIE_ON, 0); 100 rtc_inc = 0;104 atomic_set(&rtc_inc, 0); 101 105 return 0; 102 106 } … … 116 120 static void rtctimer_interrupt(void *private_data) 117 121 { 118 rtc_inc++;122 atomic_inc(&rtc_inc); 119 123 #ifdef USE_TASKLET 120 124 tasklet_hi_schedule(&rtc_tq); 121 125 #else 122 snd_timer_interrupt((snd_timer_t*)private_data, rtc_inc); 123 rtc_inc = 0; 126 { 127 int ticks = atomic_read(&rtc_inc); 128 snd_timer_interrupt((snd_timer_t*)private_data, ticks); 129 atomic_sub(ticks, &rtc_inc); 130 } 124 131 #endif /* USE_TASKLET */ 125 132 } … … 129 136 { 130 137 snd_timer_t *timer = (snd_timer_t *)private_data; 138 int ticks; 139 131 140 snd_assert(timer != NULL, return); 132 141 do { 133 snd_timer_interrupt(timer, 1); 134 } while (--rtc_inc > 0); 142 ticks = atomic_read(&rtc_inc); 143 snd_timer_interrupt(timer, ticks); 144 } while (!atomic_sub_and_test(ticks, &rtc_inc)); 135 145 } 136 146 #endif /* USE_TASKLET */ 137 138 static void rtctimer_private_free(snd_timer_t *timer)139 {140 rtc_task_t *rtc = timer->private_data;141 if (rtc)142 rtc_unregister(rtc);143 }144 147 145 148 … … 176 179 timer->hw.resolution = NANO_SEC / rtctimer_freq; 177 180 178 /* registerRTC callback */181 /* set up RTC callback */ 179 182 rtc_task.func = rtctimer_interrupt; 180 183 rtc_task.private_data = timer; 181 err = rtc_register(&rtc_task);182 if (err < 0) {183 snd_timer_global_free(timer);184 return err;185 }186 timer->private_data = &rtc_task;187 timer->private_free = rtctimer_private_free;188 184 189 185 err = snd_timer_global_register(timer); … … 192 188 return err; 193 189 } 194 rtctimer = timer; 190 rtctimer = timer; /* remember this */ 195 191 196 192 return 0; … … 207 203 208 204 /* 209 * exported stuff s205 * exported stuff 210 206 */ 211 207 module_init(rtctimer_init) -
GPL/branches/alsa-resync1/alsa-kernel/core/seq/makefile.os2
r32 r112 36 36 FILE2 = seq.obj seq_lock.obj seq_clientmgr.obj seq_memory.obj seq_queue.obj 37 37 FILE3 = seq_fifo.obj seq_prioq.obj seq_timer.obj 38 FILE4 = seq_system.obj seq_ports.obj seq_info.obj seq_sync.obj 39 FILE5 = seq_midi_clock.obj seq_mtc.obj seq_dtl.obj 38 FILE4 = seq_system.obj seq_ports.obj seq_info.obj 40 39 FILELAST = 41 40 FILES = $(FILE0) $(FILE1) $(FILE2) $(FILE3) $(FILE4) $(FILE5) $(FILE6) $(FILE7) $(FILE8) $(FILE9) $(FILE10) $(FILE11) $(FILE12) -
GPL/branches/alsa-resync1/alsa-kernel/core/sound.c
r98 r112 550 550 EXPORT_SYMBOL(snd_verbose_printd); 551 551 #endif 552 #if defined(CONFIG_SND_DEBUG) && !defined(CONFIG_SND_VERBOSE_PRINTK) 553 EXPORT_SYMBOL(snd_printd); 554 #endif 552 555 /* wrappers */ 553 556 #ifdef CONFIG_SND_DEBUG_MEMORY -
GPL/branches/alsa-resync1/alsa-kernel/include/sound/adriver.h
r107 r112 106 106 #define need_resched() (current->need_resched) 107 107 #endif 108 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 5) && !defined TARGET_OS2 108 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 4) && !defined TARGET_OS2 109 #include <linux/fs.h> 109 110 static inline struct proc_dir_entry *PDE(const struct inode *inode) 110 111 { -
GPL/branches/alsa-resync1/alsa-kernel/include/sound/asoundef.h
r96 r112 156 156 #define MIDI_CTL_MSB_BREATH 0x02 157 157 #define MIDI_CTL_MSB_FOOT 0x04 158 #define MIDI_CTL_MSB_PORT NAMENTO_TIME 0x05158 #define MIDI_CTL_MSB_PORTAMENTO_TIME 0x05 159 159 #define MIDI_CTL_MSB_DATA_ENTRY 0x06 160 160 #define MIDI_CTL_MSB_MAIN_VOLUME 0x07 … … 172 172 #define MIDI_CTL_LSB_BREATH 0x22 173 173 #define MIDI_CTL_LSB_FOOT 0x24 174 #define MIDI_CTL_LSB_PORT NAMENTO_TIME 0x25174 #define MIDI_CTL_LSB_PORTAMENTO_TIME 0x25 175 175 #define MIDI_CTL_LSB_DATA_ENTRY 0x26 176 176 #define MIDI_CTL_LSB_MAIN_VOLUME 0x27 … … 204 204 #define MIDI_CTL_GENERAL_PURPOSE7 0x52 205 205 #define MIDI_CTL_GENERAL_PURPOSE8 0x53 206 #define MIDI_CTL_POR NAMENTO_CONTROL 0x54206 #define MIDI_CTL_PORTAMENTO_CONTROL 0x54 207 207 #define MIDI_CTL_E1_REVERB_DEPTH 0x5b 208 208 #define MIDI_CTL_E2_TREMOLO_DEPTH 0x5c -
GPL/branches/alsa-resync1/alsa-kernel/include/sound/core.h
r109 r112 322 322 int snd_task_name(struct task_struct *task, char *name, size_t size); 323 323 #ifdef CONFIG_SND_VERBOSE_PRINTK 324 int snd_verbose_printk(const char *file, int line, const char *format); 324 void snd_verbose_printk(const char *file, int line, const char *format, ...); 325 #endif 326 #if defined(CONFIG_SND_DEBUG) && defined(CONFIG_SND_VERBOSE_PRINTK) 327 void snd_verbose_printd(const char *file, int line, const char *format, ...); 328 #endif 329 #if defined(CONFIG_SND_DEBUG) && !defined(CONFIG_SND_VERBOSE_PRINTK) 330 void snd_printd(const char *format, ...); 325 331 #endif 326 332 … … 364 370 365 371 #ifdef CONFIG_SND_VERBOSE_PRINTK 366 #define snd_printk(format, args...) do { \ 367 printk(snd_verbose_printk(__FILE__, __LINE__, format) ? format + 3 : format, ##args); \ 368 } while (0) 369 #else 370 #define snd_printk(format, args...) do { \ 371 printk(format, ##args); \ 372 } while (0) 372 #define snd_printk(format, args...) \ 373 snd_verbose_printk(__FILE__, __LINE__, format, ##args) 374 #else 375 #define snd_printk(format, args...) \ 376 printk(format, ##args) 373 377 #endif 374 378 … … 377 381 #define __ASTRING__(x) #x 378 382 379 #define snd_printd(format, args...) snd_printk(format, ##args) 383 #ifdef CONFIG_SND_VERBOSE_PRINTK 384 #define snd_printd(format, args...) \ 385 snd_verbose_printd(__FILE__, __LINE__, format, ##args) 386 #endif 380 387 #define snd_assert(expr, args...) do {\ 381 388 if (!(expr)) {\ -
GPL/branches/alsa-resync1/alsa-kernel/include/sound/driver.h
r109 r112 94 94 #endif 95 95 96 /*97 * Temporary hack, until linux/init.h is fixed.98 */99 #include <linux/init.h>100 #ifndef __devexit_p101 #define __devexit_p(x) x102 #endif103 104 96 #endif /* __SOUND_DRIVER_H */ -
GPL/branches/alsa-resync1/alsa-kernel/include/sound/minors.h
r96 r112 32 32 #define SNDRV_MINOR_HWDEP 4 /* 4 - 7 */ 33 33 #define SNDRV_MINOR_HWDEPS 4 34 #define SNDRV_MINOR_RAWMIDI 8 /* 8 - 1 1*/35 #define SNDRV_MINOR_RAWMIDIS 434 #define SNDRV_MINOR_RAWMIDI 8 /* 8 - 15 */ 35 #define SNDRV_MINOR_RAWMIDIS 8 36 36 #define SNDRV_MINOR_PCM_PLAYBACK 16 /* 16 - 23 */ 37 37 #define SNDRV_MINOR_PCM_CAPTURE 24 /* 24 - 31 */ -
GPL/branches/alsa-resync1/alsa-kernel/include/sound/pcm_params.h
r96 r112 22 22 * 23 23 */ 24 25 #include <linux/bitops.h>26 24 27 25 extern int snd_pcm_hw_param_mask(snd_pcm_substream_t *pcm, snd_pcm_hw_params_t *params, -
GPL/branches/alsa-resync1/alsa-kernel/isa/ad1816a/ad1816a.c
r92 r112 333 333 const struct isapnp_card_id *id) 334 334 { 335 static int dev = 0;335 static int dev; 336 336 int res; 337 337 -
GPL/branches/alsa-resync1/alsa-kernel/isa/ad1816a/ad1816a_lib.c
r92 r112 25 25 #include <linux/init.h> 26 26 #include <linux/slab.h> 27 #include <linux/ioport.h> 27 28 #include <sound/core.h> 28 29 #include <sound/ad1816a.h> -
GPL/branches/alsa-resync1/alsa-kernel/isa/ad1848/ad1848_lib.c
r92 r112 26 26 #include <linux/delay.h> 27 27 #include <linux/slab.h> 28 #include <linux/ioport.h> 28 29 #include <sound/core.h> 29 30 #include <sound/ad1848.h> … … 669 670 if (rev & 0x80) { 670 671 chip->hardware = AD1848_HW_CS4248; 671 } else if (rev & 0x0a) { 672 chip->hardware = AD1848_HW_CMI8330; 672 } else if ((rev & 0x0f) == 0x0a) { 673 snd_ad1848_out(chip, AD1848_MISC_INFO, 0x40); 674 for (i = 0; i < 16; ++i) { 675 if (snd_ad1848_in(chip, i) != snd_ad1848_in(chip, i + 16)) { 676 chip->hardware = AD1848_HW_CMI8330; 677 break; 678 } 679 } 680 snd_ad1848_out(chip, AD1848_MISC_INFO, 0x00); 673 681 } 674 682 } -
GPL/branches/alsa-resync1/alsa-kernel/isa/als100.c
r92 r112 354 354 const struct isapnp_card_id *id) 355 355 { 356 static int dev = 0;356 static int dev; 357 357 int res; 358 358 -
GPL/branches/alsa-resync1/alsa-kernel/isa/azt2320.c
r92 r112 139 139 /* PRO16V */ 140 140 ISAPNP_AZT2320('A','Z','T',0x1008,0x1008,0x2001), 141 /* ---*/141 /* Aztech Sound Galaxy 16 */ 142 142 ISAPNP_AZT2320('A','Z','T',0x2320,0x0001,0x0002), 143 143 /* Packard Bell Sound III 336 AM/SP */ -
GPL/branches/alsa-resync1/alsa-kernel/isa/cmi8330.c
r92 r112 190 190 AD1848_SINGLE("Loud Playback Switch", 0, CMI8330_MUTEMUX, 6, 1, 1), 191 191 AD1848_DOUBLE("PCM Playback Switch", 0, AD1848_LEFT_OUTPUT, AD1848_RIGHT_OUTPUT, 7, 7, 1, 1), 192 AD1848_DOUBLE("PCM Playback Volume", 0, AD1848_LEFT_OUTPUT, AD1848_RIGHT_OUTPUT, 0, 0, 63, 0),192 AD1848_DOUBLE("PCM Playback Volume", 0, AD1848_LEFT_OUTPUT, AD1848_RIGHT_OUTPUT, 0, 0, 63, 1), 193 193 AD1848_DOUBLE("Line Playback Switch", 0, CMI8330_MUTEMUX, CMI8330_MUTEMUX, 4, 3, 1, 0), 194 194 AD1848_DOUBLE("Line Playback Volume", 0, CMI8330_LINVOL, CMI8330_LINVOL, 4, 0, 15, 0), … … 464 464 const struct isapnp_card_id *id) 465 465 { 466 static int dev = 0;466 static int dev; 467 467 int res; 468 468 -
GPL/branches/alsa-resync1/alsa-kernel/isa/cs423x/cs4231_lib.c
r92 r112 33 33 #include <linux/init.h> 34 34 #include <linux/slab.h> 35 #include <linux/ioport.h> 35 36 #include <sound/core.h> 36 37 #include <sound/cs4231.h> -
GPL/branches/alsa-resync1/alsa-kernel/isa/cs423x/cs4236.c
r92 r112 71 71 "{IBM,IntelliStation M Pro}," 72 72 "{Intel,Marlin Spike Mobo CS4235}," 73 "{Intel PR440FX Onboard}," 73 74 "{Guillemot,MaxiSound 16 PnP}," 74 75 "{NewClear,3D}," … … 237 238 /* some uknown CS4236B */ 238 239 ISAPNP_CS4232('C','S','C',0x0b35,0x0000,0x0010,0x0003), 240 /* Intel PR440FX Onboard sound */ 241 ISAPNP_CS4232('C','S','C',0x0b36,0x0000,0x0010,0x0003), 239 242 /* CS4235 on mainboard without MPU */ 240 243 ISAPNP_CS4232_WOMPU('C','S','C',0x1425,0x0100,0x0110), … … 326 329 if (snd_port[dev] != SNDRV_AUTO_PORT) 327 330 isapnp_resource_change(&pdev->resource[0], snd_port[dev], 4); 328 if (snd_fm_port[dev] != SNDRV_AUTO_PORT )331 if (snd_fm_port[dev] != SNDRV_AUTO_PORT && snd_fm_port[dev] >= 0) 329 332 isapnp_resource_change(&pdev->resource[1], snd_fm_port[dev], 4); 330 333 if (snd_sb_port[dev] != SNDRV_AUTO_PORT) … … 341 344 } 342 345 snd_port[dev] = pdev->resource[0].start; 343 snd_fm_port[dev] = pdev->resource[1].start; 346 if (snd_fm_port[dev] >= 0) 347 snd_fm_port[dev] = pdev->resource[1].start; 344 348 snd_sb_port[dev] = pdev->resource[2].start; 345 349 snd_irq[dev] = pdev->irq_resource[0].start; … … 366 370 snd_printdd("isapnp CTRL: control port=0x%lx\n", snd_cport[dev]); 367 371 /* MPU initialization */ 368 if (acard->mpu ) {372 if (acard->mpu && snd_mpu_port[dev] >= 0) { 369 373 pdev = acard->mpu; 370 374 if (pdev->prepare(pdev) < 0) { … … 375 379 if (snd_mpu_port[dev] != SNDRV_AUTO_PORT) 376 380 isapnp_resource_change(&pdev->resource[0], snd_mpu_port[dev], 2); 377 if (snd_mpu_irq[dev] != SNDRV_AUTO_IRQ )381 if (snd_mpu_irq[dev] != SNDRV_AUTO_IRQ && snd_mpu_irq[dev] >= 0) 378 382 isapnp_resource_change(&pdev->irq_resource[0], snd_mpu_irq[dev], 1); 379 383 if (pdev->activate(pdev)<0) { … … 383 387 } else { 384 388 snd_mpu_port[dev] = pdev->resource[0].start; 385 if (pdev->irq_resource[0].flags & IORESOURCE_IRQ) { 386 snd_mpu_irq[dev] = pdev->irq_resource[0].start; 389 if ((pdev->irq_resource[0].flags & IORESOURCE_IRQ) && 390 snd_mpu_irq[dev] >= 0) { 391 snd_mpu_irq[dev] = pdev->irq_resource[0].start; 387 392 } else { 388 393 snd_mpu_irq[dev] = -1; /* disable interrupt */ … … 538 543 } 539 544 540 if (snd_mpu_ irq[dev] >= 0 && snd_mpu_irq[dev] != SNDRV_AUTO_IRQ) {545 if (snd_mpu_port[dev] != SNDRV_AUTO_PORT) { 541 546 if (snd_mpu401_uart_new(card, 0, MPU401_HW_CS4232, 542 547 snd_mpu_port[dev], 0, … … 566 571 const struct isapnp_card_id *id) 567 572 { 568 static int dev = 0;573 static int dev; 569 574 int res; 570 575 -
GPL/branches/alsa-resync1/alsa-kernel/isa/dt0197h.c
r92 r112 321 321 const struct isapnp_card_id *id) 322 322 { 323 static int dev = 0;323 static int dev; 324 324 int res; 325 325 -
GPL/branches/alsa-resync1/alsa-kernel/isa/es1688/es1688.c
r92 r112 170 170 static int __init snd_audiodrive_legacy_auto_probe(unsigned long port) 171 171 { 172 static int dev = 0;172 static int dev; 173 173 int res; 174 174 -
GPL/branches/alsa-resync1/alsa-kernel/isa/es1688/es1688_lib.c
r92 r112 26 26 #include <linux/delay.h> 27 27 #include <linux/slab.h> 28 #include <linux/ioport.h> 28 29 #include <sound/core.h> 29 30 #include <sound/es1688.h> -
GPL/branches/alsa-resync1/alsa-kernel/isa/es18xx.c
r92 r112 2381 2381 static int __init snd_audiodrive_probe_legacy_port(unsigned long port) 2382 2382 { 2383 static int dev = 0;2383 static int dev; 2384 2384 int res; 2385 2385 … … 2405 2405 const struct isapnp_card_id *id) 2406 2406 { 2407 static int dev = 0;2407 static int dev; 2408 2408 int res; 2409 2409 -
GPL/branches/alsa-resync1/alsa-kernel/isa/gus/gus_main.c
r32 r112 16 16 * You should have received a copy of the GNU General Public License 17 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 19 * 20 20 */ 21 21 22 #define SNDRV_MAIN_OBJECT_FILE23 22 #include <sound/driver.h> 23 #include <asm/dma.h> 24 #include <linux/init.h> 25 #include <linux/delay.h> 26 #include <linux/slab.h> 27 #include <linux/ioport.h> 28 #include <sound/core.h> 24 29 #include <sound/gus.h> 25 30 #include <sound/control.h> 26 31 32 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>"); 33 MODULE_DESCRIPTION("Routines for Gravis UltraSound soundcards"); 34 MODULE_LICENSE("GPL"); 35 27 36 #define chip_t snd_gus_card_t 28 37 29 38 static int snd_gus_init_dma_irq(snd_gus_card_t * gus, int latches); 39 40 static inline void dec_mod_count(struct module *module) 41 { 42 if (module) 43 __MOD_DEC_USE_COUNT(module); 44 } 30 45 31 46 int snd_gus_use_inc(snd_gus_card_t * gus) … … 110 125 if (gus->gf1.res_port2 == NULL) 111 126 goto __hw_end; 112 #if def CONFIG_SND_SEQUENCER127 #if defined(CONFIG_SND_SEQUENCER) || defined(CONFIG_SND_SEQUENCER_MODULE) 113 128 if (gus->seq_dev) { 114 129 snd_device_free(gus->card, gus->seq_dev); … … 119 134 snd_gus_init_dma_irq(gus, 0); 120 135 __hw_end: 121 if (gus->gf1.res_port1) 136 if (gus->gf1.res_port1) { 122 137 release_resource(gus->gf1.res_port1); 123 if (gus->gf1.res_port2) 138 kfree_nocheck(gus->gf1.res_port1); 139 } 140 if (gus->gf1.res_port2) { 124 141 release_resource(gus->gf1.res_port2); 142 kfree_nocheck(gus->gf1.res_port2); 143 } 125 144 if (gus->gf1.irq >= 0) 126 145 free_irq(gus->gf1.irq, (void *) gus); … … 440 459 if ((err = snd_gus_init_dma_irq(gus, 1)) < 0) 441 460 return err; 442 #if def CONFIG_SND_SEQUENCER461 #if defined(CONFIG_SND_SEQUENCER) || defined(CONFIG_SND_SEQUENCER_MODULE) 443 462 if (snd_seq_device_new(gus->card, 1, SNDRV_SEQ_DEV_ID_GUS, 444 463 sizeof(snd_gus_card_t*), &gus->seq_dev) >= 0) { -
GPL/branches/alsa-resync1/alsa-kernel/isa/gus/gusclassic.c
r92 r112 230 230 static int __init snd_gusclassic_legacy_auto_probe(unsigned long port) 231 231 { 232 static int dev = 0;232 static int dev; 233 233 int res; 234 234 -
GPL/branches/alsa-resync1/alsa-kernel/isa/gus/gusextreme.c
r92 r112 360 360 static int __init snd_gusextreme_legacy_auto_probe(unsigned long port) 361 361 { 362 static int dev = 0;362 static int dev; 363 363 int res; 364 364 -
GPL/branches/alsa-resync1/alsa-kernel/isa/gus/gusmax.c
r92 r112 366 366 static int __init snd_gusmax_legacy_auto_probe(unsigned long port) 367 367 { 368 static int dev = 0;368 static int dev; 369 369 int res; 370 370 -
GPL/branches/alsa-resync1/alsa-kernel/isa/gus/interwave.c
r92 r112 912 912 static int __init snd_interwave_probe_legacy_port(unsigned long port) 913 913 { 914 static int dev = 0;914 static int dev; 915 915 int res; 916 916 … … 936 936 const struct isapnp_card_id *id) 937 937 { 938 static int dev = 0;938 static int dev; 939 939 int res; 940 940 -
GPL/branches/alsa-resync1/alsa-kernel/isa/opl3sa2.c
r106 r112 194 194 /* Yamaha OPL3-SA3 (integrated on Intel's Pentium II AL440LX motherboard) */ 195 195 ISAPNP_OPL3SA2('Y','M','H',0x0030,0x0021), 196 /* ???*/196 /* Yamaha OPL3-SA2 */ 197 197 ISAPNP_OPL3SA2('Y','M','H',0x0800,0x0021), 198 198 /* NeoMagic MagicWave 3DX */ … … 881 881 const struct isapnp_card_id *id) 882 882 { 883 static int dev = 0;883 static int dev; 884 884 int res; 885 885 -
GPL/branches/alsa-resync1/alsa-kernel/isa/sb/emu8000.c
r32 r112 18 18 * You should have received a copy of the GNU General Public License 19 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 */ 22 23 #define SNDRV_MAIN_OBJECT_FILE 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 */ 22 23 #define __NO_VERSION__ 24 #include <sound/driver.h> 25 #include <linux/wait.h> 26 #include <linux/sched.h> 27 #include <linux/slab.h> 28 #include <linux/ioport.h> 29 #include <sound/core.h> 24 30 #include <sound/emu8000.h> 25 31 #include <sound/emu8000_reg.h> 32 #include <asm/io.h> 33 #include <asm/uaccess.h> 34 #include <linux/init.h> 26 35 #include <sound/control.h> 27 36 #include <sound/initval.h> 28 29 MODULE_CLASSES("{sound}");30 MODULE_AUTHOR("Takashi Iwai, Steve Ratcliffe");31 37 32 38 /* … … 124 130 /* 125 131 */ 126 static void /*__init*/132 static void __init 127 133 snd_emu8000_read_wait(emu8000_t *emu) 128 134 { … … 137 143 /* 138 144 */ 139 static void /*__init*/145 static void __init 140 146 snd_emu8000_write_wait(emu8000_t *emu) 141 147 { … … 151 157 * detect a card at the given port 152 158 */ 153 static int /*__init*/159 static int __init 154 160 snd_emu8000_detect(emu8000_t *emu) 155 161 { … … 177 183 * intiailize audio channels 178 184 */ 179 static void /*__init*/185 static void __init 180 186 init_audio(emu8000_t *emu) 181 187 { … … 218 224 * initialize DMA address 219 225 */ 220 static void /*__init*/226 static void __init 221 227 init_dma(emu8000_t *emu) 222 228 { … … 322 328 * is meant to work 323 329 */ 324 static void /*__init*/330 static void __init 325 331 send_array(emu8000_t *emu, unsigned short *data, int size) 326 332 { … … 346 352 * initialisation sequence in the adip. 347 353 */ 348 static void /*__init*/354 static void __init 349 355 init_arrays(emu8000_t *emu) 350 356 { … … 373 379 * reallocating between read and write. 374 380 */ 375 static void /*__init*/381 static void __init 376 382 size_dram(emu8000_t *emu) 377 383 { … … 499 505 * The main initialization routine. 500 506 */ 501 static void /*__init*/507 static void __init 502 508 snd_emu8000_init_hw(emu8000_t *emu) 503 509 { … … 653 659 soundfont_chorus_fx_t rec; 654 660 if (mode < SNDRV_EMU8000_CHORUS_PREDEFINED || mode >= SNDRV_EMU8000_CHORUS_NUMBERS) { 655 snd_printk( "illegal chorus mode %d for uploading\n", mode);661 snd_printk(KERN_WARNING "illegal chorus mode %d for uploading\n", mode); 656 662 return -EINVAL; 657 663 } … … 781 787 782 788 if (mode < SNDRV_EMU8000_REVERB_PREDEFINED || mode >= SNDRV_EMU8000_REVERB_NUMBERS) { 783 snd_printk( "illegal reverb mode %d for uploading\n", mode);789 snd_printk(KERN_WARNING "illegal reverb mode %d for uploading\n", mode); 784 790 return -EINVAL; 785 791 } … … 1085 1091 * create and attach mixer elements for WaveTable treble/bass controls 1086 1092 */ 1087 static int /*__init*/1093 static int __init 1088 1094 snd_emu8000_create_mixer(snd_card_t *card, emu8000_t *emu) 1089 1095 { … … 1115 1121 static int snd_emu8000_free(emu8000_t *hw) 1116 1122 { 1117 if (hw->res_port1) 1123 if (hw->res_port1) { 1118 1124 release_resource(hw->res_port1); 1119 if (hw->res_port2) 1125 kfree_nocheck(hw->res_port1); 1126 } 1127 if (hw->res_port2) { 1120 1128 release_resource(hw->res_port2); 1121 if (hw->res_port3) 1129 kfree_nocheck(hw->res_port2); 1130 } 1131 if (hw->res_port3) { 1122 1132 release_resource(hw->res_port3); 1133 kfree_nocheck(hw->res_port3); 1134 } 1123 1135 snd_magic_kfree(hw); 1124 1136 return 0; … … 1136 1148 * initialize and register emu8000 synth device. 1137 1149 */ 1138 /*exported*/ int1150 int __init 1139 1151 snd_emu8000_new(snd_card_t *card, int index, long port, int seq_ports, snd_seq_device_t **awe_ret) 1140 1152 { … … 1213 1225 */ 1214 1226 1215 EXPORT_SYMBOL(snd_emu8000_new);1216 1227 EXPORT_SYMBOL(snd_emu8000_poke); 1217 1228 EXPORT_SYMBOL(snd_emu8000_peek); … … 1225 1236 EXPORT_SYMBOL(snd_emu8000_update_reverb_mode); 1226 1237 EXPORT_SYMBOL(snd_emu8000_update_equalizer); 1227 1228 /*1229 * INIT part1230 */1231 1232 static int __init alsa_emu8000_init(void)1233 {1234 return 0;1235 }1236 1237 static void __exit alsa_emu8000_exit(void)1238 {1239 }1240 1241 module_init(alsa_emu8000_init)1242 module_exit(alsa_emu8000_exit) -
GPL/branches/alsa-resync1/alsa-kernel/isa/sb/es968.c
r92 r112 237 237 const struct isapnp_card_id *id) 238 238 { 239 static int dev = 0;239 static int dev; 240 240 int res; 241 241 -
GPL/branches/alsa-resync1/alsa-kernel/isa/sb/sb16.c
r92 r112 589 589 static int __init snd_sb16_probe_legacy_port(unsigned long port) 590 590 { 591 static int dev = 0;591 static int dev; 592 592 int res; 593 593 … … 613 613 const struct isapnp_card_id *id) 614 614 { 615 static int dev = 0;615 static int dev; 616 616 int res; 617 617 -
GPL/branches/alsa-resync1/alsa-kernel/isa/sb/sb16_main.c
r92 r112 210 210 #define snd_sb16_csp_playback_prepare(chip, runtime) /*nop*/ 211 211 #define snd_sb16_csp_capture_prepare(chip, runtime) /*nop*/ 212 #define snd_sb16_csp_update(chip) /*nop*/212 #define snd_sb16_csp_update(chip) /*nop*/ 213 213 #define snd_sb16_csp_playback_open(chip, runtime) /*nop*/ 214 #define snd_sb16_csp_playback_close(chip) /*nop*/214 #define snd_sb16_csp_playback_close(chip) /*nop*/ 215 215 #define snd_sb16_csp_capture_open(chip, runtime) /*nop*/ 216 #define snd_sb16_csp_capture_close(chip) /*nop*/216 #define snd_sb16_csp_capture_close(chip) /*nop*/ 217 217 #endif 218 218 … … 825 825 } 826 826 } 827 if (chip->dma16 >= 0) {827 if (chip->dma16 >= 0 && chip->dma16 != chip->dma8) { 828 828 switch (chip->dma16) { 829 829 case 5: … … 940 940 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_sb16_capture_ops); 941 941 942 if (chip->dma16 >= 0 && chip->dma8 != chip->dma16) 942 943 snd_ctl_add(card, snd_ctl_new1(&snd_sb16_dma_control, chip)); 944 else 945 pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX; 943 946 944 947 snd_pcm_lib_preallocate_isa_pages_for_all(pcm, 64*1024, 128*1024); -
GPL/branches/alsa-resync1/alsa-kernel/isa/sb/sb8.c
r92 r112 23 23 #include <linux/init.h> 24 24 #include <linux/slab.h> 25 #include <linux/ioport.h> 25 26 #include <sound/core.h> 26 27 #include <sound/sb.h> … … 183 184 static int __init snd_card_sb8_legacy_auto_probe(unsigned long port) 184 185 { 185 static int dev = 0;186 static int dev; 186 187 int res; 187 188 -
GPL/branches/alsa-resync1/alsa-kernel/isa/sb/sb_common.c
r92 r112 27 27 #include <linux/init.h> 28 28 #include <linux/slab.h> 29 #include <linux/ioport.h> 29 30 #include <sound/core.h> 30 31 #include <sound/sb.h> … … 183 184 free_dma(chip->dma8); 184 185 } 185 if (chip->dma16 >= 0) {186 if (chip->dma16 >= 0 && chip->dma16 != chip->dma8) { 186 187 disable_dma(chip->dma16); 187 188 free_dma(chip->dma16); … … 255 256 } 256 257 chip->dma8 = dma8; 257 if (dma16 >= 0 && request_dma(dma16, "SoundBlaster - 16bit")) { 258 if (dma16 >= 0) { 259 if (hardware != SB_HW_ALS100 && (dma16 < 5 || dma16 > 7)) { 260 /* no duplex */ 261 dma16 = -1; 262 } else if (request_dma(dma16, "SoundBlaster - 16bit")) { 258 263 snd_sbdsp_free(chip); 259 264 return -EBUSY; 265 } 260 266 } 261 267 chip->dma16 = dma16; -
GPL/branches/alsa-resync1/alsa-kernel/isa/sgalaxy.c
r92 r112 120 120 int tmp, tmp1; 121 121 122 unsigned intflags;122 unsigned long flags; 123 123 124 124 if ((tmp = inb(port + 3)) == 0xff) -
GPL/branches/alsa-resync1/alsa-kernel/isa/wavefront/wavefront.c
r92 r112 59 59 60 60 MODULE_PARM(snd_index, "1-" __MODULE_STRING(SNDRV_CARDS) "i"); 61 MODULE_PARM_SYNTAX(snd_index, "Index value for WaveFront soundcard."); 61 MODULE_PARM_DESC(snd_index, "Index value for WaveFront soundcard."); 62 MODULE_PARM_SYNTAX(snd_index, SNDRV_INDEX_DESC); 62 63 MODULE_PARM(snd_id, "1-" __MODULE_STRING(SNDRV_CARDS) "s"); 63 64 MODULE_PARM_DESC(snd_id, "ID string for WaveFront soundcard."); … … 100 101 MODULE_PARM(snd_use_cs4232_midi, "1-" __MODULE_STRING(SNDRV_CARDS) "i"); 101 102 MODULE_PARM_DESC(snd_use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)"); 102 MODULE_PARM_SYNTAX(snd_use_cs4232_midi, SNDRV_ENABLED ", allows use of CS4323 MPU-401 interface");103 MODULE_PARM_SYNTAX(snd_use_cs4232_midi, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC); 103 104 104 105 static snd_card_t *snd_wavefront_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR; … … 702 703 const struct isapnp_card_id *id) 703 704 { 704 static int dev = 0;705 static int dev; 705 706 int res; 706 707 -
GPL/branches/alsa-resync1/alsa-kernel/isa/wavefront/wavefront_fx.c
r32 r112 1 1 /* 2 * Copyright (c) 1998- 1999 by Paul Barton-Davis <pbd@op.net>2 * Copyright (c) 1998-2002 by Paul Davis <pbd@op.net> 3 3 * 4 4 * This program is free software; you can redistribute it and/or modify … … 14 14 * You should have received a copy of the GNU General Public License 15 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 17 */ 18 18 19 #define SNDRV_MAIN_OBJECT_FILE19 #define __NO_VERSION__ 20 20 #include <sound/driver.h> 21 #include <asm/io.h> 22 #include <linux/init.h> 23 #include <linux/time.h> 24 #include <linux/wait.h> 25 #include <sound/core.h> 21 26 #include <sound/snd_wavefront.h> 22 27 #include <sound/yss225.h> 23 28 #include <sound/initval.h> 24 29 25 MODULE_AUTHOR("Paul Barton-Davis <pbd@op.net>");26 MODULE_DESCRIPTION("ALSA driver for Turtle Beach Tropez+ YSS225 FX Processor");27 MODULE_CLASSES("{sound}");28 29 30 /* Control bits for the Load Control Register 30 31 */ … … 33 34 #define FX_MSB_TRANSFER 0x02 /* transfer after DSP MSB byte written */ 34 35 #define FX_AUTO_INCR 0x04 /* auto-increment DSP address after transfer */ 36 37 static inline void 38 dec_mod_count(struct module *module) 39 { 40 if (module) 41 __MOD_DEC_USE_COUNT(module); 42 } 35 43 36 44 static int … … 242 250 243 251 244 int 252 int __init 245 253 snd_wavefront_fx_start (snd_wavefront_t *dev) 246 254 … … 699 707 /* wierd stuff, derived from port I/O tracing with dosemu */ 700 708 701 unsigned char page_zero[]= {709 static unsigned char page_zero[] __initdata = { 702 710 0x01, 0x7c, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x00, 703 711 0x11, 0x00, 0x20, 0x00, 0x32, 0x00, 0x40, 0x00, 0x13, 0x00, 0x00, … … 726 734 }; 727 735 728 unsigned char page_one[]= {736 static unsigned char page_one[] __initdata = { 729 737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x19, 0x00, 730 738 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd8, 0x00, 0x00, … … 753 761 }; 754 762 755 unsigned char page_two[]= {763 static unsigned char page_two[] __initdata = { 756 764 0xc4, 0x00, 0x44, 0x07, 0x44, 0x00, 0x40, 0x25, 0x01, 0x06, 0xc4, 757 765 0x07, 0x40, 0x25, 0x01, 0x00, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, … … 768 776 }; 769 777 770 unsigned char page_three[]= {778 static unsigned char page_three[] __initdata = { 771 779 0x07, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x40, 0x00, 0x40, 0x06, 772 780 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 783 791 }; 784 792 785 unsigned char page_four[]= {793 static unsigned char page_four[] __initdata = { 786 794 0x63, 0x03, 0x26, 0x02, 0x2c, 0x00, 0x24, 0x00, 0x2e, 0x02, 0x02, 787 795 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 798 806 }; 799 807 800 unsigned char page_six[]= {808 static unsigned char page_six[] __initdata = { 801 809 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 802 810 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0e, … … 819 827 }; 820 828 821 unsigned char page_seven[]= {829 static unsigned char page_seven[] __initdata = { 822 830 0x0f, 0xff, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 823 831 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, … … 846 854 }; 847 855 848 unsigned char page_zero_v2[]= {856 static unsigned char page_zero_v2[] __initdata = { 849 857 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 850 858 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 858 866 }; 859 867 860 unsigned char page_one_v2[]= {868 static unsigned char page_one_v2[] __initdata = { 861 869 0x01, 0xc0, 0x01, 0xfa, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 862 870 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 870 878 }; 871 879 872 unsigned char page_two_v2[]= {880 static unsigned char page_two_v2[] __initdata = { 873 881 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 874 882 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 877 885 0x00, 0x00, 0x00, 0x00 878 886 }; 879 unsigned char page_three_v2[]= {887 static unsigned char page_three_v2[] __initdata = { 880 888 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 881 889 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 884 892 0x00, 0x00, 0x00, 0x00 885 893 }; 886 unsigned char page_four_v2[]= {894 static unsigned char page_four_v2[] __initdata = { 887 895 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 888 896 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 892 900 }; 893 901 894 unsigned char page_seven_v2[]= {902 static unsigned char page_seven_v2[] __initdata = { 895 903 0x0f, 0xff, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 896 904 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, … … 903 911 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 904 912 }; 905 unsigned char mod_v2[] = { 913 914 static unsigned char mod_v2[] __initdata = { 906 915 0x01, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x00, 0x01, 0x02, 0x02, 907 916 0x00, 0x01, 0x03, 0x02, 0x00, 0x01, 0x04, 0x02, 0x00, 0x01, 0x05, … … 933 942 0x06, 0x02, 0x01, 0x01, 0x07, 0x02, 0x01 934 943 }; 935 unsigned char coefficients[]= {944 static unsigned char coefficients[] __initdata = { 936 945 0x07, 0x46, 0x00, 0x00, 0x07, 0x49, 0x00, 0x00, 0x00, 0x4b, 0x03, 937 946 0x11, 0x00, 0x4d, 0x01, 0x32, 0x07, 0x46, 0x00, 0x00, 0x07, 0x49, … … 969 978 0xba 970 979 }; 971 unsigned char coefficients2[]= {980 static unsigned char coefficients2[] __initdata = { 972 981 0x07, 0x46, 0x00, 0x00, 0x07, 0x49, 0x00, 0x00, 0x07, 0x45, 0x0f, 973 982 0xff, 0x07, 0x48, 0x0f, 0xff, 0x07, 0x7b, 0x04, 0xcc, 0x07, 0x7d, … … 976 985 0x07, 0x4a, 0x00, 0x00, 0x07, 0x4c, 0x00, 0x00, 0x07, 0x4e, 0x00, 0x00 977 986 }; 978 unsigned char coefficients3[]= {987 static unsigned char coefficients3[] __initdata = { 979 988 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x51, 0x00, 980 989 0x51, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xcc, … … 1016 1025 }; 1017 1026 1018 EXPORT_SYMBOL(snd_wavefront_fx_start);1019 EXPORT_SYMBOL(snd_wavefront_fx_detect);1020 EXPORT_SYMBOL(snd_wavefront_fx_ioctl);1021 EXPORT_SYMBOL(snd_wavefront_fx_open);1022 EXPORT_SYMBOL(snd_wavefront_fx_release);1023 1024 static int __init alsa_wavefront_fx_init(void)1025 {1026 return 0;1027 }1028 1029 static void __exit alsa_wavefront_fx_exit(void)1030 {1031 }1032 1033 module_init(alsa_wavefront_fx_init)1034 module_exit(alsa_wavefront_fx_exit) -
GPL/branches/alsa-resync1/alsa-kernel/isa/wavefront/wavefront_midi.c
r32 r112 473 473 } 474 474 475 int 475 int __init 476 476 snd_wavefront_midi_start (snd_wavefront_card_t *card) 477 477 -
GPL/branches/alsa-resync1/alsa-kernel/isa/wavefront/wavefront_synth.c
r32 r112 21 21 */ 22 22 23 #define SNDRV_MAIN_OBJECT_FILE23 #define __NO_VERSION__ 24 24 #include <sound/driver.h> 25 #include <asm/io.h> 26 #include <linux/interrupt.h> 27 #include <linux/init.h> 28 #include <linux/delay.h> 29 #include <linux/time.h> 30 #include <linux/wait.h> 31 #include <sound/core.h> 25 32 #include <sound/snd_wavefront.h> 26 33 #include <sound/initval.h> … … 78 85 start running. 79 86 */ 80 MODULE_AUTHOR("Paul Barton-Davis <pbd@op.net>");81 MODULE_DESCRIPTION("ALSA driver for Turtle Beach WaveFront ICS2215 Synth");82 MODULE_CLASSES("{sound}");83 87 MODULE_PARM(wf_raw,"i"); 84 88 MODULE_PARM_DESC(wf_raw, "if non-zero, assume that we need to boot the OS"); … … 101 105 MODULE_PARM(osrun_time,"i"); 102 106 MODULE_PARM_DESC(osrun_time, "how many seconds to wait for the ICS2115 OS"); 103 104 /*105 * This sucks, hopefully it'll get standardised106 */107 108 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,18) && LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)109 #define loops_per_sec loops_per_jiffy*HZ110 #elif LINUX_VERSION_CODE == KERNEL_VERSION(2,4,0) && defined(I_DIRTY_PAGES) /* linux/fs.h */111 #define loops_per_sec loops_per_jiffy*HZ112 #elif LINUX_VERSION_CODE > KERNEL_VERSION(2,4,0)113 #define loops_per_sec loops_per_jiffy*HZ114 #endif115 116 #if defined(__alpha__) || defined(__powerpc__)117 #ifdef __SMP__118 #define LOOPS_PER_SEC (cpu_data[smp_processor_id()].loops_per_sec)119 #else120 #define LOOPS_PER_SEC (loops_per_sec)121 #endif122 #endif123 124 #if defined(__i386__)125 #define LOOPS_PER_SEC (current_cpu_data.loops_per_sec)126 #endif127 107 128 108 /* if WF_DEBUG not defined, no run-time debugging messages will … … 255 235 }; 256 236 237 static inline void 238 dec_mod_count(struct module *module) 239 { 240 if (module) 241 __MOD_DEC_USE_COUNT(module); 242 } 243 257 244 static const char * 258 245 wavefront_errorstr (int errnum) … … 307 294 { 308 295 int i; 309 static int short_loop_cnt = 0;310 311 /* Compute the loop count that lets us sleep for about the312 right amount of time, cache issues, bus speeds and all313 other issues being unequal but largely irrelevant.314 */315 316 if (short_loop_cnt == 0) {317 short_loop_cnt = wait_usecs *318 (LOOPS_PER_SEC / 1000000);319 }320 296 321 297 /* Spin for a short period of time, because >99% of all … … 323 299 */ 324 300 325 for (i = 0; i < short_loop_cnt; i++) {301 for (i = 0; i < wait_usecs; i += 5) { 326 302 if (wavefront_status (dev) & mask) { 327 303 return 1; 328 304 } 305 udelay(5); 329 306 } 330 307 … … 894 871 wavefront_send_sample (snd_wavefront_t *dev, 895 872 wavefront_patch_info *header, 896 UINT16 *dataptr,873 u16 *dataptr, 897 874 int data_is_unsigned) 898 875 … … 907 884 */ 908 885 909 UINT16 sample_short;910 UINT32 length;911 UINT16 *data_end = 0;886 u16 sample_short; 887 u32 length; 888 u16 *data_end = 0; 912 889 unsigned int i; 913 890 const int max_blksize = 4096/2; … … 1059 1036 */ 1060 1037 1061 shptr = munge_int32 (*(( UINT32 *) &header->hdr.s.sampleStartOffset),1038 shptr = munge_int32 (*((u32 *) &header->hdr.s.sampleStartOffset), 1062 1039 shptr, 4); 1063 shptr = munge_int32 (*(( UINT32 *) &header->hdr.s.loopStartOffset),1040 shptr = munge_int32 (*((u32 *) &header->hdr.s.loopStartOffset), 1064 1041 shptr, 4); 1065 shptr = munge_int32 (*(( UINT32 *) &header->hdr.s.loopEndOffset),1042 shptr = munge_int32 (*((u32 *) &header->hdr.s.loopEndOffset), 1066 1043 shptr, 4); 1067 shptr = munge_int32 (*(( UINT32 *) &header->hdr.s.sampleEndOffset),1044 shptr = munge_int32 (*((u32 *) &header->hdr.s.sampleEndOffset), 1068 1045 shptr, 4); 1069 1046 … … 1302 1279 for (i = 0; i < num_samples; i++) { 1303 1280 char d[2]; 1304 1305 if ((d[0] = wavefront_read (dev)) == -1) { 1281 int val; 1282 1283 if ((val = wavefront_read (dev)) == -1) { 1306 1284 snd_printk ("upload multisample failed " 1307 1285 "during sample loop.\n"); 1308 1286 return -(EIO); 1309 1287 } 1310 1311 if ((d[1] = wavefront_read (dev)) == -1) { 1288 d[0] = val; 1289 1290 if ((val = wavefront_read (dev)) == -1) { 1312 1291 snd_printk ("upload multisample failed " 1313 1292 "during sample loop.\n"); 1314 1293 return -(EIO); 1315 1294 } 1295 d[1] = val; 1316 1296 1317 1297 header->hdr.ms.SampleNumber[i] = … … 1472 1452 1473 1453 static void 1474 process_sample_hdr ( UCHAR8 *buf)1454 process_sample_hdr (u8 *buf) 1475 1455 1476 1456 { 1477 1457 wavefront_sample s; 1478 UCHAR8 *ptr;1458 u8 *ptr; 1479 1459 1480 1460 ptr = buf; … … 1487 1467 */ 1488 1468 1489 *(( UINT32 *) &s.sampleStartOffset) = demunge_int32 (ptr, 4); ptr += 4;1490 *(( UINT32 *) &s.loopStartOffset) = demunge_int32 (ptr, 4); ptr += 4;1491 *(( UINT32 *) &s.loopEndOffset) = demunge_int32 (ptr, 4); ptr += 4;1492 *(( UINT32 *) &s.sampleEndOffset) = demunge_int32 (ptr, 4); ptr += 4;1493 *(( UINT32 *) &s.FrequencyBias) = demunge_int32 (ptr, 3); ptr += 3;1469 *((u32 *) &s.sampleStartOffset) = demunge_int32 (ptr, 4); ptr += 4; 1470 *((u32 *) &s.loopStartOffset) = demunge_int32 (ptr, 4); ptr += 4; 1471 *((u32 *) &s.loopEndOffset) = demunge_int32 (ptr, 4); ptr += 4; 1472 *((u32 *) &s.sampleEndOffset) = demunge_int32 (ptr, 4); ptr += 4; 1473 *((u32 *) &s.FrequencyBias) = demunge_int32 (ptr, 3); ptr += 3; 1494 1474 1495 1475 s.SampleResolution = *ptr & 0x3; … … 1558 1538 1559 1539 case WFC_UPLOAD_PATCH: 1560 munge_int32 (*(( UINT32 *) wc->wbuf), patchnumbuf, 2);1540 munge_int32 (*((u32 *) wc->wbuf), patchnumbuf, 2); 1561 1541 memcpy (wc->wbuf, patchnumbuf, 2); 1562 1542 break; … … 1748 1728 */ 1749 1729 1750 int 1730 int __init 1751 1731 snd_wavefront_interrupt_bits (int irq) 1752 1732 … … 1776 1756 } 1777 1757 1778 static void 1758 static void __init 1779 1759 wavefront_should_cause_interrupt (snd_wavefront_t *dev, 1780 1760 int val, int port, int timeout) … … 1791 1771 } 1792 1772 1793 int 1794 snd_wavefront_detect_irq (snd_wavefront_t *dev) 1795 1796 { 1797 int i; 1798 int possible_irqs[] = { 5, 9, 12, 15, -1 }; 1799 1800 /* Note: according to the PnP dump, 7 and 11 are possible too, but the 1801 WaveFront SDK doesn't tell us how to set the card to use them. 1802 */ 1803 1804 snd_printk ("autodetecting WaveFront IRQ\n"); 1805 1806 for (i = 0; possible_irqs[i] > 0; i++) { 1807 if (snd_wavefront_check_irq (dev, possible_irqs[i]) == 0) { 1808 snd_printk ("autodetected IRQ %d\n", 1809 possible_irqs[i]); 1810 return possible_irqs[i]; 1811 } 1812 } 1813 1814 return -1; 1815 } 1816 1817 int 1818 snd_wavefront_check_irq (snd_wavefront_t *dev, int irq) 1819 1820 { 1821 int bits; 1822 unsigned long irq_mask; 1823 short reported_irq; 1824 1825 bits = snd_wavefront_interrupt_bits (irq); 1826 1827 irq_mask = probe_irq_on (); 1828 1829 outb (0x0, dev->control_port); 1830 outb (0x80 | 0x40 | bits, dev->data_port); 1831 wavefront_should_cause_interrupt(dev, 0x80|0x40|0x10|0x1, 1832 dev->control_port, 1833 (reset_time*HZ)/100); 1834 1835 reported_irq = probe_irq_off (irq_mask); 1836 1837 if (reported_irq == 0) { 1838 snd_printk ("No unassigned interrupts detected " 1839 "after h/w reset\n"); 1840 return -1; 1841 } else if (reported_irq < 0) { 1842 snd_printk ("Multiple unassigned interrupts detected " 1843 "after h/w reset\n"); 1844 return -1; 1845 } else if (reported_irq != irq) { 1846 return -1; 1847 } 1848 1849 return 0; /* OK */ 1850 } 1851 1852 static int 1773 static int __init 1853 1774 wavefront_reset_to_cleanliness (snd_wavefront_t *dev) 1854 1775 … … 2004 1925 #include <linux/fs.h> 2005 1926 #include <linux/mm.h> 2006 #include <linux/ malloc.h>1927 #include <linux/slab.h> 2007 1928 #include <linux/unistd.h> 2008 1929 #include <asm/uaccess.h> … … 2010 1931 static int errno; 2011 1932 2012 static int 1933 static int __init 2013 1934 wavefront_download_firmware (snd_wavefront_t *dev, char *path) 2014 1935 … … 2105 2026 2106 2027 2107 static int 2028 static int __init 2108 2029 wavefront_do_reset (snd_wavefront_t *dev) 2109 2030 … … 2194 2115 } 2195 2116 2196 int 2117 int __init 2197 2118 snd_wavefront_start (snd_wavefront_t *dev) 2198 2119 … … 2236 2157 } 2237 2158 2238 int 2159 int __init 2239 2160 snd_wavefront_detect (snd_wavefront_card_t *card) 2240 2161 … … 2290 2211 return 0; 2291 2212 } 2292 2293 EXPORT_SYMBOL(snd_wavefront_synth_ioctl);2294 EXPORT_SYMBOL(snd_wavefront_synth_open);2295 EXPORT_SYMBOL(snd_wavefront_synth_release);2296 EXPORT_SYMBOL(snd_wavefront_internal_interrupt);2297 EXPORT_SYMBOL(snd_wavefront_interrupt_bits);2298 EXPORT_SYMBOL(snd_wavefront_detect_irq);2299 EXPORT_SYMBOL(snd_wavefront_check_irq);2300 EXPORT_SYMBOL(snd_wavefront_start);2301 EXPORT_SYMBOL(snd_wavefront_detect);2302 EXPORT_SYMBOL(snd_wavefront_cmd);2303 /* wavefront_midi.c */2304 EXPORT_SYMBOL(snd_wavefront_midi_interrupt);2305 EXPORT_SYMBOL(snd_wavefront_midi_enable_virtual);2306 EXPORT_SYMBOL(snd_wavefront_midi_disable_virtual);2307 EXPORT_SYMBOL(snd_wavefront_midi_start);2308 EXPORT_SYMBOL(snd_wavefront_midi_input);2309 EXPORT_SYMBOL(snd_wavefront_midi_output);2310 2311 static int __init alsa_wavefront_init(void)2312 {2313 return 0;2314 }2315 2316 static void __exit alsa_wavefront_exit(void)2317 {2318 }2319 2320 module_init(alsa_wavefront_init)2321 module_exit(alsa_wavefront_exit) -
GPL/branches/alsa-resync1/alsa-kernel/pci/es1968.c
r106 r112 1917 1917 es->count += diff; 1918 1918 1919 while(es->count > es->frag_size) {1919 if (es->count > es->frag_size) { 1920 1920 spin_unlock(&chip->substream_lock); 1921 1921 snd_pcm_period_elapsed(subs); -
GPL/branches/alsa-resync1/alsa-kernel/pci/ice1712.c
r92 r112 99 99 #define ICE1712_SUBDEVICE_DELTA44 0x121433d6 100 100 #define ICE1712_SUBDEVICE_AUDIOPHILE 0x121434d6 101 #define ICE1712_SUBDEVICE_DELTA1010LT 0x12143bd6 101 102 #define ICE1712_SUBDEVICE_EWX2496 0x3b153011 102 103 #define ICE1712_SUBDEVICE_EWS88MT 0x3b151511 … … 1185 1186 nval |= 0x04; 1186 1187 if (val != nval) { 1188 reg[1] = nval; 1187 1189 if (snd_i2c_sendbytes(ice->cs8427, reg, 2) != 2) { 1188 1190 snd_i2c_unlock(ice->i2c); … … 4540 4542 const struct pci_device_id *id) 4541 4543 { 4542 static int dev = 0;4544 static int dev; 4543 4545 snd_card_t *card; 4544 4546 ice1712_t *ice; … … 4609 4611 case ICE1712_SUBDEVICE_AUDIOPHILE: 4610 4612 strcpy(card->shortname, "M Audio Audiophile 24/96"); 4613 break; 4614 case ICE1712_SUBDEVICE_DELTA1010LT: 4615 strcpy(card->shortname, "M Audio Delta 1010LT"); 4611 4616 break; 4612 4617 case ICE1712_SUBDEVICE_EWX2496: -
GPL/branches/alsa-resync1/alsa-kernel/pci/korg1212/korg1212.c
r32 r112 2250 2250 const struct pci_device_id *id) 2251 2251 { 2252 static int dev = 0;2252 static int dev; 2253 2253 korg1212_t *korg1212; 2254 2254 snd_card_t *card; -
GPL/branches/alsa-resync1/alsa-kernel/pci/rme96.c
r92 r112 2666 2666 const struct pci_device_id *id) 2667 2667 { 2668 static int dev = 0;2668 static int dev; 2669 2669 rme96_t *rme96; 2670 2670 snd_card_t *card; -
GPL/branches/alsa-resync1/alsa-kernel/pci/rme9652/rme9652.c
r92 r112 2890 2890 const struct pci_device_id *id) 2891 2891 { 2892 static int dev = 0;2892 static int dev; 2893 2893 rme9652_t *rme9652; 2894 2894 snd_card_t *card; -
GPL/branches/alsa-resync1/alsa-kernel/pci/sonicvibes.c
r77 r112 19 19 * You should have received a copy of the GNU General Public License 20 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 22 * 23 23 */ 24 24 25 #define SNDRV_MAIN_OBJECT_FILE26 25 #include <sound/driver.h> 26 #include <asm/io.h> 27 #include <linux/delay.h> 28 #include <linux/init.h> 29 #include <linux/slab.h> 30 #include <sound/core.h> 27 31 #include <sound/pcm.h> 28 32 #include <sound/info.h> … … 32 36 #define SNDRV_GET_ID 33 37 #include <sound/initval.h> 38 #ifndef LINUX_2_2 39 #include <linux/gameport.h> 40 #endif 34 41 35 42 EXPORT_NO_SYMBOLS; 43 44 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>"); 36 45 MODULE_DESCRIPTION("S3 SonicVibes PCI"); 46 MODULE_LICENSE("GPL"); 37 47 MODULE_CLASSES("{sound}"); 38 48 MODULE_DEVICES("{{S3,SonicVibes PCI}}"); … … 47 57 static int snd_index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ 48 58 static char *snd_id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ 49 static int snd_enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE ; /* Enable this card */59 static int snd_enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */ 50 60 #ifdef TARGET_OS2 51 61 static int snd_reverb[SNDRV_CARDS] = {0,0,0,0,0,0,0,0}; … … 250 260 snd_kcontrol_t *master_mute; 251 261 snd_kcontrol_t *master_volume; 262 263 #ifndef LINUX_2_2 264 struct gameport gameport; 265 #endif 252 266 }; 253 267 … … 940 954 } 941 955 942 static int __ init snd_sonicvibes_pcm(sonicvibes_t * sonic, int device, snd_pcm_t ** rpcm)956 static int __devinit snd_sonicvibes_pcm(sonicvibes_t * sonic, int device, snd_pcm_t ** rpcm) 943 957 { 944 958 snd_pcm_t *pcm; … … 1179 1193 #define SONICVIBES_CONTROLS (sizeof(snd_sonicvibes_controls)/sizeof(snd_kcontrol_new_t)) 1180 1194 1181 static snd_kcontrol_new_t snd_sonicvibes_controls[] = {1195 static snd_kcontrol_new_t snd_sonicvibes_controls[] __devinitdata = { 1182 1196 SONICVIBES_DOUBLE("Capture Volume", 0, SV_IREG_LEFT_ADC, SV_IREG_RIGHT_ADC, 0, 0, 15, 0), 1183 1197 SONICVIBES_DOUBLE("Aux Playback Switch", 0, SV_IREG_LEFT_AUX1, SV_IREG_RIGHT_AUX1, 7, 7, 1, 1), … … 1210 1224 } 1211 1225 1212 static int __ init snd_sonicvibes_mixer(sonicvibes_t * sonic)1226 static int __devinit snd_sonicvibes_mixer(sonicvibes_t * sonic) 1213 1227 { 1214 1228 snd_card_t *card; … … 1265 1279 } 1266 1280 1267 static void __ init snd_sonicvibes_proc_init(sonicvibes_t * sonic)1281 static void __devinit snd_sonicvibes_proc_init(sonicvibes_t * sonic) 1268 1282 { 1269 1283 snd_info_entry_t *entry; … … 1295 1309 */ 1296 1310 1297 static snd_kcontrol_new_t snd_sonicvibes_game_control =1311 static snd_kcontrol_new_t snd_sonicvibes_game_control __devinitdata = 1298 1312 SONICVIBES_SINGLE("Joystick Speed", 0, SV_IREG_GAME_PORT, 1, 15, 0); 1299 1313 1300 1314 static int snd_sonicvibes_free(sonicvibes_t *sonic) 1301 1315 { 1316 #ifndef LINUX_2_2 1317 if (sonic->gameport.io) 1318 gameport_unregister_port(&sonic->gameport); 1319 #endif 1302 1320 snd_sonicvibes_proc_done(sonic); 1303 1321 pci_write_config_dword(sonic->pci, 0x40, sonic->dmaa_port); 1304 1322 pci_write_config_dword(sonic->pci, 0x48, sonic->dmac_port); 1305 if (sonic->res_sb_port) 1323 if (sonic->res_sb_port) { 1306 1324 release_resource(sonic->res_sb_port); 1307 if (sonic->res_enh_port) 1325 kfree_nocheck(sonic->res_sb_port); 1326 } 1327 if (sonic->res_enh_port) { 1308 1328 release_resource(sonic->res_enh_port); 1309 if (sonic->res_synth_port) 1329 kfree_nocheck(sonic->res_enh_port); 1330 } 1331 if (sonic->res_synth_port) { 1310 1332 release_resource(sonic->res_synth_port); 1311 if (sonic->res_midi_port) 1333 kfree_nocheck(sonic->res_synth_port); 1334 } 1335 if (sonic->res_midi_port) { 1312 1336 release_resource(sonic->res_midi_port); 1313 if (sonic->res_dmaa) 1337 kfree_nocheck(sonic->res_midi_port); 1338 } 1339 if (sonic->res_dmaa) { 1314 1340 release_resource(sonic->res_dmaa); 1315 if (sonic->res_dmac) 1341 kfree_nocheck(sonic->res_dmaa); 1342 } 1343 if (sonic->res_dmac) { 1316 1344 release_resource(sonic->res_dmac); 1345 kfree_nocheck(sonic->res_dmac); 1346 } 1317 1347 if (sonic->irq >= 0) 1318 1348 free_irq(sonic->irq, (void *)sonic); … … 1327 1357 } 1328 1358 1329 static int __ init snd_sonicvibes_create(snd_card_t * card,1359 static int __devinit snd_sonicvibes_create(snd_card_t * card, 1330 1360 struct pci_dev *pci, 1331 1361 int reverb, … … 1496 1526 #define SONICVIBES_MIDI_CONTROLS (sizeof(snd_sonicvibes_midi_controls)/sizeof(snd_kcontrol_new_t)) 1497 1527 1498 static snd_kcontrol_new_t snd_sonicvibes_midi_controls[] = {1528 static snd_kcontrol_new_t snd_sonicvibes_midi_controls[] __devinitdata = { 1499 1529 SONICVIBES_SINGLE("SonicVibes Wave Source RAM", 0, SV_IREG_WAVE_SOURCE, 0, 1, 0), 1500 1530 SONICVIBES_SINGLE("SonicVibes Wave Source RAM+ROM", 0, SV_IREG_WAVE_SOURCE, 1, 1, 0), … … 1504 1534 }; 1505 1535 1506 static voidsnd_sonicvibes_midi_input_open(mpu401_t * mpu)1507 { 1508 sonicvibes_t *sonic = snd_magic_cast(sonicvibes_t, mpu->private_data, return );1536 static int snd_sonicvibes_midi_input_open(mpu401_t * mpu) 1537 { 1538 sonicvibes_t *sonic = snd_magic_cast(sonicvibes_t, mpu->private_data, return -EIO); 1509 1539 outb(sonic->irqmask &= ~SV_MIDI_MASK, SV_REG(sonic, IRQMASK)); 1540 return 0; 1510 1541 } 1511 1542 … … 1516 1547 } 1517 1548 1518 static int snd_sonicvibes_midi(sonicvibes_t * sonic, snd_rawmidi_t * rmidi)1549 static int __devinit snd_sonicvibes_midi(sonicvibes_t * sonic, snd_rawmidi_t * rmidi) 1519 1550 { 1520 1551 mpu401_t * mpu = snd_magic_cast(mpu401_t, rmidi->private_data, return -ENXIO); … … 1533 1564 } 1534 1565 1535 static int __ init snd_sonic_probe(struct pci_dev *pci,1566 static int __devinit snd_sonic_probe(struct pci_dev *pci, 1536 1567 const struct pci_device_id *id) 1537 1568 { 1538 static int dev = 0;1569 static int dev; 1539 1570 snd_card_t *card; 1540 1571 sonicvibes_t *sonic; … … 1543 1574 int idx, err; 1544 1575 1545 for ( ; dev < SNDRV_CARDS; dev++) { 1576 if (dev >= SNDRV_CARDS) 1577 return -ENODEV; 1546 1578 if (!snd_enable[dev]) { 1547 1579 dev++; 1548 1580 return -ENOENT; 1549 1581 } 1550 break;1551 }1552 if (dev >= SNDRV_CARDS)1553 return -ENODEV;1554 1582 1555 1583 card = snd_card_new(snd_index[dev], snd_id[dev], THIS_MODULE, 0); … … 1596 1624 return err; 1597 1625 } 1626 #ifndef LINUX_2_2 1627 sonic->gameport.io = sonic->game_port; 1628 gameport_register_port(&sonic->gameport); 1629 #endif 1598 1630 strcpy(card->driver, "SonicVibes"); 1599 1631 strcpy(card->shortname, "S3 SonicVibes"); … … 1609 1641 } 1610 1642 1611 PCI_SET_DRIVER_DATA(pci, card);1643 pci_set_drvdata(pci, card); 1612 1644 dev++; 1613 1645 return 0; 1614 1646 } 1615 1647 1616 static void __ exit snd_sonic_remove(struct pci_dev *pci)1617 { 1618 snd_card_free( PCI_GET_DRIVER_DATA(pci));1619 PCI_SET_DRIVER_DATA(pci, NULL);1648 static void __devexit snd_sonic_remove(struct pci_dev *pci) 1649 { 1650 snd_card_free(pci_get_drvdata(pci)); 1651 pci_set_drvdata(pci, NULL); 1620 1652 } 1621 1653 … … 1632 1664 id_table: snd_sonic_ids, 1633 1665 probe: snd_sonic_probe, 1634 remove: snd_sonic_remove,1666 remove: __devexit_p(snd_sonic_remove), 1635 1667 #endif 1636 1668 }; … … 1642 1674 if ((err = pci_module_init(&driver)) < 0) { 1643 1675 #ifdef MODULE 1644 // snd_printk("S3 SonicVibes soundcard not found or device busy\n");1676 // printk(KERN_ERR "S3 SonicVibes soundcard not found or device busy\n"); 1645 1677 #endif 1646 1678 return err; … … 1659 1691 #ifndef MODULE 1660 1692 1661 /* format is: snd- card-sonicvibes=snd_enable,snd_index,snd_id,1693 /* format is: snd-sonicvibes=snd_enable,snd_index,snd_id, 1662 1694 snd_reverb,snd_mge,snd_dmaio */ 1663 1695 … … 1678 1710 } 1679 1711 1680 __setup("snd- card-sonicvibes=", alsa_card_sonicvibes_setup);1712 __setup("snd-sonicvibes=", alsa_card_sonicvibes_setup); 1681 1713 1682 1714 #endif /* ifndef MODULE */
Note:
See TracChangeset
for help on using the changeset viewer.