diff options
| author | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-04-16 06:01:24 +0000 |
|---|---|---|
| committer | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-04-16 06:01:24 +0000 |
| commit | 0a3d50b88f90d579bd628927daa35b55d1d839ff (patch) | |
| tree | 20015215ce7dccf6e03ee51411211dae256ea604 | |
| parent | eee235f0b4abbd602ea9b192b467a5ca5c23e86d (diff) | |
| download | rockbox-0a3d50b88f90d579bd628927daa35b55d1d839ff.zip rockbox-0a3d50b88f90d579bd628927daa35b55d1d839ff.tar.gz rockbox-0a3d50b88f90d579bd628927daa35b55d1d839ff.tar.bz2 rockbox-0a3d50b88f90d579bd628927daa35b55d1d839ff.tar.xz | |
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.c | 40 | ||||
| -rw-r--r-- | firmware/target/arm/as3525/debug-as3525.c | 13 |
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 5ca551c..66202b7 100644 --- a/firmware/target/arm/as3525/dbop-as3525.c +++ b/firmware/target/arm/as3525/dbop-as3525.c @@ -34,9 +34,49 @@ /* doesn't work with the new ams sansas so far and is not needed */ static short int dbop_input_value = 0; +#if defined(SANSA_C200V2) +/* + * workaround DBOP noise issue cause it's really annoying if your + * buttons don't work in the debug menu... + */ +static short int input_value_tmp[2]; +int dbop_denoise_reject = 0; +int dbop_denoise_accept = 0; +#endif + /* read the DBOP data pins */ +#if defined(SANSA_C200V2) +unsigned short dbop_read_input_once(void); + unsigned short dbop_read_input(void) { + int i; + + while (1) { + for (i=0; i<2; i++) { + input_value_tmp[i] = dbop_read_input_once(); + } + /* noise rejection */ + if (input_value_tmp[0] == input_value_tmp[1]) { + dbop_denoise_accept++; + break; + } else { + dbop_denoise_reject++; + } + } + if (dbop_denoise_accept + dbop_denoise_reject > 1000) { + dbop_denoise_accept /= 2; + dbop_denoise_reject /= 2; + } + + return dbop_input_value; +} + +unsigned short dbop_read_input_once(void) +#else +unsigned short dbop_read_input(void) +#endif +{ unsigned int dbop_ctrl_old = DBOP_CTRL; unsigned int dbop_timpol23_old = DBOP_TIMPOL_23; diff --git a/firmware/target/arm/as3525/debug-as3525.c b/firmware/target/arm/as3525/debug-as3525.c index 06c22c0..cfd7c37 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) while(1) { #ifdef SANSA_C200V2 + extern int dbop_denoise_accept; + extern int dbop_denoise_reject; + lcd_clear_display(); line = 0; lcd_puts(0, line++, "[Submodel:]"); lcd_putsf(0, line++, "C200v2 variant %d", c200v2_variant); + if (dbop_denoise_accept) { + lcd_putsf(0, line++, "DBOP noise: %d%%", + (100*dbop_denoise_reject)/dbop_denoise_accept); + } else { + lcd_puts(0, line++, "DBOP noise: oo"); + } + lcd_putsf(0, line++, "reject: %d", dbop_denoise_reject); + lcd_putsf(0, line++, "accept: %d", dbop_denoise_accept); lcd_update(); - int btn = button_get(1); + int btn = button_get_w_tmo(HZ/10); if(btn == (DEBUG_CANCEL|BUTTON_REL)) goto end; else if(btn == (BUTTON_DOWN|BUTTON_REL)) |