1.\" $OpenBSD: iic.4,v 1.135 2024/03/02 22:08:50 jmc Exp $ 2.\" 3.\" Copyright (c) 2004, 2006 Alexander Yurchenko <grange@openbsd.org> 4.\" 5.\" Permission to use, copy, modify, and distribute this software for any 6.\" purpose with or without fee is hereby granted, provided that the above 7.\" copyright notice and this permission notice appear in all copies. 8.\" 9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16.\" 17.Dd $Mdocdate: March 2 2024 $ 18.Dt IIC 4 19.Os 20.Sh NAME 21.Nm iic 22.Nd Inter IC (I2C) bus 23.Sh SYNOPSIS 24.Cd "iic* at kiic? # macppc" 25.Cd "iic* at piic? # macppc" 26.Cd "iic* at smu? # macppc" 27.Cd "iic* at alipm? # alpha i386 sparc64 " 28.Cd "iic* at amdiic? # amd64 i386" 29.Cd "iic* at amdpm? # i386" 30.Cd "iic* at glxpcib? # i386" 31.Cd "iic* at gscsio? # i386" 32.Cd "iic* at ichiic? # amd64 i386" 33.Cd "iic* at iicmux? # arm64" 34.Cd "iic* at nviic? # amd64 i386" 35.Cd "iic* at pcamux? # arm64" 36.Cd "iic* at pcfiic? # sparc64" 37.Cd "iic* at piixpm? # amd64 i386" 38.Cd "iic* at viapm? # amd64 i386" 39.Cd "iic* at gpioiic? # i386" 40.Cd "iic* at gdiumiic? # loongson" 41.Cd "iic* at tsciic? # alpha" 42.Cd "iic* at amliic? # arm64" 43.Cd "iic* at apliic? # arm64" 44.Cd "iic* at bcmbsc? # arm64 armv7" 45.Cd "iic* at dwiic? # amd64 arm64" 46.Cd "iic* at octiic? # octeon" 47.Cd "iic* at imxiic? # arm64 armv7" 48.Cd "iic* at mviic? # arm64" 49.Cd "iic* at rkiic? # arm64 armv7" 50.Cd "iic* at qciic? # arm64" 51.Cd "iic* at sxitwi? # arm64 armv7" 52.Cd "iic* at mpfiic? # riscv64" 53.Cd "iic* at ociic? # riscv64" 54.Sh DESCRIPTION 55I2C is a two-wire bus developed by Philips used for connecting 56integrated circuits. 57It is commonly used for connecting devices such as EEPROMs, 58temperature sensors, fan controllers, real-time clocks, tuners, 59and other types of integrated circuits. 60.Pp 61The 62.Nm 63driver provides a uniform programming interface layer between 64I2C master controllers and various I2C slave devices. 65Each I2C master controller attaches an 66.Nm 67framework; several slave devices can then be attached to the 68.Nm 69bus. 70.Pp 71All I2C slave devices are uniquely identified by the address on the bus. 72The master accesses a particular slave device using its address. 73Devices are found on the bus using a sophisticated scanning routine 74which attempts to identify commonly available devices. 75On other machines (such as sparc64 and macppc) where the machine ROM 76supplies a list of I2C devices, that list is used instead. 77.Pp 78System Management Bus (SMBus) protocol is also supported by emulating 79it with the I2C commands. 80.Sh SUPPORTED MASTERS 81.Bl -tag -width 13n -compact 82.It Xr alipm 4 83Acer Labs M7101 SMBus controller 84.It Xr amdiic 4 85AMD-8111 SMBus controller 86.It Xr amdpm 4 87AMD-756/766/768/8111 Power Management and SMBus controller 88.It Xr amliic 4 89Amlogic I2C controller 90.It Xr apliic 4 91Apple I2C controller 92.It Xr bcmbsc 4 93Broadcom Serial Control controller 94.It Xr dwiic 4 95Synopsys DesignWare I2C controller 96.It Xr glxpcib 4 97AMD CS5536 PCI-ISA bridge with timecounter, watchdog timer, and GPIO 98.It Xr gpioiic 4 99GPIO I2C controller 100.It Xr gscsio 4 101National Semiconductor Geode SC1100 I2C controller 102.It Xr ichiic 4 103Intel ICH SMBus controller 104.It Xr imxiic 4 105Freescale i.MX I2C controller 106.It Xr kiic 4 107Apple Kauai I2C controller 108.It Xr mpfiic 4 109Microchip PolarFire SoC MSS I2C controller 110.It Xr mviic 4 111Marvell Armada 3700 onboard I2C controller 112.It Xr nviic 4 113NVIDIA nForce2/3/4 SMBus controller 114.It Xr ociic 4 115OpenCores I2C controller 116.It Xr octiic 4 117OCTEON two-wire serial interface 118.It Xr pcfiic 4 119Philips PCF8584 I2C controller 120.It Xr piic 4 121Apple via-pmu I2C controller 122.It Xr piixpm 4 123Intel PIIX SMBus controller 124.It Xr rkiic 4 125Rockchip I2C controller 126.It Xr qciic 4 127Qualcomm Snapdragon GENI I2C controller 128.It Xr rkpmic 4 129Rockchip RK8xx Power Management IC 130.It Xr smu 4 131Apple System Management Unit 132.It Xr sxitwi 4 133Allwinner Two Wire Interface controller 134.It Xr tsciic 4 135DECchip 21272 and 21274 Core Logic chipset I2C controller 136.It Xr viapm 4 137VIA SMBus controller 138.El 139.Sh SUPPORTED SLAVES 140.Bl -tag -width 13n -compact 141.It Xr abcrtc 4 142Abracon AB1805 real-time clock 143.It Xr adc 4 144Analog Devices AD7416/AD7417/7418 temperature sensor 145.It Xr adl 4 146Andigilog aSC7621 temperature, voltage, and fan sensor 147.It Xr admcts 4 148Analog Devices ADM1026 temperature and voltage sensor 149.It Xr admlc 4 150Analog Devices ADM1024 temperature and voltage sensor 151.It Xr admtemp 4 152Analog Devices ADM1021 temperature sensor 153.It Xr admtm 4 154Analog Devices ADM1025 temperature and voltage sensor 155.It Xr admtmp 4 156Analog Devices ADM1030 temperature sensor 157.It Xr admtt 4 158Analog Devices ADM1031 temperature sensor 159.It Xr adt 4 160Analog Devices ADT7460 temperature, voltage, and fan sensor 161.It Xr adtfsm 4 162Analog Devices ADT7462 temperature, voltage, and fan sensor 163.It Xr andl 4 164Andigilog aSC7611 temperature, voltage, and fan sensor 165.It Xr asbtm 4 166Asus ASB 100 temperature sensor 167.It Xr asms 4 168Apple sudden motion sensor 169.It Xr axppmic 4 170X-Powers AXP Power Management IC 171.It Xr bdpmic 4 172ROHM BD718x7 Power Management IC 173.It Xr bgw 4 174Bosch motion sensor 175.It Xr ccpmic 4 176Intel Crystal Cove Power Management IC 177.It Xr cwfg 4 178CellWise CW201x fuel gauge 179.It Xr dapmic 4 180Dialog DA9063 Power Management IC 181.It Xr dsxrtc 4 182Maxim DS3231/DS3232 real-time clock 183.It Xr ecadc 4 184environmental monitoring subsystem temperature sensor 185.It Xr escodec 4 186Everest Semiconductor ES8316 audio codec 187.It Xr fanpwr 4 188Fairchild FAN53555 voltage regulator 189.It Xr fcu 4 190Apple Fan Control Unit sensor device 191.It Xr fintek 4 192Fintek F75375 temperature sensor 193.It Xr fusbtc 4 194Fairchild FUSB302 USB Type-C Port controller 195.It Xr glenv 4 196Genesys Logic GL518SM temperature, voltage, and fan sensor 197.It Xr iatp 4 198Atmel maXTouch touchpad and touchscreen 199.It Xr ietp 4 200Elantech touchpad 201.It Xr ihidev 4 202HID over I2C support 203.It Xr ipmi 4 204Intelligent Platform Management Interface driver 205.It Xr islrtc 4 206Intersil ISL1208/1218 real-time clock 207.It Xr lisa 4 208STMicroelectronics LIS331DL MEMS motion sensor 209.It Xr lm 4 210National Semiconductor LM78/79/81 temperature, voltage, and fan sensor 211.It Xr lmenv 4 212National Semiconductor LM87 temperature, voltage, and fan sensor 213.It Xr lmn 4 214National Semiconductor LM93 temperature, voltage, and fan sensor 215.It Xr lmtemp 4 216National Semiconductor LM75/LM76/LM77 temperature sensor 217.It Xr maxds 4 218Maxim DS1624/DS1631/DS1721 temperature sensor 219.It Xr maxrtc 4 220Maxim DS1307/DS1339 real-time clock 221.It Xr maxtmp 4 222Maxim MAX6642/MAX6690 temperature sensor 223.It Xr mcprtc 4 224Microchip MCP79400 real-time clock 225.It Xr mfokrtc 4 226M41T8x real-time clock 227.It Xr nvt 4 228Nuvoton W83795G/ADG temperature, voltage, and fan sensor 229.It Xr pcagpio 4 230Philips PCA955[4567] GPIO controller 231.It Xr pcaled 4 232Philips PCA9532/9552 GPIO LED dimmer 233.It Xr pcamux 4 234Philips PCA954[678] I2C switch/mux 235.It Xr pcfadc 4 236Philips PCF8591 temperature sensor 237.It Xr pcfrtc 4 238NXP PCF8523 real-time clock 239.It Xr pcxrtc 4 240NXP PCF8563 real-time clock 241.It Xr pcyrtc 4 242NXP PCF85063A/TP real-time clock 243.It Xr pijuice 4 244PiJuice HAT UPS 245.It Xr ricohrtc 4 246Ricoh RS5C372 real-time clock 247.It Xr rkpmic 4 248Rockchip RK8xx Power Management IC 249.It Xr sdtemp 4 250SO-DIMM (JC-42.4) temperature sensor 251.It Xr sncodec 4 252Texas Instruments TAS2764 digital amplifier 253.It Xr spdmem 4 254Serial Presence Detect memory 255.It Xr ssdfb 4 256Solomon Systech SSD1306/SSD1309 OLED display module 257.It Xr stsec 4 258ST7 embedded controller 259.It Xr sypwr 4 260Silergy SY8106A voltage regulator 261.It Xr tascodec 4 262Texas Instruments TAS2770 digital amplifier 263.It Xr tcpci 4 264USB Type-C Port Controller Interface 265.It Xr tda 4 266Philips TDA8444 fan controller 267.It Xr thmc 4 268TI THMC50, Analog ADM1022/1028 temperature sensor 269.It Xr tipd 4 270TI USB Type-C power delivery controller 271.It Xr tipmic 4 272Intel Dollar Cove TI Power Management IC 273.It Xr titmp 4 274TI TMP451 temperature sensor 275.It Xr tsl 4 276TAOS TSL2560/61 light sensor 277.It Xr wbenv 4 278Winbond W83L784R/W83L785R/W83L785TS-L temperature, voltage, and fan sensor 279.It Xr wbng 4 280Winbond W83793G temperature, voltage, and fan sensor 281.El 282.Sh SEE ALSO 283.Xr iicmux 4 , 284.Xr intro 4 , 285.Xr iic 9 286.Sh HISTORY 287The I2C framework first appeared in 288.Nx 2.0 . 289.Ox 290support was added in 291.Ox 3.6 . 292I2C bus scanning was added in 293.Ox 3.9 . 294.Sh AUTHORS 295The I2C framework was written by 296.An Steve C. Woodford 297and 298.An Jason R. Thorpe 299for 300.Nx 301and then ported to 302.Ox 303by 304.An Alexander Yurchenko Aq Mt grange@openbsd.org . 305