Commit 87840a2b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull i2c updates from Wolfram Sang:
 "Here is the 4.9 pull request from I2C including:

   - centralized error messages when registering to the core
   - improved lockdep annotations to prevent false positives
   - DT support for muxes, gates, and arbitrators
   - bus speeds can now be obtained from ACPI
   - i2c-octeon got refactored and now supports ThunderX SoCs, too
   - i2c-tegra and i2c-designware got a bigger bunch of updates
   - a couple of standard driver fixes and improvements"

* 'i2c/for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (71 commits)
  i2c: axxia: disable clks in case of failure in probe
  i2c: octeon: thunderx: Limit register access retries
  i2c: uniphier-f: fix misdetection of incomplete STOP condition
  gpio: pca953x: variable 'id' was used twice
  i2c: i801: Add support for Kaby Lake PCH-H
  gpio: pca953x: fix an incorrect lockdep warning
  i2c: add a warning to i2c_adapter_depth()
  lockdep: make MAX_LOCKDEP_SUBCLASSES unconditionally visible
  i2c: export i2c_adapter_depth()
  i2c: rk3x: Fix variable 'min_total_ns' unused warning
  i2c: rk3x: Fix sparse warning
  i2c / ACPI: Do not touch an I2C device if it belongs to another adapter
  i2c: octeon: Fix high-level controller status check
  i2c: octeon: Avoid sending STOP during recovery
  i2c: octeon: Fix set SCL recovery function
  i2c: rcar: add support for r8a7796 (R-Car M3-W)
  i2c: imx: make bus recovery through pinctrl optional
  i2c: meson: add gxbb compatible string
  i2c: uniphier-f: set the adapter to master mode when probing
  i2c: uniphier-f: avoid WARN_ON() of clk_disable() in failure path
  ...
parents 2ab704a4 662786a5
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -44,8 +44,7 @@ Required properties:
- our-claim-gpio: The GPIO that we use to claim the bus.
- their-claim-gpios: The GPIOs that the other sides use to claim the bus.
  Note that some implementations may only support a single other master.
- Standard I2C mux properties. See i2c-mux.txt in this directory.
- Single I2C child bus node at reg 0. See i2c-mux.txt in this directory.
- I2C arbitration bus node. See i2c-arb.txt in this directory.

Optional properties:
- slew-delay-us: microseconds to wait for a GPIO to go high. Default is 10 us.
@@ -63,8 +62,6 @@ Example:

	i2c-arbitrator {
		compatible = "i2c-arb-gpio-challenge";
		#address-cells = <1>;
		#size-cells = <0>;

		i2c-parent = <&{/i2c@12CA0000}>;

@@ -74,8 +71,7 @@ Example:
		wait-retry-us = <3000>;
		wait-free-us = <50000>;

		i2c@0 {
			reg = <0>;
		i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;

+35 −0
Original line number Diff line number Diff line
Common i2c arbitration bus properties.

- i2c-arb child node

Required properties for the i2c-arb child node:
- #address-cells = <1>;
- #size-cells = <0>;

Optional properties for i2c-arb child node:
- Child nodes conforming to i2c bus binding


Example :

	/*
	   An NXP pca9541 I2C bus master selector at address 0x74
	   with a NXP pca8574 GPIO expander attached.
	 */

	arb@74 {
		compatible = "nxp,pca9541";
		reg = <0x74>;

		i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;

			gpio@38 {
				compatible = "nxp,pca8574";
				reg = <0x38>;
				#gpio-cells = <2>;
				gpio-controller;
			};
		};
	};
+41 −0
Original line number Diff line number Diff line
An i2c gate is useful to e.g. reduce the digital noise for RF tuners connected
to the i2c bus. Gates are similar to arbitrators in that you need to perform
some kind of operation to access the i2c bus past the arbitrator/gate, but
there are no competing masters to consider for gates and therefore there is
no arbitration happening for gates.

Common i2c gate properties.

- i2c-gate child node

Required properties for the i2c-gate child node:
- #address-cells = <1>;
- #size-cells = <0>;

Optional properties for i2c-gate child node:
- Child nodes conforming to i2c bus binding


Example :

	/*
	   An Invensense mpu9150 at address 0x68 featuring an on-chip Asahi
	   Kasei ak8975 compass behind a gate.
	 */

	mpu9150@68 {
		compatible = "invensense,mpu9150";
		reg = <0x68>;
		interrupt-parent = <&gpio1>;
		interrupts = <18 1>;

		i2c-gate {
			#address-cells = <1>;
			#size-cells = <0>;

			ax8975@c {
				compatible = "ak,ak8975";
				reg = <0x0c>;
			};
		};
	};
+1 −1
Original line number Diff line number Diff line
Amlogic Meson I2C controller

Required properties:
 - compatible: must be "amlogic,meson6-i2c"
 - compatible: must be "amlogic,meson6-i2c" or "amlogic,meson-gxbb-i2c"
 - reg: physical address and length of the device registers
 - interrupts: a single interrupt specifier
 - clocks: clock for the device
+18 −5
Original line number Diff line number Diff line
@@ -2,19 +2,32 @@ Common i2c bus multiplexer/switch properties.

An i2c bus multiplexer/switch will have several child busses that are
numbered uniquely in a device dependent manner.  The nodes for an i2c bus
multiplexer/switch will have one child node for each child
bus.
multiplexer/switch will have one child node for each child bus.

Required properties:
Optional properties:
- #address-cells = <1>;
   This property is required is the i2c-mux child node does not exist.

- #size-cells = <0>;
   This property is required is the i2c-mux child node does not exist.

- i2c-mux
   For i2c multiplexers/switches that have child nodes that are a mixture
   of both i2c child busses and other child nodes, the 'i2c-mux' subnode
   can be used for populating the i2c child busses.  If an 'i2c-mux'
   subnode is present, only subnodes of this will be considered as i2c
   child busses.

Required properties for the i2c-mux child node:
- #address-cells = <1>;
- #size-cells = <0>;

Required properties for child nodes:
Required properties for i2c child bus nodes:
- #address-cells = <1>;
- #size-cells = <0>;
- reg : The sub-bus number.

Optional properties for child nodes:
Optional properties for i2c child bus nodes:
- Other properties specific to the multiplexer/switch hardware.
- Child nodes conforming to i2c bus binding

Loading