summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Diedrich <ranma+coreboot@tdiedrich.de>2010-04-16 06:01:24 +0000
committerTobias Diedrich <ranma+coreboot@tdiedrich.de>2010-04-16 06:01:24 +0000
commit0a3d50b88f90d579bd628927daa35b55d1d839ff (patch)
tree20015215ce7dccf6e03ee51411211dae256ea604
parenteee235f0b4abbd602ea9b192b467a5ca5c23e86d (diff)
downloadrockbox-0a3d50b88f90d579bd628927daa35b55d1d839ff.tar.gz
rockbox-0a3d50b88f90d579bd628927daa35b55d1d839ff.zip
workaround DBOP noise issue on C200v2 cause it's really annoying if your buttons don't work in the debug menu...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25655 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/as3525/dbop-as3525.c40
-rw-r--r--firmware/target/arm/as3525/debug-as3525.c13
2 files changed, 52 insertions, 1 deletions
diff --git a/firmware/target/arm/as3525/dbop-as3525.c b/firmware/target/arm/as3525/dbop-as3525.c
index 5ca551ca70..66202b70b7 100644
--- a/firmware/target/arm/as3525/dbop-as3525.c
+++ b/firmware/target/arm/as3525/dbop-as3525.c
@@ -34,9 +34,49 @@
34/* doesn't work with the new ams sansas so far and is not needed */ 34/* doesn't work with the new ams sansas so far and is not needed */
35static short int dbop_input_value = 0; 35static short int dbop_input_value = 0;
36 36
37#if defined(SANSA_C200V2)
38/*
39 * workaround DBOP noise issue cause it's really annoying if your
40 * buttons don't work in the debug menu...
41 */
42static short int input_value_tmp[2];
43int dbop_denoise_reject = 0;
44int dbop_denoise_accept = 0;
45#endif
46
37/* read the DBOP data pins */ 47/* read the DBOP data pins */
48#if defined(SANSA_C200V2)
49unsigned short dbop_read_input_once(void);
50
38unsigned short dbop_read_input(void) 51unsigned short dbop_read_input(void)
39{ 52{
53 int i;
54
55 while (1) {
56 for (i=0; i<2; i++) {
57 input_value_tmp[i] = dbop_read_input_once();
58 }
59 /* noise rejection */
60 if (input_value_tmp[0] == input_value_tmp[1]) {
61 dbop_denoise_accept++;
62 break;
63 } else {
64 dbop_denoise_reject++;
65 }
66 }
67 if (dbop_denoise_accept + dbop_denoise_reject > 1000) {
68 dbop_denoise_accept /= 2;
69 dbop_denoise_reject /= 2;
70 }
71
72 return dbop_input_value;
73}
74
75unsigned short dbop_read_input_once(void)
76#else
77unsigned short dbop_read_input(void)
78#endif
79{
40 unsigned int dbop_ctrl_old = DBOP_CTRL; 80 unsigned int dbop_ctrl_old = DBOP_CTRL;
41 unsigned int dbop_timpol23_old = DBOP_TIMPOL_23; 81 unsigned int dbop_timpol23_old = DBOP_TIMPOL_23;
42 82
diff --git a/firmware/target/arm/as3525/debug-as3525.c b/firmware/target/arm/as3525/debug-as3525.c
index 06c22c027c..cfd7c37b16 100644
--- a/firmware/target/arm/as3525/debug-as3525.c
+++ b/firmware/target/arm/as3525/debug-as3525.c
@@ -257,12 +257,23 @@ bool __dbg_hw_info(void)
257 while(1) 257 while(1)
258 { 258 {
259#ifdef SANSA_C200V2 259#ifdef SANSA_C200V2
260 extern int dbop_denoise_accept;
261 extern int dbop_denoise_reject;
262
260 lcd_clear_display(); 263 lcd_clear_display();
261 line = 0; 264 line = 0;
262 lcd_puts(0, line++, "[Submodel:]"); 265 lcd_puts(0, line++, "[Submodel:]");
263 lcd_putsf(0, line++, "C200v2 variant %d", c200v2_variant); 266 lcd_putsf(0, line++, "C200v2 variant %d", c200v2_variant);
267 if (dbop_denoise_accept) {
268 lcd_putsf(0, line++, "DBOP noise: %d%%",
269 (100*dbop_denoise_reject)/dbop_denoise_accept);
270 } else {
271 lcd_puts(0, line++, "DBOP noise: oo");
272 }
273 lcd_putsf(0, line++, "reject: %d", dbop_denoise_reject);
274 lcd_putsf(0, line++, "accept: %d", dbop_denoise_accept);
264 lcd_update(); 275 lcd_update();
265 int btn = button_get(1); 276 int btn = button_get_w_tmo(HZ/10);
266 if(btn == (DEBUG_CANCEL|BUTTON_REL)) 277 if(btn == (DEBUG_CANCEL|BUTTON_REL))
267 goto end; 278 goto end;
268 else if(btn == (BUTTON_DOWN|BUTTON_REL)) 279 else if(btn == (BUTTON_DOWN|BUTTON_REL))