mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-02 16:44:59 +00:00
ALSA: emu10k1: fix non-zero mixer control defaults in highres mode
The default value needs to be scaled. Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Link: https://lore.kernel.org/r/20230514170323.3408834-3-oswald.buddenhagen@gmx.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
a746516d75
commit
bb5ceb43b7
@ -1116,18 +1116,19 @@ snd_emu10k1_init_mono_control(struct snd_emu10k1_fx8010_control_gpr *ctl,
|
|||||||
ctl->id.iface = (__force int)SNDRV_CTL_ELEM_IFACE_MIXER;
|
ctl->id.iface = (__force int)SNDRV_CTL_ELEM_IFACE_MIXER;
|
||||||
strcpy(ctl->id.name, name);
|
strcpy(ctl->id.name, name);
|
||||||
ctl->vcount = ctl->count = 1;
|
ctl->vcount = ctl->count = 1;
|
||||||
ctl->gpr[0] = gpr + 0; ctl->value[0] = defval;
|
|
||||||
if (high_res_gpr_volume) {
|
if (high_res_gpr_volume) {
|
||||||
ctl->min = 0;
|
ctl->min = 0;
|
||||||
ctl->max = 0x7fffffff;
|
ctl->max = 0x7fffffff;
|
||||||
ctl->tlv = snd_emu10k1_db_linear;
|
ctl->tlv = snd_emu10k1_db_linear;
|
||||||
ctl->translation = EMU10K1_GPR_TRANSLATION_NONE;
|
ctl->translation = EMU10K1_GPR_TRANSLATION_NONE;
|
||||||
|
defval = defval * 0x7fffffffLL / 100;
|
||||||
} else {
|
} else {
|
||||||
ctl->min = 0;
|
ctl->min = 0;
|
||||||
ctl->max = 100;
|
ctl->max = 100;
|
||||||
ctl->tlv = snd_emu10k1_db_scale1;
|
ctl->tlv = snd_emu10k1_db_scale1;
|
||||||
ctl->translation = EMU10K1_GPR_TRANSLATION_TABLE100;
|
ctl->translation = EMU10K1_GPR_TRANSLATION_TABLE100;
|
||||||
}
|
}
|
||||||
|
ctl->gpr[0] = gpr + 0; ctl->value[0] = defval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1137,19 +1138,20 @@ snd_emu10k1_init_stereo_control(struct snd_emu10k1_fx8010_control_gpr *ctl,
|
|||||||
ctl->id.iface = (__force int)SNDRV_CTL_ELEM_IFACE_MIXER;
|
ctl->id.iface = (__force int)SNDRV_CTL_ELEM_IFACE_MIXER;
|
||||||
strcpy(ctl->id.name, name);
|
strcpy(ctl->id.name, name);
|
||||||
ctl->vcount = ctl->count = 2;
|
ctl->vcount = ctl->count = 2;
|
||||||
ctl->gpr[0] = gpr + 0; ctl->value[0] = defval;
|
|
||||||
ctl->gpr[1] = gpr + 1; ctl->value[1] = defval;
|
|
||||||
if (high_res_gpr_volume) {
|
if (high_res_gpr_volume) {
|
||||||
ctl->min = 0;
|
ctl->min = 0;
|
||||||
ctl->max = 0x7fffffff;
|
ctl->max = 0x7fffffff;
|
||||||
ctl->tlv = snd_emu10k1_db_linear;
|
ctl->tlv = snd_emu10k1_db_linear;
|
||||||
ctl->translation = EMU10K1_GPR_TRANSLATION_NONE;
|
ctl->translation = EMU10K1_GPR_TRANSLATION_NONE;
|
||||||
|
defval = defval * 0x7fffffffLL / 100;
|
||||||
} else {
|
} else {
|
||||||
ctl->min = 0;
|
ctl->min = 0;
|
||||||
ctl->max = 100;
|
ctl->max = 100;
|
||||||
ctl->tlv = snd_emu10k1_db_scale1;
|
ctl->tlv = snd_emu10k1_db_scale1;
|
||||||
ctl->translation = EMU10K1_GPR_TRANSLATION_TABLE100;
|
ctl->translation = EMU10K1_GPR_TRANSLATION_TABLE100;
|
||||||
}
|
}
|
||||||
|
ctl->gpr[0] = gpr + 0; ctl->value[0] = defval;
|
||||||
|
ctl->gpr[1] = gpr + 1; ctl->value[1] = defval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user