summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2010-03-20 15:02:29 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2010-03-20 15:02:29 +0000
commitb6c12a129e22dadff4be67e5b0fe8993c888d6d8 (patch)
treeee6e855a5d998e3c5bae6d74a86641f3d01ebd50 /firmware
parent181e0e0878aac10dd9a6651842fbb59c4fed7a9b (diff)
downloadrockbox-b6c12a129e22dadff4be67e5b0fe8993c888d6d8.zip
rockbox-b6c12a129e22dadff4be67e5b0fe8993c888d6d8.tar.gz
rockbox-b6c12a129e22dadff4be67e5b0fe8993c888d6d8.tar.bz2
rockbox-b6c12a129e22dadff4be67e5b0fe8993c888d6d8.tar.xz
Submit FS#11065. Introduce a new system setting for en-/disabling the Line-out. For now only implemented on iPod Video. This allows to save power if the user does not use the player's Line-out. On iPod 5G the saving is ~0.5 mA.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25257 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/audio/wm8758.c17
-rw-r--r--firmware/export/config/ipodvideo.h3
-rw-r--r--firmware/export/powermgmt.h3
-rw-r--r--firmware/export/wm8758.h1
-rw-r--r--firmware/target/arm/ipod/powermgmt-ipod-pcf.c9
5 files changed, 33 insertions, 0 deletions
diff --git a/firmware/drivers/audio/wm8758.c b/firmware/drivers/audio/wm8758.c
index 715c921..40ead0c 100644
--- a/firmware/drivers/audio/wm8758.c
+++ b/firmware/drivers/audio/wm8758.c
@@ -181,6 +181,23 @@ void audiohw_set_lineout_vol(int vol_l, int vol_r)
wmcodec_write(ROUT2VOL, amp_r | ROUT2VOL_ROUT2ZC | ROUT2VOL_OUT2VU);
}
+void audiohw_enable_lineout(bool enable)
+{
+ if (enable)
+ {
+ /* include enabling of OUT2 */
+ wmcodec_write(PWRMGMT3, PWRMGMT3_LOUT2EN | PWRMGMT3_ROUT2EN
+ | PWRMGMT3_RMIXEN | PWRMGMT3_LMIXEN
+ | PWRMGMT3_DACENR | PWRMGMT3_DACENL);
+ }
+ else
+ {
+ /* exclude enabling of OUT2 */
+ wmcodec_write(PWRMGMT3, PWRMGMT3_RMIXEN | PWRMGMT3_LMIXEN
+ | PWRMGMT3_DACENR | PWRMGMT3_DACENL);
+ }
+}
+
void audiohw_set_bass(int value)
{
eq1_reg = (eq1_reg & ~EQ_GAIN_MASK) | EQ_GAIN_VALUE(value);
diff --git a/firmware/export/config/ipodvideo.h b/firmware/export/config/ipodvideo.h
index a8d2220..eec5133 100644
--- a/firmware/export/config/ipodvideo.h
+++ b/firmware/export/config/ipodvideo.h
@@ -77,6 +77,9 @@
/* Define this if you can switch on/off the accessory power supply */
#define HAVE_ACCESSORY_SUPPLY
+/* Define this, if you can switch on/off the lineout */
+#define HAVE_LINEOUT_POWEROFF
+
/* Define this if you have a software controlled poweroff */
#define HAVE_SW_POWEROFF
diff --git a/firmware/export/powermgmt.h b/firmware/export/powermgmt.h
index 17519c5..d86118c 100644
--- a/firmware/export/powermgmt.h
+++ b/firmware/export/powermgmt.h
@@ -174,5 +174,8 @@ bool query_force_shutdown(void);
#ifdef HAVE_ACCESSORY_SUPPLY
void accessory_supply_set(bool);
#endif
+#ifdef HAVE_LINEOUT_POWEROFF
+void lineout_set(bool);
+#endif
#endif /* _POWERMGMT_H_ */
diff --git a/firmware/export/wm8758.h b/firmware/export/wm8758.h
index 9d1a938..50cbc74 100644
--- a/firmware/export/wm8758.h
+++ b/firmware/export/wm8758.h
@@ -34,6 +34,7 @@ extern int tenthdb2mixer(int db);
extern void audiohw_set_master_vol(int vol_l, int vol_r);
extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
extern void audiohw_set_mixer_vol(int channel1, int channel2);
+extern void audiohw_enable_lineout(bool enable);
#define RESET 0x00
#define RESET_RESET 0x0
diff --git a/firmware/target/arm/ipod/powermgmt-ipod-pcf.c b/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
index 5b8f974..95f5380 100644
--- a/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
+++ b/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
@@ -25,6 +25,7 @@
#include "powermgmt.h"
#include "pcf5060x.h"
#include "pcf50605.h"
+#include "audiohw.h"
const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
{
@@ -129,3 +130,11 @@ void accessory_supply_set(bool enable)
}
#endif
+
+#ifdef HAVE_LINEOUT_POWEROFF
+void lineout_set(bool enable)
+{
+ /* Call audio hardware driver implementation */
+ audiohw_enable_lineout(enable);
+}
+#endif