Generic device tree bindings for I2C busses
===========================================

This document describes generic bindings which can be used to describe I2C
busses in a device tree.

Required properties
-------------------

- #address-cells  - should be <1>. Read more about addresses below.
- #size-cells     - should be <0>.
- compatible      - name of I2C bus controller following generic names
		    recommended practice.

For other required properties e.g. to describe register sets,
clocks, etc. check the binding documentation of the specific driver.

The cells properties above define that an address of children of an I2C bus
are described by a single value. This is usually a 7 bit address. However,
flags can be attached to the address. I2C_TEN_BIT_ADDRESS is used to mark a 10
bit address. It is needed to avoid the ambiguity between e.g. a 7 bit address
of 0x50 and a 10 bit address of 0x050 which, in theory, can be on the same bus.
Another flag is I2C_OWN_SLAVE_ADDRESS to mark addresses on which we listen to
be devices ourselves.

Optional properties
-------------------

These properties may not be supported by all drivers. However, if a driver
wants to support one of the below features, it should adapt the bindings below.

- clock-frequency
	frequency of bus clock in Hz.

- i2c-bus
	For I2C adapters that have child nodes that are a mixture of both I2C
	devices and non-I2C devices, the 'i2c-bus' subnode can be used for
	populating I2C devices. If the 'i2c-bus' subnode is present, only
	subnodes of this will be considered as I2C slaves. The properties,
	'#address-cells' and '#size-cells' must be defined under this subnode
	if present.

- i2c-scl-falling-time-ns
	Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
	specification.

- i2c-scl-internal-delay-ns
	Number of nanoseconds the IP core additionally needs to setup SCL.

- i2c-scl-rising-time-ns
	Number of nanoseconds the SCL signal takes to rise; t(r) in the I2C
	specification.

- i2c-sda-falling-time-ns
	Number of nanoseconds the SDA signal takes to fall; t(f) in the I2C
	specification.

- interrupts
	interrupts used by the device.

- interrupt-names
	"irq" and "wakeup" names are recognized by I2C core, other names are
	left to individual drivers.

- multi-master
	states that there is another master active on this bus. The OS can use
	this information to adapt power management to keep the arbitration awake
	all the time, for example.

- wakeup-source
	device can be used as a wakeup source.

- reg
	I2C slave addresses

- reg-names
	Names of map programmable addresses.
	It can contain any map needing another address than default one.

Binding may contain optional "interrupts" property, describing interrupts
used by the device. I2C core will assign "irq" interrupt (or the very first
interrupt if not using interrupt names) as primary interrupt for the slave.

Also, if device is marked as a wakeup source, I2C core will set up "wakeup"
interrupt for the device. If "wakeup" interrupt name is not present in the
binding, then primary interrupt will be used as wakeup interrupt.
