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	10.3			 May 14, 2014			  FreeBSD 10.3

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