f21ec972b8a08810721de2d59279f44510508e44
[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-volume-up {
43                         lable = "volume-up";
44                         linux,code = <KEY_VOLUMEUP>;
45                         gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
46                 };
47
48                 key-volume-down {
49                         lable = "volume-down";
50                         linux,code = <KEY_VOLUMEDOWN>;
51                         gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
52                 };
53
54                 key-fastforward {
55                         lable = "fastforward";
56                         linux,code = <KEY_FASTFORWARD>;
57                         gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
58                 };
59
60                 key-rewind {
61                         lable = "rewind";
62                         linux,code = <KEY_REWIND>;
63                         gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
64                 };
65
66                 key-playpause {
67                         lable = "playpause";
68                         linux,code = <KEY_PLAYPAUSE>;
69                         gpios = <&gpio 25 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_volume_up: key_volume_up {
131                 brcm,pins = <16>;
132                 brcm,function = <1>; /* BCM2835_FSEL_GPIO_IN */
133                 brcm,pull = <2>; /* BCM2835_PUD_UP */
134         };
135
136         key_volume_down: key_volume_down {
137                 brcm,pins = <13>;
138                 brcm,function = <1>;
139                 brcm,pull = <2>;
140         };
141
142         key_fastforward: key_fastforward {
143                 brcm,pins = <6>;
144                 brcm,function = <1>;
145                 brcm,pull = <2>;
146         };
147
148         key_rewind: key_rewind {
149                 brcm,pins = <12>;
150                 brcm,function = <1>;
151                 brcm,pull = <2>;
152         };
153
154         key_playpause: key_playpause {
155                 brcm,pins = <25>;
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         #address-cells = <1>;
225         #size-cells = <0>;
226
227         ac108_a: ac108@3b{
228                 compatible = "x-power,ac108_0";
229                 reg = <0x3b>;
230                 #sound-dai-cells = <0>;
231                 data-protocol = <0>;
232         };
233 };
234
235 &i2c2 {
236         clock-frequency = <100000>;
237         status = "okay";
238 };
239
240 &dpi {
241         status = "okay";
242 };
243
244 &hvs {
245         status = "okay";
246 };
247
248 &pixelvalve0 {
249         status = "okay";
250 };
251
252 &pixelvalve1 {
253         status = "okay";
254 };
255
256 &pixelvalve2 {
257         status = "okay";
258 };
259
260 &hdmi {
261         status = "okay";
262 };
263
264 &v3d {
265         status = "okay";
266 };
267
268 &vc4 {
269         status = "okay";
270 };
271
272 &i2s {
273         pinctrl-names = "default";
274         pinctrl-0 = <&i2s_pins>;
275
276         #sound-dai-cells = <0>;
277         status = "okay";
278 };
279
280 &leds {
281         act_led: act {
282                 label = "led0";
283                 linux,default-trigger = "mmc0";
284                 gpios = <&gpio 29 0>;
285         };
286
287         pwr_led: pwr {
288                 label = "led1";
289                 linux,default-trigger = "default-on";
290                 gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
291         };
292 };
293
294 &hdmi {
295         hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
296 };
297
298 &audio {
299         pinctrl-names = "default";
300         pinctrl-0 = <&audio_pins>;
301         status = "okay";
302 };
303
304 &sound {
305         compatible = "seeed-voicecard";
306         seeed-voice-card,format = "dsp_a";
307         seeed-voice-card,name = "seeed-4mic-voicecard";
308         status = "okay";
309
310         seeed-voice-card,bitclock-master = <&codec_dai>;
311         seeed-voice-card,frame-master = <&codec_dai>;
312         seeed-voice-card,channels-playback-override = <4>;
313         seeed-voice-card,channels-capture-override  = <4>;
314
315         cpu_dai: seeed-voice-card,cpu {
316                 sound-dai = <&i2s>;
317                 dai-tdm-slot-num     = <2>;
318                 dai-tdm-slot-width   = <32>;
319                 dai-tdm-slot-tx-mask = <1 1 0 0>;
320                 dai-tdm-slot-rx-mask = <1 1 0 0>;
321         };
322         codec_dai: seeed-voice-card,codec {
323                 sound-dai = <&ac108_a>;
324                 system-clock-frequency = <24000000>;
325         };
326 };
327
328 / {
329         __overrides__ {
330                 act_led_gpio = <&act_led>,"gpios:4";
331                 act_led_activelow = <&act_led>,"gpios:8";
332                 act_led_trigger = <&act_led>,"linux,default-trigger";
333
334                 pwr_led_gpio = <&pwr_led>,"gpios:4";
335                 pwr_led_activelow = <&pwr_led>,"gpios:8";
336                 pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
337         };
338 };
339
340 &i2c_dsi {
341         gpios = <&gpio 44 0
342                  &gpio 45 0>;
343         status = "okay";
344 };
345
346 &dsi1 {
347         #address-cells = <1>;
348         #size-cells = <0>;
349         status = "okay";
350 };