summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorHeikki Hannikainen <hessuh@rockbox.org>2002-08-06 10:50:50 +0000
committerHeikki Hannikainen <hessuh@rockbox.org>2002-08-06 10:50:50 +0000
commit3f809e716dea26d77bf2cd8e70c3d709c3c25169 (patch)
tree46a8c464ab37daf62e6b4b335fb195bbedb123d9 /firmware/drivers
parent82a1cad9b85cda897fbd70e77b1ec27518af5c3d (diff)
downloadrockbox-3f809e716dea26d77bf2cd8e70c3d709c3c25169.zip
rockbox-3f809e716dea26d77bf2cd8e70c3d709c3c25169.tar.gz
rockbox-3f809e716dea26d77bf2cd8e70c3d709c3c25169.tar.bz2
rockbox-3f809e716dea26d77bf2cd8e70c3d709c3c25169.tar.xz
Added battery charger code for the recorder and battery voltage statistics keeping for all platforms.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1546 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/adc.h2
-rw-r--r--firmware/drivers/power.c15
-rw-r--r--firmware/drivers/power.h4
3 files changed, 17 insertions, 4 deletions
diff --git a/firmware/drivers/adc.h b/firmware/drivers/adc.h
index 1ff5118..0c05f4d 100644
--- a/firmware/drivers/adc.h
+++ b/firmware/drivers/adc.h
@@ -40,6 +40,8 @@
#define BATTERY_SCALE_FACTOR 6546
#endif
+#define EXT_SCALE_FACTOR 14800
+
unsigned short adc_read(int channel);
void adc_init(void);
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c
index d3ce939..559509f 100644
--- a/firmware/drivers/power.c
+++ b/firmware/drivers/power.c
@@ -22,12 +22,16 @@
#include "adc.h"
#include "power.h"
+#ifdef HAVE_CHARGE_CTRL
+bool charger_enabled = 0;
+#endif
+
#ifndef SIMULATOR
bool charger_inserted(void)
{
#ifdef ARCHOS_RECORDER
- return adc_read(ADC_EXT_POWER) > 0x200;
+ return adc_read(ADC_EXT_POWER) > 0x100;
#else
return (PADR & 1) == 0;
#endif
@@ -58,11 +62,14 @@ bool battery_level_safe(void)
void charger_enable(bool on)
{
-#ifdef ARCHOS_RECORDER
- if(on)
+#ifdef HAVE_CHARGE_CTRL
+ if(on) {
PBDR &= ~0x20;
- else
+ charger_enabled = 1;
+ } else {
PBDR |= 0x20;
+ charger_enabled = 0;
+ }
#else
on = on;
#endif
diff --git a/firmware/drivers/power.h b/firmware/drivers/power.h
index f921b67..fe7d443 100644
--- a/firmware/drivers/power.h
+++ b/firmware/drivers/power.h
@@ -26,6 +26,10 @@
#define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY)
+#ifdef HAVE_CHARGE_CTRL
+extern bool charger_enabled;
+#endif
+
bool charger_inserted(void);
void charger_enable(bool on);
void ide_power_enable(bool on);