Comment 6 for bug 1045981

Revision history for this message
Raymond (superquad-vortex2) wrote : Re: [alsa-devel] Fix for Asus G75 notebook subwoofer

>
>>
>> can you post the output of alsa-info.sh ?
>
>
> Where can I find the script ? I've not it on my machine
>

http://git.alsa-project.org/?p=alsa-driver.git;a=history;hb=refs/heads/build;f=alsa/utils/alsa-info.sh

>>
>> 9.337454] ALSA hda_codec.c:4877 autoconfig: line_outs=1
>> (0x24/0x0/0x0/0x0/0x0) type:speaker
>> [ 9.337458] ALSA hda_codec.c:4881 speaker_outs=0
(0x0/0x0/0x0/0x0/0x0)
>> [ 9.337460] ALSA hda_codec.c:4885 hp_outs=1 (0x25/0x0/0x0/0x0/0x0)
>> [ 9.337462] ALSA hda_codec.c:4886 mono: mono_out=0x0
>> [ 9.337464] ALSA hda_codec.c:4889 dig-out=0x2d/0x0
>> [ 9.337465] ALSA hda_codec.c:4890 inputs:
>> [ 9.337467] ALSA hda_codec.c:4894 Internal Mic=0x29
>> [ 9.337469] ALSA hda_codec.c:4894 Mic=0x2b
>>
>> it is the auto parser put the speaker to autocfg->lineout

http://git.kernel.org/?p=linux/kernel/git/tiwai/sound.git;a=commit;h=90da78bf6aaabd4d31c6663b7c1d1b9c5a8c023f

mono pin complex are usually [Fixed] Speaker instead of [Jack] Line Out

>
>
> Yep, if you look at above, this one was exactly the output before my 2
patches; the only difference
> was line 24, marked as type=SPEAKER; no trace of mono pin 0x33.
> I guess the 0x33 is skipped because the parser don't find a path from it,
as it have a connection to
> widget 0x3e with is out of range (widgets are reported to be from 0x08 to
0x0c).

https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1045981

Node 0x33 [Pin Complex] wcaps 0x40050c: Mono Amp-Out
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals: [0x00]
  Pincap 0x00000010: OUT
  Pin Default 0x501701f0: [N/A] Speaker at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00:
  Power states: D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x3e

it is ignored by the auto parser because [N/A] instead of [Fixed]

> We could also patch the returned widget number to be 2 widgets more, even
id 0x3d is NOT there.
>
> The 0x3e is a stereo to mono mixer, connecting to 0x1c.
> As above, VT1802p reports to have widgets up to 0x3c.
>

do widge 0x3e has amp-out for subwoofer volume control ?

>>
>> should the auto parser put it into autocfg->mono_out?
>>
>
> maybe.... I didn't try that one.
> With both patches the stuffs appears like a 4 channel one; the correct
would be 2+1, but
> I didn't manage to get it right.

Node 0x2b [Pin Complex] wcaps 0x400481: Stereo
  Control: name="Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Control: name="Mic Jack", index=0, device=0
  Pincap 0x00002324: IN Detect
    Vref caps: HIZ 50 100
  Pin Default 0x01a1903e: [Jack] Mic at Ext Rear
    Conn = 1/8, Color = Pink
    DefAssociation = 0x3, Sequence = 0xe

as the mic jack cannot be retasked as output , No need to put hp in lineout

>
> Resuming, without patches, the auto_parser report for asus :
>
> 0x24 Line out, type speaker
> 0x25 Hp out
> 0x33 is missing
>
> Forcing the connection from 0x33 to 0x1c (skipping so 0x3e) the pin 0x33
don't appear
> because bios marks it at none-connection.
> Forcing the connection to JACK, it puts as a mono speaker, so no sound
from it either.
> Forcing to be a line out, sound only from it because then 0x24 takes the
speaker place (marked as speaker in bios).
> Forcing both 0x24 and 0x33 to be line out gives 4 channel sound (with 2
rear channels output to 0x33 mono).
>
> No idea on how to get the 2+1 behaviour, but at least now it sounds.

multiout.extra_out seem support multi stereo streams in
snd_hda_multi_out_analog_prepare()

for (i = 0; i < ARRAY_SIZE(mout->extra_out_nid); i++)
                 if (!mout->no_share_stream && mout->extra_out_nid[i])
                         snd_hda_codec_setup_stream(codec,
                                                    mout->extra_out_nid[i],
                                                    stream_tag, 0, format);

how to put those internal speakers into multiout->extra_out in
via_auto_create_speaker_ctls() when the auto parser put the speaker into
autocfg->lineout ?

only two volume controls at 0x08 and 0x09,
there are three pin complexes 0x24, 0x25 and 0x33