summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/imx233/audioout-imx233.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/firmware/target/arm/imx233/audioout-imx233.c b/firmware/target/arm/imx233/audioout-imx233.c
index 0ad78d224a..b27f7b37e2 100644
--- a/firmware/target/arm/imx233/audioout-imx233.c
+++ b/firmware/target/arm/imx233/audioout-imx233.c
@@ -260,13 +260,25 @@ struct imx233_audioout_info_t imx233_audioout_get_info(void)
260 info.hpvol[0] = (info.hpselect ? 120 : 60) - 5 * BF_RD(AUDIOOUT_HPVOL, VOL_LEFT); 260 info.hpvol[0] = (info.hpselect ? 120 : 60) - 5 * BF_RD(AUDIOOUT_HPVOL, VOL_LEFT);
261 info.hpvol[1] = (info.hpselect ? 120 : 60) - 5 * BF_RD(AUDIOOUT_HPVOL, VOL_RIGHT); 261 info.hpvol[1] = (info.hpselect ? 120 : 60) - 5 * BF_RD(AUDIOOUT_HPVOL, VOL_RIGHT);
262 info.hpmute[0] = info.hpmute[1] = BF_RD(AUDIOOUT_HPVOL, MUTE); 262 info.hpmute[0] = info.hpmute[1] = BF_RD(AUDIOOUT_HPVOL, MUTE);
263 info.spkrvol[0] = info.spkrvol[1] = 155; 263#if IMX233_SUBTARGET >= 3780
264 info.spkrvol[0] = info.spkrvol[1] = 155; // volume is fixed to 15.5 dB gain
264 info.spkrmute[0] = info.spkrmute[1] = BF_RD(AUDIOOUT_SPEAKERCTRL, MUTE); 265 info.spkrmute[0] = info.spkrmute[1] = BF_RD(AUDIOOUT_SPEAKERCTRL, MUTE);
266 info.spkr = !BF_RD(AUDIOOUT_PWRDN, SPEAKER);
267#elif IMX233_SUBTARGET < 3700
268 /* convert 2-dB to tenth-dB */
269 info.spkrvol[0] = MIN(info.spkrvol[1] = BF_RD(AUDIOOUT_SPKRVOL, VOL), 6) * 20;
270 info.spkrmute[0] = info.spkrmute[1] = BF_RD(AUDIOOUT_SPKRVOL, MUTE);
271 info.spkr = !BF_RD(AUDIOOUT_PWRDN, SPEAKER);
272#else
273 /* STMP3700/3770 has not speaker amplifier */
274 info.spkrvol[0] = info.spkrvol[1] = 0;
275 info.spkrmute[0] = info.spkrmute[1] = true;
276 info.spkr = false;
277#endif
265 info.ss3d = BF_RD(AUDIOOUT_CTRL, SS3D_EFFECT); 278 info.ss3d = BF_RD(AUDIOOUT_CTRL, SS3D_EFFECT);
266 info.ss3d = info.ss3d == 0 ? 0 : 15 * (1 + info.ss3d); 279 info.ss3d = info.ss3d == 0 ? 0 : 15 * (1 + info.ss3d);
267 info.hp = !BF_RD(AUDIOOUT_PWRDN, HEADPHONE); 280 info.hp = !BF_RD(AUDIOOUT_PWRDN, HEADPHONE);
268 info.dac = !BF_RD(AUDIOOUT_PWRDN, DAC); 281 info.dac = !BF_RD(AUDIOOUT_PWRDN, DAC);
269 info.capless = BF_RD(AUDIOOUT_PWRDN, CAPLESS); 282 info.capless = BF_RD(AUDIOOUT_PWRDN, CAPLESS);
270 info.spkr = !BF_RD(AUDIOOUT_PWRDN, SPEAKER);
271 return info; 283 return info;
272} \ No newline at end of file 284} \ No newline at end of file