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