summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Leonhardt <sebastian.leonhardt@web.de>2014-05-27 18:07:07 +0200
committerSzymon Dziok <b0hoon@o2.pl>2014-07-27 12:09:36 +0200
commit7e778c5f49eee3a3e12722e1fe68a19cc3818b59 (patch)
tree166b84e5ad8b0e00b77162917db3dc171bfa0081
parent6bbfb35560d440e21bdd73728d43a75b6b4de6fd (diff)
downloadrockbox-7e778c5f49eee3a3e12722e1fe68a19cc3818b59.tar.gz
rockbox-7e778c5f49eee3a3e12722e1fe68a19cc3818b59.zip
Samsung YH-820: enable battery monitoring
The "percent_to_volt_charge" values are quite arbitrary and may need some more tweaking. Change-Id: I9f177d46681030d615fe2c2e78cf9bd2dde026af Reviewed-on: http://gerrit.rockbox.org/824 Reviewed-by: Szymon Dziok <b0hoon@o2.pl> Tested: Szymon Dziok <b0hoon@o2.pl>
-rw-r--r--firmware/export/config/samsungyh820.h6
-rw-r--r--firmware/target/arm/pp/adc-pp5020.c2
-rw-r--r--firmware/target/arm/samsung/yh820/powermgmt-yh820.c18
3 files changed, 12 insertions, 14 deletions
diff --git a/firmware/export/config/samsungyh820.h b/firmware/export/config/samsungyh820.h
index 516b010e96..08bba1a910 100644
--- a/firmware/export/config/samsungyh820.h
+++ b/firmware/export/config/samsungyh820.h
@@ -125,9 +125,9 @@
125 125
126#define AB_REPEAT_ENABLE 126#define AB_REPEAT_ENABLE
127 127
128#define BATTERY_CAPACITY_DEFAULT 1550 /* default battery capacity */ 128#define BATTERY_CAPACITY_DEFAULT 650 /* default battery capacity */
129#define BATTERY_CAPACITY_MIN 1500 /* min. capacity selectable */ 129#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
130#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */ 130#define BATTERY_CAPACITY_MAX 800 /* max. capacity selectable */
131#define BATTERY_CAPACITY_INC 50 /* capacity increment */ 131#define BATTERY_CAPACITY_INC 50 /* capacity increment */
132#define BATTERY_TYPES_COUNT 1 /* only one type */ 132#define BATTERY_TYPES_COUNT 1 /* only one type */
133 133
diff --git a/firmware/target/arm/pp/adc-pp5020.c b/firmware/target/arm/pp/adc-pp5020.c
index 2d75a7e25f..ce50f4b5c2 100644
--- a/firmware/target/arm/pp/adc-pp5020.c
+++ b/firmware/target/arm/pp/adc-pp5020.c
@@ -63,7 +63,7 @@ unsigned short adc_scan(int channel)
63 63
64 adcdata[channel] = (adc_data_1<<2 | adc_data_2); 64 adcdata[channel] = (adc_data_1<<2 | adc_data_2);
65 65
66#if !(defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330)) 66#if !(defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330) || defined(SAMSUNG_YH820))
67 /* ADC values read low if PLL is enabled */ 67 /* ADC values read low if PLL is enabled */
68 if(PLL_CONTROL & 0x80000000){ 68 if(PLL_CONTROL & 0x80000000){
69 adcdata[channel] += 0x14; 69 adcdata[channel] += 0x14;
diff --git a/firmware/target/arm/samsung/yh820/powermgmt-yh820.c b/firmware/target/arm/samsung/yh820/powermgmt-yh820.c
index 180194c704..8f0847bd20 100644
--- a/firmware/target/arm/samsung/yh820/powermgmt-yh820.c
+++ b/firmware/target/arm/samsung/yh820/powermgmt-yh820.c
@@ -24,36 +24,34 @@
24#include "adc.h" 24#include "adc.h"
25#include "powermgmt.h" 25#include "powermgmt.h"
26 26
27/* TODO: Not yet calibrated */
28
29const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = 27const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
30{ 28{
31 3695 29 3400
32}; 30};
33 31
34const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = 32const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
35{ 33{
36 3627 34 3199
37}; 35};
38 36
39/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ 37/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
38/* NOTE: readout clips at around 4000mV */
40const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = 39const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
41{ 40{
42 { 3695, 3714, 3772, 3791, 3811, 3850, 3908, 3985, 4024, 4111, 4198 } 41 { 3199, 3492, 3543, 3601, 3626, 3651, 3702, 3769, 3794, 3865, 3995 }
43}; 42};
44 43
45/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ 44/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
45/* NOTE: these values may be rather inaccurate. Readout clips at around 4000mV */
46const unsigned short percent_to_volt_charge[11] = 46const unsigned short percent_to_volt_charge[11] =
47{ 47{
48 3850, 3888, 3927, 3966, 4024, 4063, 4111, 4150, 4198, 4237, 4286 48 3750, 3860, 3880, 3900, 3930, 3994, 4080, 4135, 4200, 4200, 4200
49}; 49};
50 50
51#define BATTERY_SCALE_FACTOR 4650 51#define BATTERY_SCALE_FACTOR 5000
52/* full-scale ADC readout (2^10) in millivolt */
53 52
54/* Returns battery voltage from ADC [millivolts] */ 53/* Returns battery voltage from ADC [millivolts] */
55int _battery_voltage(void) 54int _battery_voltage(void)
56{ 55{
57 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */ 56 return ((adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10) - 1000;
58 return 4100;
59} 57}