[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Headphone en AAO



2009/12/10 Ricardo Albarracin B. <ralbab@gmail.com>:
> Estimados listeros:
>
> Tengo instalado en un Acer Aspire One AAO-D250, un Lenny y tengo un problema
> que no he podido resolver, que es al conectar los audifonos no me corta los
> parlantes y suenan ambos al reproducir sonido. La tarjeta de sonido es HDA
> Intel, pero en "Control de Volumen", no sale Conmutadores, por lo que no puedo
> habilitar "Headphone Jack Sense".... Alguna idea de como resolverlo?
>
> Saludos cordiales y de antemano gracias.

La versión de ALSA en Lenny aún no tiene el parche para la aspire one,
lo que tendrías que hacer es meterle el parche y recompilarlo, o
instalar la version 1.0.18 que añade el soporte [0].

Adjunto el parche que usé (ya que no me acuerdo de donde lo bajé XD)

Saludos

[0] http://www.alsa-project.org/main/index.php/Changes_v1.0.17_v1.0.18#HDA_Codec_driver
-- 
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.
112a113
> 	ALC268_ACER_ASPIRE_ONE,
10070a10072,10079
> static struct hda_verb alc268_acer_lc_capture_source = {
>   .num_items = 2,
>   .items {
>     { "i-Mic", 0x6 },
>     { "E-Mic", 0x0 },
>   },
> };
> 
10122a10132,10146
> static struct snd_kcontrol_new alc268_acer_aspire_one_mixer[] = {
>   /* output mixer control */
>   HDA_BIND_VOL("Master Playback Volume", &alc268_acer_bind_master_vol),
>   {
>           .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
>           .name = "Master Playback Switch",
>           .info = snd_hda_mixer_amp_switch_info,
>           .get = snd_hda_mixer_amp_switch_get,
>           .put = alc268_acer_master_sw_put,
>           .private_value = HDA_COMPOSE_AMP_VAL(0x14, 3, 0, HDA_OUTPUT),
>   },
>   HDA_CODEC_VOLUME("Mic Boost Capture Volume", 0x18, 0, HDA_INPUT),
>   {}
> };
> 
10139a10164,10173
> static struct hda_verb alc268_acer_aspire_one_verbs[] = {
>   {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
> 	{0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
> 	{0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
> 	{0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT},
> 	{0x23, AC_VERB_SET_CONNECT_SEL, 0x06},
> 	{0x23, AC_VERB_SET_AMP_GAIN_MUTE, 0xa017},
>   {}
> };
> 
10173a10208,10246
> /* toggle speaker-output according to the hp-jack state */
> static void alc268_aspire_one_speaker_automute(struct hda_codec *codec)
> {
>         unsigned int present;
>         unsigned char bits;
> 
>         present = snd_hda_codec_read(codec, 0x15, 0,
>                         AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
>         bits = present ? AMP_IN_MUTE(0) : 0;
>         snd_hda_codec_amp_stereo(codec, 0x0f, HDA_INPUT, 0,
>                         AMP_IN_MUTE(0), bits);
>         snd_hda_codec_amp_stereo(codec, 0x0f, HDA_INPUT, 1,
>                         AMP_IN_MUTE(0), bits);
> }
> 
> static void alc268_acer_mic_automute(struct hda_codec *codec)
> {
>         unsigned int present;
>         present = snd_hda_codec_read(codec, 0x18, 0,
>                         AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
>         snd_hda_codec_write(codec, 0x23, 0, AC_VERB_SET_CONNECT_SEL,
>                         present ? 0x0 : 0x6);
> }
> 
> static void alc268_acer_lc_unsol_event(struct hda_codec *codec,
>                 unsigned int res)
> {
>         if ((res >> 26) == ALC880_HP_EVENT)
>                 alc268_aspire_one_speaker_automute(codec);
>         if ((res >> 26) == ALC880_MIC_EVENT)
>                 alc268_acer_mic_automute(codec);
> }
> 
> static void alc268_acer_lc_init_hook(struct hda_codec *codec)
> {
>         alc268_aspire_one_speaker_automute(codec);
>         alc268_acer_mic_automute(codec);
> }
> 
10700a10774
> 	[ALC268_ACER_ASPIRE_ONE]		= "acer-aspire",
10714a10789
> 	SND_PCI_QUIRK(0x1025, 0x015b, "Acer Aspire One", ALC268_ACER_ASPIRE_ONE),
10791a10867,10882
>   [ALC268_ACER_ASPIRE_ONE] = {
>     .mixers = { alc268_acer_aspire_one_mixer, alc268_capture_alt_mixer },
>     .init_verbs = { alc268_base_init_verbs, alc268_eapd_verbs,
>                     alc268_acer_aspire_one_verbs },
>     .num_dacs = ARRAY_SIZE(alc268_dac_nids),
>     .dac_nids = alc268_dac_nids,
>     .num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt),
>     .adc_nids = alc268_adc_nids_alt,
>     .capsrc_nids = alc268_capsrc_nids,
>     .hp_nid = 0x03,
>     .num_channel_mode = ARRAY_SIZE(alc268_modes),
>     .channel_mode = alc268_modes,
>     .input_mux = &alc268_acer_lc_capture_source,
>     .unsol_event = alc268_acer_lc_unsol_event,
>     .init_hook = alc268_acer_lc_init_hook,
>   },

Reply to: