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 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 col-
     lector 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 config-
     urable 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
			    other 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.1			 May 14, 2014			  FreeBSD 11.1

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+11.1-RELEASE+and+Ports>

home | help