Linux-libre 5.7.3-gnu
[librecmc/linux-libre.git] / arch / arm / boot / dts / da850-lcdk.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2016 BayLibre, Inc.
4  */
5 /dts-v1/;
6 #include "da850.dtsi"
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/input/input.h>
9
10 / {
11         model = "DA850/AM1808/OMAP-L138 LCDK";
12         compatible = "ti,da850-lcdk", "ti,da850";
13
14         aliases {
15                 serial2 = &serial2;
16                 ethernet0 = &eth0;
17         };
18
19         chosen {
20                 stdout-path = "serial2:115200n8";
21         };
22
23         memory@c0000000 {
24                 /* 128 MB DDR2 SDRAM @ 0xc0000000 */
25                 reg = <0xc0000000 0x08000000>;
26         };
27
28         reserved-memory {
29                 #address-cells = <1>;
30                 #size-cells = <1>;
31                 ranges;
32
33                 dsp_memory_region: dsp-memory@c3000000 {
34                         compatible = "shared-dma-pool";
35                         reg = <0xc3000000 0x1000000>;
36                         reusable;
37                         status = "okay";
38                 };
39         };
40
41         vcc_5vd: fixedregulator-vcc_5vd {
42                 compatible = "regulator-fixed";
43                 regulator-name = "vcc_5vd";
44                 regulator-min-microvolt = <5000000>;
45                 regulator-max-microvolt = <5000000>;
46                 regulator-boot-on;
47         };
48
49         vcc_3v3d: fixedregulator-vcc_3v3d {
50                 /* TPS650250 - VDCDC1 */
51                 compatible = "regulator-fixed";
52                 regulator-name = "vcc_3v3d";
53                 regulator-min-microvolt = <3300000>;
54                 regulator-max-microvolt = <3300000>;
55                 vin-supply = <&vcc_5vd>;
56                 regulator-always-on;
57                 regulator-boot-on;
58         };
59
60         vcc_1v8d: fixedregulator-vcc_1v8d {
61                 /* TPS650250 - VDCDC2 */
62                 compatible = "regulator-fixed";
63                 regulator-name = "vcc_1v8d";
64                 regulator-min-microvolt = <1800000>;
65                 regulator-max-microvolt = <1800000>;
66                 vin-supply = <&vcc_5vd>;
67                 regulator-always-on;
68                 regulator-boot-on;
69         };
70
71         sound {
72                 compatible = "simple-audio-card";
73                 simple-audio-card,name = "DA850-OMAPL138 LCDK";
74                 simple-audio-card,widgets =
75                         "Line", "Line In",
76                         "Line", "Line Out",
77                         "Microphone", "Mic Jack";
78                 simple-audio-card,routing =
79                         "LINE1L", "Line In",
80                         "LINE1R", "Line In",
81                         "Line Out", "LLOUT",
82                         "Line Out", "RLOUT",
83                         "MIC3L", "Mic Jack",
84                         "MIC3R", "Mic Jack",
85                         "Mic Jack", "Mic Bias";
86                 simple-audio-card,format = "dsp_b";
87                 simple-audio-card,bitclock-master = <&link0_codec>;
88                 simple-audio-card,frame-master = <&link0_codec>;
89                 simple-audio-card,bitclock-inversion;
90
91                 simple-audio-card,cpu {
92                         sound-dai = <&mcasp0>;
93                         system-clock-frequency = <24576000>;
94                 };
95
96                 link0_codec: simple-audio-card,codec {
97                         sound-dai = <&tlv320aic3106>;
98                         system-clock-frequency = <24576000>;
99                 };
100         };
101
102         gpio-keys {
103                 compatible = "gpio-keys";
104                 autorepeat;
105
106                 user1 {
107                         label = "GPIO Key USER1";
108                         linux,code = <BTN_0>;
109                         gpios = <&gpio 36 GPIO_ACTIVE_LOW>;
110                 };
111
112                 user2 {
113                         label = "GPIO Key USER2";
114                         linux,code = <BTN_1>;
115                         gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
116                 };
117         };
118
119         vga-bridge {
120                 compatible = "ti,ths8135";
121                 #address-cells = <1>;
122                 #size-cells = <0>;
123
124                 ports {
125                         #address-cells = <1>;
126                         #size-cells = <0>;
127
128                         port@0 {
129                                 reg = <0>;
130
131                                 vga_bridge_in: endpoint {
132                                         remote-endpoint = <&lcdc_out_vga>;
133                                 };
134                         };
135
136                         port@1 {
137                                 reg = <1>;
138
139                                 vga_bridge_out: endpoint {
140                                         remote-endpoint = <&vga_con_in>;
141                                 };
142                         };
143                 };
144         };
145
146         vga {
147                 compatible = "vga-connector";
148
149                 ddc-i2c-bus = <&i2c0>;
150
151                 port {
152                         vga_con_in: endpoint {
153                                 remote-endpoint = <&vga_bridge_out>;
154                         };
155                 };
156         };
157
158         cvdd: regulator0 {
159                 compatible = "regulator-fixed";
160                 regulator-name = "cvdd";
161                 regulator-min-microvolt = <1300000>;
162                 regulator-max-microvolt = <1300000>;
163                 regulator-always-on;
164                 regulator-boot-on;
165         };
166 };
167
168 &ref_clk {
169         clock-frequency = <24000000>;
170 };
171
172 &cpu {
173         cpu-supply = <&cvdd>;
174 };
175
176 /*
177  * LCDK has a fixed CVDD of 1.3V, so only operating points >= 300MHz are
178  * valid. Unfortunately due to a problem with the DA8XX OHCI controller, we
179  * can't enable more than one OPP by default, since the controller sometimes
180  * becomes unresponsive after a transition. Fix the frequency at 456 MHz.
181  */
182
183 &opp_100 {
184         status = "disabled";
185 };
186
187 &opp_200 {
188         status = "disabled";
189 };
190
191 &opp_300 {
192         status = "disabled";
193 };
194
195 &opp_456 {
196         status = "okay";
197 };
198
199 &pmx_core {
200         status = "okay";
201
202         mcasp0_pins: pinmux_mcasp0_pins {
203                 pinctrl-single,bits = <
204                         /* AHCLKX AFSX ACLKX */
205                         0x00 0x00101010 0x00f0f0f0
206                         /* ARX13 ARX14 */
207                         0x04 0x00000110 0x00000ff0
208                 >;
209         };
210
211         nand_pins: nand_pins {
212                 pinctrl-single,bits = <
213                         /* EMA_WAIT[0], EMA_OE, EMA_WE, EMA_CS[3] */
214                         0x1c 0x10110010  0xf0ff00f0
215                         /*
216                          * EMA_D[0], EMA_D[1], EMA_D[2],
217                          * EMA_D[3], EMA_D[4], EMA_D[5],
218                          * EMA_D[6], EMA_D[7]
219                          */
220                         0x24 0x11111111  0xffffffff
221                         /*
222                          * EMA_D[8],  EMA_D[9],  EMA_D[10],
223                          * EMA_D[11], EMA_D[12], EMA_D[13],
224                          * EMA_D[14], EMA_D[15]
225                          */
226                         0x20 0x11111111  0xffffffff
227                         /* EMA_A[1], EMA_A[2] */
228                         0x30 0x01100000  0x0ff00000
229                 >;
230         };
231 };
232
233 &serial2 {
234         pinctrl-names = "default";
235         pinctrl-0 = <&serial2_rxtx_pins>;
236         status = "okay";
237 };
238
239 &wdt {
240         status = "okay";
241 };
242
243 &rtc0 {
244         status = "okay";
245 };
246
247 &gpio {
248         status = "okay";
249 };
250
251 &sata_refclk {
252         status = "okay";
253         clock-frequency = <100000000>;
254 };
255
256 &sata {
257         status = "okay";
258 };
259
260 &mdio {
261         pinctrl-names = "default";
262         pinctrl-0 = <&mdio_pins>;
263         bus_freq = <2200000>;
264         status = "okay";
265 };
266
267 &eth0 {
268         pinctrl-names = "default";
269         pinctrl-0 = <&mii_pins>;
270         status = "okay";
271 };
272
273 &mmc0 {
274         max-frequency = <50000000>;
275         bus-width = <4>;
276         pinctrl-names = "default";
277         pinctrl-0 = <&mmc0_pins>;
278         cd-gpios = <&gpio 64 GPIO_ACTIVE_LOW>;
279         status = "okay";
280 };
281
282 &i2c0 {
283         pinctrl-names = "default";
284         pinctrl-0 = <&i2c0_pins>;
285         clock-frequency = <100000>;
286         status = "okay";
287
288         tlv320aic3106: tlv320aic3106@18 {
289                 #sound-dai-cells = <0>;
290                 compatible = "ti,tlv320aic3106";
291                 reg = <0x18>;
292                 adc-settle-ms = <40>;
293                 ai3x-micbias-vg = <1>;          /* 2.0V */
294                 status = "okay";
295
296                 /* Regulators */
297                 IOVDD-supply = <&vcc_3v3d>;
298                 AVDD-supply = <&vcc_3v3d>;
299                 DRVDD-supply = <&vcc_3v3d>;
300                 DVDD-supply = <&vcc_1v8d>;
301         };
302 };
303
304 &mcasp0 {
305         #sound-dai-cells = <0>;
306         pinctrl-names = "default";
307         pinctrl-0 = <&mcasp0_pins>;
308         status = "okay";
309
310         op-mode = <0>;   /* DAVINCI_MCASP_IIS_MODE */
311         tdm-slots = <2>;
312         serial-dir = <   /* 0: INACTIVE, 1: TX, 2: RX */
313                 0 0 0 0
314                 0 0 0 0
315                 0 0 0 0
316                 0 1 2 0
317         >;
318         tx-num-evt = <32>;
319         rx-num-evt = <32>;
320 };
321
322 &usb_phy {
323         status = "okay";
324 };
325
326 &usb0 {
327         status = "okay";
328 };
329
330 &usb1 {
331         status = "okay";
332 };
333
334 &aemif {
335         pinctrl-names = "default";
336         pinctrl-0 = <&nand_pins>;
337         status = "okay";
338         cs3 {
339                 #address-cells = <2>;
340                 #size-cells = <1>;
341                 clock-ranges;
342                 ranges;
343
344                 ti,cs-chipselect = <3>;
345
346                 nand@2000000,0 {
347                         compatible = "ti,davinci-nand";
348                         #address-cells = <1>;
349                         #size-cells = <1>;
350                         reg = <0 0x02000000 0x02000000
351                                1 0x00000000 0x00008000>;
352
353                         ti,davinci-chipselect = <1>;
354                         ti,davinci-mask-ale = <0>;
355                         ti,davinci-mask-cle = <0>;
356                         ti,davinci-mask-chipsel = <0>;
357
358                         ti,davinci-nand-buswidth = <16>;
359                         ti,davinci-ecc-mode = "hw";
360                         ti,davinci-ecc-bits = <4>;
361                         ti,davinci-nand-use-bbt;
362
363                         /*
364                          * The OMAP-L132/L138 Bootloader doc SPRAB41E reads:
365                          * "To boot from NAND Flash, the AIS should be written
366                          * to NAND block 1 (NAND block 0 is not used by default)".
367                          * The same doc mentions that for ROM "Silicon Revision 2.1",
368                          * "Updated NAND boot mode to offer boot from block 0 or block 1".
369                          * However the limitaion is left here by default for compatibility
370                          * with older silicon and because it needs new boot pin settings
371                          * not possible in stock LCDK.
372                          */
373                         partitions {
374                                 compatible = "fixed-partitions";
375                                 #address-cells = <1>;
376                                 #size-cells = <1>;
377
378                                 partition@0 {
379                                         label = "u-boot env";
380                                         reg = <0 0x020000>;
381                                 };
382                                 partition@20000 {
383                                         /* The LCDK defaults to booting from this partition */
384                                         label = "u-boot";
385                                         reg = <0x020000 0x080000>;
386                                 };
387                                 partition@a0000 {
388                                         label = "free space";
389                                         reg = <0x0a0000 0>;
390                                 };
391                         };
392                 };
393         };
394 };
395
396 &prictrl {
397         status = "okay";
398 };
399
400 &memctrl {
401         status = "okay";
402 };
403
404 &lcdc {
405         status = "okay";
406         pinctrl-names = "default";
407         pinctrl-0 = <&lcd_pins>;
408
409         port {
410                 lcdc_out_vga: endpoint {
411                         remote-endpoint = <&vga_bridge_in>;
412                 };
413         };
414 };
415
416 &vpif {
417         pinctrl-names = "default";
418         pinctrl-0 = <&vpif_capture_pins>;
419         status = "okay";
420 };
421
422 &dsp {
423         memory-region = <&dsp_memory_region>;
424         status = "okay";
425 };