FAILED: patch "[PATCH] ALSA: hda/ca0132 - Fix work handling in delayed HP detection" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 42fb6b1d41eb5905d77c06cad2e87b70289bdb76 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <[email protected]>
Date: Fri, 13 Dec 2019 09:51:11 +0100
Subject: [PATCH] ALSA: hda/ca0132 - Fix work handling in delayed HP detection
CA0132 has the delayed HP jack detection code that is invoked from the unsol handler, but it does a few weird things: it contains the cancel of a work inside the work handler, and yet it misses the cancel-sync call at (runtime-)suspend. This patch addresses those issues.
sound/pci/hda/patch_ca0132.c +14 -2
@@ -7607,11 +7607,10 @@ static void hp_callback(struct hda_codec *codec, struct hda_jack_callback *cb)/* Delay enabling the HP amp, to let the mic-detection * state machine run. */ -cancel_delayed_work (&spec->unsol_hp_work); -schedule_delayed_work (&spec->unsol_hp_work,msecs_to_jiffies (500 )); tbl =snd_hda_jack_tbl_get (codec, cb->nid);if (tbl) tbl->block_report =1 ; +schedule_delayed_work (&spec->unsol_hp_work,msecs_to_jiffies (500 )); }static void amic_callback (struct hda_codec *codec,struct hda_jack_callback *cb)
@@ -8457,12 +8456,25 @@ static void ca0132_reboot_notify(struct hda_codec *codec) codec->patch_ops.free (codec); } +#ifdef CONFIG_PM +static int ca0132_suspend (struct hda_codec *codec) +{ +struct ca0132_spec *spec = codec->spec; + +cancel_delayed_work_sync (&spec->unsol_hp_work); +return 0 ; +} +#endif +static const struct hda_codec_ops ca0132_patch_ops = { .build_controls = ca0132_build_controls, .build_pcms = ca0132_build_pcms, .init = ca0132_init, .free = ca0132_free, .unsol_event = snd_hda_jack_unsol_event, +#ifdef CONFIG_PM + .suspend = ca0132_suspend, +#endif .reboot_notify = ca0132_reboot_notify, };