Comment 43 for bug 184314

Revision history for this message
Andrew Springman (andrewspringman) wrote :

Got it working with Ubuntu 9.04 and ALSA 1.0.20

gnuslov's summary in #19 was missing one thing: "pin = 0x20; //to fix bug on nc1502" (which he talks about in #11)

So, to be explicit...these are the changes needed to patch_via.c:

change:

static int vt1708_auto_create_hp_ctls(struct via_spec *spec, hda_nid_t pin)
{
 int err;

 if (!pin)
  return 0;

to:

static int vt1708_auto_create_hp_ctls(struct via_spec *spec, hda_nid_t pin)
{
 int err;

 if (!pin)
  pin = 0x20; //to fix bug on nc1502
// return 0;

change:

static int patch_vt1708(struct hda_codec *codec)
{
 struct via_spec *spec;
 int err;

 /* create a codec specific record */
 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
 if (spec == NULL)
  return -ENOMEM;

 codec->spec = spec;

 /* automatic parse from the BIOS config */

to:

static int patch_vt1708(struct hda_codec *codec)
{
 unsigned int pin_hp;
 struct via_spec *spec;
 int err;

 /* create a codec specific record */
 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
 if (spec == NULL)
  return -ENOMEM;

 codec->spec = spec;

 /* Ajout SQ071031 */
 pin_hp=snd_hda_codec_read(codec, 0x20, 0, AC_VERB_GET_CONFIG_DEFAULT, 0);
 pin_hp=pin_hp&0x3FFFFFFF;
 snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, pin_hp>>24);

 /* automatic parse from the BIOS config */

I also determined that adding the /lib/modules/`uname -r`/ubuntu/sound/ path and the alsa-driver link was indeed necessary (because modinfo compained that it was missing without it and worked with it).

Thanks to all who posted before. It turns out that you had indeed given me all the info I needed.

Oh, Everex, this was my one complaint with my VA1500V, but it was a big one!