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.tar.gz
rockbox-b6c12a129e22dadff4be67e5b0fe8993c888d6d8.zip
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 715c921e33..40ead0cdf2 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)
181 wmcodec_write(ROUT2VOL, amp_r | ROUT2VOL_ROUT2ZC | ROUT2VOL_OUT2VU); 181 wmcodec_write(ROUT2VOL, amp_r | ROUT2VOL_ROUT2ZC | ROUT2VOL_OUT2VU);
182} 182}
183 183
184void audiohw_enable_lineout(bool enable)
185{
186 if (enable)
187 {
188 /* include enabling of OUT2 */
189 wmcodec_write(PWRMGMT3, PWRMGMT3_LOUT2EN | PWRMGMT3_ROUT2EN
190 | PWRMGMT3_RMIXEN | PWRMGMT3_LMIXEN
191 | PWRMGMT3_DACENR | PWRMGMT3_DACENL);
192 }
193 else
194 {
195 /* exclude enabling of OUT2 */
196 wmcodec_write(PWRMGMT3, PWRMGMT3_RMIXEN | PWRMGMT3_LMIXEN
197 | PWRMGMT3_DACENR | PWRMGMT3_DACENL);
198 }
199}
200
184void audiohw_set_bass(int value) 201void audiohw_set_bass(int value)
185{ 202{
186 eq1_reg = (eq1_reg & ~EQ_GAIN_MASK) | EQ_GAIN_VALUE(value); 203 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 a8d2220b8c..eec513320a 100644
--- a/firmware/export/config/ipodvideo.h
+++ b/firmware/export/config/ipodvideo.h
@@ -77,6 +77,9 @@
77/* Define this if you can switch on/off the accessory power supply */ 77/* Define this if you can switch on/off the accessory power supply */
78#define HAVE_ACCESSORY_SUPPLY 78#define HAVE_ACCESSORY_SUPPLY
79 79
80/* Define this, if you can switch on/off the lineout */
81#define HAVE_LINEOUT_POWEROFF
82
80/* Define this if you have a software controlled poweroff */ 83/* Define this if you have a software controlled poweroff */
81#define HAVE_SW_POWEROFF 84#define HAVE_SW_POWEROFF
82 85
diff --git a/firmware/export/powermgmt.h b/firmware/export/powermgmt.h
index 17519c5bfd..d86118cd9b 100644
--- a/firmware/export/powermgmt.h
+++ b/firmware/export/powermgmt.h
@@ -174,5 +174,8 @@ bool query_force_shutdown(void);
174#ifdef HAVE_ACCESSORY_SUPPLY 174#ifdef HAVE_ACCESSORY_SUPPLY
175void accessory_supply_set(bool); 175void accessory_supply_set(bool);
176#endif 176#endif
177#ifdef HAVE_LINEOUT_POWEROFF
178void lineout_set(bool);
179#endif
177 180
178#endif /* _POWERMGMT_H_ */ 181#endif /* _POWERMGMT_H_ */
diff --git a/firmware/export/wm8758.h b/firmware/export/wm8758.h
index 9d1a938162..50cbc74e9a 100644
--- a/firmware/export/wm8758.h
+++ b/firmware/export/wm8758.h
@@ -34,6 +34,7 @@ extern int tenthdb2mixer(int db);
34extern void audiohw_set_master_vol(int vol_l, int vol_r); 34extern void audiohw_set_master_vol(int vol_l, int vol_r);
35extern void audiohw_set_lineout_vol(int vol_l, int vol_r); 35extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
36extern void audiohw_set_mixer_vol(int channel1, int channel2); 36extern void audiohw_set_mixer_vol(int channel1, int channel2);
37extern void audiohw_enable_lineout(bool enable);
37 38
38#define RESET 0x00 39#define RESET 0x00
39#define RESET_RESET 0x0 40#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 5b8f974fda..95f5380b92 100644
--- a/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
+++ b/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
@@ -25,6 +25,7 @@
25#include "powermgmt.h" 25#include "powermgmt.h"
26#include "pcf5060x.h" 26#include "pcf5060x.h"
27#include "pcf50605.h" 27#include "pcf50605.h"
28#include "audiohw.h"
28 29
29const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = 30const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
30{ 31{
@@ -129,3 +130,11 @@ void accessory_supply_set(bool enable)
129 130
130} 131}
131#endif 132#endif
133
134#ifdef HAVE_LINEOUT_POWEROFF
135void lineout_set(bool enable)
136{
137 /* Call audio hardware driver implementation */
138 audiohw_enable_lineout(enable);
139}
140#endif