* [PATCH] Correct boost volume
@ 2025-06-06 11:33 feng.liu
2025-06-06 20:28 ` kernel test robot
0 siblings, 1 reply; 2+ messages in thread
From: feng.liu @ 2025-06-06 11:33 UTC (permalink / raw)
To: perex, tiwai; +Cc: linux-sound, linux-kernel, feng.liu
Read the Boost Level configured for input pins in the BIOS
init verbs, and restore these settings during audio recording.
This addresses issues of low recording volume or excessive
background noise caused by incorrect boost configurations.
Signed-off-by: feng.liu <feng.liu@senarytech.com>
---
sound/pci/hda/patch_conexant.c | 46 ++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 34874039ad4..77101363e06 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -43,6 +43,8 @@ struct conexant_spec {
unsigned int gpio_mute_led_mask;
unsigned int gpio_mic_led_mask;
bool is_cx8070_sn6140;
+
+ unsigned char init_imux_boost_val[HDA_MAX_NUM_INPUTS];
};
@@ -1178,6 +1180,48 @@ static void add_cx5051_fake_mutes(struct hda_codec *codec)
spec->gen.dac_min_mute = true;
}
+static void cxt_fixed_mic_boost(struct hda_codec *codec,
+ unsigned char node_id,
+ unsigned char mic_boost)
+{
+ unsigned char value = 0;
+
+ value = snd_hda_codec_read(codec, node_id, 0, AC_VERB_GET_AMP_GAIN_MUTE, 0);
+ if (value != mic_boost)
+ snd_hda_codec_amp_stereo(codec, node_id, HDA_INPUT, 0, HDA_AMP_VOLMASK, mic_boost);
+}
+
+static void cxt_cap_sync_hook(struct hda_codec *codec,
+ struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct conexant_spec *spec = codec->spec;
+ hda_nid_t mux_pin = spec->gen.imux_pins[spec->gen.cur_mux[0]];
+
+ if (spec->init_imux_boost_val[mux_pin])
+ cxt_fixed_mic_boost(codec, mux_pin, spec->init_imux_boost_val[mux_pin]);
+}
+
+static int cxt_get_defaut_capture_gain_boost(struct hda_codec *codec)
+{
+ struct conexant_spec *spec = codec->spec;
+ int i;
+ unsigned int boost;
+
+ for (i = 0; i < HDA_MAX_NUM_INPUTS; i++) {
+ if (spec->gen.imux_pins[i] == 0)
+ continue;
+
+ boost = snd_hda_codec_read(codec, spec->gen.imux_pins[i],
+ 0, AC_VERB_GET_AMP_GAIN_MUTE, 0);
+ spec->init_imux_boost_val[spec->gen.imux_pins[i]] = boost;
+ codec_info(codec, "%s, node_id = %x, mic_boost =%x", __func__,
+ spec->gen.imux_pins[i], boost);
+ }
+
+ spec->gen.cap_sync_hook = cxt_cap_sync_hook;
+}
+
static int patch_conexant_auto(struct hda_codec *codec)
{
struct conexant_spec *spec;
@@ -1245,6 +1289,8 @@ static int patch_conexant_auto(struct hda_codec *codec)
if (!spec->gen.vmaster_mute.hook && spec->dynamic_eapd)
spec->gen.vmaster_mute.hook = cx_auto_vmaster_hook;
+ cxt_get_defaut_capture_gain_boost(codec);
+
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
err = snd_hda_parse_pin_defcfg(codec, &spec->gen.autocfg, NULL,
--
2.45.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Correct boost volume
2025-06-06 11:33 [PATCH] Correct boost volume feng.liu
@ 2025-06-06 20:28 ` kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-06-06 20:28 UTC (permalink / raw)
To: feng.liu, perex, tiwai; +Cc: oe-kbuild-all, linux-sound, linux-kernel, feng.liu
Hi feng.liu,
kernel test robot noticed the following build warnings:
[auto build test WARNING on tiwai-sound/for-next]
[also build test WARNING on tiwai-sound/for-linus linus/master v6.15 next-20250606]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/feng-liu/Correct-boost-volume/20250606-201348
base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
patch link: https://lore.kernel.org/r/20250606113349.129746-1-feng.liu%40senarytech.com
patch subject: [PATCH] Correct boost volume
config: i386-buildonly-randconfig-002-20250607 (https://download.01.org/0day-ci/archive/20250607/202506070421.thMBn9rY-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250607/202506070421.thMBn9rY-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506070421.thMBn9rY-lkp@intel.com/
All warnings (new ones prefixed by >>):
sound/pci/hda/patch_conexant.c: In function 'cxt_get_defaut_capture_gain_boost':
>> sound/pci/hda/patch_conexant.c:1223:1: warning: no return statement in function returning non-void [-Wreturn-type]
1223 | }
| ^
vim +1223 sound/pci/hda/patch_conexant.c
1204
1205 static int cxt_get_defaut_capture_gain_boost(struct hda_codec *codec)
1206 {
1207 struct conexant_spec *spec = codec->spec;
1208 int i;
1209 unsigned int boost;
1210
1211 for (i = 0; i < HDA_MAX_NUM_INPUTS; i++) {
1212 if (spec->gen.imux_pins[i] == 0)
1213 continue;
1214
1215 boost = snd_hda_codec_read(codec, spec->gen.imux_pins[i],
1216 0, AC_VERB_GET_AMP_GAIN_MUTE, 0);
1217 spec->init_imux_boost_val[spec->gen.imux_pins[i]] = boost;
1218 codec_info(codec, "%s, node_id = %x, mic_boost =%x", __func__,
1219 spec->gen.imux_pins[i], boost);
1220 }
1221
1222 spec->gen.cap_sync_hook = cxt_cap_sync_hook;
> 1223 }
1224
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-06-06 20:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-06 11:33 [PATCH] Correct boost volume feng.liu
2025-06-06 20:28 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox