i2c(3): Add documentation for kernels devi2c
This commit is contained in:
parent
467c95b4a8
commit
06d7118e94
1 changed files with 99 additions and 0 deletions
99
sys/man/3/i2c
Normal file
99
sys/man/3/i2c
Normal file
|
@ -0,0 +1,99 @@
|
|||
.TH I2C 3
|
||||
.SH NAME
|
||||
i2c \- I²C Bus Interface
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B bind -a #J /dev
|
||||
.PP
|
||||
.nf
|
||||
.BI /dev/ bus /i2c. n .ctl
|
||||
.BI /dev/ bus /i2c. n .data
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The I²C (Inter-Integrated Circuit) bus is a serial bus standard
|
||||
invented by Philips.
|
||||
It is used to connect chips over short-distances like on a motherboard
|
||||
or between boards.
|
||||
The bus requires only a single data signal
|
||||
.IR SDA ,
|
||||
a clock signal
|
||||
.I SDC
|
||||
and ground.
|
||||
Devices on the bus have 7-bit or 10-bit addreesses, which is
|
||||
determined by the device (see the datasheet).
|
||||
Every device monitors the bus and waits for the master to initiate
|
||||
a transaction.
|
||||
Each transaction starts with the master sending the target device address
|
||||
and direction bit and the device is acknowledging each byte
|
||||
received if its address matched.
|
||||
Depending on the device, more bytes must be transmitted after the
|
||||
.IR device-address .
|
||||
For example, to encode a register number an memory offset.
|
||||
We refer to these bytes as the
|
||||
.IR sub-address .
|
||||
After the address phase, the data phase begins where
|
||||
zero or more data bytes are eigther transmitted or received
|
||||
depending on the transactoin direction.
|
||||
.PP
|
||||
This driver supports multiple buses (controllers) to be registered
|
||||
by platform specific code in the kernel.
|
||||
Each bus is represented as a directory with a platform specific name.
|
||||
.PP
|
||||
Because all received bytes are acknowledged by target devices,
|
||||
it is possible for the master to enumerate all existing addresses
|
||||
on a bus, which is done when accessing the
|
||||
.I bus
|
||||
directory.
|
||||
.PP
|
||||
Platform specific code can also register individual devices,
|
||||
supplying a meaningfull device configuration.
|
||||
It can also be neccesary to manually register devices if
|
||||
the device has been disabled by a enable signal or
|
||||
otherwise inhibited during enumeration.
|
||||
.PP
|
||||
Each device appears as a control (
|
||||
.BI i2c. n .ctl
|
||||
)
|
||||
and a data file (
|
||||
.BI i2c. n .data
|
||||
) in the
|
||||
.I bus
|
||||
directory
|
||||
where
|
||||
.I n
|
||||
is the device-address in hexadecimal.
|
||||
.PP
|
||||
The data file is used to initiate transactions to the device.
|
||||
The initial
|
||||
.I sub-address
|
||||
bytes sent are derived from the file position according to the device
|
||||
configuration and the length of the data phase is controlled by
|
||||
the requested read or write size.
|
||||
The requested size might be truncated by the driver if
|
||||
the request exceeds the logical file-size.
|
||||
.PP
|
||||
The control-file provides access the device configuration.
|
||||
When read,
|
||||
it reproduces this configuration in text form.
|
||||
The following text lines are accepted when written to the control-file:
|
||||
.TF "subaddress n"
|
||||
.TP
|
||||
.BI "subaddress " n
|
||||
Sets the length
|
||||
.IR n ,
|
||||
in bytes, of the sub-address for the device
|
||||
that is derived from the file-position of the data-file.
|
||||
This can be set to zero if no sub-address bytes should
|
||||
be generated by the driver.
|
||||
By default, the sub-address length is 1.
|
||||
.TP
|
||||
.BI "size " n
|
||||
Changes the logical size of the data-file to
|
||||
.IR n .
|
||||
Making sure the file-position is not exceeding this size.
|
||||
.SH SOURCE
|
||||
.B /sys/src/9/port/devi2c.c
|
||||
.SH HISTORY
|
||||
The file-interface has been inspired by infernos devi2c,
|
||||
but with the addition of supporting multiple buses
|
||||
and device enumeration.
|
Loading…
Reference in a new issue