Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae32adc1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'i2c-embedded/for-next' of git://git.pengutronix.de/git/wsa/linux

Pull i2c-embedded changes from Wolfram Sang:
 "Major changes:

   - lots of devicetree additions for existing drivers.  I tried hard to
     make sure the bindings are proper.  In more complicated cases, I
     requested acks from people having more experience with them than
     me.  That took a bit of extra time and also some time went into
     discussions with developers about what bindings are and what not.
     I have the feeling that the workflow with bindings should be
     improved to scale better.  I will spend some more thought on
     this...

   - i2c-muxes are succesfully used meanwhile, so we dropped
     EXPERIMENTAL for them and renamed the drivers to a standard pattern
     to match the rest of the subsystem.  They can also be used with
     devicetree now.

   - ixp2000 was removed since the whole platform goes away.

   - cleanups (strlcpy instead of strcpy, NULL instead of 0)

   - The rest is typical driver fixes I assume.

  All patches have been in linux-next at least since v3.4-rc6."

Fixed up trivial conflict in arch/arm/mach-lpc32xx/common.c due to the
same patch already having come in through the arm/soc trees, with
additional patches on top of it.

* 'i2c-embedded/for-next' of git://git.pengutronix.de/git/wsa/linux: (35 commits)
  i2c: davinci: Free requested IRQ in remove
  i2c: ocores: register OF i2c devices
  i2c: tegra: notify transfer-complete after clearing status.
  I2C: xiic: Add OF binding support
  i2c: Rename last mux driver to standard pattern
  i2c: tegra: fix 10bit address configuration
  i2c: muxes: rename first set of drivers to a standard pattern
  of/i2c: implement of_find_i2c_adapter_by_node
  i2c: implement i2c_verify_adapter
  i2c-s3c2410: Add HDMIPHY quirk for S3C2440
  i2c-s3c2410: Rework device type handling
  i2c: muxes are not EXPERIMENTAL anymore
  i2c/of: Automatically populate i2c mux busses from device tree data.
  i2c: Add a struct device * parameter to i2c_add_mux_adapter()
  of/i2c: call i2c_verify_client from of_find_i2c_device_by_node
  i2c: designware: Add clk_{un}prepare() support
  i2c: designware: add PM support
  i2c: ixp2000: remove driver
  i2c: pnx: add device tree support
  i2c: imx: don't use strcpy but strlcpy
  ...
parents f465d145 9868a060
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
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.

Required properties:
- #address-cells = <1>;
- #size-cells = <0>;

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

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


Example :

	/*
	   An NXP pca9548 8 channel I2C multiplexer at address 0x70
	   with two NXP pca8574 GPIO expanders attached, one each to
	   ports 3 and 4.
	 */

	mux@70 {
		compatible = "nxp,pca9548";
		reg = <0x70>;
		#address-cells = <1>;
		#size-cells = <0>;

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

			gpio1: gpio@38 {
				compatible = "nxp,pca8574";
				reg = <0x38>;
				#gpio-cells = <2>;
				gpio-controller;
			};
		};
		i2c@4 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <4>;

			gpio2: gpio@38 {
				compatible = "nxp,pca8574";
				reg = <0x38>;
				#gpio-cells = <2>;
				gpio-controller;
			};
		};
	};
