|
@@ -18,14 +18,6 @@
|
|
|
#include "qom/object.h"
|
|
|
#include "trace.h"
|
|
|
|
|
|
-//#define DEBUG_BITBANG_I2C
|
|
|
-
|
|
|
-#ifdef DEBUG_BITBANG_I2C
|
|
|
-#define DPRINTF(fmt, ...) \
|
|
|
-do { printf("bitbang_i2c: " fmt , ## __VA_ARGS__); } while (0)
|
|
|
-#else
|
|
|
-#define DPRINTF(fmt, ...) do {} while(0)
|
|
|
-#endif
|
|
|
|
|
|
/* bitbang_i2c_state enum to name */
|
|
|
static const char * const sname[] = {
|
|
@@ -71,8 +63,10 @@ static void bitbang_i2c_enter_stop(bitbang_i2c_interface *i2c)
|
|
|
/* Set device data pin. */
|
|
|
static int bitbang_i2c_ret(bitbang_i2c_interface *i2c, int level)
|
|
|
{
|
|
|
+ trace_bitbang_i2c_data(i2c->last_clock, i2c->last_data,
|
|
|
+ i2c->device_out, level);
|
|
|
i2c->device_out = level;
|
|
|
- //DPRINTF("%d %d %d\n", i2c->last_clock, i2c->last_data, i2c->device_out);
|
|
|
+
|
|
|
return level & i2c->last_data;
|
|
|
}
|
|
|
|
|
@@ -137,11 +131,11 @@ int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level)
|
|
|
|
|
|
if (i2c->current_addr < 0) {
|
|
|
i2c->current_addr = i2c->buffer;
|
|
|
- DPRINTF("Address 0x%02x\n", i2c->current_addr);
|
|
|
+ trace_bitbang_i2c_addr(i2c->current_addr);
|
|
|
ret = i2c_start_transfer(i2c->bus, i2c->current_addr >> 1,
|
|
|
i2c->current_addr & 1);
|
|
|
} else {
|
|
|
- DPRINTF("Sent 0x%02x\n", i2c->buffer);
|
|
|
+ trace_bitbang_i2c_send(i2c->buffer);
|
|
|
ret = i2c_send(i2c->bus, i2c->buffer);
|
|
|
}
|
|
|
if (ret) {
|
|
@@ -161,7 +155,7 @@ int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level)
|
|
|
}
|
|
|
case RECEIVING_BIT7:
|
|
|
i2c->buffer = i2c_recv(i2c->bus);
|
|
|
- DPRINTF("RX byte 0x%02x\n", i2c->buffer);
|
|
|
+ trace_bitbang_i2c_recv(i2c->buffer);
|
|
|
/* Fall through... */
|
|
|
case RECEIVING_BIT6 ... RECEIVING_BIT0:
|
|
|
data = i2c->buffer >> 7;
|