diff options
Diffstat (limited to 'sound/isa')
61 files changed, 4892 insertions, 3903 deletions
diff --git a/sound/isa/Kconfig b/sound/isa/Kconfig index 5d6c300ac0d..ff8fef93278 100644 --- a/sound/isa/Kconfig +++ b/sound/isa/Kconfig @@ -6,12 +6,10 @@ menu "ISA devices" config SND_AD1848_LIB tristate select SND_PCM - select SND_GENERIC_DRIVER config SND_CS4231_LIB tristate select SND_PCM - select SND_GENERIC_DRIVER config SND_AD1816A tristate "Analog Devices SoundPort AD1816A" @@ -41,6 +39,45 @@ config SND_AD1848 To compile this driver as a module, choose M here: the module will be called snd-ad1848. +config SND_ALS100 + tristate "Avance Logic ALS100/ALS120" + depends on SND && PNP && ISA + select ISAPNP + select SND_OPL3_LIB + select SND_MPU401_UART + select SND_PCM + help + Say Y here to include support for soundcards based on Avance + Logic ALS100, ALS110, ALS120 and ALS200 chips. + + To compile this driver as a module, choose M here: the module + will be called snd-als100. + +config SND_AZT2320 + tristate "Aztech Systems AZT2320" + depends on SND && PNP && ISA + select ISAPNP + select SND_OPL3_LIB + select SND_MPU401_UART + select SND_CS4231_LIB + help + Say Y here to include support for soundcards based on the + Aztech Systems AZT2320 chip. + + To compile this driver as a module, choose M here: the module + will be called snd-azt2320. + +config SND_CMI8330 + tristate "C-Media CMI8330" + depends on SND + select SND_AD1848_LIB + help + Say Y here to include support for soundcards based on the + C-Media CMI8330 chip. + + To compile this driver as a module, choose M here: the module + will be called snd-cmi8330. + config SND_CS4231 tristate "Generic Cirrus Logic CS4231 driver" depends on SND @@ -79,6 +116,20 @@ config SND_CS4236 To compile this driver as a module, choose M here: the module will be called snd-cs4236. +config SND_DT019X + tristate "Diamond Technologies DT-019X, Avance Logic ALS-007" + depends on SND && PNP && ISA + select ISAPNP + select SND_OPL3_LIB + select SND_MPU401_UART + select SND_PCM + help + Say Y here to include support for soundcards based on the + Diamond Technologies DT-019X or Avance Logic ALS-007 chips. + + To compile this driver as a module, choose M here: the module + will be called snd-dt019x. + config SND_ES968 tristate "Generic ESS ES968 driver" depends on SND && PNP && ISA @@ -97,7 +148,6 @@ config SND_ES1688 select SND_OPL3_LIB select SND_MPU401_UART select SND_PCM - select SND_GENERIC_DRIVER help Say Y here to include support for ESS AudioDrive ES688 or ES1688 chips. @@ -111,7 +161,6 @@ config SND_ES18XX select SND_OPL3_LIB select SND_MPU401_UART select SND_PCM - select SND_GENERIC_DRIVER help Say Y here to include support for ESS AudioDrive ES18xx chips. @@ -127,7 +176,6 @@ config SND_GUSCLASSIC select SND_RAWMIDI select SND_PCM select SND_GUS_SYNTH - select SND_GENERIC_DRIVER help Say Y here to include support for Gravis UltraSound Classic soundcards. @@ -142,7 +190,6 @@ config SND_GUSEXTREME select SND_MPU401_UART select SND_PCM select SND_GUS_SYNTH - select SND_GENERIC_DRIVER help Say Y here to include support for Gravis UltraSound Extreme soundcards. @@ -156,7 +203,6 @@ config SND_GUSMAX select SND_RAWMIDI select SND_CS4231_LIB select SND_GUS_SYNTH - select SND_GENERIC_DRIVER help Say Y here to include support for Gravis UltraSound MAX soundcards. @@ -170,7 +216,6 @@ config SND_INTERWAVE select SND_RAWMIDI select SND_CS4231_LIB select SND_GUS_SYNTH - select SND_GENERIC_DRIVER help Say Y here to include support for AMD InterWave based soundcards (Gravis UltraSound Plug & Play, STB SoundRage32, @@ -185,7 +230,6 @@ config SND_INTERWAVE_STB select SND_RAWMIDI select SND_CS4231_LIB select SND_GUS_SYNTH - select SND_GENERIC_DRIVER help Say Y here to include support for AMD InterWave based soundcards with a TEA6330T bass and treble regulator @@ -194,6 +238,19 @@ config SND_INTERWAVE_STB To compile this driver as a module, choose M here: the module will be called snd-interwave-stb. +config SND_OPL3SA2 + tristate "Yamaha OPL3-SA2/SA3" + depends on SND + select SND_OPL3_LIB + select SND_MPU401_UART + select SND_CS4231_LIB + help + Say Y here to include support for Yamaha OPL3-SA2 and OPL3-SA3 + chips. + + To compile this driver as a module, choose M here: the module + will be called snd-opl3sa2. + config SND_OPTI92X_AD1848 tristate "OPTi 82C92x - AD1848" depends on SND @@ -228,7 +285,6 @@ config SND_OPTI93X select SND_OPL3_LIB select SND_MPU401_UART select SND_PCM - select SND_GENERIC_DRIVER help Say Y here to include support for soundcards based on Opti 82C93x chips. @@ -242,7 +298,6 @@ config SND_SB8 select SND_OPL3_LIB select SND_RAWMIDI select SND_PCM - select SND_GENERIC_DRIVER help Say Y here to include support for Creative Sound Blaster 1.0/ 2.0/Pro (8-bit) or 100% compatible soundcards. @@ -256,7 +311,6 @@ config SND_SB16 select SND_OPL3_LIB select SND_MPU401_UART select SND_PCM - select SND_GENERIC_DRIVER help Say Y here to include support for Sound Blaster 16 soundcards (including the Plug and Play version). @@ -270,7 +324,6 @@ config SND_SBAWE select SND_OPL3_LIB select SND_MPU401_UART select SND_PCM - select SND_GENERIC_DRIVER help Say Y here to include support for Sound Blaster AWE soundcards (including the Plug and Play version). @@ -286,85 +339,6 @@ config SND_SB16_CSP coprocessor can do variable tasks like various compression and decompression algorithms. -config SND_WAVEFRONT - tristate "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)" - depends on SND - select SND_OPL3_LIB - select SND_MPU401_UART - select SND_CS4231_LIB - help - Say Y here to include support for Turtle Beach Maui, Tropez - and Tropez+ soundcards based on the Wavefront chip. - - To compile this driver as a module, choose M here: the module - will be called snd-wavefront. - -config SND_ALS100 - tristate "Avance Logic ALS100/ALS120" - depends on SND && PNP && ISA - select ISAPNP - select SND_OPL3_LIB - select SND_MPU401_UART - select SND_PCM - help - Say Y here to include support for soundcards based on Avance - Logic ALS100, ALS110, ALS120 and ALS200 chips. - - To compile this driver as a module, choose M here: the module - will be called snd-als100. - -config SND_AZT2320 - tristate "Aztech Systems AZT2320" - depends on SND && PNP && ISA - select ISAPNP - select SND_OPL3_LIB - select SND_MPU401_UART - select SND_CS4231_LIB - help - Say Y here to include support for soundcards based on the - Aztech Systems AZT2320 chip. - - To compile this driver as a module, choose M here: the module - will be called snd-azt2320. - -config SND_CMI8330 - tristate "C-Media CMI8330" - depends on SND - select SND_AD1848_LIB - help - Say Y here to include support for soundcards based on the - C-Media CMI8330 chip. - - To compile this driver as a module, choose M here: the module - will be called snd-cmi8330. - -config SND_DT019X - tristate "Diamond Technologies DT-019X, Avance Logic ALS-007" - depends on SND && PNP && ISA - select ISAPNP - select SND_OPL3_LIB - select SND_MPU401_UART - select SND_PCM - help - Say Y here to include support for soundcards based on the - Diamond Technologies DT-019X or Avance Logic ALS-007 chips. - - To compile this driver as a module, choose M here: the module - will be called snd-dt019x. - -config SND_OPL3SA2 - tristate "Yamaha OPL3-SA2/SA3" - depends on SND - select SND_OPL3_LIB - select SND_MPU401_UART - select SND_CS4231_LIB - help - Say Y here to include support for Yamaha OPL3-SA2 and OPL3-SA3 - chips. - - To compile this driver as a module, choose M here: the module - will be called snd-opl3sa2. - config SND_SGALAXY tristate "Aztech Sound Galaxy" depends on SND @@ -389,4 +363,17 @@ config SND_SSCAPE To compile this driver as a module, choose M here: the module will be called snd-sscape. +config SND_WAVEFRONT + tristate "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)" + depends on SND + select SND_OPL3_LIB + select SND_MPU401_UART + select SND_CS4231_LIB + help + Say Y here to include support for Turtle Beach Maui, Tropez + and Tropez+ soundcards based on the Wavefront chip. + + To compile this driver as a module, choose M here: the module + will be called snd-wavefront. + endmenu diff --git a/sound/isa/ad1816a/Makefile b/sound/isa/ad1816a/Makefile index a42b29cf854..90e00e842e4 100644 --- a/sound/isa/ad1816a/Makefile +++ b/sound/isa/ad1816a/Makefile @@ -3,8 +3,7 @@ # Copyright (c) 2001 by Jaroslav Kysela <perex@suse.cz> # -snd-ad1816a-lib-objs := ad1816a_lib.o -snd-ad1816a-objs := ad1816a.o +snd-ad1816a-objs := ad1816a.o ad1816a_lib.o # Toplevel Module Dependency -obj-$(CONFIG_SND_AD1816A) += snd-ad1816a.o snd-ad1816a-lib.o +obj-$(CONFIG_SND_AD1816A) += snd-ad1816a.o diff --git a/sound/isa/ad1816a/ad1816a.c b/sound/isa/ad1816a/ad1816a.c index 0eb442ca23d..7051f7798ed 100644 --- a/sound/isa/ad1816a/ad1816a.c +++ b/sound/isa/ad1816a/ad1816a.c @@ -188,10 +188,10 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard const struct pnp_card_device_id *pid) { int error; - snd_card_t *card; + struct snd_card *card; struct snd_card_ad1816a *acard; - ad1816a_t *chip; - opl3_t *opl3; + struct snd_ad1816a *chip; + struct snd_opl3 *opl3; if ((card = snd_card_new(index[dev], id[dev], THIS_MODULE, sizeof(struct snd_card_ad1816a))) == NULL) @@ -282,10 +282,8 @@ static int __devinit snd_ad1816a_pnp_detect(struct pnp_card_link *card, static void __devexit snd_ad1816a_pnp_remove(struct pnp_card_link * pcard) { - snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard); - - snd_card_disconnect(card); - snd_card_free_in_thread(card); + snd_card_free(pnp_get_card_drvdata(pcard)); + pnp_set_card_drvdata(pcard, NULL); } static struct pnp_card_driver ad1816a_pnpc_driver = { @@ -294,20 +292,22 @@ static struct pnp_card_driver ad1816a_pnpc_driver = { .id_table = snd_ad1816a_pnpids, .probe = snd_ad1816a_pnp_detect, .remove = __devexit_p(snd_ad1816a_pnp_remove), + /* FIXME: suspend/resume */ }; static int __init alsa_card_ad1816a_init(void) { - int cards = 0; + int cards; - cards += pnp_register_card_driver(&ad1816a_pnpc_driver); -#ifdef MODULE - if (!cards) { + cards = pnp_register_card_driver(&ad1816a_pnpc_driver); + if (cards <= 0) { pnp_unregister_card_driver(&ad1816a_pnpc_driver); +#ifdef MODULE printk(KERN_ERR "no AD1816A based soundcards found.\n"); - } #endif /* MODULE */ - return cards ? 0 : -ENODEV; + return -ENODEV; + } + return 0; } static void __exit alsa_card_ad1816a_exit(void) diff --git a/sound/isa/ad1816a/ad1816a_lib.c b/sound/isa/ad1816a/ad1816a_lib.c index 7ae02396cae..ac0d808fff5 100644 --- a/sound/isa/ad1816a/ad1816a_lib.c +++ b/sound/isa/ad1816a/ad1816a_lib.c @@ -30,11 +30,7 @@ #include <asm/io.h> #include <asm/dma.h> -MODULE_AUTHOR("Massimo Piccioni <dafastidio@libero.it>"); -MODULE_DESCRIPTION("lowlevel code for Analog Devices AD1816A chip"); -MODULE_LICENSE("GPL"); - -static inline int snd_ad1816a_busy_wait(ad1816a_t *chip) +static inline int snd_ad1816a_busy_wait(struct snd_ad1816a *chip) { int timeout; @@ -46,34 +42,34 @@ static inline int snd_ad1816a_busy_wait(ad1816a_t *chip) return -EBUSY; } -static inline unsigned char snd_ad1816a_in(ad1816a_t *chip, unsigned char reg) +static inline unsigned char snd_ad1816a_in(struct snd_ad1816a *chip, unsigned char reg) { snd_ad1816a_busy_wait(chip); return inb(AD1816A_REG(reg)); } -static inline void snd_ad1816a_out(ad1816a_t *chip, unsigned char reg, +static inline void snd_ad1816a_out(struct snd_ad1816a *chip, unsigned char reg, unsigned char value) { snd_ad1816a_busy_wait(chip); outb(value, AD1816A_REG(reg)); } -static inline void snd_ad1816a_out_mask(ad1816a_t *chip, unsigned char reg, +static inline void snd_ad1816a_out_mask(struct snd_ad1816a *chip, unsigned char reg, unsigned char mask, unsigned char value) { snd_ad1816a_out(chip, reg, (value & mask) | (snd_ad1816a_in(chip, reg) & ~mask)); } -static unsigned short snd_ad1816a_read(ad1816a_t *chip, unsigned char reg) +static unsigned short snd_ad1816a_read(struct snd_ad1816a *chip, unsigned char reg) { snd_ad1816a_out(chip, AD1816A_INDIR_ADDR, reg & 0x3f); return snd_ad1816a_in(chip, AD1816A_INDIR_DATA_LOW) | (snd_ad1816a_in(chip, AD1816A_INDIR_DATA_HIGH) << 8); } -static void snd_ad1816a_write(ad1816a_t *chip, unsigned char reg, +static void snd_ad1816a_write(struct snd_ad1816a *chip, unsigned char reg, unsigned short value) { snd_ad1816a_out(chip, AD1816A_INDIR_ADDR, reg & 0x3f); @@ -81,7 +77,7 @@ static void snd_ad1816a_write(ad1816a_t *chip, unsigned char reg, snd_ad1816a_out(chip, AD1816A_INDIR_DATA_HIGH, (value >> 8) & 0xff); } -static void snd_ad1816a_write_mask(ad1816a_t *chip, unsigned char reg, +static void snd_ad1816a_write_mask(struct snd_ad1816a *chip, unsigned char reg, unsigned short mask, unsigned short value) { snd_ad1816a_write(chip, reg, @@ -89,7 +85,7 @@ static void snd_ad1816a_write_mask(ad1816a_t *chip, unsigned char reg, } -static unsigned char snd_ad1816a_get_format(ad1816a_t *chip, +static unsigned char snd_ad1816a_get_format(struct snd_ad1816a *chip, unsigned int format, int channels) { unsigned char retval = AD1816A_FMT_LINEAR_8; @@ -110,7 +106,7 @@ static unsigned char snd_ad1816a_get_format(ad1816a_t *chip, return (channels > 1) ? (retval | AD1816A_FMT_STEREO) : retval; } -static int snd_ad1816a_open(ad1816a_t *chip, unsigned int mode) +static int snd_ad1816a_open(struct snd_ad1816a *chip, unsigned int mode) { unsigned long flags; @@ -146,7 +142,7 @@ static int snd_ad1816a_open(ad1816a_t *chip, unsigned int mode) return 0; } -static void snd_ad1816a_close(ad1816a_t *chip, unsigned int mode) +static void snd_ad1816a_close(struct snd_ad1816a *chip, unsigned int mode) { unsigned long flags; @@ -178,7 +174,7 @@ static void snd_ad1816a_close(ad1816a_t *chip, unsigned int mode) } -static int snd_ad1816a_trigger(ad1816a_t *chip, unsigned char what, +static int snd_ad1816a_trigger(struct snd_ad1816a *chip, unsigned char what, int channel, int cmd) { int error = 0; @@ -204,36 +200,36 @@ static int snd_ad1816a_trigger(ad1816a_t *chip, unsigned char what, return error; } -static int snd_ad1816a_playback_trigger(snd_pcm_substream_t *substream, int cmd) +static int snd_ad1816a_playback_trigger(struct snd_pcm_substream *substream, int cmd) { - ad1816a_t *chip = snd_pcm_substream_chip(substream); + struct snd_ad1816a *chip = snd_pcm_substream_chip(substream); return snd_ad1816a_trigger(chip, AD1816A_PLAYBACK_ENABLE, SNDRV_PCM_STREAM_PLAYBACK, cmd); } -static int snd_ad1816a_capture_trigger(snd_pcm_substream_t *substream, int cmd) +static int snd_ad1816a_capture_trigger(struct snd_pcm_substream *substream, int cmd) { - ad1816a_t *chip = snd_pcm_substream_chip(substream); + struct snd_ad1816a *chip = snd_pcm_substream_chip(substream); return snd_ad1816a_trigger(chip, AD1816A_CAPTURE_ENABLE, SNDRV_PCM_STREAM_CAPTURE, cmd); } -static int snd_ad1816a_hw_params(snd_pcm_substream_t * substream, - snd_pcm_hw_params_t * hw_params) +static int snd_ad1816a_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *hw_params) { return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); } -static int snd_ad1816a_hw_free(snd_pcm_substream_t * substream) +static int snd_ad1816a_hw_free(struct snd_pcm_substream *substream) { return snd_pcm_lib_free_pages(substream); } -static int snd_ad1816a_playback_prepare(snd_pcm_substream_t *substream) +static int snd_ad1816a_playback_prepare(struct snd_pcm_substream *substream) { - ad1816a_t *chip = snd_pcm_substream_chip(substream); + struct snd_ad1816a *chip = snd_pcm_substream_chip(substream); unsigned long flags; - snd_pcm_runtime_t *runtime = substream->runtime; + struct snd_pcm_runtime *runtime = substream->runtime; unsigned int size, rate; spin_lock_irqsave(&chip->lock, flags); @@ -261,11 +257,11 @@ static int snd_ad1816a_playback_prepare(snd_pcm_substream_t *substream) return 0; } -static int snd_ad1816a_capture_prepare(snd_pcm_substream_t *substream) +static int snd_ad1816a_capture_prepare(struct snd_pcm_substream *substream) { - ad1816a_t *chip = snd_pcm_substream_chip(substream); + struct snd_ad1816a *chip = snd_pcm_substream_chip(substream); unsigned long flags; - snd_pcm_runtime_t *runtime = substream->runtime; + struct snd_pcm_runtime *runtime = substream->runtime; unsigned int size, rate; spin_lock_irqsave(&chip->lock, flags); @@ -294,9 +290,9 @@ static int snd_ad1816a_capture_prepare(snd_pcm_substream_t *substream) } -static snd_pcm_uframes_t snd_ad1816a_playback_pointer(snd_pcm_substream_t *substream) +static snd_pcm_uframes_t snd_ad1816a_playback_pointer(struct snd_pcm_substream *substream) { - ad1816a_t *chip = snd_pcm_substream_chip(substream); + struct snd_ad1816a *chip = snd_pcm_substream_chip(substream); size_t ptr; if (!(chip->mode & AD1816A_MODE_PLAYBACK)) return 0; @@ -304,9 +300,9 @@ static snd_pcm_uframes_t snd_ad1816a_playback_pointer(snd_pcm_substream_t *subst return bytes_to_frames(substream->runtime, ptr); } -static snd_pcm_uframes_t snd_ad1816a_capture_pointer(snd_pcm_substream_t *substream) +static snd_pcm_uframes_t snd_ad1816a_capture_pointer(struct snd_pcm_substream *substream) { - ad1816a_t *chip = snd_pcm_substream_chip(substream); + struct snd_ad1816a *chip = snd_pcm_substream_chip(substream); size_t ptr; if (!(chip->mode & AD1816A_MODE_CAPTURE)) return 0; @@ -317,7 +313,7 @@ static snd_pcm_uframes_t snd_ad1816a_capture_pointer(snd_pcm_substream_t *substr static irqreturn_t snd_ad1816a_interrupt(int irq, void *dev_id, struct pt_regs *regs) { - ad1816a_t *chip = dev_id; + struct snd_ad1816a *chip = dev_id; unsigned char status; spin_lock(&chip->lock); @@ -340,7 +336,7 @@ static irqreturn_t snd_ad1816a_interrupt(int irq, void *dev_id, struct pt_regs * } -static snd_pcm_hardware_t snd_ad1816a_playback = { +static struct snd_pcm_hardware snd_ad1816a_playback = { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP_VALID), .formats = (SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | @@ -359,7 +355,7 @@ static snd_pcm_hardware_t snd_ad1816a_playback = { .fifo_size = 0, }; -static snd_pcm_hardware_t snd_ad1816a_capture = { +static struct snd_pcm_hardware snd_ad1816a_capture = { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP_VALID), .formats = (SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | @@ -379,32 +375,32 @@ static snd_pcm_hardware_t snd_ad1816a_capture = { }; #if 0 /* not used now */ -static int snd_ad1816a_timer_close(snd_timer_t *timer) +static int snd_ad1816a_timer_close(struct snd_timer *timer) { - ad1816a_t *chip = snd_timer_chip(timer); + struct snd_ad1816a *chip = snd_timer_chip(timer); snd_ad1816a_close(chip, AD1816A_MODE_TIMER); return 0; } -static int snd_ad1816a_timer_open(snd_timer_t *timer) +static int snd_ad1816a_timer_open(struct snd_timer *timer) { - ad1816a_t *chip = snd_timer_chip(timer); + struct snd_ad1816a *chip = snd_timer_chip(timer); snd_ad1816a_open(chip, AD1816A_MODE_TIMER); return 0; } -static unsigned long snd_ad1816a_timer_resolution(snd_timer_t *timer) +static unsigned long snd_ad1816a_timer_resolution(struct snd_timer *timer) { snd_assert(timer != NULL, return 0); return 10000; } -static int snd_ad1816a_timer_start(snd_timer_t *timer) +static int snd_ad1816a_timer_start(struct snd_timer *timer) { unsigned short bits; unsigned long flags; - ad1816a_t *chip = snd_timer_chip(timer); + struct snd_ad1816a *chip = snd_timer_chip(timer); spin_lock_irqsave(&chip->lock, flags); bits = snd_ad1816a_read(chip, AD1816A_INTERRUPT_ENABLE); @@ -419,10 +415,10 @@ stat |