-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/ker…
…nel/git/wsa/linux Pull i2c updates from Wolfram Sang: "Mostly usual driver updates and improvements. The changelog should give an idea. Standing out is the i2c-qup driver with lots of new capabilities and we also have now an i2c-demuxer. I'd especially like to welcome Peter Rosin as the i2c-mux maintainer. He has an interesting series for muxes in the queue and agreed to look after this part of the subsystem. Thank you, Peter, and welcome again! The octeon changes were applied pretty recently before the merge window. I am aware. They are the first (and relatively simple) patches of a larger overhaul to this driver. In case something goes wrong with them, they are easy to fix (or revert). The advantage I see is that they are out of the way, and I can concentrate on the next block of patches. I really would like to apply the overhaul in smaller batches to avoid regressions. And waiting a cycle for the introductory patches seemed too much of a delay for me" * 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (39 commits) i2c: octeon: Support I2C_M_RECV_LEN i2c: octeon: Cleanup resource allocation code i2c: octeon: Cleanup i2c-octeon driver MAINTAINERS: add Peter Rosin as i2c mux maintainer dt-bindings: i2c: Spelling s/propoerty/property/ i2c: immediately mark ourselves as registered i2c: i801: sort IDs alphabetically MAINTAINERS: Mika and me are designated reviewers for I2C DESIGNWARE i2c: octeon: Cleanup kerneldoc comments i2c: do not use internal data from driver core i2c: cadence: Fix the kernel-doc warnings i2c: imx: remove extra spaces. i2c: rcar: don't open code of_device_get_match_data() i2c: qup: Fix fifo handling after adding V2 support i2c: xiic: Implement power management i2c: piix4: Pre-shift the port number i2c: piix4: Always use the same type for port i2c: piix4: Support alternative port selection register i2c: tegra: don't open code of_device_get_match_data() i2c: riic, sh_mobile, rcar: Use ARCH_RENESAS ...
- Loading branch information
Showing
31 changed files
with
1,893 additions
and
372 deletions.
There are no files selected for viewing
23 changes: 23 additions & 0 deletions
23
Documentation/ABI/testing/sysfs-platform-i2c-demux-pinctrl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
What: /sys/devices/platform/<i2c-demux-name>/cur_master | ||
Date: January 2016 | ||
KernelVersion: 4.6 | ||
Contact: Wolfram Sang <wsa@the-dreams.de> | ||
Description: | ||
|
||
This file selects the active I2C master for a demultiplexed bus. | ||
|
||
Write 0 there for the first master, 1 for the second etc. Reading the file will | ||
give you a list with the active master marked. Example from a Renesas Lager | ||
board: | ||
|
||
root@Lager:~# cat /sys/devices/platform/i2c@8/cur_master | ||
* 0 - /i2c@9 | ||
1 - /i2c@e6520000 | ||
2 - /i2c@e6530000 | ||
|
||
root@Lager:~# echo 2 > /sys/devices/platform/i2c@8/cur_master | ||
|
||
root@Lager:~# cat /sys/devices/platform/i2c@8/cur_master | ||
0 - /i2c@9 | ||
1 - /i2c@e6520000 | ||
* 2 - /i2c@e6530000 |
135 changes: 135 additions & 0 deletions
135
Documentation/devicetree/bindings/i2c/i2c-demux-pinctrl.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
Pinctrl-based I2C Bus DeMux | ||
|
||
This binding describes an I2C bus demultiplexer that uses pin multiplexing to | ||
route the I2C signals, and represents the pin multiplexing configuration using | ||
the pinctrl device tree bindings. This may be used to select one I2C IP core at | ||
runtime which may have a better feature set for a given task than another I2C | ||
IP core on the SoC. The most simple example is to fall back to GPIO bitbanging | ||
if your current runtime configuration hits an errata of the internal IP core. | ||
|
||
+-------------------------------+ | ||
| SoC | | ||
| | +-----+ +-----+ | ||
| +------------+ | | dev | | dev | | ||
| |I2C IP Core1|--\ | +-----+ +-----+ | ||
| +------------+ \-------+ | | | | ||
| |Pinctrl|--|------+--------+ | ||
| +------------+ +-------+ | | ||
| |I2C IP Core2|--/ | | ||
| +------------+ | | ||
| | | ||
+-------------------------------+ | ||
|
||
Required properties: | ||
- compatible: "i2c-demux-pinctrl" | ||
- i2c-parent: List of phandles of I2C masters available for selection. The first | ||
one will be used as default. | ||
- i2c-bus-name: The name of this bus. Also needed as pinctrl-name for the I2C | ||
parents. | ||
|
||
Furthermore, I2C mux properties and child nodes. See mux.txt in this directory. | ||
|
||
Example: | ||
|
||
Here is a snipplet for a bus to be demuxed. It contains various i2c clients for | ||
HDMI, so the bus is named "i2c-hdmi": | ||
|
||
i2chdmi: i2c@8 { | ||
|
||
compatible = "i2c-demux-pinctrl"; | ||
i2c-parent = <&gpioi2c>, <&iic2>, <&i2c2>; | ||
i2c-bus-name = "i2c-hdmi"; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
ak4643: sound-codec@12 { | ||
compatible = "asahi-kasei,ak4643"; | ||
|
||
#sound-dai-cells = <0>; | ||
reg = <0x12>; | ||
}; | ||
|
||
composite-in@20 { | ||
compatible = "adi,adv7180"; | ||
reg = <0x20>; | ||
remote = <&vin1>; | ||
|
||
port { | ||
adv7180: endpoint { | ||
bus-width = <8>; | ||
remote-endpoint = <&vin1ep0>; | ||
}; | ||
}; | ||
}; | ||
|
||
hdmi@39 { | ||
compatible = "adi,adv7511w"; | ||
reg = <0x39>; | ||
interrupt-parent = <&gpio1>; | ||
interrupts = <15 IRQ_TYPE_LEVEL_LOW>; | ||
|
||
adi,input-depth = <8>; | ||
adi,input-colorspace = "rgb"; | ||
adi,input-clock = "1x"; | ||
adi,input-style = <1>; | ||
adi,input-justification = "evenly"; | ||
|
||
ports { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
port@0 { | ||
reg = <0>; | ||
adv7511_in: endpoint { | ||
remote-endpoint = <&du_out_lvds0>; | ||
}; | ||
}; | ||
|
||
port@1 { | ||
reg = <1>; | ||
adv7511_out: endpoint { | ||
remote-endpoint = <&hdmi_con>; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
|
||
And for clarification, here are the snipplets for the i2c-parents: | ||
|
||
gpioi2c: i2c@9 { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
compatible = "i2c-gpio"; | ||
status = "disabled"; | ||
gpios = <&gpio5 6 GPIO_ACTIVE_HIGH /* sda */ | ||
&gpio5 5 GPIO_ACTIVE_HIGH /* scl */ | ||
>; | ||
i2c-gpio,delay-us = <5>; | ||
}; | ||
|
||
... | ||
|
||
&i2c2 { | ||
pinctrl-0 = <&i2c2_pins>; | ||
pinctrl-names = "i2c-hdmi"; | ||
|
||
clock-frequency = <100000>; | ||
}; | ||
|
||
... | ||
|
||
&iic2 { | ||
pinctrl-0 = <&iic2_pins>; | ||
pinctrl-names = "i2c-hdmi"; | ||
|
||
clock-frequency = <100000>; | ||
}; | ||
|
||
Please note: | ||
|
||
- pinctrl properties for the parent I2C controllers need a pinctrl state | ||
with the same name as i2c-bus-name, not "default"! | ||
|
||
- the i2c masters must have their status "disabled". This driver will | ||
enable them at runtime when needed. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.