At Fri, 11 Nov 2011 17:23:32 +0100, David Henningsson wrote:
Hi Takashi,
After having some troubles with the kernel scripts (on the Ubuntu side) I've managed to try out your test/hda-jack branch. I'm attaching a patch I had to apply to make the modules load properly.
After having applied the attached patch, I get stuck at an OOPS, which I don't have time to troubleshoot further today. I'm attaching the OOPS log as well (alsa-info for the system I'm testing on is the same as I sent you a few days ago).
Thanks for testing! I obviously didn't test the recent version :-< Try the patch below.
Takashi --- diff --git a/sound/pci/hda/hda_jack.c b/sound/pci/hda/hda_jack.c index 1389958..05489dc 100644 --- a/sound/pci/hda/hda_jack.c +++ b/sound/pci/hda/hda_jack.c @@ -193,6 +193,8 @@ void snd_hda_jack_report_sync(struct hda_codec *codec) for (i = 0; i < codec->jacktbl.used; i++, jack++) if (jack->nid) { jack_detect_update(codec, jack); + if (!jack->kctl) + continue; state = get_jack_plug_state(jack->pin_sense); snd_kctl_jack_report(codec->bus->card, jack->kctl, state); } @@ -341,6 +343,7 @@ int snd_hda_input_jack_add(struct hda_codec *codec, hda_nid_t nid, int type, err = snd_jack_new(codec->bus->card, name, type, &jack->jack); if (err < 0) return err; + jack->type = type; jack->jack->private_data = jack; jack->jack->private_free = hda_free_jack_priv; return 0; @@ -354,7 +357,7 @@ void snd_hda_input_jack_report(struct hda_codec *codec, hda_nid_t nid) unsigned int present; int type;
- if (!jack) + if (!jack || !jack->jack) return;
present = snd_hda_jack_detect(codec, nid);