The unified diff between revisions [4f22e7ef..] and [9ca449dd..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'i2c.c'

#
# old_revision [4f22e7ef7d3064e3b51a5b868a4722f3f13c747b]
# new_revision [9ca449dd7941ad52e33bdcb5c28b2ba35d54219a]
#
# patch "i2c.c"
#  from [7f5362fc29f8f8f81682424c73930b5e3044c994]
#    to [2dff1acf82a051d155952429555a65a193ba0fd5]
#
============================================================
--- i2c.c	7f5362fc29f8f8f81682424c73930b5e3044c994
+++ i2c.c	2dff1acf82a051d155952429555a65a193ba0fd5
@@ -33,8 +33,12 @@ void init_i2c(void)
 	IREG(I2CONSET) = 0x40; /* Enable I2C ready for Master Tx */
 	/* Set up for just under 400kHz */
 #ifdef I2C_FAST
+#if 0
 	IWREG(I2SCLL) = (25 * 100);
 	IWREG(I2SCLH) = (12 * 100);
+#endif
+	IWREG(I2SCLL) = 25 * 4; /* ~400kHz */
+	IWREG(I2SCLH) = 12 * 4;
 #else
 	IWREG(I2SCLL) = 73; /* ~100kHz */
 	IWREG(I2SCLH) = 73;
@@ -106,10 +110,10 @@ void __attribute__((interrupt("IRQ"))) i
 				IREG(I2CONSET) = STAFLAG;
 				IREG(I2CONCLR) = STOFLAG | AAFLAG | SIFLAG;
 			} else {
+				event_set(i2c_transaction->event);
 				i2c_transaction = NULL;
 				IREG(I2CONSET) = STOFLAG;
 				IREG(I2CONCLR) = STAFLAG | AAFLAG | SIFLAG;
-				event_set(EVENT_I2C_COMPLETE);
 			}
 		}
 		break;
@@ -137,10 +141,10 @@ void __attribute__((interrupt("IRQ"))) i
 			IREG(I2CONSET) = STAFLAG;
 			IREG(I2CONCLR) = STOFLAG | AAFLAG | SIFLAG;
 		} else {
+			event_set(i2c_transaction->event);
 			i2c_transaction = NULL;
 			IREG(I2CONSET) = STOFLAG;
 			IREG(I2CONCLR) = STAFLAG | AAFLAG | SIFLAG;
-			event_set(EVENT_I2C_COMPLETE);
 		}
 		break;
 
@@ -150,10 +154,10 @@ void __attribute__((interrupt("IRQ"))) i
 	case 0x38: /* arbitration lost during SA+W or data */
 	case 0x00: /* bus error */
 		*(i2c_transaction->result) = I2C_FAIL;
+		event_set(i2c_transaction->event);
 		i2c_transaction = NULL;
 		IREG(I2CONSET) = STOFLAG;
 		IREG(I2CONCLR) = STAFLAG | AAFLAG | SIFLAG;
-		event_set(EVENT_I2C_COMPLETE);
 		break;
 
 	/* We don't handle slave mode */