@ -21,322 +21,6 @@ enum {
ALC882_MODEL_LAST ,
} ;
/*
* ALC888 Acer Aspire 4930 G model
*/
static const struct hda_verb alc888_acer_aspire_4930g_verbs [ ] = {
/* Front Mic: set to PIN_IN (empty by default) */
{ 0x12 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_IN } ,
/* Unselect Front Mic by default in input mixer 3 */
{ 0x22 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_MUTE ( 0xb ) } ,
/* Enable unsolicited event for HP jack */
{ 0x15 , AC_VERB_SET_UNSOLICITED_ENABLE , ALC_HP_EVENT | AC_USRSP_EN } ,
/* Connect Internal HP to front */
{ 0x14 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x14 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x14 , AC_VERB_SET_CONNECT_SEL , 0x00 } ,
/* Connect HP out to front */
{ 0x15 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x15 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x15 , AC_VERB_SET_CONNECT_SEL , 0x00 } ,
{ 0x15 , AC_VERB_SET_EAPD_BTLENABLE , 2 } ,
{ }
} ;
/*
* ALC888 Acer Aspire 6530 G model
*/
static const struct hda_verb alc888_acer_aspire_6530g_verbs [ ] = {
/* Route to built-in subwoofer as well as speakers */
{ 0x0c , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_UNMUTE ( 0 ) } ,
{ 0x0c , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_UNMUTE ( 1 ) } ,
{ 0x0f , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_UNMUTE ( 0 ) } ,
{ 0x0f , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_UNMUTE ( 1 ) } ,
/* Bias voltage on for external mic port */
{ 0x18 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_IN | PIN_VREF80 } ,
/* Front Mic: set to PIN_IN (empty by default) */
{ 0x12 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_IN } ,
/* Unselect Front Mic by default in input mixer 3 */
{ 0x22 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_MUTE ( 0xb ) } ,
/* Enable unsolicited event for HP jack */
{ 0x15 , AC_VERB_SET_UNSOLICITED_ENABLE , ALC_HP_EVENT | AC_USRSP_EN } ,
/* Enable speaker output */
{ 0x14 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x14 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x14 , AC_VERB_SET_EAPD_BTLENABLE , 2 } ,
/* Enable headphone output */
{ 0x15 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT | PIN_HP } ,
{ 0x15 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x15 , AC_VERB_SET_CONNECT_SEL , 0x00 } ,
{ 0x15 , AC_VERB_SET_EAPD_BTLENABLE , 2 } ,
{ }
} ;
/*
* ALC888 Acer Aspire 7730 G model
*/
static const struct hda_verb alc888_acer_aspire_7730G_verbs [ ] = {
/* Bias voltage on for external mic port */
{ 0x18 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_IN | PIN_VREF80 } ,
/* Front Mic: set to PIN_IN (empty by default) */
{ 0x12 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_IN } ,
/* Unselect Front Mic by default in input mixer 3 */
{ 0x22 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_MUTE ( 0xb ) } ,
/* Enable unsolicited event for HP jack */
{ 0x15 , AC_VERB_SET_UNSOLICITED_ENABLE , ALC_HP_EVENT | AC_USRSP_EN } ,
/* Enable speaker output */
{ 0x14 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x14 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x14 , AC_VERB_SET_EAPD_BTLENABLE , 2 } ,
/* Enable headphone output */
{ 0x15 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT | PIN_HP } ,
{ 0x15 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x15 , AC_VERB_SET_CONNECT_SEL , 0x00 } ,
{ 0x15 , AC_VERB_SET_EAPD_BTLENABLE , 2 } ,
/*Enable internal subwoofer */
{ 0x17 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x17 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x17 , AC_VERB_SET_CONNECT_SEL , 0x02 } ,
{ 0x17 , AC_VERB_SET_EAPD_BTLENABLE , 2 } ,
{ }
} ;
/*
* ALC889 Acer Aspire 8930 G model
*/
static const struct hda_verb alc889_acer_aspire_8930g_verbs [ ] = {
/* Front Mic: set to PIN_IN (empty by default) */
{ 0x12 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_IN } ,
/* Unselect Front Mic by default in input mixer 3 */
{ 0x22 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_IN_MUTE ( 0xb ) } ,
/* Enable unsolicited event for HP jack */
{ 0x15 , AC_VERB_SET_UNSOLICITED_ENABLE , ALC_HP_EVENT | AC_USRSP_EN } ,
/* Connect Internal Front to Front */
{ 0x14 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x14 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x14 , AC_VERB_SET_CONNECT_SEL , 0x00 } ,
/* Connect Internal Rear to Rear */
{ 0x1b , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x1b , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x1b , AC_VERB_SET_CONNECT_SEL , 0x01 } ,
/* Connect Internal CLFE to CLFE */
{ 0x16 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT } ,
{ 0x16 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x16 , AC_VERB_SET_CONNECT_SEL , 0x02 } ,
/* Connect HP out to Front */
{ 0x15 , AC_VERB_SET_PIN_WIDGET_CONTROL , PIN_OUT | PIN_HP } ,
{ 0x15 , AC_VERB_SET_AMP_GAIN_MUTE , AMP_OUT_UNMUTE } ,
{ 0x15 , AC_VERB_SET_CONNECT_SEL , 0x00 } ,
/* Enable all DACs */
/* DAC DISABLE/MUTE 1? */
/* setting bits 1-5 disables DAC nids 0x02-0x06 apparently. Init=0x38 */
{ 0x20 , AC_VERB_SET_COEF_INDEX , 0x03 } ,
{ 0x20 , AC_VERB_SET_PROC_COEF , 0x0000 } ,
/* DAC DISABLE/MUTE 2? */
/* some bit here disables the other DACs. Init=0x4900 */
{ 0x20 , AC_VERB_SET_COEF_INDEX , 0x08 } ,
{ 0x20 , AC_VERB_SET_PROC_COEF , 0x0000 } ,
/* DMIC fix
* This laptop has a stereo digital microphone . The mics are only 1 cm apart
* which makes the stereo useless . However , either the mic or the ALC889
* makes the signal become a difference / sum signal instead of standard
* stereo , which is annoying . So instead we flip this bit which makes the
* codec replicate the sum signal to both channels , turning it into a
* normal mono mic .
*/
/* DMIC_CONTROL? Init value = 0x0001 */
{ 0x20 , AC_VERB_SET_COEF_INDEX , 0x0b } ,
{ 0x20 , AC_VERB_SET_PROC_COEF , 0x0003 } ,
{ }
} ;
static const struct hda_input_mux alc888_2_capture_sources [ 2 ] = {
/* Front mic only available on one ADC */
{
. num_items = 4 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line " , 0x2 } ,
{ " CD " , 0x4 } ,
{ " Front Mic " , 0xb } ,
} ,
} ,
{
. num_items = 3 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line " , 0x2 } ,
{ " CD " , 0x4 } ,
} ,
}
} ;
static const struct hda_input_mux alc888_acer_aspire_6530_sources [ 2 ] = {
/* Interal mic only available on one ADC */
{
. num_items = 5 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line In " , 0x2 } ,
{ " CD " , 0x4 } ,
{ " Input Mix " , 0xa } ,
{ " Internal Mic " , 0xb } ,
} ,
} ,
{
. num_items = 4 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line In " , 0x2 } ,
{ " CD " , 0x4 } ,
{ " Input Mix " , 0xa } ,
} ,
}
} ;
static const struct hda_input_mux alc889_capture_sources [ 3 ] = {
/* Digital mic only available on first "ADC" */
{
. num_items = 5 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line " , 0x2 } ,
{ " CD " , 0x4 } ,
{ " Front Mic " , 0xb } ,
{ " Input Mix " , 0xa } ,
} ,
} ,
{
. num_items = 4 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line " , 0x2 } ,
{ " CD " , 0x4 } ,
{ " Input Mix " , 0xa } ,
} ,
} ,
{
. num_items = 4 ,
. items = {
{ " Mic " , 0x0 } ,
{ " Line " , 0x2 } ,
{ " CD " , 0x4 } ,
{ " Input Mix " , 0xa } ,
} ,
}
} ;
static const struct snd_kcontrol_new alc888_base_mixer [ ] = {
HDA_CODEC_VOLUME ( " Front Playback Volume " , 0x0c , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Front Playback Switch " , 0x0c , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Surround Playback Volume " , 0x0d , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Surround Playback Switch " , 0x0d , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME_MONO ( " Center Playback Volume " , 0x0e , 1 , 0x0 ,
HDA_OUTPUT ) ,
HDA_CODEC_VOLUME_MONO ( " LFE Playback Volume " , 0x0e , 2 , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE_MONO ( " Center Playback Switch " , 0x0e , 1 , 2 , HDA_INPUT ) ,
HDA_BIND_MUTE_MONO ( " LFE Playback Switch " , 0x0e , 2 , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Side Playback Volume " , 0x0f , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Side Playback Switch " , 0x0f , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " CD Playback Volume " , 0x0b , 0x04 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " CD Playback Switch " , 0x0b , 0x04 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Line Playback Volume " , 0x0b , 0x02 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " Line Playback Switch " , 0x0b , 0x02 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Mic Playback Volume " , 0x0b , 0x0 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Mic Boost Volume " , 0x18 , 0 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " Mic Playback Switch " , 0x0b , 0x0 , HDA_INPUT ) ,
{ } /* end */
} ;
static const struct snd_kcontrol_new alc888_acer_aspire_4930g_mixer [ ] = {
HDA_CODEC_VOLUME ( " Front Playback Volume " , 0x0c , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Front Playback Switch " , 0x0c , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Surround Playback Volume " , 0x0d , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Surround Playback Switch " , 0x0d , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME_MONO ( " Center Playback Volume " , 0x0e , 1 , 0x0 ,
HDA_OUTPUT ) ,
HDA_BIND_MUTE_MONO ( " Center Playback Switch " , 0x0e , 1 , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME_MONO ( " LFE Playback Volume " , 0x0e , 2 , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE_MONO ( " LFE Playback Switch " , 0x0e , 2 , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME_MONO ( " Internal LFE Playback Volume " , 0x0f , 1 , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE_MONO ( " Internal LFE Playback Switch " , 0x0f , 1 , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " CD Playback Volume " , 0x0b , 0x04 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " CD Playback Switch " , 0x0b , 0x04 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Line Playback Volume " , 0x0b , 0x02 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " Line Playback Switch " , 0x0b , 0x02 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Mic Playback Volume " , 0x0b , 0x0 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Mic Boost Volume " , 0x18 , 0 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " Mic Playback Switch " , 0x0b , 0x0 , HDA_INPUT ) ,
{ } /* end */
} ;
static const struct snd_kcontrol_new alc889_acer_aspire_8930g_mixer [ ] = {
HDA_CODEC_VOLUME ( " Front Playback Volume " , 0x0c , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Front Playback Switch " , 0x0c , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Surround Playback Volume " , 0x0d , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE ( " Surround Playback Switch " , 0x0d , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME_MONO ( " Center Playback Volume " , 0x0e , 1 , 0x0 ,
HDA_OUTPUT ) ,
HDA_CODEC_VOLUME_MONO ( " LFE Playback Volume " , 0x0e , 2 , 0x0 , HDA_OUTPUT ) ,
HDA_BIND_MUTE_MONO ( " Center Playback Switch " , 0x0e , 1 , 2 , HDA_INPUT ) ,
HDA_BIND_MUTE_MONO ( " LFE Playback Switch " , 0x0e , 2 , 2 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Line Playback Volume " , 0x0b , 0x02 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " Line Playback Switch " , 0x0b , 0x02 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Mic Playback Volume " , 0x0b , 0x0 , HDA_INPUT ) ,
HDA_CODEC_VOLUME ( " Mic Boost Volume " , 0x18 , 0 , HDA_INPUT ) ,
HDA_CODEC_MUTE ( " Mic Playback Switch " , 0x0b , 0x0 , HDA_INPUT ) ,
{ } /* end */
} ;
static void alc888_acer_aspire_4930g_setup ( struct hda_codec * codec )
{
struct alc_spec * spec = codec - > spec ;
spec - > autocfg . hp_pins [ 0 ] = 0x15 ;
spec - > autocfg . speaker_pins [ 0 ] = 0x14 ;
spec - > autocfg . speaker_pins [ 1 ] = 0x16 ;
spec - > autocfg . speaker_pins [ 2 ] = 0x17 ;
alc_simple_setup_automute ( spec , ALC_AUTOMUTE_AMP ) ;
}
static void alc888_acer_aspire_6530g_setup ( struct hda_codec * codec )
{
struct alc_spec * spec = codec - > spec ;
spec - > autocfg . hp_pins [ 0 ] = 0x15 ;
spec - > autocfg . speaker_pins [ 0 ] = 0x14 ;
spec - > autocfg . speaker_pins [ 1 ] = 0x16 ;
spec - > autocfg . speaker_pins [ 2 ] = 0x17 ;
alc_simple_setup_automute ( spec , ALC_AUTOMUTE_AMP ) ;
}
static void alc888_acer_aspire_7730g_setup ( struct hda_codec * codec )
{
struct alc_spec * spec = codec - > spec ;
spec - > autocfg . hp_pins [ 0 ] = 0x15 ;
spec - > autocfg . speaker_pins [ 0 ] = 0x14 ;
spec - > autocfg . speaker_pins [ 1 ] = 0x16 ;
spec - > autocfg . speaker_pins [ 2 ] = 0x17 ;
alc_simple_setup_automute ( spec , ALC_AUTOMUTE_AMP ) ;
}
static void alc889_acer_aspire_8930g_setup ( struct hda_codec * codec )
{
struct alc_spec * spec = codec - > spec ;
spec - > autocfg . hp_pins [ 0 ] = 0x15 ;
spec - > autocfg . speaker_pins [ 0 ] = 0x14 ;
spec - > autocfg . speaker_pins [ 1 ] = 0x16 ;
spec - > autocfg . speaker_pins [ 2 ] = 0x1b ;
alc_simple_setup_automute ( spec , ALC_AUTOMUTE_AMP ) ;
}
# define ALC882_DIGOUT_NID 0x06
# define ALC882_DIGIN_NID 0x0a
# define ALC883_DIGOUT_NID ALC882_DIGOUT_NID
@ -1301,32 +985,10 @@ static const char * const alc882_models[ALC882_MODEL_LAST] = {
[ ALC885_MBP3 ] = " mbp3 " ,
[ ALC885_IMAC24 ] = " imac24 " ,
[ ALC885_IMAC91 ] = " imac91 " ,
[ ALC888_ACER_ASPIRE_4930G ] = " acer-aspire-4930g " ,
[ ALC888_ACER_ASPIRE_6530G ] = " acer-aspire-6530g " ,
[ ALC888_ACER_ASPIRE_8930G ] = " acer-aspire-8930g " ,
[ ALC888_ACER_ASPIRE_7730G ] = " acer-aspire-7730g " ,
[ ALC889A_MB31 ] = " mb31 " ,
[ ALC882_AUTO ] = " auto " ,
} ;
static const struct snd_pci_quirk alc882_cfg_tbl [ ] = {
SND_PCI_QUIRK ( 0x1025 , 0x013e , " Acer Aspire 4930G " ,
ALC888_ACER_ASPIRE_4930G ) ,
SND_PCI_QUIRK ( 0x1025 , 0x013f , " Acer Aspire 5930G " ,
ALC888_ACER_ASPIRE_4930G ) ,
SND_PCI_QUIRK ( 0x1025 , 0x0145 , " Acer Aspire 8930G " ,
ALC888_ACER_ASPIRE_8930G ) ,
SND_PCI_QUIRK ( 0x1025 , 0x0146 , " Acer Aspire 6935G " ,
ALC888_ACER_ASPIRE_8930G ) ,
SND_PCI_QUIRK ( 0x1025 , 0x015e , " Acer Aspire 6930G " ,
ALC888_ACER_ASPIRE_6530G ) ,
SND_PCI_QUIRK ( 0x1025 , 0x0166 , " Acer Aspire 6530G " ,
ALC888_ACER_ASPIRE_6530G ) ,
SND_PCI_QUIRK ( 0x1025 , 0x0142 , " Acer Aspire 7730G " ,
ALC888_ACER_ASPIRE_7730G ) ,
{ }
} ;
/* codec SSID table for Intel Mac */
static const struct snd_pci_quirk alc882_ssid_cfg_tbl [ ] = {
SND_PCI_QUIRK ( 0x106b , 0x00a0 , " MacBookPro 3,1 " , ALC885_MBP3 ) ,
@ -1454,93 +1116,6 @@ static const struct alc_config_preset alc882_presets[] = {
. setup = alc885_imac91_setup ,
. init_hook = alc_hp_automute ,
} ,
[ ALC888_ACER_ASPIRE_4930G ] = {
. mixers = { alc888_acer_aspire_4930g_mixer ,
alc883_chmode_mixer } ,
. init_verbs = { alc883_init_verbs , alc880_gpio1_init_verbs ,
alc888_acer_aspire_4930g_verbs } ,
. num_dacs = ARRAY_SIZE ( alc883_dac_nids ) ,
. dac_nids = alc883_dac_nids ,
. num_adc_nids = ARRAY_SIZE ( alc883_adc_nids_rev ) ,
. adc_nids = alc883_adc_nids_rev ,
. capsrc_nids = alc883_capsrc_nids_rev ,
. dig_out_nid = ALC883_DIGOUT_NID ,
. num_channel_mode = ARRAY_SIZE ( alc883_3ST_6ch_modes ) ,
. channel_mode = alc883_3ST_6ch_modes ,
. need_dac_fix = 1 ,
. const_channel_count = 6 ,
. num_mux_defs =
ARRAY_SIZE ( alc888_2_capture_sources ) ,
. input_mux = alc888_2_capture_sources ,
. unsol_event = alc_sku_unsol_event ,
. setup = alc888_acer_aspire_4930g_setup ,
. init_hook = alc_hp_automute ,
} ,
[ ALC888_ACER_ASPIRE_6530G ] = {
. mixers = { alc888_acer_aspire_6530_mixer } ,
. init_verbs = { alc883_init_verbs , alc880_gpio1_init_verbs ,
alc888_acer_aspire_6530g_verbs } ,
. num_dacs = ARRAY_SIZE ( alc883_dac_nids ) ,
. dac_nids = alc883_dac_nids ,
. num_adc_nids = ARRAY_SIZE ( alc883_adc_nids_rev ) ,
. adc_nids = alc883_adc_nids_rev ,
. capsrc_nids = alc883_capsrc_nids_rev ,
. dig_out_nid = ALC883_DIGOUT_NID ,
. num_channel_mode = ARRAY_SIZE ( alc883_3ST_2ch_modes ) ,
. channel_mode = alc883_3ST_2ch_modes ,
. num_mux_defs =
ARRAY_SIZE ( alc888_2_capture_sources ) ,
. input_mux = alc888_acer_aspire_6530_sources ,
. unsol_event = alc_sku_unsol_event ,
. setup = alc888_acer_aspire_6530g_setup ,
. init_hook = alc_hp_automute ,
} ,
[ ALC888_ACER_ASPIRE_8930G ] = {
. mixers = { alc889_acer_aspire_8930g_mixer ,
alc883_chmode_mixer } ,
. init_verbs = { alc883_init_verbs , alc880_gpio1_init_verbs ,
alc889_acer_aspire_8930g_verbs ,
alc889_eapd_verbs } ,
. num_dacs = ARRAY_SIZE ( alc883_dac_nids ) ,
. dac_nids = alc883_dac_nids ,
. num_adc_nids = ARRAY_SIZE ( alc889_adc_nids ) ,
. adc_nids = alc889_adc_nids ,
. capsrc_nids = alc889_capsrc_nids ,
. dig_out_nid = ALC883_DIGOUT_NID ,
. num_channel_mode = ARRAY_SIZE ( alc883_3ST_6ch_modes ) ,
. channel_mode = alc883_3ST_6ch_modes ,
. need_dac_fix = 1 ,
. const_channel_count = 6 ,
. num_mux_defs =
ARRAY_SIZE ( alc889_capture_sources ) ,
. input_mux = alc889_capture_sources ,
. unsol_event = alc_sku_unsol_event ,
. setup = alc889_acer_aspire_8930g_setup ,
. init_hook = alc_hp_automute ,
# ifdef CONFIG_SND_HDA_POWER_SAVE
. power_hook = alc_power_eapd ,
# endif
} ,
[ ALC888_ACER_ASPIRE_7730G ] = {
. mixers = { alc883_3ST_6ch_mixer ,
alc883_chmode_mixer } ,
. init_verbs = { alc883_init_verbs , alc880_gpio1_init_verbs ,
alc888_acer_aspire_7730G_verbs } ,
. num_dacs = ARRAY_SIZE ( alc883_dac_nids ) ,
. dac_nids = alc883_dac_nids ,
. num_adc_nids = ARRAY_SIZE ( alc883_adc_nids_rev ) ,
. adc_nids = alc883_adc_nids_rev ,
. capsrc_nids = alc883_capsrc_nids_rev ,
. dig_out_nid = ALC883_DIGOUT_NID ,
. num_channel_mode = ARRAY_SIZE ( alc883_3ST_6ch_modes ) ,
. channel_mode = alc883_3ST_6ch_modes ,
. need_dac_fix = 1 ,
. const_channel_count = 6 ,
. input_mux = & alc883_capture_source ,
. unsol_event = alc_sku_unsol_event ,
. setup = alc888_acer_aspire_7730g_setup ,
. init_hook = alc_hp_automute ,
} ,
[ ALC889A_MB31 ] = {
. mixers = { alc889A_mb31_mixer , alc883_chmode_mixer } ,
. init_verbs = { alc883_init_verbs , alc889A_mb31_verbs ,