summaryrefslogtreecommitdiff
path: root/firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2008-07-15 17:17:01 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2008-07-15 17:17:01 +0000
commitebb612fbcc87a9547a3603ef6188a26b0760a9aa (patch)
treef2f4432a08aa972dc786bf32fb7cbbfbf5474c5d /firmware/target/mips/ingenic_jz47xx/onda_vx747/button-onda_vx747.c
parentbd06769ba2cde7875cc06fb73a3d167f4c0bea04 (diff)
downloadrockbox-ebb612fbcc87a9547a3603ef6188a26b0760a9aa.tar.gz
rockbox-ebb612fbcc87a9547a3603ef6188a26b0760a9aa.zip
Onda VX747:
1) Improve touchscreen handling 2) Add RTC driver 4) Add NAND Flash ID scanning 3) Other minor fixes Nand_ID: Add a generic NAND ID database (currently only containg Samsung chips) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18052 a1c6a512-1295-4272-9138-f99709370657
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.c33
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
42bool button_hold(void) 42bool 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
47void button_init_device(void) 47void 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
75int button_read_device(int *data) 79int 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}