• Home
  • Raw
  • Download

Lines Matching +full:pre +full:- +full:timeout

1 // SPDX-License-Identifier: GPL-2.0-only
3 * i2c-ali1563.c - i2c driver for the ALi 1563 Southbridge
68 int timeout; in ali1563_transaction() local
69 int status = -EIO; in ali1563_transaction()
71 dev_dbg(&a->dev, "Transaction (pre): STS=%02x, CNTL1=%02x, " in ali1563_transaction()
79 dev_err(&a->dev, "ali1563: Trying to reset busy device\n"); in ali1563_transaction()
83 return -EBUSY; in ali1563_transaction()
87 timeout = ALI1563_MAX_TIMEOUT; in ali1563_transaction()
90 } while (((data = inb_p(SMB_HST_STS)) & HST_STS_BUSY) && --timeout); in ali1563_transaction()
92 dev_dbg(&a->dev, "Transaction (post): STS=%02x, CNTL1=%02x, " in ali1563_transaction()
98 if (timeout && !(data & HST_STS_BAD)) in ali1563_transaction()
101 if (!timeout) { in ali1563_transaction()
102 dev_err(&a->dev, "Timeout - Trying to KILL transaction!\n"); in ali1563_transaction()
106 status = -ETIMEDOUT; in ali1563_transaction()
109 /* device error - no response, ignore the autodetection case */ in ali1563_transaction()
112 dev_err(&a->dev, "Device error!\n"); in ali1563_transaction()
113 status = -ENXIO; in ali1563_transaction()
117 dev_err(&a->dev, "Bus collision!\n"); in ali1563_transaction()
118 /* Issue timeout, hoping it helps */ in ali1563_transaction()
123 dev_err(&a->dev, "Cleaning fail after KILL!\n"); in ali1563_transaction()
133 int timeout; in ali1563_block_start() local
134 int status = -EIO; in ali1563_block_start()
136 dev_dbg(&a->dev, "Block (pre): STS=%02x, CNTL1=%02x, " in ali1563_block_start()
144 dev_warn(&a->dev, "ali1563: Trying to reset busy device\n"); in ali1563_block_start()
148 return -EBUSY; in ali1563_block_start()
151 /* Clear byte-ready bit */ in ali1563_block_start()
154 /* Start transaction and wait for byte-ready bit to be set */ in ali1563_block_start()
157 timeout = ALI1563_MAX_TIMEOUT; in ali1563_block_start()
160 } while (!((data = inb_p(SMB_HST_STS)) & HST_STS_DONE) && --timeout); in ali1563_block_start()
162 dev_dbg(&a->dev, "Block (post): STS=%02x, CNTL1=%02x, " in ali1563_block_start()
168 if (timeout && !(data & HST_STS_BAD)) in ali1563_block_start()
171 if (timeout == 0) in ali1563_block_start()
172 status = -ETIMEDOUT; in ali1563_block_start()
175 status = -ENXIO; in ali1563_block_start()
177 dev_err(&a->dev, "SMBus Error: %s%s%s%s%s\n", in ali1563_block_start()
178 timeout ? "" : "Timeout ", in ali1563_block_start()
196 len = data->block[0]; in ali1563_block()
202 outb_p(data->block[1], SMB_BLK_DAT); in ali1563_block()
210 outb_p(data->block[i + 1], SMB_BLK_DAT); in ali1563_block()
225 data->block[i+1] = inb_p(SMB_BLK_DAT); in ali1563_block()
238 int timeout; in ali1563_access() local
241 for (timeout = ALI1563_MAX_TIMEOUT; timeout; timeout--) { in ali1563_access()
246 if (!timeout) in ali1563_access()
247 dev_warn(&a->dev, "SMBus not idle. HST_STS = %02x\n", reg); in ali1563_access()
268 dev_warn(&a->dev, "Unsupported transaction %d\n", size); in ali1563_access()
269 error = -EOPNOTSUPP; in ali1563_access()
288 outb_p(data->byte, SMB_HST_DAT0); in ali1563_access()
293 outb_p(data->word & 0xff, SMB_HST_DAT0); in ali1563_access()
294 outb_p((data->word & 0xff00) >> 8, SMB_HST_DAT1); in ali1563_access()
312 data->byte = inb_p(SMB_HST_DAT0); in ali1563_access()
315 data->byte = inb_p(SMB_HST_DAT0); in ali1563_access()
318 data->word = inb_p(SMB_HST_DAT0) + (inb_p(SMB_HST_DAT1) << 8); in ali1563_access()
341 ali1563_smba = ctrl & ~(ALI1563_SMB_IOSIZE - 1); in ali1563_setup()
343 dev_warn(&dev->dev, "ali1563_smba Uninitialized\n"); in ali1563_setup()
349 dev_warn(&dev->dev, "Host Controller not enabled\n"); in ali1563_setup()
353 dev_warn(&dev->dev, "I/O space not enabled, trying manually\n"); in ali1563_setup()
358 dev_err(&dev->dev, in ali1563_setup()
370 dev_err(&dev->dev, "Could not allocate I/O space at 0x%04x\n", in ali1563_setup()
374 dev_info(&dev->dev, "Found ALi1563 SMBus at 0x%04x\n", ali1563_smba); in ali1563_setup()
378 return -ENODEV; in ali1563_setup()
405 ali1563_adapter.dev.parent = &dev->dev; in ali1563_probe()
416 dev_warn(&dev->dev, "ALi1563 SMBus probe failed (%d)\n", error); in ali1563_probe()