@ -166,7 +166,7 @@ static void snd_ice1712_stdsp24_midi2(struct snd_ice1712 *ice, int activate)
mutex_unlock ( & ice - > gpio_mutex ) ;
}
static int snd_ice1712_ hoontech_init( struct snd_ice1712 * ice )
static int hoontech_init ( struct snd_ice1712 * ice , bool staudio )
{
struct hoontech_spec * spec ;
int box , chn ;
@ -203,7 +203,10 @@ static int snd_ice1712_hoontech_init(struct snd_ice1712 *ice)
ICE1712_STDSP24_3_INSEL ( spec - > boxbits , 0 ) ;
/* let's go - activate only functions in first box */
spec - > config = 0 ;
if ( staudio )
spec - > config = ICE1712_STDSP24_MUTE ;
else
spec - > config = 0 ;
/* ICE1712_STDSP24_MUTE |
ICE1712_STDSP24_INSEL |
ICE1712_STDSP24_DAREAR ; */
@ -226,9 +229,16 @@ static int snd_ice1712_hoontech_init(struct snd_ice1712 *ice)
ICE1712_STDSP24_BOX_CHN4 |
ICE1712_STDSP24_BOX_MIDI1 |
ICE1712_STDSP24_BOX_MIDI2 ;
spec - > boxconfig [ 1 ] =
spec - > boxconfig [ 2 ] =
spec - > boxconfig [ 3 ] = 0 ;
if ( staudio ) {
spec - > boxconfig [ 1 ] =
spec - > boxconfig [ 2 ] =
spec - > boxconfig [ 3 ] = spec - > boxconfig [ 0 ] ;
} else {
spec - > boxconfig [ 1 ] =
spec - > boxconfig [ 2 ] =
spec - > boxconfig [ 3 ] = 0 ;
}
snd_ice1712_stdsp24_darear ( ice ,
( spec - > config & ICE1712_STDSP24_DAREAR ) ? 1 : 0 ) ;
snd_ice1712_stdsp24_mute ( ice ,
@ -248,6 +258,16 @@ static int snd_ice1712_hoontech_init(struct snd_ice1712 *ice)
return 0 ;
}
static int snd_ice1712_hoontech_init ( struct snd_ice1712 * ice )
{
return hoontech_init ( ice , false ) ;
}
static int snd_ice1712_staudio_init ( struct snd_ice1712 * ice )
{
return hoontech_init ( ice , true ) ;
}
/*
* AK4524 access
*/
@ -351,5 +371,14 @@ struct snd_ice1712_card_info snd_ice1712_hoontech_cards[] = {
. model = " ez8 " ,
. chip_init = snd_ice1712_ez8_init ,
} ,
{
/* STAudio ADCIII has the same SSID as Hoontech StA DSP24,
* thus identified only via the explicit model option
*/
. subvendor = ICE1712_SUBDEVICE_STAUDIO_ADCIII , /* a dummy id */
. name = " STAudio ADCIII " ,
. model = " staudio " ,
. chip_init = snd_ice1712_staudio_init ,
} ,
{ } /* terminator */
} ;