diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-10-19 17:32:03 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-10-21 01:23:14 +0200 |
commit | 898b760e59c19425152050829664f2c915c9f667 (patch) | |
tree | fb80511bb03842a6dd76485d28dd2417f1aeee56 /firmware/target/arm | |
parent | 28669ca0fd1894a727eb4da77843f5435722b449 (diff) | |
download | rockbox-898b760e59c19425152050829664f2c915c9f667.tar.gz rockbox-898b760e59c19425152050829664f2c915c9f667.zip |
imx233: fix audioout on stmp3700
Strangely enough, only stmp3780 and stmp3600 have speaker control
Change-Id: Icec1ed4b7e80e8b3787a3d08b32695551b58aeb9
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/imx233/audioout-imx233.c | 16 |
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 |