Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
GPIOIIC(4)             FreeBSD Kernel Interfaces Manual             GPIOIIC(4)

NAME
     gpioiic - GPIO I2C bit-banging device driver

SYNOPSIS
     device gpio
     device gpioiic
     device iic
     device iicbb
     device iicbus

DESCRIPTION
     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
     colector 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 hint based system, like MIPS, these values are configureable for the
     gpioiic:

     hint.gpioiic.%d.at         The gpiobus you are attaching to.  Normally
                                just gpiobus0.

     hint.gpioiic.%d.pins       This is a bitmask of the pins on the 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 others bits - i.e.,
                                pins - will be ignored).

     hint.gpioiic.%d.scl        Indicates which bit in the
                                hint.gpioiic.%d.pins should be used as the
                                SCLOCK source.  Optional, defaults to 0.

     hint.gpioiic.%d.sda        Indicates which bit in the
                                hint.gpioiic.%d.pins should be used as the
                                SDATA source.  Optional, defaults to 1.

     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:

     compatible      Should always be set to "gpioiic".

     gpios           The gpios property indicates which GPIO pins should be
                     used for SCLOCK and SDATA on the GPIO IIC bit-banging
                     bus.  For more details about the gpios property, please
                     consult /usr/src/sys/boot/fdt/dts/bindings-gpio.txt.

     scl             The scl option indicates which bit in the gpios should be
                     used as the SCLOCK source.  Optional, defaults to 0.

     sda             The sda option indicates which bit in the gpios should be
                     used as the SDATA source.  Optional, defaults to 1.

SEE ALSO
     fdt(4), gpio(4), gpioled(4), iic(4), iicbb(4), iicbus(4)

HISTORY
     The gpioiic manual page first appeared in FreeBSD 10.1.

AUTHORS
     This manual page was written by Luiz Otavio O Souza.

FreeBSD 11.0-PRERELEASE          May 14, 2014          FreeBSD 11.0-PRERELEASE

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=gpioiic&sektion=4&manpath=FreeBSD+10.3-RELEASE+and+Ports>

home | help