1 From f40ed032e6f0892778bac7d33d45593c0483628b Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Mon, 22 Jun 2015 14:23:03 +0100
4 Subject: [PATCH 090/121] i2c-bcm2708/BCM270X_DT: Add support for I2C2
6 The third I2C bus (I2C2) is normally reserved for HDMI use. Careless
7 use of this bus can break an attached display - use with caution.
9 It is recommended to disable accesses by VideoCore by setting
10 hdmi_ignore_edid=1 or hdmi_edid_file=1 in config.txt.
12 The interface is disabled by default - enable using the
13 i2c2_iknowwhatimdoing DT parameter.
15 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 6 ++++++
16 arch/arm/boot/dts/bcm2708-rpi-b.dts | 6 ++++++
17 arch/arm/boot/dts/bcm2708-rpi-cm.dts | 6 ++++++
18 arch/arm/boot/dts/bcm2708_common.dtsi | 14 ++++++++++++++
19 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 6 ++++++
20 drivers/i2c/busses/i2c-bcm2708.c | 5 ++++-
21 6 files changed, 42 insertions(+), 1 deletion(-)
23 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
24 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
26 clock-frequency = <100000>;
30 + clock-frequency = <100000>;
34 #sound-dai-cells = <0>;
35 pinctrl-names = "default";
37 spi = <&spi0>,"status";
38 i2c0 = <&i2c0>,"status";
39 i2c1 = <&i2c1>,"status";
40 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
41 i2c0_baudrate = <&i2c0>,"clock-frequency:0";
42 i2c1_baudrate = <&i2c1>,"clock-frequency:0";
43 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
44 core_freq = <&clk_core>,"clock-frequency:0";
46 act_led_gpio = <&act_led>,"gpios:4";
47 --- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
48 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
50 clock-frequency = <100000>;
54 + clock-frequency = <100000>;
58 #sound-dai-cells = <0>;
59 pinctrl-names = "default";
61 spi = <&spi0>,"status";
62 i2c0 = <&i2c0>,"status";
63 i2c1 = <&i2c1>,"status";
64 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
65 i2c0_baudrate = <&i2c0>,"clock-frequency:0";
66 i2c1_baudrate = <&i2c1>,"clock-frequency:0";
67 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
68 core_freq = <&clk_core>,"clock-frequency:0";
70 act_led_gpio = <&act_led>,"gpios:4";
71 --- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts
72 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
74 clock-frequency = <100000>;
78 + clock-frequency = <100000>;
82 #sound-dai-cells = <0>;
83 pinctrl-names = "default";
85 spi = <&spi0>,"status";
86 i2c0 = <&i2c0>,"status";
87 i2c1 = <&i2c1>,"status";
88 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
89 i2c0_baudrate = <&i2c0>,"clock-frequency:0";
90 i2c1_baudrate = <&i2c1>,"clock-frequency:0";
91 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
92 core_freq = <&clk_core>,"clock-frequency:0";
95 --- a/arch/arm/boot/dts/bcm2708_common.dtsi
96 +++ b/arch/arm/boot/dts/bcm2708_common.dtsi
108 #address-cells = <1>;
110 + status = "disabled";
113 + i2c2: i2c@7e805000 {
114 + // Beware - this is shared with the HDMI module.
115 + // Careless use may break (really) your display.
117 + compatible = "brcm,bcm2708-i2c";
118 + reg = <0x7e805000 0x1000>;
119 + interrupts = <2 21>;
120 + clocks = <&clk_i2c>;
121 + #address-cells = <1>;
125 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
126 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
128 clock-frequency = <100000>;
132 + clock-frequency = <100000>;
136 #sound-dai-cells = <0>;
137 pinctrl-names = "default";
139 spi = <&spi0>,"status";
140 i2c0 = <&i2c0>,"status";
141 i2c1 = <&i2c1>,"status";
142 + i2c2_iknowwhatimdoing = <&i2c2>,"status";
143 i2c0_baudrate = <&i2c0>,"clock-frequency:0";
144 i2c1_baudrate = <&i2c1>,"clock-frequency:0";
145 + i2c2_baudrate = <&i2c2>,"clock-frequency:0";
146 core_freq = <&clk_core>,"clock-frequency:0";
148 act_led_gpio = <&act_led>,"gpios:4";
149 --- a/drivers/i2c/busses/i2c-bcm2708.c
150 +++ b/drivers/i2c/busses/i2c-bcm2708.c
151 @@ -407,8 +407,11 @@ static int bcm2708_i2c_probe(struct plat
153 adap->class = I2C_CLASS_DDC;
156 + adap->class = I2C_CLASS_DDC;
159 - dev_err(&pdev->dev, "can only bind to BSC 0 or 1\n");
160 + dev_err(&pdev->dev, "can only bind to BSC 0, 1 or 2\n");