From 3f809e716dea26d77bf2cd8e70c3d709c3c25169 Mon Sep 17 00:00:00 2001 From: Heikki Hannikainen Date: Tue, 6 Aug 2002 10:50:50 +0000 Subject: 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 --- firmware/drivers/adc.h | 2 ++ firmware/drivers/power.c | 15 +++++++++++---- firmware/drivers/power.h | 4 ++++ 3 files changed, 17 insertions(+), 4 deletions(-) (limited to 'firmware/drivers') 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); -- cgit v1.1