diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-05-09 12:24:52 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-05-09 12:24:52 +0200 |
commit | 1b51e7aa927aa1643feaedb485f24a372b27357c (patch) | |
tree | 239cdf44130c90a057b42e188c4d3916e2609431 | |
parent | 85fad2210a04529f132b44076b139489ffd2e7d6 (diff) | |
download | hda-emu-1b51e7aa927aa1643feaedb485f24a372b27357c.tar.gz |
encode-pincfg: Don't override assoc, seq and misc numbers
When the base value is given via -b option, don't override assoc, seq
and misc numbers but keep the original bits.
-rw-r--r-- | hda-decode-pincfg.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/hda-decode-pincfg.c b/hda-decode-pincfg.c index e829090..4e9a7a6 100644 --- a/hda-decode-pincfg.c +++ b/hda-decode-pincfg.c @@ -316,12 +316,18 @@ static unsigned int encode(const char *jack, caps &= ~AC_DEFCFG_COLOR; caps |= parse_jack_color(color) << AC_DEFCFG_COLOR_SHIFT; } - caps &= ~AC_DEFCFG_MISC; - caps |= (misc << AC_DEFCFG_MISC_SHIFT) & AC_DEFCFG_MISC; - caps &= ~AC_DEFCFG_DEF_ASSOC; - caps |= (assoc << AC_DEFCFG_ASSOC_SHIFT) & AC_DEFCFG_DEF_ASSOC; - caps &= ~AC_DEFCFG_SEQUENCE; - caps |= seq & AC_DEFCFG_SEQUENCE; + if (misc >= 0) { + caps &= ~AC_DEFCFG_MISC; + caps |= (misc << AC_DEFCFG_MISC_SHIFT) & AC_DEFCFG_MISC; + } + if (assoc >= 0) { + caps &= ~AC_DEFCFG_DEF_ASSOC; + caps |= (assoc << AC_DEFCFG_ASSOC_SHIFT) & AC_DEFCFG_DEF_ASSOC; + } + if (seq >= 0) { + caps &= ~AC_DEFCFG_SEQUENCE; + caps |= seq & AC_DEFCFG_SEQUENCE; + } return caps; } @@ -334,7 +340,7 @@ int main(int argc, char **argv) const char *location = NULL; const char *connection = NULL; const char *color = NULL; - int assoc = 0, seq = 0, misc = 0, base = 0; + int assoc = -1, seq = -1, misc = -1, base = 0; unsigned int val; hda_log_init(NULL, 0); |