diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2008-11-05 00:24:46 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2008-11-05 00:24:46 +0000 |
commit | 4af26e7e98b6d4b2e1c94a54ad7ca02d55bb04cc (patch) | |
tree | 9b6fb2c6f016982c8b7cb79ba7aa94f4f57f99ba /firmware/target/mips/ingenic_jz47xx/onda_vx747 | |
parent | 0711c795e628b49431987861b9f535516c74abac (diff) | |
download | rockbox-4af26e7e98b6d4b2e1c94a54ad7ca02d55bb04cc.tar.gz rockbox-4af26e7e98b6d4b2e1c94a54ad7ca02d55bb04cc.zip |
Onda VX747:
* Commit (premature) SD, USB & audio drivers
* Fix ramdisk.c mistake
* Add battery readout
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19011 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/onda_vx747')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c b/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c index 0f1cfca937..64ea86135f 100644 --- a/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c +++ b/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include "jz4740.h" | 24 | #include "jz4740.h" |
25 | #include "button.h" | 25 | #include "button.h" |
26 | #include "button-target.h" | 26 | #include "button-target.h" |
27 | #include "powermgmt.h" | ||
27 | 28 | ||
28 | #define BTN_OFF (1 << 29) | 29 | #define BTN_OFF (1 << 29) |
29 | #define BTN_VOL_DOWN (1 << 27) | 30 | #define BTN_VOL_DOWN (1 << 27) |
@@ -49,15 +50,61 @@ | |||
49 | static short x_pos = -1, y_pos = -1, datacount = 0; | 50 | static short x_pos = -1, y_pos = -1, datacount = 0; |
50 | static bool pen_down = false; | 51 | static bool pen_down = false; |
51 | static int cur_touch = 0; | 52 | static int cur_touch = 0; |
53 | static unsigned short bat_val = 0; | ||
52 | 54 | ||
53 | static enum touchscreen_mode current_mode = TOUCHSCREEN_POINT; | 55 | static enum touchscreen_mode current_mode = TOUCHSCREEN_POINT; |
54 | static int touchscreen_buttons[3][3] = | 56 | static const int touchscreen_buttons[3][3] = |
55 | { | 57 | { |
56 | {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT}, | 58 | {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT}, |
57 | {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT}, | 59 | {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT}, |
58 | {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT} | 60 | {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT} |
59 | }; | 61 | }; |
60 | 62 | ||
63 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | ||
64 | { | ||
65 | /* TODO */ | ||
66 | 3400 | ||
67 | }; | ||
68 | |||
69 | const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = | ||
70 | { | ||
71 | /* TODO */ | ||
72 | 3300 | ||
73 | }; | ||
74 | |||
75 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ | ||
76 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = | ||
77 | { | ||
78 | /* TODO */ | ||
79 | { 3300, 3680, 3740, 3760, 3780, 3810, 3870, 3930, 3970, 4070, 4160 }, | ||
80 | }; | ||
81 | |||
82 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ | ||
83 | const unsigned short percent_to_volt_charge[11] = | ||
84 | { | ||
85 | /* TODO */ | ||
86 | 3300, 3680, 3740, 3760, 3780, 3810, 3870, 3930, 3970, 4070, 4160 | ||
87 | }; | ||
88 | |||
89 | /* VBAT = (BDATA/4096) * 7.5V */ | ||
90 | #define BATTERY_SCALE_FACTOR 7500 | ||
91 | |||
92 | /* Returns battery voltage from ADC [millivolts] */ | ||
93 | unsigned int battery_adc_voltage(void) | ||
94 | { | ||
95 | register unsigned short dummy; | ||
96 | dummy = REG_SADC_BATDAT; | ||
97 | dummy = REG_SADC_BATDAT; | ||
98 | |||
99 | bat_val = 0; | ||
100 | REG_SADC_ENA |= SADC_ENA_PBATEN; | ||
101 | |||
102 | while(bat_val == 0) | ||
103 | yield(); | ||
104 | |||
105 | return (bat_val*BATTERY_SCALE_FACTOR)>>12; | ||
106 | } | ||
107 | |||
61 | void button_init_device(void) | 108 | void button_init_device(void) |
62 | { | 109 | { |
63 | REG_SADC_ENA = 0; | 110 | REG_SADC_ENA = 0; |
@@ -72,8 +119,8 @@ void button_init_device(void) | |||
72 | REG_SADC_SAMETIME = 350; | 119 | REG_SADC_SAMETIME = 350; |
73 | REG_SADC_WAITTIME = 100; | 120 | REG_SADC_WAITTIME = 100; |
74 | REG_SADC_STATE &= (~REG_SADC_STATE); | 121 | REG_SADC_STATE &= (~REG_SADC_STATE); |
75 | REG_SADC_CTRL &= (~(SADC_CTRL_PENDM | SADC_CTRL_PENUM | SADC_CTRL_TSRDYM)); | 122 | REG_SADC_CTRL = (~(SADC_CTRL_PENDM | SADC_CTRL_PENUM | SADC_CTRL_TSRDYM | SADC_CTRL_PBATRDYM)); |
76 | REG_SADC_ENA = SADC_ENA_TSEN; //| SADC_ENA_PBATEN | SADC_ENA_SADCINEN); | 123 | REG_SADC_ENA = (SADC_ENA_TSEN | SADC_ENA_PBATEN); |
77 | 124 | ||
78 | __gpio_as_input(32*3 + 29); | 125 | __gpio_as_input(32*3 + 29); |
79 | __gpio_as_input(32*3 + 27); | 126 | __gpio_as_input(32*3 + 27); |
@@ -231,6 +278,7 @@ void SADC(void) | |||
231 | } | 278 | } |
232 | if(state & SADC_CTRL_PBATRDYM) | 279 | if(state & SADC_CTRL_PBATRDYM) |
233 | { | 280 | { |
281 | bat_val = REG_SADC_BATDAT; | ||
234 | /* Battery AD IRQ */ | 282 | /* Battery AD IRQ */ |
235 | } | 283 | } |
236 | if(state & SADC_CTRL_SRDYM) | 284 | if(state & SADC_CTRL_SRDYM) |