From 46ce821452c4f4e0c839778bacff4f3b31ada0a4 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 29 May 2007 19:01:37 +0200 Subject: [PATCH] --- yaml --- r: 57193 b: refs/heads/master c: 897cc188f7f0e402b92a4a6a9e234b45c612eb42 h: refs/heads/master i: 57191: 1c5fb10cad0d03ae84d3f8c828faeb451bd30e55 v: v3 --- [refs] | 2 +- trunk/sound/pci/hda/hda_codec.c | 13 +++++++++++++ trunk/sound/pci/hda/hda_local.h | 2 ++ trunk/sound/pci/hda/patch_sigmatel.c | 7 +++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 8f8495134fcc..dc36c1de4cb5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f9acba4347ac2145456aa8dedaab3d74761da42a +refs/heads/master: 897cc188f7f0e402b92a4a6a9e234b45c612eb42 diff --git a/trunk/sound/pci/hda/hda_codec.c b/trunk/sound/pci/hda/hda_codec.c index 8e89d56b6400..f87f8f088956 100644 --- a/trunk/sound/pci/hda/hda_codec.c +++ b/trunk/sound/pci/hda/hda_codec.c @@ -713,6 +713,19 @@ static u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction) return info->amp_caps; } +int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir, + unsigned int caps) +{ + struct hda_amp_info *info; + + info = get_alloc_amp_hash(codec, HDA_HASH_KEY(nid, dir, 0)); + if (!info) + return -EINVAL; + info->amp_caps = caps; + info->status |= INFO_AMP_CAPS; + return 0; +} + /* * read the current volume to info * if the cache exists, read the cache value. diff --git a/trunk/sound/pci/hda/hda_local.h b/trunk/sound/pci/hda/hda_local.h index be12b8814c39..f91ea5ec9f6d 100644 --- a/trunk/sound/pci/hda/hda_local.h +++ b/trunk/sound/pci/hda/hda_local.h @@ -277,5 +277,7 @@ static inline u32 get_wcaps(struct hda_codec *codec, hda_nid_t nid) return codec->wcaps[nid - codec->start_nid]; } +int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir, + unsigned int caps); #endif /* __SOUND_HDA_LOCAL_H */ diff --git a/trunk/sound/pci/hda/patch_sigmatel.c b/trunk/sound/pci/hda/patch_sigmatel.c index 33fc7cd00935..e3964fc4c405 100644 --- a/trunk/sound/pci/hda/patch_sigmatel.c +++ b/trunk/sound/pci/hda/patch_sigmatel.c @@ -2159,6 +2159,13 @@ static int patch_stac927x(struct hda_codec *codec) codec->patch_ops = stac92xx_patch_ops; + /* Fix Mux capture level; max to 2 */ + snd_hda_override_amp_caps(codec, 0x12, HDA_OUTPUT, + (0 << AC_AMPCAP_OFFSET_SHIFT) | + (2 << AC_AMPCAP_NUM_STEPS_SHIFT) | + (0x27 << AC_AMPCAP_STEP_SIZE_SHIFT) | + (0 << AC_AMPCAP_MUTE_SHIFT)); + return 0; }