summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2003-08-25 08:57:49 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2003-08-25 08:57:49 +0000
commit53ee344743d89a987b8a9ebe79aa7e732e824148 (patch)
treeff28ef9ecd954fb4be16b7b6f7b992eca7396303
parent71316085de3b025e590297d28634d53c6edfb07c (diff)
downloadrockbox-53ee344743d89a987b8a9ebe79aa7e732e824148.zip
rockbox-53ee344743d89a987b8a9ebe79aa7e732e824148.tar.gz
rockbox-53ee344743d89a987b8a9ebe79aa7e732e824148.tar.bz2
rockbox-53ee344743d89a987b8a9ebe79aa7e732e824148.tar.xz
Slightly more correct initialization of the power/charging code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3940 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/main.c2
-rw-r--r--firmware/drivers/power.c10
-rw-r--r--firmware/export/power.h1
-rw-r--r--firmware/export/powermgmt.h2
-rw-r--r--firmware/powermgmt.c4
5 files changed, 15 insertions, 4 deletions
diff --git a/apps/main.c b/apps/main.c
index 4d329bb..d180067 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -146,7 +146,7 @@ void init(void)
button_init();
- power_init(); /* moved up from below mpeg_init, hope that's not harmful */
+ powermgmt_init();
if (coldstart && charger_inserted())
{
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c
index 7f6284d..a76021a 100644
--- a/firmware/drivers/power.c
+++ b/firmware/drivers/power.c
@@ -24,11 +24,19 @@
#include "power.h"
#ifdef HAVE_CHARGE_CTRL
-bool charger_enabled = 0;
+bool charger_enabled;
#endif
#ifndef SIMULATOR
+void power_init(void)
+{
+#ifdef HAVE_CHARGE_CTRL
+ PBIOR |= 0x20; /* Set charging control bit to output */
+ charger_enable(false); /* Default to charger OFF */
+#endif
+}
+
bool charger_inserted(void)
{
#ifdef HAVE_CHARGE_CTRL
diff --git a/firmware/export/power.h b/firmware/export/power.h
index f4e7a0b..678260a 100644
--- a/firmware/export/power.h
+++ b/firmware/export/power.h
@@ -23,6 +23,7 @@
extern bool charger_enabled;
#endif
+void power_init(void);
bool charger_inserted(void);
void charger_enable(bool on);
void ide_power_enable(bool on);
diff --git a/firmware/export/powermgmt.h b/firmware/export/powermgmt.h
index 4078667..4b4d040 100644
--- a/firmware/export/powermgmt.h
+++ b/firmware/export/powermgmt.h
@@ -80,7 +80,7 @@ extern int charge_state; /* tells what the charger is doing (for info di
extern unsigned short power_history[POWER_HISTORY_LEN];
/* Start up power management thread */
-void power_init(void);
+void powermgmt_init(void);
#endif /* SIMULATOR */
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index 13043cb..78f4a5a 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -685,8 +685,10 @@ static void power_thread(void)
}
}
-void power_init(void)
+void powermgmt_init(void)
{
+ power_init();
+
/* init history to 0 */
memset(power_history, 0x00, sizeof(power_history));
/* initialize the history with a single sample to prevent level