brcm2708: add linux 4.1 support
[openwrt.git] / target / linux / brcm2708 / patches-4.1 / 0090-i2c-bcm2708-BCM270X_DT-Add-support-for-I2C2.patch
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
5
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.
8
9 It is recommended to disable accesses by VideoCore by setting
10 hdmi_ignore_edid=1 or hdmi_edid_file=1 in config.txt.
11
12 The interface is disabled by default - enable using the
13 i2c2_iknowwhatimdoing DT parameter.
14 ---
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(-)
22
23 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
24 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
25 @@ -75,6 +75,10 @@
26         clock-frequency = <100000>;
27  };
28  
29 +&i2c2 {
30 +       clock-frequency = <100000>;
31 +};
32 +
33  &i2s {
34         #sound-dai-cells = <0>;
35         pinctrl-names = "default";
36 @@ -103,8 +107,10 @@
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";
45  
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
49 @@ -75,6 +75,10 @@
50         clock-frequency = <100000>;
51  };
52  
53 +&i2c2 {
54 +       clock-frequency = <100000>;
55 +};
56 +
57  &i2s {
58         #sound-dai-cells = <0>;
59         pinctrl-names = "default";
60 @@ -97,8 +101,10 @@
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";
69  
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
73 @@ -65,6 +65,10 @@
74         clock-frequency = <100000>;
75  };
76  
77 +&i2c2 {
78 +       clock-frequency = <100000>;
79 +};
80 +
81  &i2s {
82         #sound-dai-cells = <0>;
83         pinctrl-names = "default";
84 @@ -79,8 +83,10 @@
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";
93         };
94  };
95 --- a/arch/arm/boot/dts/bcm2708_common.dtsi
96 +++ b/arch/arm/boot/dts/bcm2708_common.dtsi
97 @@ -20,6 +20,7 @@
98                 uart1 = &uart1;
99                 mmc = &mmc;
100                 i2c1 = &i2c1;
101 +               i2c2 = &i2c2;
102                 usb = &usb;
103                 leds = &leds;
104                 fb = &fb;
105 @@ -179,6 +180,19 @@
106                         interrupts = <2 21>;
107                         clocks = <&clk_i2c>;
108                         #address-cells = <1>;
109 +                       #size-cells = <0>;
110 +                       status = "disabled";
111 +               };
112 +
113 +               i2c2: i2c@7e805000 {
114 +                       // Beware - this is shared with the HDMI module.
115 +                       // Careless use may break (really) your display.
116 +                       // Caveat emptor.
117 +                       compatible = "brcm,bcm2708-i2c";
118 +                       reg = <0x7e805000 0x1000>;
119 +                       interrupts = <2 21>;
120 +                       clocks = <&clk_i2c>;
121 +                       #address-cells = <1>;
122                         #size-cells = <0>;
123                         status = "disabled";
124                 };
125 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
126 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
127 @@ -75,6 +75,10 @@
128         clock-frequency = <100000>;
129  };
130  
131 +&i2c2 {
132 +       clock-frequency = <100000>;
133 +};
134 +
135  &i2s {
136         #sound-dai-cells = <0>;
137         pinctrl-names = "default";
138 @@ -103,8 +107,10 @@
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";
147  
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
152         case 1:
153                 adap->class = I2C_CLASS_DDC;
154                 break;
155 +       case 2:
156 +               adap->class = I2C_CLASS_DDC;
157 +               break;
158         default:
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");
161                 err = -ENXIO;
162                 goto out_free_bi;
163         }