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

FreeBSD Manual Pages

  
 
  

home | help
GPIOIIC(4)	       FreeBSD Kernel Interfaces Manual		    GPIOIIC(4)

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 config-
     urable 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).	 Be-
			    cause 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, de-
			    faults 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 con-
		 troller.

     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.

FreeBSD	13.0		       December	1, 2019			  FreeBSD 13.0

NAME | SYNOPSIS | DESCRIPTION | HINTS CONFIGURATION | FDT CONFIGURATION | 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+13.0-RELEASE+and+Ports>

home | help