Provided by: freebsd-manpages_12.2-1_all bug

NAME

       gpioiic — GPIO I2C bit-banging device driver

SYNOPSIS

       To compile this driver into the kernel, place the following lines in your kernel configuration file:

             device gpio
             device gpioiic
             device iicbb
             device iicbus

       Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5):

             gpioiic_load="YES"

DESCRIPTION

       The gpioiic driver provides an IIC bit-banging interface using two GPIO pins for the SCL and SDA lines on
       the bus.

       gpioiic  simulates  an  open  collector kind of output when managing the pins on the bus, even on systems
       which don't directly support configuring gpio pins in that mode.   The  pins  are  never  driven  to  the
       logical value of '1'.  They are driven to '0' or switched to input mode (Hi-Z/tri-state), and an external
       pullup resistor pulls the line to the 1 state unless some other device on the bus is driving it to 0.

HINTS CONFIGURATION

       On a device.hints(5) based system, such as MIPS, these values are configurable for gpioiic:

       hint.gpioiic.%d.at     The gpiobus you are attaching to.  Normally just gpiobus0 on systems with a single
                              bank of gpio pins.

       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  other  bits  -  i.e.,
                              pins  -  will  be  ignored).  Because gpioiic must be a child of the gpiobus, both
                              gpio pins must be part of that bus.

       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.

FDT CONFIGURATION

       On an FDT(4) based system, such as ARM, the DTS node  for  gpioiic  conforms  to  the  standard  bindings
       document  i2c/i2c-gpio.yaml.   The  device  node  typically  appears at the root of the device tree.  The
       following is an example of a gpioiic node with one slave device on the IIC bus:

       / {
               gpioiic0 {
                       compatible = "i2c-gpio";
                       pinctrl-names = "default";
                       pinctrl-0 = <&pinctrl_gpioiic0>;
                       scl-gpios = <&gpio1  5 GPIO_ACTIVE_HIGH>;
                       sda-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>;
                       status = "okay";

                       /* One slave device on the i2c bus. */
                       rtc@51 {
                               compatible="nxp,pcf2127";
                               reg = <0x51>;
                               status = "okay";
                       };
               };
       };

       Where:

       compatible  Should be set to "i2c-gpio".  The deprecated string "gpioiic" is also accepted for  backwards
                   compatibility.

       scl-gpios sda-gpios
                   These  properties  indicate which GPIO pins should be used for clock and data on the GPIO IIC
                   bit-banging bus.  There is no  requirement  that  the  two  pins  belong  to  the  same  gpio
                   controller.

       pinctrl-names pinctrl-0
                   These  properties  may be required to configure the chosen pins as gpio pins, unless the pins
                   default to that state on your system.

SEE ALSO

       fdt(4), gpio(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.

Debian                                          December 1, 2019                                      GPIOIIC(4)