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=94c...
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.
Max