gpioiic
GPIO I2C bit-banging device driver
- Provided by: freebsd-manpages (Version: 11.1-3)
- Report a bug
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 iicbusThe 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.