+6 −2
Original line number Diff line number Diff line
@@ -6,14 +6,18 @@ Required properties:
  - compatible: value should be either of the following.
      (a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c.
      (b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c.
      (c) "samsung, s3c2440-hdmiphy-i2c", for s3c2440-like i2c used
          inside HDMIPHY block found on several samsung SoCs
  - reg: physical base address of the controller and length of memory mapped
    region.
  - interrupts: interrupt number to the cpu.
  - samsung,i2c-sda-delay: Delay (in ns) applied to data line (SDA) edges.
  - gpios: The order of the gpios should be the following: <SDA, SCL>.
    The gpio specifier depends on the gpio controller.

Optional properties:
  - gpios: The order of the gpios should be the following: <SDA, SCL>.
    The gpio specifier depends on the gpio controller. Required in all
    cases except for "samsung,s3c2440-hdmiphy-i2c" whose input/output
    lines are permanently wired to the respective client
  - samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
    specified, default value is 0.
  - samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
+22 −0
Original line number Diff line number Diff line
Xilinx IIC controller:

Required properties:
- compatible : Must be "xlnx,xps-iic-2.00.a"
- reg : IIC register location and length
- interrupts : IIC controller unterrupt
- #address-cells = <1>
- #size-cells = <0>

Optional properties:
- Child nodes conforming to i2c bus binding

Example:

	axi_iic_0: i2c@40800000 {
		compatible = "xlnx,xps-iic-2.00.a";
		interrupts = < 1 2 >;
		reg = < 0x40800000 0x10000 >;

		#size-cells = <0>;
		#address-cells = <1>;
	};
+6 −6
Original line number Diff line number Diff line
Kernel driver gpio-i2cmux
Kernel driver i2c-gpio-mux

Author: Peter Korsgaard <peter.korsgaard@barco.com>

Description
-----------

gpio-i2cmux is an i2c mux driver providing access to I2C bus segments
i2c-gpio-mux is an i2c mux driver providing access to I2C bus segments
from a master I2C bus and a hardware MUX controlled through GPIO pins.

E.G.:
@@ -26,16 +26,16 @@ according to the settings of the GPIO pins 1..N.
Usage
-----

gpio-i2cmux uses the platform bus, so you need to provide a struct
i2c-gpio-mux uses the platform bus, so you need to provide a struct
platform_device with the platform_data pointing to a struct
gpio_i2cmux_platform_data with the I2C adapter number of the master
bus, the number of bus segments to create and the GPIO pins used
to control it. See include/linux/gpio-i2cmux.h for details.
to control it. See include/linux/i2c-gpio-mux.h for details.

E.G. something like this for a MUX providing 4 bus segments
controlled through 3 GPIO pins:

#include <linux/gpio-i2cmux.h>
#include <linux/i2c-gpio-mux.h>
#include <linux/platform_device.h>

static const unsigned myboard_gpiomux_gpios[] = {
@@ -57,7 +57,7 @@ static struct gpio_i2cmux_platform_data myboard_i2cmux_data = {
};

static struct platform_device myboard_i2cmux = {
	.name		= "gpio-i2cmux",
	.name		= "i2c-gpio-mux",
	.id		= 0,
	.dev		= {
		.platform_data	= &myboard_i2cmux_data,
+4 −4
Original line number Diff line number Diff line
@@ -2988,9 +2988,9 @@ GENERIC GPIO I2C MULTIPLEXER DRIVER
M:	Peter Korsgaard <peter.korsgaard@barco.com>
L:	linux-i2c@vger.kernel.org
S:	Supported
F:	drivers/i2c/muxes/gpio-i2cmux.c
F:	include/linux/gpio-i2cmux.h
F:	Documentation/i2c/muxes/gpio-i2cmux
F:	drivers/i2c/muxes/i2c-mux-gpio.c
F:	include/linux/i2c-mux-gpio.h
F:	Documentation/i2c/muxes/i2c-mux-gpio

GENERIC HDLC (WAN) DRIVERS
M:	Krzysztof Halasa <khc@pm.waw.pl>
@@ -5148,7 +5148,7 @@ PCA9541 I2C BUS MASTER SELECTOR DRIVER
M:	Guenter Roeck <guenter.roeck@ericsson.com>
L:	linux-i2c@vger.kernel.org
S:	Maintained
F:	drivers/i2c/muxes/pca9541.c
F:	drivers/i2c/muxes/i2c-mux-pca9541.c

PCA9564/PCA9665 I2C BUS DRIVER
M:	Wolfram Sang <w.sang@pengutronix.de>
Loading