148 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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.
 | |
| 	An example of feature is SMBusHostNotify. Examples of restrictions are
 | |
| 	more reserved addresses and timeout definitions.
 | |
| 
 | |
| - smbus-alert
 | |
| 	states that the optional SMBus-Alert feature apply to this bus.
 | |
| 
 | |
| 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.
 |