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

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

Required properties (per bus)
-----------------------------

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

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.

Optional properties (per bus)
-----------------------------

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

- 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.

- i2c-analog-filter
	Enable analog filter for i2c lines.

- i2c-digital-filter
	Enable digital filter for i2c lines.

- i2c-digital-filter-width-ns
	Width of spikes which can be filtered by digital filter
	(i2c-digital-filter). This width is specified in nanoseconds.

- i2c-analog-filter-cutoff-frequency
	Frequency that the analog filter (i2c-analog-filter) uses to distinguish
	which signal to filter. Signal with higher frequency than specified will
	be filtered out. Only lower frequency will pass (this is applicable to
	a low-pass analog filter). Typical value should be above the normal
	i2c bus clock frequency (clock-frequency).
	Specified in Hz.

- 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. Can not be combined with 'single-master'.

- pinctrl
	add extra pinctrl to configure SCL/SDA pins to GPIO function for bus
	recovery, call it "gpio" or "recovery" (deprecated) state

- scl-gpios
	specify the gpio related to SCL pin. Used for GPIO bus recovery.

- sda-gpios
	specify the gpio related to SDA pin. Optional for GPIO bus recovery.

- single-master
	states that there is no other master active on this bus. The OS can use
	this information to detect a stalled bus more reliably, for example.
	Can not be combined with 'multi-master'.

Required properties (per child device)
--------------------------------------

- compatible
	name of I2C slave device

- reg
	One or many I2C slave addresses. These are usually a 7 bit addresses.
	However, flags can be attached to an 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 (per child device)
--------------------------------------

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

- host-notify
	device uses SMBus host notify protocol instead of interrupt line.

- interrupts
	interrupts used by the device.

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

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

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

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.

Alternatively, devices supporting SMBus Host Notify, and connected to
adapters that support this feature, may use "host-notify" property. I2C
core will create a virtual interrupt for Host Notify and assign it 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.
