blob: 02d11968cb34d01d02142cc5a1acc5325ce28068 [file] [log] [blame]
Wadim Egorov6ee2d012017-06-19 12:36:40 +02001/*
2 * Device tree file for Phytec phyCORE-RK3288 SoM
3 * Copyright (C) 2017 PHYTEC Messtechnik GmbH
4 * Author: Wadim Egorov <w.egorov@phytec.de>
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This file is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This file is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * Or, alternatively,
22 *
23 * b) Permission is hereby granted, free of charge, to any person
24 * obtaining a copy of this software and associated documentation
25 * files (the "Software"), to deal in the Software without
26 * restriction, including without limitation the rights to use,
27 * copy, modify, merge, publish, distribute, sublicense, and/or
28 * sell copies of the Software, and to permit persons to whom the
29 * Software is furnished to do so, subject to the following
30 * conditions:
31 *
32 * The above copyright notice and this permission notice shall be
33 * included in all copies or substantial portions of the Software.
34 *
35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42 * OTHER DEALINGS IN THE SOFTWARE.
43 */
44
45#include <dt-bindings/net/ti-dp83867.h>
46#include "rk3288.dtsi"
47
48/ {
49 model = "Phytec RK3288 phyCORE";
50 compatible = "phytec,rk3288-phycore-som", "rockchip,rk3288";
51
52 /*
53 * Set the minimum memory size here and
54 * let the bootloader set the real size.
55 */
56 memory {
57 device_type = "memory";
58 reg = <0 0x8000000>;
59 };
60
61 aliases {
62 rtc0 = &i2c_rtc;
63 rtc1 = &rk818;
Wadim Egorovc8726842017-07-18 11:53:10 +020064 eeprom0 = &i2c_eeprom_id;
Wadim Egorov6ee2d012017-06-19 12:36:40 +020065 };
66
67 ext_gmac: external-gmac-clock {
68 compatible = "fixed-clock";
69 #clock-cells = <0>;
70 clock-frequency = <125000000>;
71 clock-output-names = "ext_gmac";
72 };
73
74 io_domains: io_domains {
75 compatible = "rockchip,rk3288-io-voltage-domain";
76
77 status = "okay";
78 sdcard-supply = <&vdd_io_sd>;
79 flash0-supply = <&vdd_emmc_io>;
80 flash1-supply = <&vdd_misc_1v8>;
81 gpio1830-supply = <&vdd_3v3_io>;
82 gpio30-supply = <&vdd_3v3_io>;
83 bb-supply = <&vdd_3v3_io>;
84 dvp-supply = <&vdd_3v3_io>;
85 lcdc-supply = <&vdd_3v3_io>;
86 wifi-supply = <&vdd_3v3_io>;
87 audio-supply = <&vdd_3v3_io>;
88 };
89
90 leds: user-leds {
91 compatible = "gpio-leds";
92 pinctrl-names = "default";
93 pinctrl-0 = <&user_led>;
94
95 user {
96 label = "green_led";
97 gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;
98 linux,default-trigger = "heartbeat";
99 default-state = "keep";
100 };
101 };
102
103 vdd_emmc_io: vdd-emmc-io {
104 compatible = "regulator-fixed";
105 regulator-name = "vdd_emmc_io";
106 regulator-min-microvolt = <1800000>;
107 regulator-max-microvolt = <1800000>;
108 vin-supply = <&vdd_3v3_io>;
109 };
110
111 vdd_in_otg_out: vdd-in-otg-out {
112 compatible = "regulator-fixed";
113 regulator-name = "vdd_in_otg_out";
114 regulator-always-on;
115 regulator-boot-on;
116 regulator-min-microvolt = <5000000>;
117 regulator-max-microvolt = <5000000>;
118 };
119
120 vdd_misc_1v8: vdd-misc-1v8 {
121 compatible = "regulator-fixed";
122 regulator-name = "vdd_misc_1v8";
123 regulator-always-on;
124 regulator-boot-on;
125 regulator-min-microvolt = <1800000>;
126 regulator-max-microvolt = <1800000>;
127 };
128};
129
130&cpu0 {
131 cpu0-supply = <&vdd_cpu>;
132 operating-points = <
133 /* KHz uV */
134 1800000 1400000
135 1608000 1350000
136 1512000 1300000
137 1416000 1200000
138 1200000 1100000
139 1008000 1050000
140 816000 1000000
141 696000 950000
142 600000 900000
143 408000 900000
144 312000 900000
145 216000 900000
146 126000 900000
147 >;
148};
149
150&emmc {
151 status = "okay";
152 u-boot,dm-pre-reloc;
153
154 bus-width = <8>;
155 cap-mmc-highspeed;
156 disable-wp;
157 non-removable;
158 num-slots = <1>;
159 pinctrl-names = "default";
160 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
161 vmmc-supply = <&vdd_3v3_io>;
162 vqmmc-supply = <&vdd_emmc_io>;
163};
164
165&gmac {
166 assigned-clocks = <&cru SCLK_MAC>;
167 assigned-clock-parents = <&ext_gmac>;
168 clock_in_out = "input";
169 pinctrl-names = "default";
170 pinctrl-0 = <&rgmii_pins &phy_rst &phy_int>;
171 phy-handle = <&phy0>;
172 phy-supply = <&vdd_eth_2v5>;
173 phy-mode = "rgmii-id";
174 snps,reset-active-low;
175 snps,reset-delays-us = <0 10000 1000000>;
176 snps,reset-gpio = <&gpio4 8 GPIO_ACTIVE_HIGH>;
177 tx_delay = <0x0>;
178 rx_delay = <0x0>;
179
180 mdio0 {
181 compatible = "snps,dwmac-mdio";
182 #address-cells = <1>;
183 #size-cells = <0>;
184
185 phy0: ethernet-phy@0 {
186 compatible = "ethernet-phy-ieee802.3-c22";
187 reg = <0>;
188 interrupt-parent = <&gpio4>;
189 interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
190 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
191 ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
192 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
193 enet-phy-lane-no-swap;
194 };
195 };
196};
197
198&hdmi {
199 ddc-i2c-bus = <&i2c5>;
200};
201
202&i2c0 {
203 status = "okay";
204 u-boot,dm-pre-reloc;
205
206 clock-frequency = <400000>;
207
208 rk818: pmic@1c {
209 status = "okay";
210 compatible = "rockchip,rk818";
211 reg = <0x1c>;
212 interrupt-parent = <&gpio0>;
213 interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
214 pinctrl-names = "default";
215 pinctrl-0 = <&pmic_int>;
216 rockchip,system-power-controller;
217 wakeup-source;
218 #clock-cells = <1>;
219 u-boot,dm-pre-reloc;
220
221 vcc1-supply = <&vdd_sys>;
222 vcc2-supply = <&vdd_sys>;
223 vcc3-supply = <&vdd_sys>;
224 vcc4-supply = <&vdd_sys>;
225 boost-supply = <&vdd_in_otg_out>;
226 vcc6-supply = <&vdd_sys>;
227 vcc7-supply = <&vdd_misc_1v8>;
228 vcc8-supply = <&vdd_misc_1v8>;
229 vcc9-supply = <&vdd_3v3_io>;
230 vddio-supply = <&vdd_3v3_io>;
231
232 regulators {
233 u-boot,dm-pre-reloc;
234 vdd_log: DCDC_REG1 {
235 regulator-name = "vdd_log";
236 regulator-always-on;
237 regulator-boot-on;
238 regulator-min-microvolt = <1100000>;
239 regulator-max-microvolt = <1100000>;
240 regulator-state-mem {
241 regulator-off-in-suspend;
242 };
243 };
244
245 vdd_gpu: DCDC_REG2 {
246 regulator-name = "vdd_gpu";
247 regulator-always-on;
248 regulator-boot-on;
249 regulator-min-microvolt = <800000>;
250 regulator-max-microvolt = <1250000>;
251 regulator-state-mem {
252 regulator-on-in-suspend;
253 regulator-suspend-microvolt = <1000000>;
254 };
255 };
256
257 vcc_ddr: DCDC_REG3 {
258 regulator-name = "vcc_ddr";
259 regulator-always-on;
260 regulator-boot-on;
261 regulator-state-mem {
262 regulator-on-in-suspend;
263 };
264 };
265
266 vdd_3v3_io: DCDC_REG4 {
267 regulator-name = "vdd_3v3_io";
268 regulator-always-on;
269 regulator-boot-on;
270 regulator-min-microvolt = <3300000>;
271 regulator-max-microvolt = <3300000>;
272 regulator-state-mem {
273 regulator-on-in-suspend;
274 regulator-suspend-microvolt = <3300000>;
275 };
276 };
277
278 vdd_sys: DCDC_BOOST {
279 regulator-name = "vdd_sys";
280 regulator-always-on;
281 regulator-boot-on;
282 regulator-min-microvolt = <5000000>;
283 regulator-max-microvolt = <5000000>;
284 regulator-state-mem {
285 regulator-on-in-suspend;
286 regulator-suspend-microvolt = <5000000>;
287 };
288 };
289
290 /* vcc9 */
291 vdd_sd: SWITCH_REG {
292 regulator-name = "vdd_sd";
293 regulator-always-on;
294 regulator-boot-on;
295 regulator-state-mem {
296 regulator-off-in-suspend;
297 };
298 };
299
300 /* vcc6 */
301 vdd_eth_2v5: LDO_REG2 {
302 regulator-name = "vdd_eth_2v5";
303 regulator-always-on;
304 regulator-boot-on;
305 regulator-min-microvolt = <2500000>;
306 regulator-max-microvolt = <2500000>;
307 regulator-state-mem {
308 regulator-on-in-suspend;
309 regulator-suspend-microvolt = <2500000>;
310 };
311 };
312
313 /* vcc7 */
314 vdd_1v0: LDO_REG3 {
315 regulator-name = "vdd_1v0";
316 regulator-always-on;
317 regulator-boot-on;
318 regulator-min-microvolt = <1000000>;
319 regulator-max-microvolt = <1000000>;
320 regulator-state-mem {
321 regulator-on-in-suspend;
322 regulator-suspend-microvolt = <1000000>;
323 };
324 };
325
326 /* vcc8 */
327 vdd_1v8_lcd_ldo: LDO_REG4 {
328 regulator-name = "vdd_1v8_lcd_ldo";
329 regulator-always-on;
330 regulator-boot-on;
331 regulator-min-microvolt = <1800000>;
332 regulator-max-microvolt = <1800000>;
333 regulator-state-mem {
334 regulator-on-in-suspend;
335 regulator-suspend-microvolt = <1800000>;
336 };
337 };
338
339 /* vcc8 */
340 vdd_1v0_lcd: LDO_REG6 {
341 regulator-name = "vdd_1v0_lcd";
342 regulator-always-on;
343 regulator-boot-on;
344 regulator-min-microvolt = <1000000>;
345 regulator-max-microvolt = <1000000>;
346 regulator-state-mem {
347 regulator-on-in-suspend;
348 regulator-suspend-microvolt = <1000000>;
349 };
350 };
351
352 /* vcc7 */
353 vdd_1v8_ldo: LDO_REG7 {
354 regulator-name = "vdd_1v8_ldo";
355 regulator-always-on;
356 regulator-boot-on;
357 regulator-min-microvolt = <1800000>;
358 regulator-max-microvolt = <1800000>;
359 regulator-state-mem {
360 regulator-off-in-suspend;
361 regulator-suspend-microvolt = <1800000>;
362 };
363 };
364
365 /* vcc9 */
366 vdd_io_sd: LDO_REG9 {
367 regulator-name = "vdd_io_sd";
368 regulator-always-on;
369 regulator-boot-on;
370 regulator-min-microvolt = <3300000>;
371 regulator-max-microvolt = <3300000>;
372 regulator-state-mem {
373 regulator-on-in-suspend;
374 regulator-suspend-microvolt = <3300000>;
375 };
376 };
377 };
378 };
379
380 /* M24C32-D */
381 i2c_eeprom: eeprom@50 {
382 compatible = "atmel,24c32";
383 reg = <0x50>;
384 pagesize = <32>;
385 };
386
Wadim Egorovc8726842017-07-18 11:53:10 +0200387 /* M24C32-D Identification page */
388 i2c_eeprom_id: eeprom@58 {
389 compatible = "atmel,24c32";
390 reg = <0x58>;
391 pagesize = <32>;
392 };
393
Wadim Egorov6ee2d012017-06-19 12:36:40 +0200394 vdd_cpu: regulator@60 {
395 compatible = "fcs,fan53555";
396 reg = <0x60>;
397 fcs,suspend-voltage-selector = <1>;
398 regulator-always-on;
399 regulator-boot-on;
400 regulator-enable-ramp-delay = <300>;
401 regulator-name = "vdd_cpu";
402 regulator-min-microvolt = <800000>;
403 regulator-max-microvolt = <1430000>;
404 regulator-ramp-delay = <8000>;
405 vin-supply = <&vdd_sys>;
406 };
407};
408
409&pinctrl {
410 pcfg_output_high: pcfg-output-high {
411 output-high;
412 };
413
414 emmc {
415 /*
416 * We run eMMC at max speed; bump up drive strength.
417 * We also have external pulls, so disable the internal ones.
418 */
419 emmc_clk: emmc-clk {
420 rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none_12ma>;
421 };
422
423 emmc_cmd: emmc-cmd {
424 rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_none_12ma>;
425 };
426
427 emmc_bus8: emmc-bus8 {
428 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_none_12ma>,
429 <3 1 RK_FUNC_2 &pcfg_pull_none_12ma>,
430 <3 2 RK_FUNC_2 &pcfg_pull_none_12ma>,
431 <3 3 RK_FUNC_2 &pcfg_pull_none_12ma>,
432 <3 4 RK_FUNC_2 &pcfg_pull_none_12ma>,
433 <3 5 RK_FUNC_2 &pcfg_pull_none_12ma>,
434 <3 6 RK_FUNC_2 &pcfg_pull_none_12ma>,
435 <3 7 RK_FUNC_2 &pcfg_pull_none_12ma>;
436 };
437 };
438
439 gmac {
440 phy_int: phy-int {
441 rockchip,pins = <4 2 RK_FUNC_GPIO &pcfg_pull_up>;
442 };
443
444 phy_rst: phy-rst {
445 rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>;
446 };
447 };
448
449 leds {
450 user_led: user-led {
451 rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_output_high>;
452 };
453 };
454
455 pmic {
456 pmic_int: pmic-int {
457 rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
458 };
459
460 /* Pin for switching state between sleep and non-sleep state */
461 pmic_sleep: pmic-sleep {
462 rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_up>;
463 };
464 };
465};
466
467&pwm1 {
468 status = "okay";
469};
470
471&saradc {
472 status = "okay";
473 vref-supply = <&vdd_1v8_ldo>;
474};
475
476&spi2 {
477 status = "okay";
478
479 serial_flash: flash@0 {
480 compatible = "micron,n25q128a13", "jedec,spi-nor";
481 reg = <0x0>;
482 spi-max-frequency = <50000000>;
483 m25p,fast-read;
484 #address-cells = <1>;
485 #size-cells = <1>;
486 status = "okay";
487 };
488};
489
490&tsadc {
491 status = "okay";
492 rockchip,hw-tshut-mode = <0>;
493 rockchip,hw-tshut-polarity = <0>;
494};
495
496&vopb {
497 status = "okay";
498};
499
500&vopb_mmu {
501 status = "okay";
502};
503
504&vopl {
505 status = "okay";
506};
507
508&vopl_mmu {
509 status = "okay";
510};
511
512&wdt {
513 status = "okay";
514};