diff options
author | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-06-27 02:50:24 +0000 |
---|---|---|
committer | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-06-27 02:50:24 +0000 |
commit | eefe273ce6395f3f6872a63f0a0f242b5065a17e (patch) | |
tree | f089b8ca89e1209746c58b213abc5a6fcd73f784 /firmware/target/arm/as3525/dbop-as3525.c | |
parent | ac40959c48ced2c2dee30d3977e1671ceb941371 (diff) |
DBOP noise on C200v2 goes away if we precharge long enough.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27148 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/dbop-as3525.c')
-rw-r--r-- | firmware/target/arm/as3525/dbop-as3525.c | 45 |
1 files changed, 5 insertions, 40 deletions
diff --git a/firmware/target/arm/as3525/dbop-as3525.c b/firmware/target/arm/as3525/dbop-as3525.c index 87bc46e145..1816b5205b 100644 --- a/firmware/target/arm/as3525/dbop-as3525.c +++ b/firmware/target/arm/as3525/dbop-as3525.c @@ -34,49 +34,9 @@ /* 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; @@ -92,6 +52,11 @@ unsigned short dbop_read_input(void) (1 << 16) | /* enw=1 (enable write) */ (1 << 12); /* ow=1 (16-bit data width) */ DBOP_DOUT = DBOP_PRECHARGE; +#if defined(SANSA_C200V2) + /* two additional writes to precharge longer get rid of the read noise */ + DBOP_DOUT = DBOP_PRECHARGE; + DBOP_DOUT = DBOP_PRECHARGE; +#endif while ((DBOP_STAT & (1<<10)) == 0); #if defined(SANSA_FUZE) || defined(SANSA_E200V2) |