Teach iic(4) the 'repeated start' I2C condition. This will be used by the

upcoming i2c(8) diag utility.

Reviewed by:	bms, stas
Obtained from:	Semihalf
This commit is contained in:
Rafal Jaworowski 2009-01-26 13:53:39 +00:00
parent 8154af81ff
commit 1aef11be0e
3 changed files with 13 additions and 1 deletions

View File

@ -45,13 +45,19 @@ In order to control I2C devices, use
.Pa /dev/iic?
with the
following ioctls:
.Bl -tag -width ".Dv I2CRSTCARD"
.Bl -tag -width ".Dv I2CRPTSTART"
.It Dv I2CSTART
.Pq Vt "struct iiccmd"
Sends the start condition to the slave specified by the
.Va slave
element to the bus.
All other elements are ignored.
.It Dv I2CRPTSTART
.Pq Vt "struct iiccmd"
Sends the repeated start condition to the slave specified by the
.Va slave
element to the bus.
All other elements are ignored.
.It Dv I2CSTOP
No argument is passed.
Sends the stop condition to the bus.

View File

@ -368,6 +368,11 @@ iicioctl(struct cdev *dev, u_long cmd, caddr_t data, int flags, struct thread *t
}
free(usrbufs, M_TEMP);
break;
case I2CRPTSTART:
error = iicbus_repeated_start(parent, s->slave, 0);
break;
default:
error = ENOTTY;
}

View File

@ -60,5 +60,6 @@ struct iic_rdwr_data {
#define I2CWRITE _IOW('i', 4, struct iiccmd) /* send data */
#define I2CREAD _IOW('i', 5, struct iiccmd) /* receive data */
#define I2CRDWR _IOW('i', 6, struct iic_rdwr_data) /* General read/write interface */
#define I2CRPTSTART _IOW('i', 7, struct iiccmd) /* repeated start */
#endif