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:
Ian Lepore 2015-10-09 22:49:50 +00:00
parent d2c05e201f
commit d1e99670ae
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=289093
7 changed files with 11 additions and 11 deletions

View File

@ -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)

View File

@ -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 */

View File

@ -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);

View File

@ -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);

View File

@ -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 */

View File

@ -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

View File

@ -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 */