mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
i2c-isch: Decrease delay in command completion check loop
Generally it is not needed to wait for 1 msec, the SMBus get often ready in less than 200 usecs. msleep(1) can wait up to 20 msecs... It has a significant impact when there is a burst of transactions on the bus. Signed-off-by: Olivier Sobrie <olivier@sobrie.be> Signed-off-by: Jean Delvare <khali@linux-fr.org>
This commit is contained in:
parent
c54c35572a
commit
b3240e68c0
@ -47,7 +47,7 @@
|
|||||||
#define SMBBLKDAT (0x20 + sch_smba)
|
#define SMBBLKDAT (0x20 + sch_smba)
|
||||||
|
|
||||||
/* Other settings */
|
/* Other settings */
|
||||||
#define MAX_TIMEOUT 500
|
#define MAX_RETRIES 5000
|
||||||
|
|
||||||
/* I2C constants */
|
/* I2C constants */
|
||||||
#define SCH_QUICK 0x00
|
#define SCH_QUICK 0x00
|
||||||
@ -68,7 +68,7 @@ static int sch_transaction(void)
|
|||||||
{
|
{
|
||||||
int temp;
|
int temp;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
int timeout = 0;
|
int retries = 0;
|
||||||
|
|
||||||
dev_dbg(&sch_adapter.dev, "Transaction (pre): CNT=%02x, CMD=%02x, "
|
dev_dbg(&sch_adapter.dev, "Transaction (pre): CNT=%02x, CMD=%02x, "
|
||||||
"ADD=%02x, DAT0=%02x, DAT1=%02x\n", inb(SMBHSTCNT),
|
"ADD=%02x, DAT0=%02x, DAT1=%02x\n", inb(SMBHSTCNT),
|
||||||
@ -100,12 +100,12 @@ static int sch_transaction(void)
|
|||||||
outb(inb(SMBHSTCNT) | 0x10, SMBHSTCNT);
|
outb(inb(SMBHSTCNT) | 0x10, SMBHSTCNT);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
msleep(1);
|
usleep_range(100, 200);
|
||||||
temp = inb(SMBHSTSTS) & 0x0f;
|
temp = inb(SMBHSTSTS) & 0x0f;
|
||||||
} while ((temp & 0x08) && (timeout++ < MAX_TIMEOUT));
|
} while ((temp & 0x08) && (retries++ < MAX_RETRIES));
|
||||||
|
|
||||||
/* If the SMBus is still busy, we give up */
|
/* If the SMBus is still busy, we give up */
|
||||||
if (timeout > MAX_TIMEOUT) {
|
if (retries > MAX_RETRIES) {
|
||||||
dev_err(&sch_adapter.dev, "SMBus Timeout!\n");
|
dev_err(&sch_adapter.dev, "SMBus Timeout!\n");
|
||||||
result = -ETIMEDOUT;
|
result = -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user