diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-05-16 21:20:52 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-05-16 21:20:52 +0000 |
| commit | 250c3b65dfb0eccce25bf71d5b31d248b7b95c8a (patch) | |
| tree | 03c2a04bbfffd2bd5113617debc77bfbc9b1b70e /firmware | |
| parent | 0e085999d50578eff8bf89e71a88b9a9e05e3463 (diff) | |
| download | rockbox-250c3b65dfb0eccce25bf71d5b31d248b7b95c8a.zip rockbox-250c3b65dfb0eccce25bf71d5b31d248b7b95c8a.tar.gz rockbox-250c3b65dfb0eccce25bf71d5b31d248b7b95c8a.tar.bz2 rockbox-250c3b65dfb0eccce25bf71d5b31d248b7b95c8a.tar.xz | |
Now yields when waiting for flow control
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@607 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
| -rw-r--r-- | firmware/drivers/i2c.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/firmware/drivers/i2c.c b/firmware/drivers/i2c.c index 3a5603d..3ef2f48 100644 --- a/firmware/drivers/i2c.c +++ b/firmware/drivers/i2c.c @@ -18,6 +18,7 @@ ****************************************************************************/ #include "lcd.h" #include "sh7034.h" +#include "kernel.h" #include "debug.h" #define PB13 0x2000 @@ -94,7 +95,8 @@ void i2c_ack(int bit) SDA_LO; SCL_INPUT; /* Set the clock to input */ - while(!SCL); /* and wait for the MAS to release it */ + while(!SCL) /* and wait for the MAS to release it */ + yield(); DELAY; SCL_OUTPUT; @@ -114,8 +116,9 @@ int i2c_getack(void) SDA_INPUT; /* And set to input */ SCL_LO; /* Set the clock low */ SCL_INPUT; /* Set the clock to input */ - while(!SCL); /* and wait for the MAS to release it */ - + while(!SCL) /* and wait for the MAS to release it */ + yield(); + x = SDA; if (x) /* ack failed */ |