[alsa-devel] hda-intel front headphone (8086:27d8 1043:83bc)

Raymond Yau superquad.vortex2 at gmail.com
Thu Jul 7 03:31:21 CEST 2011


2011/7/6 Alex <xenogenesi at virgilio.it>:
>> 2011/7/4 Alex <xenogenesi at virgilio.it>:
>> > Hi,
>> >
>> > I run a Debian/sid on an Asus P5KPL-SE mainboard, the snd-hda-intel seem
>> > to work fine, ever if it run with guess method:
>> >
>> > Unknown hardware: "HDA-Intel" "Realtek ALC887"
>> > "HDA:10ec0887,104383bc,00100202" "0x1043" "0x83bc"
>> > Hardware is initialized using a guess method
>>
>> This is the message from "alsactl init"
>
> yes
>
>> > The only annoying thing is about the front headphone, every mixer
>> > application show the front headphone item but doesn't have adjustable
>> > level and I hear nothing on headphone.
>> >
>> > Any hint?
>> >
>> > http://www.alsa-project.org/db/?f=d6bc3005fab4683f2606e48f2bc909258a4ee3e
>> > 3
>>
>> The codec alc887 in your  Asus P5KPL-SE seem different from
>>
>> http://www.asus.com/Motherboards/Intel_Socket_775/P5KPL_SE/#specifications
>>
>> ALC662 High Definition Audio 6 -Channel CODEC
>> Audio Jack-detect Technology

The main point is both the specification and user manual only mention
6 channel codec
and you cannot get "Headphone Volume Control" when it is a 6 channel codec

>>
>> according to your codec info
>>
>> it seem that those fix_pin and multi_pin have the same capability to
>> connect to any DAC
>>
>>
>> static int alc880_auto_create_extra_out(struct alc_spec *spec, hda_nid_t
>> pin, const char *pfx)
>> {
>>
>>       } else if (alc880_is_multi_pin(pin)) {
>> +             nid = alc880_idx_to_dac(alc880_multi_pin_idx(pin));
>> +             /* specify the DAC as the extra output */
>> +             if (!spec->multiout.hp_nid)
>> +                     spec->multiout.hp_nid = nid;
>> +             else
>> +                     spec->multiout.extra_out_nid[0] = nid;
>> +             /* control HP volume/switch on the output mixer amp */
>> +             nid = alc880_idx_to_mixer(alc880_multi_pin_idx(pin));
>> +             err = add_pb_vol_ctrl(spec, ALC_CTL_WIDGET_VOL, pfx,
>> +                               HDA_COMPOSE_AMP_VAL(nid, 3, 0, HDA_OUTPUT));
>> +             if (err < 0)
>> +                     return err;
>>               /* set manual connection */
>>               /* we have only a switch on HP-out PIN */
>>               err = add_pb_sw_ctrl(spec, ALC_CTL_WIDGET_MUTE, pfx,
>>                                 HDA_COMPOSE_AMP_VAL(pin, 3, 0, HDA_OUTPUT));
>>               if (err < 0)
>>                       return err;
>>       }
>>       return 0;
>
> My knowledge of audio/alsa programming is really poor, but if someone suggest
> a patch I can setup the thing and do some debug.
>

you have to find out whether 0x05 can be used by the headphone 0x1b
and create a playback volume control at 0x0f (i.e. whether alc887 is a
8 channel codec )

Node 0x05 [Audio Output] wcaps 0x411: Stereo
  Converter: stream=0, channel=0
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0

Node 0x0f [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
  Amp-Out vals:  [0x00 0x00]
  Connection: 2
     0x05 0x0b

Node 0x1b [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out
  Control: name="Headphone Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0000373e: IN OUT HP Detect Trigger
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x02214020: [Jack] HP Out at Ext Front
    Conn = 1/8, Color = Green
    DefAssociation = 0x2, Sequence = 0x0
  Pin-ctls: 0xc0: OUT HP VREF_HIZ
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 5
     0x0c* 0x0d 0x0e 0x0f 0x26


More information about the Alsa-devel mailing list