summaryrefslogtreecommitdiff
path: root/common/soft_i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/soft_i2c.c')
-rw-r--r--common/soft_i2c.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/common/soft_i2c.c b/common/soft_i2c.c
index 3d0e08c..bffcd44 100644
--- a/common/soft_i2c.c
+++ b/common/soft_i2c.c
@@ -39,6 +39,10 @@
/* #define DEBUG_I2C */
+#ifdef DEBUG_I2C
+DECLARE_GLOBAL_DATA_PTR;
+#endif
+
/*-----------------------------------------------------------------------
* Definitions
@@ -53,7 +57,6 @@
#ifdef DEBUG_I2C
#define PRINTD(fmt,args...) do { \
- DECLARE_GLOBAL_DATA_PTR; \
if (gd->have_console) \
printf (fmt ,##args); \
} while (0)
@@ -164,13 +167,10 @@ static void send_ack(int ack)
volatile immap_t *immr = (immap_t *)CFG_IMMR;
#endif
- I2C_ACTIVE;
I2C_SCL(0);
I2C_DELAY;
-
- I2C_SDA(ack);
-
I2C_ACTIVE;
+ I2C_SDA(ack);
I2C_DELAY;
I2C_SCL(1);
I2C_DELAY;
@@ -288,7 +288,10 @@ int i2c_probe(uchar addr)
{
int rc;
- /* perform 1 byte read transaction */
+ /*
+ * perform 1 byte write transaction with just address byte
+ * (fake write)
+ */
send_start();
rc = write_byte ((addr << 1) | 0);
send_stop();