NAME
iic
—
Inter IC (I2C) bus
SYNOPSIS
iic* at kiic? # macppc
iic* at piic? # macppc
iic* at smu? # macppc
iic* at alipm? # alpha i386 sparc64
iic* at amdiic? # amd64 i386
iic* at amdpm? # i386
iic* at glxpcib? # i386
iic* at gscsio? # i386
iic* at ichiic? # amd64 i386
iic* at iicmux? # arm64
iic* at nviic? # amd64 i386
iic* at pcamux? # arm64
iic* at pcfiic? # sparc64
iic* at piixpm? # amd64 i386
iic* at viapm? # amd64 i386
iic* at gpioiic? # i386
iic* at gdiumiic? # loongson
iic* at tsciic? # alpha
iic* at amliic? # arm64
iic* at apliic? # arm64
iic* at bcmbsc? # arm64 armv7
iic* at dwiic? # amd64 arm64
iic* at octiic? # octeon
iic* at imxiic? # arm64 armv7
iic* at mviic? # arm64
iic* at rkiic? # arm64 armv7
iic* at qciic? # arm64
iic* at sxitwi? # arm64 armv7
iic* at mpfiic? # riscv64
iic* at ociic? # riscv64
DESCRIPTION
I2C is a two-wire bus developed by Philips used for connecting integrated circuits. It is commonly used for connecting devices such as EEPROMs, temperature sensors, fan controllers, real-time clocks, tuners, and other types of integrated circuits.
The iic
driver provides a uniform
programming interface layer between I2C master controllers and various I2C
slave devices. Each I2C master controller attaches an
iic
framework; several slave devices can then be
attached to the iic
bus.
All I2C slave devices are uniquely identified by the address on the bus. The master accesses a particular slave device using its address. Devices are found on the bus using a sophisticated scanning routine which attempts to identify commonly available devices. On other machines (such as sparc64 and macppc) where the machine ROM supplies a list of I2C devices, that list is used instead.
System Management Bus (SMBus) protocol is also supported by emulating it with the I2C commands.
SUPPORTED MASTERS
- alipm(4)
- Acer Labs M7101 SMBus controller
- amdiic(4)
- AMD-8111 SMBus controller
- amdpm(4)
- AMD-756/766/768/8111 Power Management and SMBus controller
- amliic(4)
- Amlogic I2C controller
- apliic(4)
- Apple I2C controller
- bcmbsc(4)
- Broadcom Serial Control controller
- dwiic(4)
- Synopsys DesignWare I2C controller
- glxpcib(4)
- AMD CS5536 PCI-ISA bridge with timecounter, watchdog timer, and GPIO
- gpioiic(4)
- GPIO I2C controller
- gscsio(4)
- National Semiconductor Geode SC1100 I2C controller
- ichiic(4)
- Intel ICH SMBus controller
- imxiic(4)
- Freescale i.MX I2C controller
- kiic(4)
- Apple Kauai I2C controller
- mpfiic(4)
- Microchip PolarFire SoC MSS I2C controller
- mviic(4)
- Marvell Armada 3700 onboard I2C controller
- nviic(4)
- NVIDIA nForce2/3/4 SMBus controller
- ociic(4)
- OpenCores I2C controller
- octiic(4)
- OCTEON two-wire serial interface
- pcfiic(4)
- Philips PCF8584 I2C controller
- piic(4)
- Apple via-pmu I2C controller
- piixpm(4)
- Intel PIIX SMBus controller
- rkiic(4)
- Rockchip I2C controller
- qciic(4)
- Qualcomm Snapdragon GENI I2C controller
- rkpmic(4)
- Rockchip RK8xx Power Management IC
- smu(4)
- Apple System Management Unit
- sxitwi(4)
- Allwinner Two Wire Interface controller
- tsciic(4)
- DECchip 21272 and 21274 Core Logic chipset I2C controller
- viapm(4)
- VIA SMBus controller
SUPPORTED SLAVES
- abcrtc(4)
- Abracon AB1805 real-time clock
- adc(4)
- Analog Devices AD7416/AD7417/7418 temperature sensor
- adl(4)
- Andigilog aSC7621 temperature, voltage, and fan sensor
- admcts(4)
- Analog Devices ADM1026 temperature and voltage sensor
- admlc(4)
- Analog Devices ADM1024 temperature and voltage sensor
- admtemp(4)
- Analog Devices ADM1021 temperature sensor
- admtm(4)
- Analog Devices ADM1025 temperature and voltage sensor
- admtmp(4)
- Analog Devices ADM1030 temperature sensor
- admtt(4)
- Analog Devices ADM1031 temperature sensor
- adt(4)
- Analog Devices ADT7460 temperature, voltage, and fan sensor
- adtfsm(4)
- Analog Devices ADT7462 temperature, voltage, and fan sensor
- andl(4)
- Andigilog aSC7611 temperature, voltage, and fan sensor
- asbtm(4)
- Asus ASB 100 temperature sensor
- asms(4)
- Apple sudden motion sensor
- axppmic(4)
- X-Powers AXP Power Management IC
- bdpmic(4)
- ROHM BD718x7 Power Management IC
- bgw(4)
- Bosch motion sensor
- ccpmic(4)
- Intel Crystal Cove Power Management IC
- cwfg(4)
- CellWise CW201x fuel gauge
- dapmic(4)
- Dialog DA9063 Power Management IC
- dsxrtc(4)
- Maxim DS3231/DS3232 real-time clock
- ecadc(4)
- environmental monitoring subsystem temperature sensor
- escodec(4)
- Everest Semiconductor ES8316 audio codec
- fanpwr(4)
- Fairchild FAN53555 voltage regulator
- fcu(4)
- Apple Fan Control Unit sensor device
- fintek(4)
- Fintek F75375 temperature sensor
- fusbtc(4)
- Fairchild FUSB302 USB Type-C Port controller
- glenv(4)
- Genesys Logic GL518SM temperature, voltage, and fan sensor
- iatp(4)
- Atmel maXTouch touchpad and touchscreen
- ietp(4)
- Elantech touchpad
- ihidev(4)
- HID over I2C support
- ipmi(4)
- Intelligent Platform Management Interface driver
- islrtc(4)
- Intersil ISL1208/1218 real-time clock
- lisa(4)
- STMicroelectronics LIS331DL MEMS motion sensor
- lm(4)
- National Semiconductor LM78/79/81 temperature, voltage, and fan sensor
- lmenv(4)
- National Semiconductor LM87 temperature, voltage, and fan sensor
- lmn(4)
- National Semiconductor LM93 temperature, voltage, and fan sensor
- lmtemp(4)
- National Semiconductor LM75/LM76/LM77 temperature sensor
- maxds(4)
- Maxim DS1624/DS1631/DS1721 temperature sensor
- maxrtc(4)
- Maxim DS1307/DS1339 real-time clock
- maxtmp(4)
- Maxim MAX6642/MAX6690 temperature sensor
- mcprtc(4)
- Microchip MCP79400 real-time clock
- mfokrtc(4)
- M41T8x real-time clock
- nvt(4)
- Nuvoton W83795G/ADG temperature, voltage, and fan sensor
- pcagpio(4)
- Philips PCA955[4567] GPIO controller
- pcaled(4)
- Philips PCA9532/9552 GPIO LED dimmer
- pcamux(4)
- Philips PCA954[678] I2C switch/mux
- pcfadc(4)
- Philips PCF8591 temperature sensor
- pcfrtc(4)
- NXP PCF8523 real-time clock
- pcxrtc(4)
- NXP PCF8563 real-time clock
- pcyrtc(4)
- NXP PCF85063A/TP real-time clock
- pijuice(4)
- PiJuice HAT UPS
- ricohrtc(4)
- Ricoh RS5C372 real-time clock
- rkpmic(4)
- Rockchip RK8xx Power Management IC
- sdtemp(4)
- SO-DIMM (JC-42.4) temperature sensor
- sncodec(4)
- Texas Instruments TAS2764 digital amplifier
- spdmem(4)
- Serial Presence Detect memory
- ssdfb(4)
- Solomon Systech SSD1306/SSD1309 OLED display module
- stsec(4)
- ST7 embedded controller
- sypwr(4)
- Silergy SY8106A voltage regulator
- tascodec(4)
- Texas Instruments TAS2770 digital amplifier
- tcpci(4)
- USB Type-C Port Controller Interface
- tda(4)
- Philips TDA8444 fan controller
- thmc(4)
- TI THMC50, Analog ADM1022/1028 temperature sensor
- tipd(4)
- TI USB Type-C power delivery controller
- tipmic(4)
- Intel Dollar Cove TI Power Management IC
- titmp(4)
- TI TMP451 temperature sensor
- tsl(4)
- TAOS TSL2560/61 light sensor
- wbenv(4)
- Winbond W83L784R/W83L785R/W83L785TS-L temperature, voltage, and fan sensor
- wbng(4)
- Winbond W83793G temperature, voltage, and fan sensor
SEE ALSO
HISTORY
The I2C framework first appeared in NetBSD 2.0. OpenBSD support was added in OpenBSD 3.6. I2C bus scanning was added in OpenBSD 3.9.
AUTHORS
The I2C framework was written by Steve C.
Woodford and
Jason R. Thorpe for NetBSD and
then ported to OpenBSD by
Alexander Yurchenko
<grange@openbsd.org>.