GPIOIIC(4) | Device Drivers Manual | GPIOIIC(4) |
gpioiic
— GPIO I2C
bit-banging device driver
To compile this driver into the kernel, place the following lines in your kernel configuration file:
device gpio
device gpioiic
device iic
device iicbb
device iicbus
The gpioiic
driver provides an IIC
bit-banging interface using two GPIO pins for the SCL and SDA on the
gpiobus
. gpioiic
implements
an open collector kind of output, as recommended by the standard, when
driving the pins on the gpiobus
, i.e, they are never
switched to the logical value of '1', or they are '0' or simply open
(Hi-Z/tri-state). So the pullup resistors are required so
gpioiic
can work.
On a device.hints(5) based system, like
MIPS
, these values are configurable for the
gpioiic
:
gpiobus
you are attaching to. Normally just
gpiobus0.gpiobus
that
are to be used for SCLOCK and SDATA from the GPIO IIC bit-banging bus. To
configure pin 0 and 7, use the bitmask of 0b10000001 and convert it to a
hexadecimal value of 0x0081. Please note that this mask should only ever
have two bits set (any other bits - i.e., pins - will be ignored).On a FDT(4) based system, like
ARM
, the DTS part for a
gpioiic
device usually looks like:
gpio: gpio { gpio-controller; ... gpioiic0 { compatible = "gpioiic"; /* * Attach to GPIO pins 21 and 22. Set them * initially as inputs. */ gpios = <&gpio 21 1 0 &gpio 22 1 0>; scl = <0>; /* GPIO pin 21 - optional */ sda = <1>; /* GPIO pin 22 - optional */ /* This is an example of a gpioiic child. */ gpioiic-child0 { compatible = "lm75"; i2c-address = <0x4f>; }; }; };
Where:
The gpioiic
manual page first appeared in
FreeBSD 10.1.
This manual page was written by Luiz Otavio O Souza.
May 14, 2014 | Debian |