[alsa-devel] Fix for Asus G75 notebook subwoofer

Massimo Del Fedele max at veneto.com
Sun Nov 4 10:31:27 CET 2012

I'm starting to feel lost.... anyways, I'll try to answer to some questions :
> and some asus with vt1802 does not have any subwoofer

That's very possible, the patch should be applied only for selected machines... But I don't know how to do it.

> http://git.kernel.org/?p=linux/kernel/git/tiwai/sound.git;a=commitdiff;h=94c142a160d63edac0e1fca7848960dcf75dd2a9;hp=012e7eb1e501d0120e0383b81477f63091f5e365
> do notebook with vt1802 really need independent headphone ?

IMHO, but that's just my opinion, an independent HP is quite useless for notebooks.
AFAIK the unpatched driver maps a DAC to front speakers (0x08) and another for HP (0x09), so
no DAC free for subwoofer. We could maybe mono mix the front channel and route it to subwoofer,
but then you'd have no separate volume control for sub, which makes it useless.

> http://git.kernel.org/?p=linux/kernel/git/tiwai/sound.
> git;a=commitdiff;h=a2a870c82797e47884b2736e95e9d9
> c89a51c219;hp=5c9a5615dedec19196b1217e864616 a2ce9e392a
>>>>> 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.
>> The function should scan all paths from DACs to
>> OUTS, but like it is just takes the first available DAC.
>> The problem arises here :
>> if (dac) {
>> spec->private_dac_nids[i] = dac;
>> dac_num++;
>> }
>> Which correctly adds DAC to used list, but doesn't
>> update the total number of found DACs
>> in spec->multiout.num_dacs; following calls to
>> is_empty_dac() will always return true
>> for already used DACs, making parse_output_path()
>> return always the first one.
> it is because
> spec->multiout.num_dacs = cfg->line_outs + spec->smart51_nums;
> so this may be the reason for the auto parser put internal speaker 0x24
> into autocfg->lineout

Those are two unrelated things.
The code above is plain wrong (and my patch isn't correct either, but at least makes it
working...); when populating DAC nids, the scanner forgets to update the number of found
needs while scanning; I mean, in practice during the recursive scan the DACS are always free,
so only the first one is returned.

The 0x24 is marked as speaker but is put on line out by auto_parser IF no true line outs are found.
I didn't dig too deep inside it, but I guess that if it finds NO line outs (and asus G75 is the case...)
it takes first speaker channel and puts on line streams. Not the best solution,IMHO.

> does this mean that spec->speaker_path and spec->speaker_mix_path  are
> useless ?

Dont't know, but being without separate volume controls, all must be controlled
at dac level, I think... and having a speaker out without separate volume
makes no sense.
But I didn't dig much on it.


More information about the Alsa-devel mailing list