Changeset 112 for GPL/branches/alsa-resync1/alsa-kernel/isa
- Timestamp:
- May 31, 2007, 6:45:32 AM (18 years ago)
- Location:
- GPL/branches/alsa-resync1/alsa-kernel/isa
- Files:
-
- 29 edited
-
ad1816a/ad1816a.c (modified) (1 diff)
-
ad1816a/ad1816a_lib.c (modified) (1 diff)
-
ad1848/ad1848_lib.c (modified) (2 diffs)
-
als100.c (modified) (1 diff)
-
azt2320.c (modified) (1 diff)
-
cmi8330.c (modified) (2 diffs)
-
cs423x/cs4231_lib.c (modified) (1 diff)
-
cs423x/cs4236.c (modified) (9 diffs)
-
dt0197h.c (modified) (1 diff)
-
es1688/es1688.c (modified) (1 diff)
-
es1688/es1688_lib.c (modified) (1 diff)
-
es18xx.c (modified) (2 diffs)
-
gus/gus_main.c (modified) (4 diffs)
-
gus/gusclassic.c (modified) (1 diff)
-
gus/gusextreme.c (modified) (1 diff)
-
gus/gusmax.c (modified) (1 diff)
-
gus/interwave.c (modified) (2 diffs)
-
opl3sa2.c (modified) (2 diffs)
-
sb/emu8000.c (modified) (17 diffs)
-
sb/es968.c (modified) (1 diff)
-
sb/sb16.c (modified) (2 diffs)
-
sb/sb16_main.c (modified) (3 diffs)
-
sb/sb8.c (modified) (2 diffs)
-
sb/sb_common.c (modified) (3 diffs)
-
sgalaxy.c (modified) (1 diff)
-
wavefront/wavefront.c (modified) (3 diffs)
-
wavefront/wavefront_fx.c (modified) (22 diffs)
-
wavefront/wavefront_midi.c (modified) (1 diff)
-
wavefront/wavefront_synth.c (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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)
Note:
See TracChangeset
for help on using the changeset viewer.
