DBOP noise on C200v2 goes away if we precharge long enough.
authorranma <ranma@a1c6a512-1295-4272-9138-f99709370657>
Sun, 27 Jun 2010 02:50:24 +0000 (27 02:50 +0000)
committerranma <ranma@a1c6a512-1295-4272-9138-f99709370657>
Sun, 27 Jun 2010 02:50:24 +0000 (27 02:50 +0000)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27148 a1c6a512-1295-4272-9138-f99709370657

firmware/target/arm/as3525/dbop-as3525.c
firmware/target/arm/as3525/debug-as3525.c

index 87bc46e..1816b52 100644 (file)
 /* 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)
index e6ae3a4..71a8a85 100644 (file)
@@ -269,21 +269,10 @@ 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_w_tmo(HZ/10);
         if(btn == (DEBUG_CANCEL|BUTTON_REL))