Commit fcad94a4 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Fix the cmd cache keys for amp verbs

Fix the key value generation for get/set amp verbs.  The upper bits of
the parameter have to be combined with the verb value to be unique for
each direction/index of amp access.

This fixes the resume problem on some hardwares like Macbook after
the channel mode is changed.
Tested-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Cc: <stable@kernel.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 83b2086c
...@@ -2250,7 +2250,11 @@ int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid, ...@@ -2250,7 +2250,11 @@ int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
err = bus->ops.command(bus, res); err = bus->ops.command(bus, res);
if (!err) { if (!err) {
struct hda_cache_head *c; struct hda_cache_head *c;
u32 key = build_cmd_cache_key(nid, verb); u32 key;
/* parm may contain the verb stuff for get/set amp */
verb = verb | (parm >> 8);
parm &= 0xff;
key = build_cmd_cache_key(nid, verb);
c = get_alloc_hash(&codec->cmd_cache, key); c = get_alloc_hash(&codec->cmd_cache, key);
if (c) if (c)
c->val = parm; c->val = parm;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment