a07099137891d537dfd5ddfcc45c8fb09b726fc7
[platform/kernel/linux-rpi.git] / arch / arm / boot / dts / bcm2710-rpi-3-b-plus.dts
1 /dts-v1/;
2
3 #ifdef RPI364
4 /memreserve/ 0x08000000 0x02000000;
5 #endif
6
7 #include "bcm2710.dtsi"
8 #include "bcm2709-rpi.dtsi"
9 #include "bcm283x-rpi-lan7515.dtsi"
10 #include "bcm283x-rpi-csi1-2lane.dtsi"
11 #include <dt-bindings/input/input.h>
12
13 / {
14         compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
15         model = "Raspberry Pi 3 Model B+";
16
17         chosen {
18                 bootargs = "coherent_pool=1M 8250.nr_uarts=1";
19         };
20
21         aliases {
22                 serial0 = &uart1;
23                 serial1 = &uart0;
24                 mmc1 = &mmcnr;
25         };
26
27         rpi_backlight: rpi_backlight {
28                 compatible = "raspberrypi,rpi-backlight";
29                 firmware = <&firmware>;
30                 status = "okay";
31         };
32
33         rpi_ft5406: rpi_ft5406 {
34                 compatible = "rpi,rpi-ft5406";
35                 firmware = <&firmware>;
36                 status = "okay";
37         };
38
39         gpio-keys {
40                 compatible = "gpio-keys";
41
42                 key-up {
43                         lable = "up";
44                         linux,code = <KEY_VOLUMEUP>;
45                         gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
46                 };
47
48                 key-down {
49                         lable = "down";
50                         linux,code = <KEY_VOLUMEDOWN>;
51                         gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
52                 };
53
54                 key-left {
55                         lable = "left";
56                         linux,code = <KEY_FASTFORWARD>;
57                         gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
58                 };
59
60                 key-right {
61                         lable = "right";
62                         linux,code = <KEY_REWIND>;
63                         gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
64                 };
65
66                 key-center {
67                         lable = "center";
68                         linux,code = <KEY_PLAYPAUSE>;
69                         gpios = <&gpio 26 GPIO_ACTIVE_LOW>;
70                 };
71         };
72 };
73
74 &gpio {
75         spi0_pins: spi0_pins {
76                 brcm,pins = <9 10 11>;
77                 brcm,function = <4>; /* alt0 */
78         };
79
80         spi0_cs_pins: spi0_cs_pins {
81                 brcm,pins = <8 7>;
82                 brcm,function = <1>; /* output */
83         };
84
85         i2c0_pins: i2c0 {
86                 brcm,pins = <0 1>;
87                 brcm,function = <4>;
88         };
89
90         i2c1_pins: i2c1 {
91                 brcm,pins = <2 3>;
92                 brcm,function = <4>;
93         };
94
95         i2s_pins: i2s {
96                 brcm,pins = <18 19 20 21>;
97                 brcm,function = <4>; /* alt0 */
98         };
99
100         sdio_pins: sdio_pins {
101                 brcm,pins =     <34 35 36 37 38 39>;
102                 brcm,function = <7>; // alt3 = SD1
103                 brcm,pull =     <0 2 2 2 2 2>;
104         };
105
106         bt_pins: bt_pins {
107                 brcm,pins = <43>;
108                 brcm,function = <4>; /* alt0:GPCLK2 */
109                 brcm,pull = <0>;
110         };
111
112         uart0_pins: uart0_pins {
113                 brcm,pins = <32 33>;
114                 brcm,function = <7>; /* alt3=UART0 */
115                 brcm,pull = <0 2>;
116         };
117
118         uart1_pins: uart1_pins {
119                 brcm,pins;
120                 brcm,function;
121                 brcm,pull;
122         };
123
124         audio_pins: audio_pins {
125                 brcm,pins = <40 41>;
126                 brcm,function = <4>;
127         };
128
129         /* Needs to describe gpio settings at config.txt */
130         key_up: key_up {
131                 brcm,pins = <16>;
132                 brcm,function = <1>; /* BCM2835_FSEL_GPIO_IN */
133                 brcm,pull = <2>; /* BCM2835_PUD_UP */
134         };
135
136         key_down: key_down {
137                 brcm,pins = <13>;
138                 brcm,function = <1>;
139                 brcm,pull = <2>;
140         };
141
142         key_left: key_left {
143                 brcm,pins = <6>;
144                 brcm,function = <1>;
145                 brcm,pull = <2>;
146         };
147
148         key_right: key_right {
149                 brcm,pins = <12>;
150                 brcm,function = <1>;
151                 brcm,pull = <2>;
152         };
153
154         key_center: key_center {
155                 brcm,pins = <26>;
156                 brcm,function = <1>;
157                 brcm,pull = <2>;
158         };
159 };
160
161 &mmcnr {
162         pinctrl-names = "default";
163         pinctrl-0 = <&sdio_pins>;
164         bus-width = <4>;
165         status = "okay";
166 };
167
168 &firmware {
169         expgpio: expgpio {
170                 compatible = "raspberrypi,firmware-gpio";
171                 gpio-controller;
172                 #gpio-cells = <2>;
173                 status = "okay";
174         };
175 };
176
177 &uart0 {
178         pinctrl-names = "default";
179         pinctrl-0 = <&uart0_pins &bt_pins>;
180         status = "okay";
181 };
182
183 &uart1 {
184         pinctrl-names = "default";
185         pinctrl-0 = <&uart1_pins>;
186         status = "okay";
187 };
188
189 &spi0 {
190         pinctrl-names = "default";
191         pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
192         cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
193         status = "okay";
194
195         spidev0: spidev@0{
196                 compatible = "spidev";
197                 reg = <0>;      /* CE0 */
198                 #address-cells = <1>;
199                 #size-cells = <0>;
200                 spi-max-frequency = <125000000>;
201         };
202
203         spidev1: spidev@1{
204                 compatible = "spidev";
205                 reg = <1>;      /* CE1 */
206                 #address-cells = <1>;
207                 #size-cells = <0>;
208                 spi-max-frequency = <125000000>;
209         };
210 };
211
212 &i2c0 {
213         pinctrl-names = "default";
214         pinctrl-0 = <&i2c0_pins>;
215         clock-frequency = <100000>;
216 };
217
218 &i2c1 {
219         pinctrl-names = "default";
220         pinctrl-0 = <&i2c1_pins>;
221         clock-frequency = <100000>;
222         status = "okay";
223 };
224
225 &i2c2 {
226         clock-frequency = <100000>;
227         status = "okay";
228 };
229
230 &dpi {
231         status = "okay";
232 };
233
234 &hvs {
235         status = "okay";
236 };
237
238 &pixelvalve0 {
239         status = "okay";
240 };
241
242 &pixelvalve1 {
243         status = "okay";
244 };
245
246 &pixelvalve2 {
247         status = "okay";
248 };
249
250 &hdmi {
251         status = "okay";
252 };
253
254 &v3d {
255         status = "okay";
256 };
257
258 &vc4 {
259         status = "okay";
260 };
261
262 &i2s {
263         pinctrl-names = "default";
264         pinctrl-0 = <&i2s_pins>;
265 };
266
267 &leds {
268         act_led: act {
269                 label = "led0";
270                 linux,default-trigger = "mmc0";
271                 gpios = <&gpio 29 0>;
272         };
273
274         pwr_led: pwr {
275                 label = "led1";
276                 linux,default-trigger = "default-on";
277                 gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
278         };
279 };
280
281 &hdmi {
282         hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
283 };
284
285 &audio {
286         pinctrl-names = "default";
287         pinctrl-0 = <&audio_pins>;
288         status = "okay";
289 };
290
291 / {
292         __overrides__ {
293                 act_led_gpio = <&act_led>,"gpios:4";
294                 act_led_activelow = <&act_led>,"gpios:8";
295                 act_led_trigger = <&act_led>,"linux,default-trigger";
296
297                 pwr_led_gpio = <&pwr_led>,"gpios:4";
298                 pwr_led_activelow = <&pwr_led>,"gpios:8";
299                 pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
300         };
301 };
302
303 &i2c_dsi {
304         gpios = <&gpio 44 0
305                  &gpio 45 0>;
306         status = "okay";
307 };
308
309 &dsi1 {
310         #address-cells = <1>;
311         #size-cells = <0>;
312         status = "okay";
313
314         pitouchscreen: panel@0 {
315                 compatible = "raspberrypi,touchscreen";
316                 reg = <0>;
317                 raspberrypi,touchscreen-bridge = <&pitouchscreen_bridge>;
318         };
319 };