[alsa-devel] Via VT2020: issues with kernel 2.6.38.{2, 3} (alsa 1.0.23) - working with 2.6.33.2 (alsa 1.0.21)

alex dot baldacchino dot alsasub at gmail dot com alex.baldacchino.alsasub at gmail.com
Mon May 16 18:03:21 CEST 2011


Hello,
It took me a while before I could post again here, sorry.

I've installed the snapshot tarball I had downloaded, with debug
support enabled, result at following link; results are close to
previous ones.

http://pastebin.ca/2056960


2011/5/10 Raymond Yau <superquad.vortex2 at gmail.com>:
> 2011/5/9 alex dot baldacchino dot alsasub at gmail dot com <
> alex.baldacchino.alsasub at gmail.com>
>
> you have to ask the distribution maintainer how to test the latest
> alsa-driver without upgrading the kernel.
>

It seems configure script for the snapshot has found correct source
and installation paths, overwriting existing sound drivers, as
expectable; I've left userspace configuration untouched (installed new
modules with 'make install-modules' to leave alsa script in
/etc/init.d as it was).

In my previous messages I forgot to mention my chassis has a front
panel with mic and hp jacks; it is said to support both hd and ac'97
audio - it's got a multi-pin single connector labeled 'hd audio' with
all available pins wired (fully fitting the MoBo header, and is
actually inserted); from that one, another connector is derived,
labeled 'ac97 audio', with a pair of pins missing and some other
'duplicated' (I'm not using it). I've made a few tests, one with front
panel disabled in bios, one with front panel enabled in bios (bios
option set to auto - please, note there can be an error in my MoBo
manual, since only available options for the front panel are 'Auto'
and 'Disabled', there's no 'Enabled' ) but physically unconnected.
Results are at following addresses:

Front panel disabled in bios:

http://pastebin.ca/2060444

Front panel disconnected but enabled in bios:

http://pastebin.ca/2060448


Please, notice the following excerpts (perhaps it sounds normal at
you, but I'm trying to understand how to interpret things at this
stage):

With panel disabled in bios:

Node 0x0c [Audio Output] wcaps 0x41d: Stereo Amp-Out
  Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0
  Amp-Out vals:  [0x2a 0x2a]
  Converter: stream=0, channel=0
  PCM:
    rates [0x5e0]: 44100 48000 88200 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0


( missing lines:
  Control: name="Headphone Playback Volume", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0 )


Node 0x28 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x0000233c: IN OUT HP Detect
    Vref caps: HIZ 50 100
  Pin Default 0x422140f0: [N/A] HP Out at Ext Front
    Conn = 1/8, Color = Green
    DefAssociation = 0xf, Sequence = 0x0
  Pin-ctls: 0x00: VREF_HIZ
  Unsolicited: tag=21, enabled=1
  Power states:  D0 D1 D2 D3
  Power: setting=D3, actual=D3
  Connection: 1
     0x1b


( missing lines:
  Control: name="Headphone Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  different 'Pin Default', different 'DefAssociation' )


Node 0x34 [Audio Selector] wcaps 0x300501: Stereo
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 3
     0x08 0x0b 0x0c*


( missing line:
   Control: name="Independent HP", index=0, device=0 )


/sys/class/sound/hwC0D0/init_pin_configs:
0x24 0x01014010
0x25 0x01011012
0x26 0x01016011
0x27 0x410120f0
0x28 0x422140f0
0x29 0x42a190f7
0x2a 0x0181303e
0x2b 0x01a19036
0x2c 0x593701f8
0x2d 0x074510f0
0x2e 0x474401f0
0x2f 0x47c411f0


( different pin configurations with respect to the normal case - the
first link in this message - and the following case )


ALSA hda_intel.c:1457: Enable sync_write for AMD chipset
ALSA hda_codec.c:4707: autoconfig: line_outs=3
(0x24/0x25/0x26/0x0/0x0) type:line
ALSA hda_codec.c:4711:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
ALSA hda_codec.c:4715:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)
ALSA hda_codec.c:4716:    mono: mono_out=0x0
ALSA hda_codec.c:4719:    dig-out=0x2d/0x0
ALSA hda_codec.c:4720:    inputs:
ALSA hda_codec.c:4726:


( it seems there's no hp output, 0x28 is _not_ listed )


With front panel disconnected but enabled in bios:


Node 0x0c [Audio Output] wcaps 0x41d: Stereo Amp-Out
  Control: name="Headphone Playback Volume", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0
  Amp-Out vals:  [0x2a 0x2a]
  Converter: stream=0, channel=0
  PCM:
    rates [0x5e0]: 44100 48000 88200 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0


( as if panel were connected )


Node 0x28 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Headphone Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0000233c: IN OUT HP Detect
    Vref caps: HIZ 50 100
  Pin Default 0x0221411f: [Jack] HP Out at Ext Front
    Conn = 1/8, Color = Green
    DefAssociation = 0x1, Sequence = 0xf
    Misc = NO_PRESENCE
  Pin-ctls: 0xc0: OUT HP VREF_HIZ
  Unsolicited: tag=21, enabled=1
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 1
     0x1b


Node 0x34 [Audio Selector] wcaps 0x300501: Stereo
  Control: name="Independent HP", index=0, device=0
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 3


( again, as when panel is connected, but for line:
    Misc = NO_PRESENCE )


/sys/class/sound/hwC0D0/init_pin_configs:
0x24 0x01014010
0x25 0x01011012
0x26 0x01016011
0x27 0x410120f0
0x28 0x0221411f
0x29 0x02a19137
0x2a 0x0181303e
0x2b 0x01a19036
0x2c 0x593701f8
0x2d 0x074510f0
0x2e 0x474401f0
0x2f 0x47c411f0


ALSA hda_codec.c:4707: autoconfig: line_outs=3
(0x24/0x25/0x26/0x0/0x0) type:line
ALSA hda_codec.c:4711:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
ALSA hda_codec.c:4715:    hp_outs=1 (0x28/0x0/0x0/0x0/0x0)
ALSA hda_codec.c:4716:    mono: mono_out=0x0
ALSA hda_codec.c:4719:    dig-out=0x2d/0x0
ALSA hda_codec.c:4720:    inputs:
ALSA hda_codec.c:4726:


It seems that node 0x28 represents the front panel line-out and
connection 0x0c is not used by anyone else (possible? rigth to work
this way? am I misunderstanding the log?). On the other hand, it is
labeled as "[Jack] HP Out at Ext Front", so it was expectable to work
this way (right?).

Now, I'm courious about node 0x24, which represents the rear green
line-out (and is the only rear line-out involved in all output
configurations, from 2 to 8 channels); in all cases it is presented
the following way:


Node 0x24 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Front Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0001001c: OUT HP EAPD Detect
  EAPD 0x2: EAPD
  Pin Default 0x01014010: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Green
    DefAssociation = 0x1, Sequence = 0x0
  Pin-ctls: 0x40: OUT
  Unsolicited: tag=20, enabled=1
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 1
     0x18


Node 0x18 [Audio Mixer] wcaps 0x20050b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 2
     0x08 0x21


Node 0x08 [Audio Output] wcaps 0x41d: Stereo Amp-Out
  Control: name="Front Playback Volume", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Device: name="VT2020 Analog", type="Audio", device=0
  Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0
  Amp-Out vals:  [0x2a 0x2a]
  Converter: stream=0, channel=0
  PCM:
    rates [0x5e0]: 44100 48000 88200 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0


0x08 is also listed as possible connection for node 0x034 and 0x035

Node 0x34 [Audio Selector] wcaps 0x300501: Stereo
  Control: name="Independent HP", index=0, device=0
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 3
     0x08 0x0b 0x0c*
Node 0x35 [Audio Selector] wcaps 0x300501: Stereo
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 3
     0x08 0x0b* 0x0c


Therefore, could 0x18 be a suitable return value for
side_mute_channel() function? (though I'd suppose an 'Audio Selector'
should be looked for instead of an 'Audio Mixer') How could I check
that?

In other words, I need also to understand what are exactly the
"Independent HP"s looked for and how they're enumerated, whether by
counting all possible output configurations that could be involved in
a Multi-Stream scenario (hence including rear channels) or just those
ones which exist beside the 'main group' (the rear group of line-outs
making up multichannel configurations).

In the latter case, are they always coupled? I'm asking because it
seems to me that via_hp_build() assumes there are either exactly 2
Independent HP controls (when snd_hda_get_connections() returns a
value greater than 1) or none (otherwise). Could there be just one
such control instead?


> it look like the driver is not installed correctly
>[...cut...]

All is possible... but I wonder how... All I've done is downloading
the new kernel, patching it according to older kernels for my distro
(nothing related to sound, just lowering DEFAULT_CONSOLE_LOGLEVEL from
7 to 3, adding a few printk's to usb-storage, additional vortex device
ids, aufs), configuring it through 'make menuconfig' (using older
kernel configuration as a hint), issuing 'make bzImage', issuing 'make
modules', issuing 'make INSTALL_MOD_PATH=/some/path modules_install",
copying modules in their final destination ( /lib/modules/<version> ),
updating my initrd (which doesn't handle sound) and rebooting.... I've
left sound configuration (userspace-side) untouched.

That worked with the older kernel I'm using (from my distro - it was
yet configured and patched, but I've updated patches - such as aufs -
tuned it a few times to create different flavours, build and installed
it as above). Unless there's something only working for alsa 1.0.21
and causing problems with alsa 1.0.23 - alsa 1.0.24 in
/etc/init.d/alsa, /etc/modprobe.d/* files (I have no .asoundrc),
drivers installation shouldn't be the problem, AFAICT...


>
>
> Most likely you will need this patch
>
> cb34c207af4944e9c93e2b462e351430f15daad6
>
> so that the driver do not create "smart5.1" control since blue jack may need
> to retask as side according to the user manual
>
> ALSA: hda - VIA: Fix Smart5.1 isn't useful for 6 audio jacks motherboard.
>
>

I guess that should be embedded in the snapshot I've installed... In
file 'patch_via.c', function 'via_smart51_build' checks for line_outs
number before cloning smart5.1 controls; anyway, there's nothing
connected to my blue jack at the moment.

>
>>
>> Lastly, do I need to enable debug? (that is, is it required for better
>> alsa-info output?)
>>
>>
> The driver print debug messages in system log , you are able to know which
> [Audio Output] is used when switch "Independent HP" on/off or retask blue
> jack as output
>
>

Well, alsa-info.sh collects those messages related to sound, I was
asking if people here wish to read them for a better understanding of
the problem (I've enabled debug in the snapshot, so those lines are in
my new alsa-info posts). Sorry I wasn't clear about my doubt.

>
>> For now, below I'm posting alsa-info.sh output for current
>> configuration and for kernel 2.6.33.2 (with working sound), hoping
>> this can help for comparison.
>>
>> >
>> > Post the output of alsa-info.sh
>> >
>> > What is the model of your computer (desktop/notebook) ?
>> >
>>
>> Mine is a home-build desktop with an Asrock motherboard (I don't know of
>> any
>> notebook with asrock MoBo), model '890GX Extreme3', with integrated
>> graphics (Radeon HD4290) and audio (via vt2020 codec and ati hdmi), NB
>> AMD 890GX, SB850;
>>
>> > How many audio jacks ?
>> >
>>
>> Rear panel: 5 jacks for 7.1 channels audio + 1 Optical SPDIF OUT port
>> On board: front panel audio header for ac97/hd audio (connectors for
>> mic, left, right -
>
>
>
> Refer to page 12 of 890GX Extreme3 's user manual
>
> TABLE for Audio Output Connection
>
> Blue jack is re-tasked for "Side" channel to support 8 channels
>

I was trying to count the max number of jacks my MoBo can support,
regardless they're in the rear or front panel, present or not. I guess
you were asking for rear ones only, sorry for my misunderstanding.

>
>>> "hda-codec: no NID for mapping control Independent HP:0:0".
>
> Node 0x28 HP  is connected to 0x34 through 0x1b
>
> [Audio Output] 0x0c has the "Headphone Volume" control
>
> As "Line in" can only be connected to 0x0c
>
> so the fix mainly depend on whether 0x0b can be used or not
>

How can I check that? (that is, 0x0b usability for the purpose?)

Node 0x34 [Audio Selector] wcaps 0x300501: Stereo
  Control: name="Independent HP", index=0, device=0
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 3
     0x08 0x0b 0x0c*

What does the asterisk mean? Is it to indicate the active/used connection?

It seems to me that

Node 0x29 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Front Mic Boost Capture Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x0000233c: IN OUT HP Detect
    Vref caps: HIZ 50 100
  Pin Default 0x02a19037: [Jack] Mic at Ext Front
    Conn = 1/8, Color = Pink
    DefAssociation = 0x3, Sequence = 0x7
  Pin-ctls: 0x21: IN VREF_50
  Unsolicited: tag=20, enabled=1
  Power states:  D0 D1 D2 D3
  Power: setting=D3, actual=D3
  Connection: 1
     0x1c

is connected through

Node 0x1c [Audio Mixer] wcaps 0x20050b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x80 0x80]
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 2
     0x35 0x21

to

Node 0x35 [Audio Selector] wcaps 0x300501: Stereo
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0
  Connection: 3
     0x08 0x0b* 0x0c

which uses

Node 0x0b [Audio Output] wcaps 0x41d: Stereo Amp-Out
  Amp-Out caps: ofs=0x2a, nsteps=0x2a, stepsize=0x05, mute=0
  Amp-Out vals:  [0x2a 0x2a]
  Converter: stream=0, channel=0
  PCM:
    rates [0x5e0]: 44100 48000 88200 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3
  Power: setting=D3, actual=D3

Am I wrong?
Should it work differently?

> if vt2020 is as same as vt1718s,  you need to find a correct nid in the
> function side_mute_channel() for update_side_mute_status() which mute/unmute
> side channel when independent HP Is "ON"/"OFF"
>
>

Given actual implementation, those should be at least compatible to
some extent; in case there were differences between nids in different
'flavours' of vt1718s ( for the sake of side_mute_channel(struct
via_spec *spec) ), it should be possible to check
spec->codec->vendor_id within the switch statement when
spec->codec_type is VT1718S - the problem is finding the right nid

> Node 0x2a [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
>  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
>  Amp-Out vals:  [0x80 0x80]
>  Pincap 0x00002334: IN OUT Detect
>    Vref caps: HIZ 50 100
>  Pin Default 0x0181303e: [Jack] Line In at Ext Rear
>    Conn = 1/8, Color = Blue
>    DefAssociation = 0x3, Sequence = 0xe
>  Pin-ctls: 0x20: IN VREF_HIZ
>  Unsolicited: tag=04, enabled=1
>  Power states:  D0 D1 D2 D3
>  Power: setting=D3, actual=D3
>  Connection: 2
>     0x09* 0x0c
>
>
> send: NID=0x21, VERB=0x370(set_amp_gain_mute,I:LR#0), PARM=0x80
> send: NID=0x21, VERB=0x371(set_amp_gain_mute,I:LR#1), PARM=0x80
> send: NID=0x21, VERB=0x372(set_amp_gain_mute,I:LR#2), PARM=0x80
> send: NID=0x21, VERB=0x373(set_amp_gain_mute,I:LR#3), PARM=0x80
> send: NID=0x21, VERB=0x375(set_amp_gain_mute,I:LR#5), PARM=0x0
> invalid amp index 5 (conns=5)
>


How did you get these values?



> Seem no "Stereo Mix" ,  0x28 is HP and only 0x2c, 0x2b and 0x29 are input
> sources and the other must be muted
>
> node 0x2a "Line Playback Switch" have to be muted and write-protect whenever
> blue jack is retask
>
> need to modify vt1718S_auto_create_analog_input_ctls()

I have no idea how to do that, my understanding of the code is to
limited for now. Perhaps it should be also considered if one needs to
modify only vt1718S_auto_create_analog_input_ctls(), both this one and
vt_auto_create_analog_input_ctls() or just the latter (but perhaps you
just mean the former function should pass a different array to the
latter one, and I'm misunderstanding they should also take care
somehow of node 0x2a retasking, at least on creation)

Node 0x2c [Pin Complex] wcaps 0x400401: Stereo
  Pincap 0x00000020: IN
  Pin Default 0x593701f8: [N/A] CD at Int ATAPI
    Conn = Analog, Color = Unknown
    DefAssociation = 0xf, Sequence = 0x8
    Misc = NO_PRESENCE
  Pin-ctls: 0x00:
  Power states:  D0 D1 D2 D3
  Power: setting=D0, actual=D0

What should this be? It doesn't seem to me there's any CD Audio
connector in my motherboard. Is it supported by the codec anyway?

Regards


More information about the Alsa-devel mailing list