+ if (MM_SENSE && !sense_last) {
+ MM_TSTART;
+ switch(recstate) {
+ case MM_IDLE:
+ bitno = 0;
+ recstate = MM_FIRST_FAST_SAMPLE;
+ break;
+
+ case MM_FIRST_SLOW_SAMPLE:
+ recstate = MM_FAST_SAMPLE;
+ break;
+
+ case MM_FAST_WAIT_FOR_CLOCK:
+ recstate = MM_FAST_SAMPLE;
+ mm_rec_tolerated_timeouts = 0;
+ break;
+
+ case MM_SLOW_WAIT_FOR_CLOCK_DELAY: /* If clock comes early */
+ recstate = MM_SLOW_SAMPLE_DELAY;
+ break;
+
+ case MM_SLOW_WAIT_FOR_CLOCK:
+ recstate = MM_SLOW_SAMPLE_DELAY;
+ mm_rec_tolerated_timeouts = 0;
+ break;
+
+ case MM_SLOW_SAMPLE_DELAY:
+ recstate = MM_SLOW_SAMPLE;
+ break;
+
+ /* Not expected */
+ case MM_FIRST_FAST_SAMPLE:
+ case MM_FAST_SAMPLE:
+ case MM_SLOW_SAMPLE:
+ recstate = MM_IDLE;
+ default:
+ break;
+ }
+ }