mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-18 10:35:55 +00:00
Use IIC_EBUSBSY and IIC_BUSERR status values consistantly across all drivers.
Make it clearer what each one means in the comments that define them. IIC_BUSBSY was used in many places to mean two different things, either "someone else has reserved the bus so you have to wait until they're done" or "the signal level on the bus was not in the state I expected before/after issuing some command". Now IIC_BUSERR is used consistantly to refer to protocol/signaling errors, and IIC_BUSBSY refers to ownership/reservation of the bus.
This commit is contained in:
parent
d2c05e201f
commit
d1e99670ae
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=289093
@ -243,7 +243,7 @@ wait_for_xfer(struct i2c_softc *sc, int checkack)
|
||||
sr = i2c_read_reg(sc, I2C_STATUS_REG);
|
||||
if (sr & I2CSR_MIF) {
|
||||
if (sr & I2CSR_MAL)
|
||||
return (IIC_EBUSBSY);
|
||||
return (IIC_EBUSERR);
|
||||
else if (checkack && (sr & I2CSR_RXAK))
|
||||
return (IIC_ENOACK);
|
||||
else
|
||||
@ -350,7 +350,7 @@ i2c_start(device_t dev, u_char slave, int timeout)
|
||||
i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
|
||||
DELAY(10); /* Delay for controller to sample bus state. */
|
||||
if (i2c_read_reg(sc, I2C_STATUS_REG) & I2CSR_MBB) {
|
||||
return (i2c_error_handler(sc, IIC_EBUSBSY));
|
||||
return (i2c_error_handler(sc, IIC_EBUSERR));
|
||||
}
|
||||
i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN | I2CCR_MSTA | I2CCR_MTX);
|
||||
if ((error = wait_for_busbusy(sc, true)) != IIC_NOERR)
|
||||
|
@ -232,7 +232,7 @@ i2c_repeated_start(device_t dev, u_char slave, int timeout)
|
||||
|
||||
if ((READ1(sc, I2C_IBSR) & IBSR_IBB) == 0) {
|
||||
mtx_unlock(&sc->mutex);
|
||||
return (IIC_EBUSBSY);
|
||||
return (IIC_EBUSERR);
|
||||
}
|
||||
|
||||
/* Set repeated start condition */
|
||||
@ -275,7 +275,7 @@ i2c_start(device_t dev, u_char slave, int timeout)
|
||||
if (READ1(sc, I2C_IBSR) & IBSR_IBB) {
|
||||
mtx_unlock(&sc->mutex);
|
||||
vf_i2c_dbg(sc, "cant i2c start: IIC_EBUSBSY\n");
|
||||
return (IIC_EBUSBSY);
|
||||
return (IIC_EBUSERR);
|
||||
}
|
||||
|
||||
/* Set start condition */
|
||||
|
@ -263,8 +263,8 @@ i2c_start(device_t dev, u_char slave, int timeout)
|
||||
error = wait_for_nibb(sc);
|
||||
if (error) {
|
||||
mtx_unlock(&sc->mutex);
|
||||
DPRINTF("cant i2c start: IIC_EBUSBSY\n");
|
||||
return (IIC_EBUSBSY);
|
||||
DPRINTF("cant i2c start: IIC_EBUSERR\n");
|
||||
return (IIC_EBUSERR);
|
||||
}
|
||||
|
||||
reg = READ1(sc, I2CCON);
|
||||
|
@ -236,7 +236,7 @@ iicoc_detach(device_t dev)
|
||||
static int
|
||||
iicoc_start(device_t dev, u_char slave, int timeout)
|
||||
{
|
||||
int error = IIC_EBUSBSY;
|
||||
int error = IIC_EBUSERR;
|
||||
struct iicoc_softc *sc;
|
||||
|
||||
sc = device_get_softc(dev);
|
||||
|
@ -82,10 +82,10 @@
|
||||
* adapter layer errors
|
||||
*/
|
||||
#define IIC_NOERR 0x0 /* no error occured */
|
||||
#define IIC_EBUSERR 0x1 /* bus error */
|
||||
#define IIC_EBUSERR 0x1 /* bus error (hardware not in expected state) */
|
||||
#define IIC_ENOACK 0x2 /* ack not received until timeout */
|
||||
#define IIC_ETIMEOUT 0x3 /* timeout */
|
||||
#define IIC_EBUSBSY 0x4 /* bus busy */
|
||||
#define IIC_EBUSBSY 0x4 /* bus busy (reserved by another client) */
|
||||
#define IIC_ESTATUS 0x5 /* status error */
|
||||
#define IIC_EUNDERFLOW 0x6 /* slave ready for more data */
|
||||
#define IIC_EOVERFLOW 0x7 /* too much data */
|
||||
|
@ -170,7 +170,7 @@ pcf_start(device_t dev, u_char slave, int timeout)
|
||||
printf("pcf: busy!\n");
|
||||
#endif
|
||||
PCF_UNLOCK(sc);
|
||||
return (IIC_EBUSBSY);
|
||||
return (IIC_EBUSERR);
|
||||
}
|
||||
|
||||
/* set slave address to PCF. Last bit (LSB) must be set correctly
|
||||
|
@ -284,7 +284,7 @@ i2c_start(device_t dev, u_char slave, int timeout)
|
||||
debugf("bus busy");
|
||||
mtx_unlock(&sc->mutex);
|
||||
i2c_stop(dev);
|
||||
return (IIC_EBUSBSY);
|
||||
return (IIC_EBUSERR);
|
||||
}
|
||||
|
||||
/* Set start condition */
|
||||
|
Loading…
Reference in New Issue
Block a user