2019-05-27 08:55:05 +02:00
// SPDX-License-Identifier: GPL-2.0-or-later
2005-04-16 15:20:36 -07:00
/*
* Driver for Gravis UltraSound Classic soundcard
2007-10-15 09:50:19 +02:00
* Copyright ( c ) by Jaroslav Kysela < perex @ perex . cz >
2005-04-16 15:20:36 -07:00
*/
# include <linux/init.h>
2005-11-17 17:13:43 +01:00
# include <linux/err.h>
2007-02-19 13:05:02 +01:00
# include <linux/isa.h>
2005-04-16 15:20:36 -07:00
# include <linux/delay.h>
# include <linux/time.h>
2011-07-15 13:13:37 -04:00
# include <linux/module.h>
2005-11-17 17:13:43 +01:00
# include <asm/dma.h>
2005-04-16 15:20:36 -07:00
# include <sound/core.h>
# include <sound/gus.h>
# define SNDRV_LEGACY_FIND_FREE_IRQ
# define SNDRV_LEGACY_FIND_FREE_DMA
# include <sound/initval.h>
2007-02-19 13:05:02 +01:00
# define CRD_NAME "Gravis UltraSound Classic"
# define DEV_NAME "gusclassic"
MODULE_DESCRIPTION ( CRD_NAME ) ;
2007-10-15 09:50:19 +02:00
MODULE_AUTHOR ( " Jaroslav Kysela <perex@perex.cz> " ) ;
2005-04-16 15:20:36 -07:00
MODULE_LICENSE ( " GPL " ) ;
static int index [ SNDRV_CARDS ] = SNDRV_DEFAULT_IDX ; /* Index 0-MAX */
static char * id [ SNDRV_CARDS ] = SNDRV_DEFAULT_STR ; /* ID for this card */
2011-12-15 13:49:36 +10:30
static bool enable [ SNDRV_CARDS ] = SNDRV_DEFAULT_ENABLE ; /* Enable this card */
2005-04-16 15:20:36 -07:00
static long port [ SNDRV_CARDS ] = SNDRV_DEFAULT_PORT ; /* 0x220,0x230,0x240,0x250,0x260 */
static int irq [ SNDRV_CARDS ] = SNDRV_DEFAULT_IRQ ; /* 3,5,9,11,12,15 */
static int dma1 [ SNDRV_CARDS ] = SNDRV_DEFAULT_DMA ; /* 1,3,5,6,7 */
static int dma2 [ SNDRV_CARDS ] = SNDRV_DEFAULT_DMA ; /* 1,3,5,6,7 */
static int joystick_dac [ SNDRV_CARDS ] = { [ 0 . . . ( SNDRV_CARDS - 1 ) ] = 29 } ;
/* 0 to 31, (0.59V-4.52V or 0.389V-2.98V) */
static int channels [ SNDRV_CARDS ] = { [ 0 . . . ( SNDRV_CARDS - 1 ) ] = 24 } ;
static int pcm_channels [ SNDRV_CARDS ] = { [ 0 . . . ( SNDRV_CARDS - 1 ) ] = 2 } ;
module_param_array ( index , int , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( index , " Index value for " CRD_NAME " soundcard. " ) ;
2005-04-16 15:20:36 -07:00
module_param_array ( id , charp , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( id , " ID string for " CRD_NAME " soundcard. " ) ;
2005-04-16 15:20:36 -07:00
module_param_array ( enable , bool , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( enable , " Enable " CRD_NAME " soundcard. " ) ;
2017-04-04 16:54:30 +01:00
module_param_hw_array ( port , long , ioport , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( port , " Port # for " CRD_NAME " driver. " ) ;
2017-04-04 16:54:30 +01:00
module_param_hw_array ( irq , int , irq , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( irq , " IRQ # for " CRD_NAME " driver. " ) ;
2017-04-04 16:54:30 +01:00
module_param_hw_array ( dma1 , int , dma , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( dma1 , " DMA1 # for " CRD_NAME " driver. " ) ;
2017-04-04 16:54:30 +01:00
module_param_hw_array ( dma2 , int , dma , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( dma2 , " DMA2 # for " CRD_NAME " driver. " ) ;
2005-04-16 15:20:36 -07:00
module_param_array ( joystick_dac , int , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( joystick_dac , " Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver. " ) ;
2005-04-16 15:20:36 -07:00
module_param_array ( channels , int , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( channels , " GF1 channels for " CRD_NAME " driver. " ) ;
2005-04-16 15:20:36 -07:00
module_param_array ( pcm_channels , int , NULL , 0444 ) ;
2007-02-19 13:05:02 +01:00
MODULE_PARM_DESC ( pcm_channels , " Reserved PCM channels for " CRD_NAME " driver. " ) ;
2012-12-06 12:35:21 -05:00
static int snd_gusclassic_match ( struct device * dev , unsigned int n )
2007-02-19 13:05:02 +01:00
{
return enable [ n ] ;
}
2012-12-06 12:35:21 -05:00
static int snd_gusclassic_create ( struct snd_card * card ,
struct device * dev , unsigned int n ,
struct snd_gus_card * * rgus )
2007-02-19 13:05:02 +01:00
{
2020-01-05 15:48:04 +01:00
static const long possible_ports [ ] = { 0x220 , 0x230 , 0x240 , 0x250 , 0x260 } ;
static const int possible_irqs [ ] = { 5 , 11 , 12 , 9 , 7 , 15 , 3 , 4 , - 1 } ;
static const int possible_dmas [ ] = { 5 , 6 , 7 , 1 , 3 , - 1 } ;
2007-02-19 13:05:02 +01:00
int i , error ;
if ( irq [ n ] = = SNDRV_AUTO_IRQ ) {
irq [ n ] = snd_legacy_find_free_irq ( possible_irqs ) ;
if ( irq [ n ] < 0 ) {
2008-11-03 08:51:33 +01:00
dev_err ( dev , " unable to find a free IRQ \n " ) ;
2007-02-19 13:05:02 +01:00
return - EBUSY ;
}
}
if ( dma1 [ n ] = = SNDRV_AUTO_DMA ) {
dma1 [ n ] = snd_legacy_find_free_dma ( possible_dmas ) ;
if ( dma1 [ n ] < 0 ) {
2008-11-03 08:51:33 +01:00
dev_err ( dev , " unable to find a free DMA1 \n " ) ;
2007-02-19 13:05:02 +01:00
return - EBUSY ;
}
}
if ( dma2 [ n ] = = SNDRV_AUTO_DMA ) {
dma2 [ n ] = snd_legacy_find_free_dma ( possible_dmas ) ;
if ( dma2 [ n ] < 0 ) {
2008-11-03 08:51:33 +01:00
dev_err ( dev , " unable to find a free DMA2 \n " ) ;
2007-02-19 13:05:02 +01:00
return - EBUSY ;
}
}
2005-04-16 15:20:36 -07:00
2007-02-19 13:05:02 +01:00
if ( port [ n ] ! = SNDRV_AUTO_PORT )
return snd_gus_create ( card , port [ n ] , irq [ n ] , dma1 [ n ] , dma2 [ n ] ,
0 , channels [ n ] , pcm_channels [ n ] , 0 , rgus ) ;
2005-12-07 09:13:42 +01:00
2007-02-19 13:05:02 +01:00
i = 0 ;
do {
port [ n ] = possible_ports [ i ] ;
error = snd_gus_create ( card , port [ n ] , irq [ n ] , dma1 [ n ] , dma2 [ n ] ,
0 , channels [ n ] , pcm_channels [ n ] , 0 , rgus ) ;
} while ( error < 0 & & + + i < ARRAY_SIZE ( possible_ports ) ) ;
2005-04-16 15:20:36 -07:00
2007-02-19 13:05:02 +01:00
return error ;
}
2005-04-16 15:20:36 -07:00
2012-12-06 12:35:21 -05:00
static int snd_gusclassic_detect ( struct snd_gus_card * gus )
2005-04-16 15:20:36 -07:00
{
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
unsigned char d ;
2005-04-16 15:20:36 -07:00
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
snd_gf1_i_write8 ( gus , SNDRV_GF1_GB_RESET , 0 ) ; /* reset GF1 */
2021-06-08 16:04:38 +02:00
d = snd_gf1_i_look8 ( gus , SNDRV_GF1_GB_RESET ) ;
if ( ( d & 0x07 ) ! = 0 ) {
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
snd_printdd ( " [0x%lx] check 1 failed - 0x%x \n " , gus - > gf1 . port , d ) ;
2005-04-16 15:20:36 -07:00
return - ENODEV ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
}
2005-04-16 15:20:36 -07:00
udelay ( 160 ) ;
snd_gf1_i_write8 ( gus , SNDRV_GF1_GB_RESET , 1 ) ; /* release reset */
udelay ( 160 ) ;
2021-06-08 16:04:38 +02:00
d = snd_gf1_i_look8 ( gus , SNDRV_GF1_GB_RESET ) ;
if ( ( d & 0x07 ) ! = 1 ) {
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
snd_printdd ( " [0x%lx] check 2 failed - 0x%x \n " , gus - > gf1 . port , d ) ;
2005-04-16 15:20:36 -07:00
return - ENODEV ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
}
2005-04-16 15:20:36 -07:00
return 0 ;
}
2012-12-06 12:35:21 -05:00
static int snd_gusclassic_probe ( struct device * dev , unsigned int n )
2005-04-16 15:20:36 -07:00
{
2005-11-17 14:36:44 +01:00
struct snd_card * card ;
2007-02-19 13:05:02 +01:00
struct snd_gus_card * gus ;
int error ;
2005-04-16 15:20:36 -07:00
2021-07-15 09:59:27 +02:00
error = snd_devm_card_new ( dev , index [ n ] , id [ n ] , THIS_MODULE , 0 , & card ) ;
2008-12-28 16:43:35 +01:00
if ( error < 0 )
return error ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
if ( pcm_channels [ n ] < 2 )
pcm_channels [ n ] = 2 ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
error = snd_gusclassic_create ( card , dev , n , & gus ) ;
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
error = snd_gusclassic_detect ( gus ) ;
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
2007-02-19 13:05:02 +01:00
gus - > joystick_dac = joystick_dac [ n ] ;
error = snd_gus_initialize ( gus ) ;
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
2007-02-19 13:05:02 +01:00
error = - ENODEV ;
2005-04-16 15:20:36 -07:00
if ( gus - > max_flag | | gus - > ess_flag ) {
2008-11-03 08:51:33 +01:00
dev_err ( dev , " GUS Classic or ACE soundcard was "
" not detected at 0x%lx \n " , gus - > gf1 . port ) ;
2021-07-15 09:59:27 +02:00
return error ;
2005-04-16 15:20:36 -07:00
}
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
error = snd_gf1_new_mixer ( gus ) ;
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2015-01-02 12:24:39 +01:00
error = snd_gf1_pcm_new ( gus , 0 , 0 ) ;
2007-02-19 13:05:02 +01:00
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2005-04-16 15:20:36 -07:00
if ( ! gus - > ace_flag ) {
2015-01-02 12:24:39 +01:00
error = snd_gf1_rawmidi_new ( gus , 0 ) ;
2007-02-19 13:05:02 +01:00
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
2005-04-16 15:20:36 -07:00
}
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
sprintf ( card - > longname + strlen ( card - > longname ) ,
" at 0x%lx, irq %d, dma %d " ,
gus - > gf1 . port , gus - > gf1 . irq , gus - > gf1 . dma1 ) ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
if ( gus - > gf1 . dma2 > = 0 )
sprintf ( card - > longname + strlen ( card - > longname ) ,
" &%d " , gus - > gf1 . dma2 ) ;
[ALSA] Add snd_card_set_generic_dev() call to ISA drivers
ISA,CMI8330 driver,ES18xx driver,OPL3SA2 driver,Sound Galaxy driver
Sound Scape driver,AD1848 driver,CS4231 driver,CS4236+ driver
ES1688 driver,GUS Classic driver,GUS Extreme driver,GUS MAX driver
AMD InterWave driver,Opti9xx drivers,SB16/AWE driver,SB8 driver
Wavefront drivers
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-09-05 17:19:20 +02:00
2007-02-19 13:05:02 +01:00
error = snd_card_register ( card ) ;
if ( error < 0 )
2021-07-15 09:59:27 +02:00
return error ;
2007-02-19 13:05:02 +01:00
dev_set_drvdata ( dev , card ) ;
2005-04-16 15:20:36 -07:00
return 0 ;
}
2007-02-19 13:05:02 +01:00
static struct isa_driver snd_gusclassic_driver = {
. match = snd_gusclassic_match ,
2005-11-17 17:13:43 +01:00
. probe = snd_gusclassic_probe ,
2007-02-19 13:05:02 +01:00
#if 0 /* FIXME */
. suspend = snd_gusclassic_suspend ,
# endif
2005-11-17 17:13:43 +01:00
. driver = {
2007-02-19 13:05:02 +01:00
. name = DEV_NAME
}
2005-11-17 17:13:43 +01:00
} ;
2016-05-31 11:56:09 -04:00
module_isa_driver ( snd_gusclassic_driver , SNDRV_CARDS ) ;