summaryrefslogtreecommitdiff
path: root/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c')
-rw-r--r--firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c54
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 @@
49static short x_pos = -1, y_pos = -1, datacount = 0; 50static short x_pos = -1, y_pos = -1, datacount = 0;
50static bool pen_down = false; 51static bool pen_down = false;
51static int cur_touch = 0; 52static int cur_touch = 0;
53static unsigned short bat_val = 0;
52 54
53static enum touchscreen_mode current_mode = TOUCHSCREEN_POINT; 55static enum touchscreen_mode current_mode = TOUCHSCREEN_POINT;
54static int touchscreen_buttons[3][3] = 56static 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
63const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
64{
65 /* TODO */
66 3400
67};
68
69const 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 */
76const 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 */
83const 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] */
93unsigned 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
61void button_init_device(void) 108void 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)