diff options
Diffstat (limited to 'share/man/man4/iic.4')
-rw-r--r-- | share/man/man4/iic.4 | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/share/man/man4/iic.4 b/share/man/man4/iic.4 new file mode 100644 index 000000000000..7d6141ca7377 --- /dev/null +++ b/share/man/man4/iic.4 @@ -0,0 +1,188 @@ +.\" Copyright (c) 2006, M. Warner Losh +.\" Copyright (c) 1998, Nicolas Souchu +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd September 6, 2006 +.Dt IIC 4 +.Os +.Sh NAME +.Nm iic +.Nd I2C generic I/O device driver +.Sh SYNOPSIS +.Cd "device iic" +.Pp +.In dev/iicbus/iic.h +.Sh DESCRIPTION +The +.Nm +device driver provides generic I/O to any +.Xr iicbus 4 +instance. +In order to control I2C devices, use +.Pa /dev/iic? +with the +following ioctls: +.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. +This terminates the current transaction. +.It Dv I2CRSTCARD +.Pq Vt "struct iiccmd" +Resets the bus. +The argument is completely ignored. +.It Dv I2CWRITE +.Pq Vt "struct iiccmd" +Writes data to the +.Xr iicbus 4 . +The bus should already be started. +The +.Va slave +element is ignored. +The +.Va count +element is the number of bytes to write. +The +.Va last +element is a boolean flag. +It is non-zero when additional write commands will follow. +The +.Va buf +element is a pointer to the data to write to the bus. +.It Dv I2CREAD +.Pq Vt "struct iiccmd" +Reads data from the +.Xr iicbus 4 . +The bus should already be started. +The +.Va slave +element is ignored. +The +.Va count +element is the number of bytes to write. +The +.Va last +element is a boolean flag. +It is non-zero when additional write commands will follow. +The +.Va buf +element is a pointer to where to store the data read from the bus. +Short reads on the bus produce undefined results. +.It Dv I2CRDWR +.Pq Vt "struct iic_rdwr_data" +Generic read/write interface. +Allows for an arbitrary number of commands to be sent to +an arbitrary number of devices on the bus. +A read transfer is specified if +.Dv IIC_M_RD +is set in +.Va flags . +Otherwise the transfer is a write transfer. +The +.Va slave +element specifies the 7-bit address for the transfer. +The +.Va len +element is the length of the data. +The +.Va buf +element is a buffer for that data. +This ioctl is intended to be +.Tn Linux +compatible. +.El +.Pp +The following data structures are defined in +.In dev/iicbus/iic.h +and referenced above: +.Bd -literal -offset indent +struct iiccmd { + u_char slave; + int count; + int last; + char *buf; +}; + +/* Designed to be compatible with linux's struct i2c_msg */ +struct iic_msg +{ + uint16_t slave; + uint16_t flags; +#define IIC_M_RD 0x0001 /* read vs write */ + uint16_t len; /* msg legnth */ + uint8_t * buf; +}; + +struct iic_rdwr_data { + struct iic_msg *msgs; + uint32_t nmsgs; +}; +.Ed +.Pp +It is also possible to use read/write routines, then I2C start/stop handshake is +managed by the +.Xr iicbus 4 +system. +However, the address used for the read/write routines is the one +passed to last +.Dv I2CSTART +.Xr ioctl 2 +to this device. +.Sh SEE ALSO +.Xr ioctl 2 , +.Xr read 2 , +.Xr write 2 , +.Xr iicbus 4 +.Sh HISTORY +The +.Nm +manual page first appeared in +.Fx 3.0 . +.Sh AUTHORS +.An -nosplit +This +manual page was written by +.An Nicolas Souchu +and +.An M. Warner Losh . +.Sh BUGS +Only the +.Dv I2CRDWR +.Xr ioctl 2 +is thread safe. +All other interfaces suffer from some kind of race. |