git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
i2c
/
busses
/
i2c-au1550.c
diff --git
a/drivers/i2c/busses/i2c-au1550.c
b/drivers/i2c/busses/i2c-au1550.c
index
d06edce
..
d7e7c35
100644
(file)
--- a/
drivers/i2c/busses/i2c-au1550.c
+++ b/
drivers/i2c/busses/i2c-au1550.c
@@
-34,8
+34,7
@@
#include <linux/errno.h>
#include <linux/i2c.h>
#include <linux/errno.h>
#include <linux/i2c.h>
-#include <asm/mach-au1x00/au1000.h>
-#include <asm/mach-pb1x00/pb1550.h>
+#include <asm/mach-au1x00/au1xxx.h>
#include <asm/mach-au1x00/au1xxx_psc.h>
#include "i2c-au1550.h"
#include <asm/mach-au1x00/au1xxx_psc.h>
#include "i2c-au1550.h"
@@
-118,13
+117,19
@@
do_address(struct i2c_au1550_data *adap, unsigned int addr, int rd)
/* Reset the FIFOs, clear events.
*/
/* Reset the FIFOs, clear events.
*/
- s
p->psc_smbpcr = PSC_SMBPCR_DC
;
+ s
tat = sp->psc_smbstat
;
sp->psc_smbevnt = PSC_SMBEVNT_ALLCLR;
au_sync();
sp->psc_smbevnt = PSC_SMBEVNT_ALLCLR;
au_sync();
- do {
- stat = sp->psc_smbpcr;
+
+ if (!(stat & PSC_SMBSTAT_TE) || !(stat & PSC_SMBSTAT_RE)) {
+ sp->psc_smbpcr = PSC_SMBPCR_DC;
au_sync();
au_sync();
- } while ((stat & PSC_SMBPCR_DC) != 0);
+ do {
+ stat = sp->psc_smbpcr;
+ au_sync();
+ } while ((stat & PSC_SMBPCR_DC) != 0);
+ udelay(50);
+ }
/* Write out the i2c chip address and specify operation
*/
/* Write out the i2c chip address and specify operation
*/
@@
-279,10
+284,10
@@
au1550_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, int num)
static u32
au1550_func(struct i2c_adapter *adap)
{
static u32
au1550_func(struct i2c_adapter *adap)
{
- return I2C_FUNC_I2C;
+ return I2C_FUNC_I2C
| I2C_FUNC_SMBUS_EMUL
;
}
}
-static struct i2c_algorithm au1550_algo = {
+static
const
struct i2c_algorithm au1550_algo = {
.master_xfer = au1550_xfer,
.functionality = au1550_func,
};
.master_xfer = au1550_xfer,
.functionality = au1550_func,
};