summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-12-13 15:57:41 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-12-13 15:57:41 +0000
commita654946622ef18b9263d11ad7b751fbf584700f6 (patch)
treec61f7af2adc7b2162e5f7830b802dac6a1ee08b8 /firmware
parent2b7fa8736c537e1aa16103b81b09a9e61b1ebf22 (diff)
downloadrockbox-a654946622ef18b9263d11ad7b751fbf584700f6.tar.gz
rockbox-a654946622ef18b9263d11ad7b751fbf584700f6.tar.bz2
rockbox-a654946622ef18b9263d11ad7b751fbf584700f6.zip
correct battery readout for m200v4. Percentage is still uncalibrated.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19420 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/SOURCES2
-rw-r--r--firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c59
2 files changed, 60 insertions, 1 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index 1fce6cfdb5..80fe3385ee 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -1095,7 +1095,7 @@ target/arm/as3525/powermgmt-as3525.c
target/arm/lcd-ssd1815.c
target/arm/as3525/sansa-m200v4/button-m200v4.c
#ifndef BOOTLOADER
-target/arm/as3525/powermgmt-as3525.c
+target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
drivers/generic_i2c.c
target/arm/as3525/fmradio-i2c-as3525.c
#endif /* !BOOTLOADER */
diff --git a/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c b/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
new file mode 100644
index 0000000000..cbd2c4bf27
--- /dev/null
+++ b/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
@@ -0,0 +1,59 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright © 2008 Rafaël Carré
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "config.h"
+#include "adc.h"
+#include "adc-target.h"
+#include "powermgmt.h"
+
+/* TODO
+ early uncalibrated values. But read-out value should be correct
+ */
+
+const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
+{
+ /* TODO: this is just an initial guess */
+ 900
+};
+
+const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
+{
+ /* TODO: this is just an initial guess */
+ 1000
+};
+
+/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
+const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
+{
+ /* TODO: simple uncalibrated curve, linear except for first 10% */
+ { 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500 }
+};
+
+/* ADC should read 0x3ff=5.12V */
+#define BATTERY_SCALE_FACTOR 2562
+/* full-scale ADC readout (2^10) in millivolt */
+
+/* Returns battery voltage from ADC [millivolts] */
+unsigned int battery_adc_voltage(void)
+{
+ return (adc_read(ADC_VBAT) * BATTERY_SCALE_FACTOR) >> 10;
+}
+