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

- smbus
	states that additional SMBus restrictions and features apply to this bus.
	Examples of features are SMBusHostNotify and SMBusAlert. Examples of
	restrictions are more reserved addresses and timeout definitions.

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.
