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.tar.gz
rockbox-3f809e716dea26d77bf2cd8e70c3d709c3c25169.zip
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 1ff5118238..0c05f4d0f8 100644
--- a/firmware/drivers/adc.h
+++ b/firmware/drivers/adc.h
@@ -40,6 +40,8 @@
40#define BATTERY_SCALE_FACTOR 6546 40#define BATTERY_SCALE_FACTOR 6546
41#endif 41#endif
42 42
43#define EXT_SCALE_FACTOR 14800
44
43unsigned short adc_read(int channel); 45unsigned short adc_read(int channel);
44void adc_init(void); 46void adc_init(void);
45 47
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c
index d3ce939ce2..559509fa67 100644
--- a/firmware/drivers/power.c
+++ b/firmware/drivers/power.c
@@ -22,12 +22,16 @@
22#include "adc.h" 22#include "adc.h"
23#include "power.h" 23#include "power.h"
24 24
25#ifdef HAVE_CHARGE_CTRL
26bool charger_enabled = 0;
27#endif
28
25#ifndef SIMULATOR 29#ifndef SIMULATOR
26 30
27bool charger_inserted(void) 31bool charger_inserted(void)
28{ 32{
29#ifdef ARCHOS_RECORDER 33#ifdef ARCHOS_RECORDER
30 return adc_read(ADC_EXT_POWER) > 0x200; 34 return adc_read(ADC_EXT_POWER) > 0x100;
31#else 35#else
32 return (PADR & 1) == 0; 36 return (PADR & 1) == 0;
33#endif 37#endif
@@ -58,11 +62,14 @@ bool battery_level_safe(void)
58 62
59void charger_enable(bool on) 63void charger_enable(bool on)
60{ 64{
61#ifdef ARCHOS_RECORDER 65#ifdef HAVE_CHARGE_CTRL
62 if(on) 66 if(on) {
63 PBDR &= ~0x20; 67 PBDR &= ~0x20;
64 else 68 charger_enabled = 1;
69 } else {
65 PBDR |= 0x20; 70 PBDR |= 0x20;
71 charger_enabled = 0;
72 }
66#else 73#else
67 on = on; 74 on = on;
68#endif 75#endif
diff --git a/firmware/drivers/power.h b/firmware/drivers/power.h
index f921b67d5e..fe7d443bef 100644
--- a/firmware/drivers/power.h
+++ b/firmware/drivers/power.h
@@ -26,6 +26,10 @@
26 26
27#define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY) 27#define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_EMPTY)
28 28
29#ifdef HAVE_CHARGE_CTRL
30extern bool charger_enabled;
31#endif
32
29bool charger_inserted(void); 33bool charger_inserted(void);
30void charger_enable(bool on); 34void charger_enable(bool on);
31void ide_power_enable(bool on); 35void ide_power_enable(bool on);