My VT1802 chip has a beep-generating node:
$ cat /proc/asound/card1/codec#0 Codec: VIA VT1802 ... Vendor Id: 0x11068446 Subsystem Id: 0x15587410 Revision Id: 0x100000 ... Node 0x22 [Beep Generator Widget] wcaps 0x70040c: Mono Amp-Out Amp-Out caps: ofs=0x0a, nsteps=0x12, stepsize=0x05, mute=1 Amp-Out vals: [0x0a] Power states: D0 D1 D2 D3 Power: setting=D0, actual=D0 ...
But I'm missing the:
Control: name=...
entries that I think I need to manage this widget from alsamixer. For example, sambrian posts codec output for a CX20561 chip which has [1]:
Node 0x13 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out Control: name="Beep Playback Volume", index=0, device=0 ControlAmp: chs=1, dir=Out, idx=0, ofs=0 Control: name="Beep Playback Switch", index=0, device=0 ControlAmp: chs=1, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x03, nsteps=0x03, stepsize=0x17, mute=0 Amp-Out vals: [0x00]
I can patch with something like this:
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 3de6d3d..85a0c08 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -1520,8 +1520,10 @@ static int patch_vt2002P(struct hda_codec *codec) spec->gen.mixer_nid = 0x21; override_mic_boost(codec, 0x2b, 0, 3, 40); override_mic_boost(codec, 0x29, 0, 3, 40); - if (spec->codec_type == VT1802) + if (spec->codec_type == VT1802) { + spec->gen.beep_nid = 0x22; fix_vt1802_connections(codec); + } add_secret_dac_path(codec);
snd_hda_pick_fixup(codec, NULL, vt2002p_fixups, via_fixups);
to get a dmesg entry like:
input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/sound/card1/hdaudioC1D0/input15
but that doesn't add the beep controls. Looking at patch_analog.c, patch_conexant.c, and patch_realtek.c for inspiration, I expect we'll need an HDA_CODEC_MUTE_BEEP(_MONO) entry, and possibly an HDA_CODEC_VOLUME(_MONO) entry, but I'm not sure if these should be mono or not, or if they should be inputs (following patch_realtek.c) or outputs (following patch_analog.c and patch_conexant.c). I've filled out Via's datasheet-request form [2], but I don't know how likely that is to be accepted.
Does anyone have a VT1802 datasheet that they're allowed to share (or some free time to fill in Via beep support on their own)? Or am I barking up the wrong tree? My only previous experience with this code-base was a beep-tweak for a previous box's Realtek chip [3], but I love my beeps and am happy to poke around with a datasheet until I get this working ;). Maybe folks with more experience can just guess the right code without needing to see specs for the VT1802?
Cheers, Trevor
[1]: http://forums.fedoraforum.org/archive/index.php/t-265822.html [2]: http://www.via.com.tw/en/support/contact_us/ [3]: http://thread.gmane.org/gmane.linux.alsa.devel/121300