Re: [alsa-devel] Conexant CX20588 breakage in Kernel 3.9
At Sat, 4 May 2013 00:56:10 +0200, Christopher K. wrote:
Works great, thanks for the help!
OK, now applied. Thanks for a quick test.
Takashi
On Fri, May 3, 2013 at 4:58 PM, Takashi Iwai tiwai@suse.de wrote:
At Fri, 3 May 2013 15:51:20 +0200, Christopher K. wrote:
Hi,
Kernel 3.9 breaks audio on internal speakers for the Conexant CX20588. EAPD is disabled for Node 0x1d. Enabling in hda_analyzer works fine.
Someone already postet on https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1173618
Is this the right place to report this bug?
The kernel bugzilla or in alsa-devel ML, at best with Cc to maintainer.
Does the patch below fix your problem? If so, I'll queue it to the upstream and Cc to stable kernel.
thanks,
Takashi
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 84b81c8..e08cd33 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -63,6 +63,7 @@ struct conexant_spec {
/* extra EAPD pins */ unsigned int num_eapds;
bool dynamic_eapd; hda_nid_t eapds[4];
#ifdef ENABLE_CXT_STATIC_QUIRKS @@ -3155,7 +3156,7 @@ static void cx_auto_parse_eapd(struct hda_codec *codec) * thus it might control over all pins. */ if (spec->num_eapds > 2)
spec->gen.own_eapd_ctl = 1;
spec->dynamic_eapd = 1;
}
static void cx_auto_turn_eapd(struct hda_codec *codec, int num_pins, @@ -3194,10 +3195,19 @@ static int cx_auto_build_controls(struct hda_codec *codec) return 0; }
+static int cx_auto_init(struct hda_codec *codec) +{
struct conexant_spec *spec = codec->spec;
snd_hda_gen_init(codec);
if (!spec->dynamic_eapd)
cx_auto_turn_eapd(codec, spec->num_eapds, spec->eapds,
true);
return 0;
+}
static const struct hda_codec_ops cx_auto_patch_ops = { .build_controls = cx_auto_build_controls, .build_pcms = snd_hda_gen_build_pcms,
.init = snd_hda_gen_init,
.init = cx_auto_init, .free = snd_hda_gen_free, .unsol_event = snd_hda_jack_unsol_event,
#ifdef CONFIG_PM @@ -3348,7 +3358,8 @@ static int patch_conexant_auto(struct hda_codec *codec)
cx_auto_parse_beep(codec); cx_auto_parse_eapd(codec);
if (spec->gen.own_eapd_ctl)
spec->gen.own_eapd_ctl = 1;
if (spec->dynamic_eapd) spec->gen.vmaster_mute.hook = cx_auto_vmaster_hook; switch (codec->vendor_id) {
[2 <text/html; UTF-8 (quoted-printable)>]
participants (1)
-
Takashi Iwai