This is a list of trivial i2c devices that have simple device tree
bindings, consisting only of a compatible field, an address and
possibly an interrupt line.

If a device needs more specific bindings, such as properties to
describe some aspect of it, there needs to be a specific binding
document for it just like any other devices.


Compatible		Vendor / Chip
==========		=============
abracon,abb5zes3		AB-RTCMC-32.768kHz-B5ZE-S3: Real Time Clock/Calendar Module with I2C Interface
ad,ad7414		SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert and Over Temperature Pin
ad,adm9240		ADM9240:  Complete System Hardware Monitor for uProcessor-Based Systems
adi,adt7461		+/-1C TDM Extended Temp Range I.C
adt7461			+/-1C TDM Extended Temp Range I.C
adi,adt7473		+/-1C TDM Extended Temp Range I.C
adi,adt7475		+/-1C TDM Extended Temp Range I.C
adi,adt7476		+/-1C TDM Extended Temp Range I.C
adi,adt7490		+/-1C TDM Extended Temp Range I.C
adi,adxl345		Three-Axis Digital Accelerometer
adi,adxl346		Three-Axis Digital Accelerometer
adi,adxl34x		Three-Axis Digital Accelerometer
at,24c08		i2c serial eeprom  (24cxx)
atmel,24c00		i2c serial eeprom  (24cxx)
atmel,24c01		i2c serial eeprom  (24cxx)
atmel,24c02		i2c serial eeprom  (24cxx)
atmel,24c04		i2c serial eeprom  (24cxx)
atmel,24c16		i2c serial eeprom  (24cxx)
atmel,24c32		i2c serial eeprom  (24cxx)
atmel,24c64		i2c serial eeprom  (24cxx)
atmel,24c128		i2c serial eeprom  (24cxx)
atmel,24c256		i2c serial eeprom  (24cxx)
atmel,24c512		i2c serial eeprom  (24cxx)
atmel,24c1024		i2c serial eeprom  (24cxx)
atmel,at97sc3204t	i2c trusted platform module (TPM)
capella,cm32181		CM32181: Ambient Light Sensor
capella,cm3232		CM3232: Ambient Light Sensor
catalyst,24c32		i2c serial eeprom
cirrus,cs42l51		Cirrus Logic CS42L51 audio codec
dallas,ds1307		64 x 8, Serial, I2C Real-Time Clock
dallas,ds1338		I2C RTC with 56-Byte NV RAM
dallas,ds1340		I2C RTC with Trickle Charger
dallas,ds1374		I2C, 32-Bit Binary Counter Watchdog RTC with Trickle Charger and Reset Input/Output
dallas,ds1631		High-Precision Digital Thermometer
dallas,ds1682		Total-Elapsed-Time Recorder with Alarm
dallas,ds1775		Tiny Digital Thermometer and Thermostat
dallas,ds3232		Extremely Accurate I²C RTC with Integrated Crystal and SRAM
dallas,ds4510		CPU Supervisor with Nonvolatile Memory and Programmable I/O
dallas,ds75		Digital Thermometer and Thermostat
dlg,da9053		DA9053: flexible system level PMIC with multicore support
dlg,da9063		DA9063: system PMIC for quad-core application processors
epson,rx8025		High-Stability. I2C-Bus INTERFACE REAL TIME CLOCK MODULE
epson,rx8581		I2C-BUS INTERFACE REAL TIME CLOCK MODULE
fsl,mag3110		MAG3110: Xtrinsic High Accuracy, 3D Magnetometer
fsl,mc13892		MC13892: Power Management Integrated Circuit (PMIC) for i.MX35/51
fsl,mma8450		MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer
fsl,mma8452		MMA8452Q: 3-axis 12-bit / 8-bit Digital Accelerometer
fsl,mpr121		MPR121: Proximity Capacitive Touch Sensor Controller
fsl,sgtl5000		SGTL5000: Ultra Low-Power Audio Codec
gmt,g751		G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface
infineon,slb9635tt	Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz)
infineon,slb9645tt	Infineon SLB9645 I2C TPM (new protocol, max 400khz)
isil,isl12057		Intersil ISL12057 I2C RTC Chip
isil,isl29028		Intersil ISL29028 Ambient Light and Proximity Sensor
maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator
maxim,max1237		Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs
maxim,max6625		9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface
mc,rv3029c2		Real Time Clock Module with I2C-Bus
national,lm63		Temperature sensor with integrated fan control
national,lm75		I2C TEMP SENSOR
national,lm80		Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
national,lm85		Temperature sensor with integrated fan control
national,lm92		±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator with Two-Wire Interface
nuvoton,npct501		i2c trusted platform module (TPM)
nxp,pca9556		Octal SMBus and I2C registered interface
nxp,pca9557		8-bit I2C-bus and SMBus I/O port with reset
nxp,pcf8563		Real-time clock/calendar
nxp,pcf85063		Tiny Real-Time Clock
oki,ml86v7667		OKI ML86V7667 video decoder
ovti,ov5642		OV5642: Color CMOS QSXGA (5-megapixel) Image Sensor with OmniBSI and Embedded TrueFocus
pericom,pt7c4338	Real-time Clock Module
plx,pex8648		48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch
ramtron,24c64		i2c serial eeprom  (24cxx)
ricoh,r2025sd		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
ricoh,r2221tl		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
ricoh,rs5c372a		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
ricoh,rs5c372b		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
ricoh,rv5c386		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
ricoh,rv5c387a		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC
samsung,24ad0xd1	S524AD0XF1 (128K/256K-bit Serial EEPROM for Low Power)
sii,s35390a		2-wire CMOS real-time clock
skyworks,sky81452	Skyworks SKY81452: Six-Channel White LED Driver with Touch Panel Bias Supply
st-micro,24c256		i2c serial eeprom  (24cxx)
stm,m41t00		Serial Access TIMEKEEPER
stm,m41t62		Serial real-time clock (RTC) with alarm
stm,m41t80		M41T80 - SERIAL ACCESS RTC WITH ALARMS
taos,tsl2550		Ambient Light Sensor with SMBUS/Two Wire Serial Interface
ti,tsc2003		I2C Touch-Screen Controller
ti,tmp102		Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
ti,tmp103		Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
ti,tmp275		Digital Temperature Sensor
winbond,wpct301		i2c trusted platform module (TPM)
