xref: /freebsd/share/man/man4/gpioiic.4 (revision 9a2a079a5182c4bcdd547839ff652fb4384b9a80)
18ce07fe7SLuiz Otavio O Souza.\" Copyright (c) 2013, Luiz Otavio O Souza <loos@FreeBSD.org>
28ce07fe7SLuiz Otavio O Souza.\" All rights reserved.
38ce07fe7SLuiz Otavio O Souza.\"
48ce07fe7SLuiz Otavio O Souza.\" Redistribution and use in source and binary forms, with or without
58ce07fe7SLuiz Otavio O Souza.\" modification, are permitted provided that the following conditions
68ce07fe7SLuiz Otavio O Souza.\" are met:
78ce07fe7SLuiz Otavio O Souza.\" 1. Redistributions of source code must retain the above copyright
88ce07fe7SLuiz Otavio O Souza.\"    notice, this list of conditions and the following disclaimer.
98ce07fe7SLuiz Otavio O Souza.\" 2. Redistributions in binary form must reproduce the above copyright
108ce07fe7SLuiz Otavio O Souza.\"    notice, this list of conditions and the following disclaimer in the
118ce07fe7SLuiz Otavio O Souza.\"    documentation and/or other materials provided with the distribution.
128ce07fe7SLuiz Otavio O Souza.\"
138ce07fe7SLuiz Otavio O Souza.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
148ce07fe7SLuiz Otavio O Souza.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158ce07fe7SLuiz Otavio O Souza.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
168ce07fe7SLuiz Otavio O Souza.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
178ce07fe7SLuiz Otavio O Souza.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
188ce07fe7SLuiz Otavio O Souza.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
198ce07fe7SLuiz Otavio O Souza.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
208ce07fe7SLuiz Otavio O Souza.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
218ce07fe7SLuiz Otavio O Souza.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
228ce07fe7SLuiz Otavio O Souza.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
238ce07fe7SLuiz Otavio O Souza.\" SUCH DAMAGE.
248ce07fe7SLuiz Otavio O Souza.\"
258ce07fe7SLuiz Otavio O Souza.\" $FreeBSD$
268ce07fe7SLuiz Otavio O Souza.\"
27*9a2a079aSLuiz Otavio O Souza.Dd February 13, 2014
288ce07fe7SLuiz Otavio O Souza.Dt GPIOIIC 4
298ce07fe7SLuiz Otavio O Souza.Os
308ce07fe7SLuiz Otavio O Souza.Sh NAME
318ce07fe7SLuiz Otavio O Souza.Nm gpioiic
328ce07fe7SLuiz Otavio O Souza.Nd GPIO I2C bit-banging device driver
338ce07fe7SLuiz Otavio O Souza.Sh SYNOPSIS
348ce07fe7SLuiz Otavio O Souza.Cd "device gpio"
358ce07fe7SLuiz Otavio O Souza.Cd "device gpioiic"
368ce07fe7SLuiz Otavio O Souza.Cd "device iic"
378ce07fe7SLuiz Otavio O Souza.Cd "device iicbb"
388ce07fe7SLuiz Otavio O Souza.Cd "device iicbus"
398ce07fe7SLuiz Otavio O Souza.Sh DESCRIPTION
408ce07fe7SLuiz Otavio O SouzaThe
418ce07fe7SLuiz Otavio O Souza.Em gpioiic
428ce07fe7SLuiz Otavio O Souzadriver provides an IIC bit-banging interface using two GPIO pins for the
438ce07fe7SLuiz Otavio O SouzaSCL and SDA on the
448ce07fe7SLuiz Otavio O Souza.Em gpiobus .
458ce07fe7SLuiz Otavio O Souza.Nm
468ce07fe7SLuiz Otavio O Souzaimplements an open colector kind of output, as recommended by the standard,
478ce07fe7SLuiz Otavio O Souzawhen driving the pins on the
488ce07fe7SLuiz Otavio O Souza.Em gpiobus ,
498ce07fe7SLuiz Otavio O Souzai.e, they are never switched to the logical value of '1',
508ce07fe7SLuiz Otavio O Souzaor they are '0' or simply open (Hi-Z/tri-state).
518ce07fe7SLuiz Otavio O SouzaSo the pullup resistors are required so
528ce07fe7SLuiz Otavio O Souza.Nm
538ce07fe7SLuiz Otavio O Souzacan work.
548ce07fe7SLuiz Otavio O Souza.Pp
558ce07fe7SLuiz Otavio O SouzaOn a hint based system, like
568ce07fe7SLuiz Otavio O Souza.Li MIPS , these values are configureable for the
578ce07fe7SLuiz Otavio O Souza.Nm gpioiic :
588ce07fe7SLuiz Otavio O Souza.Bl -tag -width ".Va hint.gpioiic.%d.atXXX"
598ce07fe7SLuiz Otavio O Souza.It Va hint.gpioiic.%d.at
608ce07fe7SLuiz Otavio O SouzaThe gpiobus you are attaching to.
618ce07fe7SLuiz Otavio O SouzaNormally just gpiobus0.
628ce07fe7SLuiz Otavio O Souza.It Va hint.gpioiic.%d.pins
638ce07fe7SLuiz Otavio O SouzaThis is a bitmask of the pins on the
648ce07fe7SLuiz Otavio O Souza.Em gpiobus
658ce07fe7SLuiz Otavio O Souzathat are to be used for SCLOCK and SDATA from the GPIO IIC
668ce07fe7SLuiz Otavio O Souzabit-banging bus.
678ce07fe7SLuiz Otavio O SouzaTo configure pin 0 and 7, use the bitmask of
68*9a2a079aSLuiz Otavio O Souza0b10000001 and convert it to a hexadecimal value of 0x0081.
698ce07fe7SLuiz Otavio O SouzaPlease note that this mask should only ever have two bits set
708ce07fe7SLuiz Otavio O Souza(any others bits - i.e., pins - will be ignored).
718ce07fe7SLuiz Otavio O Souza.It Va hint.gpioiic.%d.scl
728ce07fe7SLuiz Otavio O SouzaIndicates which bit in the
738ce07fe7SLuiz Otavio O Souza.Va hint.gpioiic.%d.pins
748ce07fe7SLuiz Otavio O Souzashould be used as the SCLOCK
758ce07fe7SLuiz Otavio O Souzasource.
76*9a2a079aSLuiz Otavio O SouzaOptional, defaults to 0.
778ce07fe7SLuiz Otavio O Souza.It Va hint.gpioiic.%d.sda
788ce07fe7SLuiz Otavio O SouzaIndicates which bit in the
798ce07fe7SLuiz Otavio O Souza.Va hint.gpioiic.%d.pins
808ce07fe7SLuiz Otavio O Souzashould be used as the SDATA
818ce07fe7SLuiz Otavio O Souzasource.
82*9a2a079aSLuiz Otavio O SouzaOptional, defaults to 1.
83*9a2a079aSLuiz Otavio O Souza.El
84*9a2a079aSLuiz Otavio O Souza.Pp
85*9a2a079aSLuiz Otavio O SouzaOn a
86*9a2a079aSLuiz Otavio O Souza.Xr FDT 4
87*9a2a079aSLuiz Otavio O Souzabased system, like
88*9a2a079aSLuiz Otavio O Souza.Li ARM , the dts part for a
89*9a2a079aSLuiz Otavio O Souza.Nm gpioiic
90*9a2a079aSLuiz Otavio O Souzadevice usually looks like:
91*9a2a079aSLuiz Otavio O Souza.Bd -literal
92*9a2a079aSLuiz Otavio O Souzagpio: gpio {
93*9a2a079aSLuiz Otavio O Souza
94*9a2a079aSLuiz Otavio O Souza	gpio-controller;
95*9a2a079aSLuiz Otavio O Souza	...
96*9a2a079aSLuiz Otavio O Souza
97*9a2a079aSLuiz Otavio O Souza	gpioiic0 {
98*9a2a079aSLuiz Otavio O Souza		compatible = "gpioiic";
99*9a2a079aSLuiz Otavio O Souza		/*
100*9a2a079aSLuiz Otavio O Souza		 * Attach to GPIO pins 21 and 22.  Set them
101*9a2a079aSLuiz Otavio O Souza		 * initially as inputs.
102*9a2a079aSLuiz Otavio O Souza		 */
103*9a2a079aSLuiz Otavio O Souza		gpios = <&gpio 21 1 0
104*9a2a079aSLuiz Otavio O Souza			 &gpio 22 1 0>;
105*9a2a079aSLuiz Otavio O Souza		scl = <0>;		/* GPIO pin 21 - optional */
106*9a2a079aSLuiz Otavio O Souza		sda = <1>;		/* GPIO pin 22 - optional */
107*9a2a079aSLuiz Otavio O Souza
108*9a2a079aSLuiz Otavio O Souza		/* This is an example of a gpioiic child. */
109*9a2a079aSLuiz Otavio O Souza		gpioiic-child0 {
110*9a2a079aSLuiz Otavio O Souza			compatible = "lm75";
111*9a2a079aSLuiz Otavio O Souza			i2c-address = <0x4f>;
112*9a2a079aSLuiz Otavio O Souza		};
113*9a2a079aSLuiz Otavio O Souza	};
114*9a2a079aSLuiz Otavio O Souza};
115*9a2a079aSLuiz Otavio O Souza.Ed
116*9a2a079aSLuiz Otavio O Souza.Pp
117*9a2a079aSLuiz Otavio O SouzaWhere:
118*9a2a079aSLuiz Otavio O Souza.Bl -tag -width ".Va compatible"
119*9a2a079aSLuiz Otavio O Souza.It Va compatible
120*9a2a079aSLuiz Otavio O SouzaShould always be set to "gpioiic".
121*9a2a079aSLuiz Otavio O Souza.It Va gpios
122*9a2a079aSLuiz Otavio O SouzaThe
123*9a2a079aSLuiz Otavio O Souza.Va gpios
124*9a2a079aSLuiz Otavio O Souzaproperty indicates which GPIO pins should be used for SCLOCK and SDATA
125*9a2a079aSLuiz Otavio O Souzaon the GPIO IIC bit-banging bus.
126*9a2a079aSLuiz Otavio O SouzaFor more details about the
127*9a2a079aSLuiz Otavio O Souza.Va gpios
128*9a2a079aSLuiz Otavio O Souzaproperty, please consult
129*9a2a079aSLuiz Otavio O Souza.Pa /usr/src/sys/boot/fdt/dts/bindings-gpio.txt .
130*9a2a079aSLuiz Otavio O Souza.It Va scl
131*9a2a079aSLuiz Otavio O SouzaThe
132*9a2a079aSLuiz Otavio O Souza.Va scl
133*9a2a079aSLuiz Otavio O Souzaoption indicates which bit in the
134*9a2a079aSLuiz Otavio O Souza.Va gpios
135*9a2a079aSLuiz Otavio O Souzashould be used as the SCLOCK source.
136*9a2a079aSLuiz Otavio O SouzaOptional, defaults to 0.
137*9a2a079aSLuiz Otavio O Souza.It Va sda
138*9a2a079aSLuiz Otavio O SouzaThe
139*9a2a079aSLuiz Otavio O Souza.Va sda
140*9a2a079aSLuiz Otavio O Souzaoption indicates which bit in the
141*9a2a079aSLuiz Otavio O Souza.Va gpios
142*9a2a079aSLuiz Otavio O Souzashould be used as the SDATA source.
143*9a2a079aSLuiz Otavio O SouzaOptional, defaults to 1.
1448ce07fe7SLuiz Otavio O Souza.El
1458ce07fe7SLuiz Otavio O Souza.Sh SEE ALSO
146*9a2a079aSLuiz Otavio O Souza.Xr fdt 4 ,
1478ce07fe7SLuiz Otavio O Souza.Xr gpio 4 ,
1488ce07fe7SLuiz Otavio O Souza.Xr gpioled 4 ,
1498ce07fe7SLuiz Otavio O Souza.Xr iic 4 ,
1508ce07fe7SLuiz Otavio O Souza.Xr iicbb 4 ,
1518ce07fe7SLuiz Otavio O Souza.Xr iicbus 4
1528ce07fe7SLuiz Otavio O Souza.Sh HISTORY
1538ce07fe7SLuiz Otavio O SouzaThe
1548ce07fe7SLuiz Otavio O Souza.Nm
1558ce07fe7SLuiz Otavio O Souzamanual page first appeared in
1568ce07fe7SLuiz Otavio O Souza.Fx 11.0 .
1578ce07fe7SLuiz Otavio O Souza.Sh AUTHORS
1588ce07fe7SLuiz Otavio O SouzaThis
1598ce07fe7SLuiz Otavio O Souzamanual page was written by
1608ce07fe7SLuiz Otavio O Souza.An Luiz Otavio O Souza .
161