|
@@ -51,6 +51,7 @@ struct pasemi_smbus {
|
|
|
#define MRXFIFO_DATA_M 0x000000ff
|
|
|
|
|
|
#define SMSTA_XEN 0x08000000
|
|
|
+#define SMSTA_MTN 0x00200000
|
|
|
|
|
|
#define CTL_MRR 0x00000400
|
|
|
#define CTL_MTR 0x00000200
|
|
@@ -98,6 +99,10 @@ static unsigned int pasemi_smb_waitready(struct pasemi_smbus *smbus)
|
|
|
status = reg_read(smbus, REG_SMSTA);
|
|
|
}
|
|
|
|
|
|
+ /* Got NACK? */
|
|
|
+ if (status & SMSTA_MTN)
|
|
|
+ return -ENXIO;
|
|
|
+
|
|
|
if (timeout < 0) {
|
|
|
dev_warn(&smbus->dev->dev, "Timeout, status 0x%08x\n", status);
|
|
|
reg_write(smbus, REG_SMSTA, status);
|