From f12adeebc6aad58f98de2e5a45668d82e536b80e Mon Sep 17 00:00:00 2001 From: Domen Puncer Date: Sun, 13 Aug 2006 23:35:40 +0200 Subject: [PATCH] --- yaml --- r: 36095 b: refs/heads/master c: 8859942ede8154c1e90e3b0d1b60aecf0cfaa169 h: refs/heads/master i: 36093: fc7c2fed4e96bcf4e96f5f849cdf017ff1da9cad 36091: f268e4d97f5b458c5484b048d69fb265d3a868c8 36087: 791e568bdddf03ea4994c2719b7dc9f2ed112859 36079: 8d3a41e192c98ae9149200684fb165fa2b548b61 36063: 0fd5b56f5f3f49dbc748972517563bbf3009c8c4 36031: f412790da9fb72324bb3e163e03c0ff64e4b65b7 35967: 235b6c1be9777585a62070da1bf8eff709c1c14e 35839: cc4705e82321182264dfd8639d14018807456dff v: v3 --- [refs] | 2 +- trunk/drivers/i2c/busses/i2c-au1550.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index d7313955a54a..4484fc2a7926 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 643bd3fbd9dc73ed3dc1e4f6980e6f15fdbb9bb6 +refs/heads/master: 8859942ede8154c1e90e3b0d1b60aecf0cfaa169 diff --git a/trunk/drivers/i2c/busses/i2c-au1550.c b/trunk/drivers/i2c/busses/i2c-au1550.c index d06edce03bf4..02a359ebc0f0 100644 --- a/trunk/drivers/i2c/busses/i2c-au1550.c +++ b/trunk/drivers/i2c/busses/i2c-au1550.c @@ -118,13 +118,19 @@ do_address(struct i2c_au1550_data *adap, unsigned int addr, int rd) /* Reset the FIFOs, clear events. */ - sp->psc_smbpcr = PSC_SMBPCR_DC; + stat = sp->psc_smbstat; 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(); - } 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 */