diff options
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c b/firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c index 90dc0b83fb..950fc51d69 100644 --- a/firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c +++ b/firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c | |||
@@ -32,16 +32,16 @@ | |||
32 | | BTN_MENU | BTN_OFF ) | 32 | | BTN_MENU | BTN_OFF ) |
33 | 33 | ||
34 | #define SADC_CFG_INIT ( \ | 34 | #define SADC_CFG_INIT ( \ |
35 | (2 << SADC_CFG_CLKOUT_NUM_BIT) | \ | 35 | (2 << SADC_CFG_CLKOUT_NUM_BIT) | \ |
36 | SADC_CFG_XYZ1Z2 | \ | 36 | SADC_CFG_XYZ1Z2 | \ |
37 | SADC_CFG_SNUM_5 | \ | 37 | SADC_CFG_SNUM_5 | \ |
38 | (1 << SADC_CFG_CLKDIV_BIT) | \ | 38 | (1 << SADC_CFG_CLKDIV_BIT) | \ |
39 | SADC_CFG_PBAT_HIGH | \ | 39 | SADC_CFG_PBAT_HIGH | \ |
40 | SADC_CFG_CMD_INT_PEN ) | 40 | SADC_CFG_CMD_INT_PEN ) |
41 | 41 | ||
42 | bool button_hold(void) | 42 | bool button_hold(void) |
43 | { | 43 | { |
44 | return (REG_GPIO_PXPIN(3) ^ BTN_HOLD ? 1 : 0); | 44 | return (~REG_GPIO_PXPIN(3) & BTN_HOLD ? 1 : 0); |
45 | } | 45 | } |
46 | 46 | ||
47 | void button_init_device(void) | 47 | void button_init_device(void) |
@@ -54,7 +54,7 @@ void button_init_device(void) | |||
54 | REG_SADC_CFG = SADC_CFG_INIT; | 54 | REG_SADC_CFG = SADC_CFG_INIT; |
55 | 55 | ||
56 | REG_SADC_SAMETIME = 1; | 56 | REG_SADC_SAMETIME = 1; |
57 | REG_SADC_WAITTIME = 1000; //per 100 HZ | 57 | REG_SADC_WAITTIME = 1000; /* per 100 HZ */ |
58 | REG_SADC_STATE &= (~REG_SADC_STATE); | 58 | REG_SADC_STATE &= (~REG_SADC_STATE); |
59 | REG_SADC_CTRL &= (~(SADC_CTRL_PENDM | SADC_CTRL_TSRDYM)); | 59 | REG_SADC_CTRL &= (~(SADC_CTRL_PENDM | SADC_CTRL_TSRDYM)); |
60 | REG_SADC_ENA = SADC_ENA_TSEN; // | REG_SADC_ENA;//SADC_ENA_TSEN | SADC_ENA_PBATEN | SADC_ENA_SADCINEN; | 60 | REG_SADC_ENA = SADC_ENA_TSEN; // | REG_SADC_ENA;//SADC_ENA_TSEN | SADC_ENA_PBATEN | SADC_ENA_SADCINEN; |
@@ -66,14 +66,21 @@ static int touch_to_pixels(short x, short y) | |||
66 | x -= 300; | 66 | x -= 300; |
67 | y -= 300; | 67 | y -= 300; |
68 | 68 | ||
69 | x /= 3200 / LCD_WIDTH; | 69 | /* X & Y are switched */ |
70 | y /= 3600 / LCD_HEIGHT; | 70 | x /= 3200 / LCD_HEIGHT; |
71 | 71 | y /= 3600 / LCD_WIDTH; | |
72 | return (x << 16) | y; | 72 | |
73 | x = LCD_HEIGHT - x; | ||
74 | y = LCD_WIDTH - y; | ||
75 | |||
76 | return (y << 16) | x; | ||
73 | } | 77 | } |
74 | 78 | ||
75 | int button_read_device(int *data) | 79 | int button_read_device(int *data) |
76 | { | 80 | { |
81 | if(button_hold()) | ||
82 | return 0; | ||
83 | |||
77 | unsigned int key = ~REG_GPIO_PXPIN(3); | 84 | unsigned int key = ~REG_GPIO_PXPIN(3); |
78 | int ret = 0; | 85 | int ret = 0; |
79 | if(key & BTN_MASK) | 86 | if(key & BTN_MASK) |
@@ -114,6 +121,8 @@ int button_read_device(int *data) | |||
114 | REG_SADC_STATE = 0; | 121 | REG_SADC_STATE = 0; |
115 | //__intc_unmask_irq(IRQ_SADC); | 122 | //__intc_unmask_irq(IRQ_SADC); |
116 | } | 123 | } |
124 | else | ||
125 | *data = 0; | ||
117 | 126 | ||
118 | return ret; | 127 | return ret; |
119 | } | 128 | } |