mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Compare commits
516 Commits
v2016.09-r
...
v2016.09-r
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d3bcb66ee | ||
|
|
10ba92f69e | ||
|
|
c98b171e10 | ||
|
|
f835706c29 | ||
|
|
b1237c6e8a | ||
|
|
68a2fd4357 | ||
|
|
4ed6f4318b | ||
|
|
490365c38f | ||
|
|
c359ae5e8b | ||
|
|
5328717cde | ||
|
|
4ba58bdabd | ||
|
|
fc18e9b3d5 | ||
|
|
2883c4edfb | ||
|
|
e016f0b2c2 | ||
|
|
3c1dcef62a | ||
|
|
a391d5004e | ||
|
|
2695927198 | ||
|
|
5db28905c9 | ||
|
|
f2a9942fbc | ||
|
|
e6628ad7b9 | ||
|
|
ddf67f7135 | ||
|
|
ea7b1a213e | ||
|
|
2b941bf96d | ||
|
|
8e9685715b | ||
|
|
6f5f92c60b | ||
|
|
57c7809ab0 | ||
|
|
67e610d9f0 | ||
|
|
805ac6aacf | ||
|
|
f272f1fcd9 | ||
|
|
716f908526 | ||
|
|
f0ed68e21f | ||
|
|
798dc6be7f | ||
|
|
544661bdbf | ||
|
|
b1db95492a | ||
|
|
0f2765e84e | ||
|
|
c5e729eaf0 | ||
|
|
d8fc402aa2 | ||
|
|
6f107e4cf6 | ||
|
|
7593194685 | ||
|
|
4ebaba55a4 | ||
|
|
e525d34b47 | ||
|
|
ee8f0cb3b0 | ||
|
|
581183def6 | ||
|
|
a7da6f8c3d | ||
|
|
7a500a7a78 | ||
|
|
d6ee8ce51d | ||
|
|
4810c2f80f | ||
|
|
1cc95f6e1b | ||
|
|
7a7d246d97 | ||
|
|
badbb63c2c | ||
|
|
793fd86f72 | ||
|
|
27daffe7ce | ||
|
|
b1ad6c6966 | ||
|
|
303dfc2e5e | ||
|
|
ca6c5e03f1 | ||
|
|
cc7ed26934 | ||
|
|
cd379a2dc8 | ||
|
|
ddd917b8fa | ||
|
|
c2147e26d9 | ||
|
|
144fdbdeb1 | ||
|
|
4cf9e464f7 | ||
|
|
d7b935bf62 | ||
|
|
bf4ea7ed21 | ||
|
|
37b4a9098c | ||
|
|
007adbc2f9 | ||
|
|
dc396210d9 | ||
|
|
5d98c5ec8e | ||
|
|
f55137fd74 | ||
|
|
177381a9f9 | ||
|
|
d188b11302 | ||
|
|
ba92cd74d2 | ||
|
|
ce52531c5d | ||
|
|
5396edc675 | ||
|
|
4de2de5149 | ||
|
|
4cc9699be7 | ||
|
|
183923d3e4 | ||
|
|
7e270ec3af | ||
|
|
28b48a0710 | ||
|
|
2d2811c230 | ||
|
|
da188a0388 | ||
|
|
c978b52410 | ||
|
|
de5e5cea02 | ||
|
|
f225d39d30 | ||
|
|
0fcb9f07a1 | ||
|
|
a0d0d86f5c | ||
|
|
17b68b5a58 | ||
|
|
2c4b2dd289 | ||
|
|
256a3f2466 | ||
|
|
ac72e174f9 | ||
|
|
ee3311db1c | ||
|
|
46ed9381b7 | ||
|
|
d51e9a1d04 | ||
|
|
2ef98d3316 | ||
|
|
cc2593128f | ||
|
|
dfcc496ed7 | ||
|
|
875e0bc68a | ||
|
|
5a49f17481 | ||
|
|
63d985985e | ||
|
|
9e5935c04e | ||
|
|
03dcd410d7 | ||
|
|
e3b7599be7 | ||
|
|
8800e0fa20 | ||
|
|
0d0779c141 | ||
|
|
59b7dfa0d1 | ||
|
|
02a888b567 | ||
|
|
2de18c8d77 | ||
|
|
5d43feabf3 | ||
|
|
a84a757ae7 | ||
|
|
f0727120a7 | ||
|
|
eb4e8ceb47 | ||
|
|
70f1463686 | ||
|
|
a212b66d7c | ||
|
|
b064c9124a | ||
|
|
027638d3cf | ||
|
|
06264a79b4 | ||
|
|
9889862545 | ||
|
|
a6bb0084c2 | ||
|
|
45d85f0872 | ||
|
|
ad3c144fb8 | ||
|
|
3c27fa2193 | ||
|
|
bbc5b36b25 | ||
|
|
c04930762d | ||
|
|
34f1c9fe14 | ||
|
|
24cdf1a9be | ||
|
|
4dd99d140c | ||
|
|
d9fd7008f4 | ||
|
|
73dd5c4cfe | ||
|
|
f4b0df1823 | ||
|
|
b647f55420 | ||
|
|
aa26776a2d | ||
|
|
65f89be2ef | ||
|
|
6e06acb732 | ||
|
|
11e44fc6bd | ||
|
|
ab65006b08 | ||
|
|
568d492a07 | ||
|
|
1f01962e0f | ||
|
|
358133239b | ||
|
|
8f521bfc92 | ||
|
|
257bdb3f66 | ||
|
|
eba3fbd6a1 | ||
|
|
b25732c22b | ||
|
|
da91cfed54 | ||
|
|
2651a052d8 | ||
|
|
28cd88baa3 | ||
|
|
2f1eb66e28 | ||
|
|
e8a9293295 | ||
|
|
ee9bc77f3a | ||
|
|
5941638027 | ||
|
|
8fca073271 | ||
|
|
7382d17826 | ||
|
|
95646e1d75 | ||
|
|
c21fadfe17 | ||
|
|
6f579db754 | ||
|
|
bcc51c1512 | ||
|
|
82d075e79f | ||
|
|
0efbbc5c61 | ||
|
|
e731a5385d | ||
|
|
95a1feca2e | ||
|
|
3ffc747574 | ||
|
|
2e406dbdf5 | ||
|
|
76b2fad775 | ||
|
|
620452e7ae | ||
|
|
54a0eb7a18 | ||
|
|
95def3cf5d | ||
|
|
0812d1a094 | ||
|
|
f9d334bdfc | ||
|
|
45313e83b8 | ||
|
|
43caa9a879 | ||
|
|
868a3a6bad | ||
|
|
02c1e2ff87 | ||
|
|
a61f6a5595 | ||
|
|
1610a9212a | ||
|
|
ceec08f50b | ||
|
|
2e205ef7eb | ||
|
|
06974ea0e3 | ||
|
|
5d4dc282b4 | ||
|
|
5746b0df9c | ||
|
|
5aa79f2676 | ||
|
|
50f5bb25b9 | ||
|
|
652b269468 | ||
|
|
631ae2674f | ||
|
|
a866c2145a | ||
|
|
707c866f3d | ||
|
|
ba699a5f91 | ||
|
|
1e61ce9f7e | ||
|
|
2b58e1b76d | ||
|
|
96d8284bd5 | ||
|
|
93cb82477d | ||
|
|
6688452a3b | ||
|
|
bb42fb4f10 | ||
|
|
5405817a6e | ||
|
|
2da375c919 | ||
|
|
2863a9bfc2 | ||
|
|
f2df3b6e99 | ||
|
|
7edb17670c | ||
|
|
a60d94b204 | ||
|
|
d03a030859 | ||
|
|
1b92aed253 | ||
|
|
f6d34651d8 | ||
|
|
27c087d58a | ||
|
|
851271a71a | ||
|
|
ac9a23cffc | ||
|
|
ec70f8a911 | ||
|
|
72f5226894 | ||
|
|
7f64b1874c | ||
|
|
bcbd0c8fe1 | ||
|
|
633cc7ae96 | ||
|
|
0e1709476b | ||
|
|
c2fdd34569 | ||
|
|
584550d76a | ||
|
|
abd0128eb1 | ||
|
|
75a52bd770 | ||
|
|
da8ff82e73 | ||
|
|
fd4b2dc059 | ||
|
|
583b1bc029 | ||
|
|
b9f9339b7e | ||
|
|
6ead8bd7c3 | ||
|
|
1c62d99952 | ||
|
|
aff8795c01 | ||
|
|
b0b3c86521 | ||
|
|
2918d96728 | ||
|
|
d2d763fa83 | ||
|
|
89f69e5173 | ||
|
|
7d106242d3 | ||
|
|
a2ea62e826 | ||
|
|
e379508435 | ||
|
|
4e3fa7d8a1 | ||
|
|
8752e260c4 | ||
|
|
f80e535980 | ||
|
|
fd60e99f55 | ||
|
|
12feb3647e | ||
|
|
171e53968c | ||
|
|
bb6b142fc1 | ||
|
|
9ab0296a82 | ||
|
|
684c306ec4 | ||
|
|
a3a779f7f7 | ||
|
|
e9ea122159 | ||
|
|
f2f6981a14 | ||
|
|
8ba1f5de45 | ||
|
|
f7536f798d | ||
|
|
dc6de50bd6 | ||
|
|
6f94ab6656 | ||
|
|
a78cd86132 | ||
|
|
65fcba1251 | ||
|
|
cc8be222d1 | ||
|
|
9bef24d0de | ||
|
|
699c4e592b | ||
|
|
ffffcd1594 | ||
|
|
4587f53a58 | ||
|
|
720724d098 | ||
|
|
2990e07a33 | ||
|
|
14bed52d27 | ||
|
|
6a879ec8e7 | ||
|
|
e1ea7c44d6 | ||
|
|
1bd4f92cdb | ||
|
|
915ffa5213 | ||
|
|
70f862808e | ||
|
|
ccd60a8524 | ||
|
|
a034ec06ff | ||
|
|
17ea3c8628 | ||
|
|
bae4a1fdf5 | ||
|
|
cb0ff4ccc0 | ||
|
|
9e613de0e1 | ||
|
|
20bbde0628 | ||
|
|
23ab5bda7e | ||
|
|
19014203c4 | ||
|
|
6e7a11e64e | ||
|
|
390ae57c76 | ||
|
|
7b9cb49405 | ||
|
|
729c2db7a9 | ||
|
|
e1efe43c71 | ||
|
|
ad6a303c57 | ||
|
|
ab01ef5fa6 | ||
|
|
bded21895d | ||
|
|
2c77416544 | ||
|
|
388aabc85d | ||
|
|
8936691ba6 | ||
|
|
473af36a88 | ||
|
|
6ffc490541 | ||
|
|
37eac3f460 | ||
|
|
9c3fca2a79 | ||
|
|
3b4dbd37dc | ||
|
|
7fe1d6a410 | ||
|
|
04e5c6d9cc | ||
|
|
f3dbf1f0c9 | ||
|
|
7351bf2b5b | ||
|
|
dbc39699d0 | ||
|
|
28559d4c93 | ||
|
|
8fbf678ba0 | ||
|
|
0cfd0a976f | ||
|
|
3c70349f8e | ||
|
|
33986e2c31 | ||
|
|
a9022b017a | ||
|
|
6de80f2196 | ||
|
|
c8a3777c51 | ||
|
|
c8d7393b73 | ||
|
|
c8785c5b49 | ||
|
|
7e92e46e63 | ||
|
|
2289b2763c | ||
|
|
713bea38dd | ||
|
|
80e6a48750 | ||
|
|
bd6f5d98de | ||
|
|
8e605a5e3e | ||
|
|
8ea42101d2 | ||
|
|
e2f88dfd2d | ||
|
|
26fb8db0f4 | ||
|
|
fcada3b05e | ||
|
|
4069437dfb | ||
|
|
3f8ea3b06e | ||
|
|
97322c3e07 | ||
|
|
3e5e274aed | ||
|
|
4694dc56e9 | ||
|
|
dd63fbc70a | ||
|
|
d7ca67b7cd | ||
|
|
cba6bb1b74 | ||
|
|
f75711aae7 | ||
|
|
77337c1c7a | ||
|
|
1743d0bafc | ||
|
|
5051a77b2d | ||
|
|
194a241a6e | ||
|
|
8a632ac135 | ||
|
|
2b51784aef | ||
|
|
633fdab0cb | ||
|
|
b357a7f752 | ||
|
|
22948e1015 | ||
|
|
46683f3da1 | ||
|
|
5c928d0204 | ||
|
|
08887ed450 | ||
|
|
9af6ce4248 | ||
|
|
2ae9422145 | ||
|
|
70ebdd775b | ||
|
|
b9612bb2de | ||
|
|
a6f56ad1ee | ||
|
|
4d790788ce | ||
|
|
b302669f46 | ||
|
|
fee3b6af90 | ||
|
|
c595a28530 | ||
|
|
69eeefaa06 | ||
|
|
6bde34f1ae | ||
|
|
4711e7f7af | ||
|
|
77cbd3a141 | ||
|
|
4c97077ce7 | ||
|
|
7626ba488e | ||
|
|
ec1935a243 | ||
|
|
63326e6f0b | ||
|
|
10ced52242 | ||
|
|
c6a51bab17 | ||
|
|
84c51687a7 | ||
|
|
a13d3757f7 | ||
|
|
71813dcb56 | ||
|
|
ae440ab02d | ||
|
|
68c276019a | ||
|
|
4a2f9014e8 | ||
|
|
98b040c988 | ||
|
|
a5bfb4ff9e | ||
|
|
966fe02ee6 | ||
|
|
5911c0924f | ||
|
|
e86b7adfa3 | ||
|
|
1800ffa83e | ||
|
|
e49621b357 | ||
|
|
6eab98a02e | ||
|
|
f4416579d3 | ||
|
|
ec21aee653 | ||
|
|
5c34c2abb8 | ||
|
|
5a08ad6fdc | ||
|
|
5c392017f5 | ||
|
|
d2c4c6bcfa | ||
|
|
a5ad8ec920 | ||
|
|
64992b782b | ||
|
|
fe34b6a484 | ||
|
|
02ebd42cf1 | ||
|
|
61f5ddcb7a | ||
|
|
1e2b3ef865 | ||
|
|
c9f3c5f9c3 | ||
|
|
f1a485aa40 | ||
|
|
329a449f2c | ||
|
|
dec49e862e | ||
|
|
04e38905d7 | ||
|
|
fbfa1aba91 | ||
|
|
7f7ddf2a88 | ||
|
|
911954859d | ||
|
|
2e3f1ff63f | ||
|
|
cc7f66f70c | ||
|
|
5628347f59 | ||
|
|
dec0242be7 | ||
|
|
c6f086ddcb | ||
|
|
0b6699ad8e | ||
|
|
2eb1ff3b5b | ||
|
|
4fd92db8db | ||
|
|
499a950d41 | ||
|
|
9c7a0a600b | ||
|
|
a85ba87dbe | ||
|
|
687284483c | ||
|
|
6d7b22a5d8 | ||
|
|
2a5adc5b3c | ||
|
|
8401c7103d | ||
|
|
dbe18f16d8 | ||
|
|
716d6677cb | ||
|
|
ed7a3943d5 | ||
|
|
3288628a8d | ||
|
|
aeb901f2a6 | ||
|
|
7e742c276d | ||
|
|
116339d460 | ||
|
|
9d3b8bd166 | ||
|
|
b528b9377d | ||
|
|
da4d620c90 | ||
|
|
86336e60c5 | ||
|
|
79119a4d19 | ||
|
|
dbb9d04fbd | ||
|
|
0c14c4d65b | ||
|
|
e7e720c2ce | ||
|
|
69d4b48c84 | ||
|
|
028ac8c733 | ||
|
|
7f0a0e4c58 | ||
|
|
9729dc9565 | ||
|
|
27059c3e4d | ||
|
|
c3c9fd31ba | ||
|
|
6e677caf8c | ||
|
|
c68c624320 | ||
|
|
24f9c6bbc7 | ||
|
|
14a6ff2c4f | ||
|
|
f8a10ed1fd | ||
|
|
3c4db636ac | ||
|
|
61bc02b260 | ||
|
|
e075828128 | ||
|
|
059fce9f61 | ||
|
|
670514f524 | ||
|
|
49c801bf35 | ||
|
|
dfc3958cd3 | ||
|
|
9ec43b0c3f | ||
|
|
b6de2cd7ee | ||
|
|
c9433a4814 | ||
|
|
9aa5874a76 | ||
|
|
efe7898bff | ||
|
|
70ad98c085 | ||
|
|
dc6b17a04e | ||
|
|
081fbeaa9d | ||
|
|
c438d01176 | ||
|
|
c50f2610b5 | ||
|
|
daa69ffe3d | ||
|
|
be243e4113 | ||
|
|
eff6b7731b | ||
|
|
5142ac7916 | ||
|
|
7fb825f5b1 | ||
|
|
3465f807d4 | ||
|
|
81c878dd3c | ||
|
|
c482c60a14 | ||
|
|
79c830653b | ||
|
|
d26f375ae4 | ||
|
|
7e24349698 | ||
|
|
a381bcf529 | ||
|
|
777c834fd4 | ||
|
|
a16e2e0680 | ||
|
|
9191090e34 | ||
|
|
c3aad6f65b | ||
|
|
a617c5d3e2 | ||
|
|
c57f806bf2 | ||
|
|
c3f03ffbe3 | ||
|
|
b339b5dbca | ||
|
|
041cdb5f3d | ||
|
|
23c3042b10 | ||
|
|
9f862ec717 | ||
|
|
266c8fad51 | ||
|
|
9424f14183 | ||
|
|
4711788267 | ||
|
|
fab3357916 | ||
|
|
ad8fe6b964 | ||
|
|
5f30bf764b | ||
|
|
e0f5dbcb4b | ||
|
|
c418addfa9 | ||
|
|
744368d6ae | ||
|
|
b47ea79219 | ||
|
|
d7b60fbfa6 | ||
|
|
b60038ccab | ||
|
|
68b09b8913 | ||
|
|
5d219d46aa | ||
|
|
8f2e2f15ff | ||
|
|
95cee94bd8 | ||
|
|
8b248c8cdb | ||
|
|
be1a17ff68 | ||
|
|
47855a5c3b | ||
|
|
ec7fde3ebf | ||
|
|
c4483093f3 | ||
|
|
9a88180bfb | ||
|
|
2deebe2481 | ||
|
|
83fd908f28 | ||
|
|
4beba06688 | ||
|
|
63a9309377 | ||
|
|
62d6bac660 | ||
|
|
f4ae23a7cd | ||
|
|
f0f6724f86 | ||
|
|
88e4774efd | ||
|
|
67ff9e11f3 | ||
|
|
a02ab5eaff | ||
|
|
9a45ec3ea0 | ||
|
|
1f17562796 | ||
|
|
225126da99 | ||
|
|
ca103e0996 | ||
|
|
d0daec670f | ||
|
|
dab1493459 | ||
|
|
af07d1544e | ||
|
|
6d7aa51acc | ||
|
|
618a85356c | ||
|
|
3039774309 | ||
|
|
d6b0c46818 | ||
|
|
432a8a5547 | ||
|
|
8259e9c9ad | ||
|
|
e355eec79d | ||
|
|
369012e7e9 | ||
|
|
876a25d289 | ||
|
|
8be4f40ecf | ||
|
|
0750701a3f | ||
|
|
a32b4a03c7 | ||
|
|
c133c503ac | ||
|
|
c1ebf54868 | ||
|
|
adde435fa7 |
34
Kconfig
34
Kconfig
@@ -57,7 +57,8 @@ config DISTRO_DEFAULTS
|
||||
bool "Select defaults suitable for booting general purpose Linux distributions"
|
||||
default y if ARCH_SUNXI
|
||||
default n
|
||||
select CMD_BOOTZ
|
||||
select CMD_BOOTZ if ARM && !ARM64
|
||||
select CMD_BOOTI if ARM64
|
||||
select CMD_DHCP
|
||||
select CMD_EXT2
|
||||
select CMD_EXT4
|
||||
@@ -124,6 +125,14 @@ config TOOLS_DEBUG
|
||||
debug through the source code, etc.
|
||||
|
||||
endif
|
||||
|
||||
config PHYS_64BIT
|
||||
bool "64bit physical address support"
|
||||
help
|
||||
Say Y here to support 64bit physical memory address.
|
||||
This can be used not only for 64bit SoCs, but also for
|
||||
large physical address extention on 32bit SoCs.
|
||||
|
||||
endmenu # General setup
|
||||
|
||||
menu "Boot images"
|
||||
@@ -336,12 +345,35 @@ config SPL_FIT_IMAGE_POST_PROCESS
|
||||
injected into the FIT creation (i.e. the blobs would have been pre-
|
||||
processed before being added to the FIT image).
|
||||
|
||||
config FIT_IMAGE_POST_PROCESS
|
||||
bool "Enable post-processing of FIT artifacts after loading by U-Boot"
|
||||
depends on FIT && TI_SECURE_DEVICE
|
||||
help
|
||||
Allows doing any sort of manipulation to blobs after they got extracted
|
||||
from FIT images like stripping off headers or modifying the size of the
|
||||
blob, verification, authentication, decryption etc. in a platform or
|
||||
board specific way. In order to use this feature a platform or board-
|
||||
specific implementation of board_fit_image_post_process() must be
|
||||
provided. Also, anything done during this post-processing step would
|
||||
need to be comprehended in how the images were prepared before being
|
||||
injected into the FIT creation (i.e. the blobs would have been pre-
|
||||
processed before being added to the FIT image).
|
||||
|
||||
config SYS_CLK_FREQ
|
||||
depends on ARC || ARCH_SUNXI
|
||||
int "CPU clock frequency"
|
||||
help
|
||||
TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
|
||||
|
||||
config ARCH_FIXUP_FDT
|
||||
bool "Enable arch_fixup_fdt() call"
|
||||
depends on ARM || MIPS
|
||||
default y
|
||||
help
|
||||
Enable FDT memory map syncup before OS boot. This feature can be
|
||||
used for booting OS with different memory setup where the part of
|
||||
the memory location should be used for different purpose.
|
||||
|
||||
endmenu # Boot images
|
||||
|
||||
source "common/Kconfig"
|
||||
|
||||
14
MAINTAINERS
14
MAINTAINERS
@@ -102,6 +102,7 @@ F: arch/arm/include/asm/arch-imx/
|
||||
F: arch/arm/include/asm/arch-mx*/
|
||||
F: arch/arm/include/asm/arch-vf610/
|
||||
F: arch/arm/include/asm/imx-common/
|
||||
F: board/freescale/*mx*/
|
||||
|
||||
ARM HISILICON
|
||||
M: Peter Griffin <peter.griffin@linaro.org>
|
||||
@@ -125,6 +126,12 @@ T: git git://git.denx.de/u-boot-pxa.git
|
||||
F: arch/arm/cpu/pxa/
|
||||
F: arch/arm/include/asm/arch-pxa/
|
||||
|
||||
ARM RENESAS RMOBILE/R-CAR
|
||||
M: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
|
||||
S: Maintained
|
||||
T: git git://git.denx.de/u-boot-sh.git
|
||||
F: arch/arm/mach-rmobile/
|
||||
|
||||
ARM ROCKCHIP
|
||||
M: Simon Glass <sjg@chromium.org>
|
||||
S: Maintained
|
||||
@@ -298,7 +305,7 @@ T: git git://git.denx.de/u-boot-mips.git
|
||||
F: arch/mips/
|
||||
|
||||
MMC
|
||||
M: Pantelis Antoniou <panto@antoniou-consulting.com>
|
||||
M: Jaehoon Chung <jh80.chung@samsung.com>
|
||||
S: Maintained
|
||||
T: git git://git.denx.de/u-boot-mmc.git
|
||||
F: drivers/mmc/
|
||||
@@ -453,6 +460,11 @@ S: Maintained
|
||||
T: git git://git.denx.de/u-boot-x86.git
|
||||
F: arch/x86/
|
||||
|
||||
XTENSA
|
||||
M: Max Filippov <jcmvbkbc@gmail.com>
|
||||
S: Maintained
|
||||
F: arch/xtensa/
|
||||
|
||||
THE REST
|
||||
M: Tom Rini <trini@konsulko.com>
|
||||
L: u-boot@lists.denx.de
|
||||
|
||||
850
MAKEALL
850
MAKEALL
@@ -1,850 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Tool mainly for U-Boot Quality Assurance: build one or more board
|
||||
# configurations with minimal verbosity, showing only warnings and
|
||||
# errors.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
usage()
|
||||
{
|
||||
# if exiting with 0, write to stdout, else write to stderr
|
||||
local ret=${1:-0}
|
||||
[ "${ret}" -eq 1 ] && exec 1>&2
|
||||
cat <<-EOF
|
||||
Usage: MAKEALL [options] [--] [boards-to-build]
|
||||
|
||||
Options:
|
||||
-a ARCH, --arch ARCH Build all boards with arch ARCH
|
||||
-c CPU, --cpu CPU Build all boards with cpu CPU
|
||||
-v VENDOR, --vendor VENDOR Build all boards with vendor VENDOR
|
||||
-s SOC, --soc SOC Build all boards with soc SOC
|
||||
-b BOARD, --board BOARD Build all boards with board name BOARD
|
||||
-l, --list List all targets to be built
|
||||
-m, --maintainers List all targets and maintainer email
|
||||
-M, --mails List all targets and all affilated emails
|
||||
-C, --check Enable build checking
|
||||
-n, --continue Continue (skip boards already built)
|
||||
-r, --rebuild-errors Rebuild any boards that errored
|
||||
-h, --help This help output
|
||||
|
||||
Selections by these options are logically ANDed; if the same option
|
||||
is used repeatedly, such selections are ORed. So "-v FOO -v BAR"
|
||||
will select all configurations where the vendor is either FOO or
|
||||
BAR. Any additional arguments specified on the command line are
|
||||
always build additionally. See the boards.cfg file for more info.
|
||||
|
||||
If no boards are specified, then the default is "powerpc".
|
||||
|
||||
Environment variables:
|
||||
BUILD_NCPUS number of parallel make jobs (default: auto)
|
||||
CROSS_COMPILE cross-compiler toolchain prefix (default: "")
|
||||
CROSS_COMPILE_<ARCH> cross-compiler toolchain prefix for
|
||||
architecture "ARCH". Substitute "ARCH" for any
|
||||
supported architecture (default: "")
|
||||
MAKEALL_LOGDIR output all logs to here (default: ./LOG/)
|
||||
BUILD_DIR output build directory (default: ./)
|
||||
BUILD_NBUILDS number of parallel targets (default: 1)
|
||||
|
||||
Examples:
|
||||
- build all Power Architecture boards:
|
||||
MAKEALL -a powerpc
|
||||
MAKEALL --arch powerpc
|
||||
MAKEALL powerpc
|
||||
- build all PowerPC boards manufactured by vendor "esd":
|
||||
MAKEALL -a powerpc -v esd
|
||||
- build all PowerPC boards manufactured either by "keymile" or "siemens":
|
||||
MAKEALL -a powerpc -v keymile -v siemens
|
||||
- build all Freescale boards with MPC83xx CPUs, plus all 4xx boards:
|
||||
MAKEALL -c mpc83xx -v freescale 4xx
|
||||
EOF
|
||||
exit ${ret}
|
||||
}
|
||||
|
||||
deprecation() {
|
||||
echo "** Note: MAKEALL is deprecated - please use buildman instead"
|
||||
echo "** See tools/buildman/README for details"
|
||||
echo
|
||||
}
|
||||
|
||||
deprecation
|
||||
|
||||
SHORT_OPTS="ha:c:v:s:b:lmMCnr"
|
||||
LONG_OPTS="help,arch:,cpu:,vendor:,soc:,board:,list,maintainers,mails,check,continue,rebuild-errors"
|
||||
|
||||
# Option processing based on util-linux-2.13/getopt-parse.bash
|
||||
|
||||
# Note that we use `"$@"' to let each command-line parameter expand to a
|
||||
# separate word. The quotes around `$@' are essential!
|
||||
# We need TEMP as the `eval set --' would nuke the return value of
|
||||
# getopt.
|
||||
TEMP=`getopt -o ${SHORT_OPTS} --long ${LONG_OPTS} \
|
||||
-n 'MAKEALL' -- "$@"`
|
||||
|
||||
[ $? != 0 ] && usage 1
|
||||
|
||||
# Note the quotes around `$TEMP': they are essential!
|
||||
eval set -- "$TEMP"
|
||||
|
||||
SELECTED=''
|
||||
ONLY_LIST=''
|
||||
PRINT_MAINTS=''
|
||||
MAINTAINERS_ONLY=''
|
||||
CONTINUE=''
|
||||
REBUILD_ERRORS=''
|
||||
|
||||
while true ; do
|
||||
case "$1" in
|
||||
-a|--arch)
|
||||
# echo "Option ARCH: argument \`$2'"
|
||||
if [ "$opt_a" ] ; then
|
||||
opt_a="${opt_a%)} || \$2 == \"$2\")"
|
||||
else
|
||||
opt_a="(\$2 == \"$2\")"
|
||||
fi
|
||||
SELECTED='y'
|
||||
shift 2 ;;
|
||||
-c|--cpu)
|
||||
# echo "Option CPU: argument \`$2'"
|
||||
if [ "$opt_c" ] ; then
|
||||
opt_c="${opt_c%)} || \$3 == \"$2\" || \$3 ~ /$2:/)"
|
||||
else
|
||||
opt_c="(\$3 == \"$2\" || \$3 ~ /$2:/)"
|
||||
fi
|
||||
SELECTED='y'
|
||||
shift 2 ;;
|
||||
-s|--soc)
|
||||
# echo "Option SoC: argument \`$2'"
|
||||
if [ "$opt_s" ] ; then
|
||||
opt_s="${opt_s%)} || \$4 == \"$2\" || \$4 ~ /$2/)"
|
||||
else
|
||||
opt_s="(\$4 == \"$2\" || \$4 ~ /$2/)"
|
||||
fi
|
||||
SELECTED='y'
|
||||
shift 2 ;;
|
||||
-v|--vendor)
|
||||
# echo "Option VENDOR: argument \`$2'"
|
||||
if [ "$opt_v" ] ; then
|
||||
opt_v="${opt_v%)} || \$5 == \"$2\")"
|
||||
else
|
||||
opt_v="(\$5 == \"$2\")"
|
||||
fi
|
||||
SELECTED='y'
|
||||
shift 2 ;;
|
||||
-b|--board)
|
||||
# echo "Option BOARD: argument \`$2'"
|
||||
if [ "$opt_b" ] ; then
|
||||
opt_b="${opt_b%)} || \$6 == \"$2\" || \$7 == \"$2\")"
|
||||
else
|
||||
# We need to check the 7th field too
|
||||
# for boards whose 6th field is "-"
|
||||
opt_b="(\$6 == \"$2\" || \$7 == \"$2\")"
|
||||
fi
|
||||
SELECTED='y'
|
||||
shift 2 ;;
|
||||
-C|--check)
|
||||
CHECK='C=1'
|
||||
shift ;;
|
||||
-n|--continue)
|
||||
CONTINUE='y'
|
||||
shift ;;
|
||||
-r|--rebuild-errors)
|
||||
REBUILD_ERRORS='y'
|
||||
shift ;;
|
||||
-l|--list)
|
||||
ONLY_LIST='y'
|
||||
shift ;;
|
||||
-m|--maintainers)
|
||||
ONLY_LIST='y'
|
||||
PRINT_MAINTS='y'
|
||||
MAINTAINERS_ONLY='y'
|
||||
shift ;;
|
||||
-M|--mails)
|
||||
ONLY_LIST='y'
|
||||
PRINT_MAINTS='y'
|
||||
shift ;;
|
||||
-h|--help)
|
||||
usage ;;
|
||||
--)
|
||||
shift ; break ;;
|
||||
*)
|
||||
echo "Internal error!" >&2 ; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
GNU_MAKE=$(scripts/show-gnu-make) || {
|
||||
echo "GNU Make not found" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# echo "Remaining arguments:"
|
||||
# for arg do echo '--> '"\`$arg'" ; done
|
||||
|
||||
tools/genboardscfg.py || {
|
||||
echo "Failed to generate boards.cfg" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
FILTER="\$1 !~ /^#/"
|
||||
[ "$opt_a" ] && FILTER="${FILTER} && $opt_a"
|
||||
[ "$opt_c" ] && FILTER="${FILTER} && $opt_c"
|
||||
[ "$opt_s" ] && FILTER="${FILTER} && $opt_s"
|
||||
[ "$opt_v" ] && FILTER="${FILTER} && $opt_v"
|
||||
[ "$opt_b" ] && FILTER="${FILTER} && $opt_b"
|
||||
|
||||
if [ "$SELECTED" ] ; then
|
||||
SELECTED=$(awk '('"$FILTER"') { print $7 }' boards.cfg)
|
||||
|
||||
# Make sure some boards from boards.cfg are actually found
|
||||
if [ -z "$SELECTED" ] ; then
|
||||
echo "Error: No boards selected, invalid arguments"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
#########################################################################
|
||||
|
||||
# Print statistics when we exit
|
||||
trap exit 1 2 3 15
|
||||
trap print_stats 0
|
||||
|
||||
# Determine number of CPU cores if no default was set
|
||||
: ${BUILD_NCPUS:="`getconf _NPROCESSORS_ONLN`"}
|
||||
|
||||
if [ "$BUILD_NCPUS" -gt 1 ]
|
||||
then
|
||||
JOBS="-j $((BUILD_NCPUS + 1))"
|
||||
else
|
||||
JOBS=""
|
||||
fi
|
||||
|
||||
if [ "${MAKEALL_LOGDIR}" ] ; then
|
||||
LOG_DIR=${MAKEALL_LOGDIR}
|
||||
else
|
||||
LOG_DIR="LOG"
|
||||
fi
|
||||
|
||||
: ${BUILD_NBUILDS:=1}
|
||||
BUILD_MANY=0
|
||||
|
||||
if [ "${BUILD_NBUILDS}" -gt 1 ] ; then
|
||||
BUILD_MANY=1
|
||||
: ${BUILD_DIR:=./build}
|
||||
mkdir -p "${BUILD_DIR}/ERR"
|
||||
find "${BUILD_DIR}/ERR/" -type f -exec rm -f {} +
|
||||
fi
|
||||
|
||||
: ${BUILD_DIR:=.}
|
||||
|
||||
OUTPUT_PREFIX="${BUILD_DIR}"
|
||||
|
||||
[ -d ${LOG_DIR} ] || mkdir "${LOG_DIR}" || exit 1
|
||||
if [ "$CONTINUE" != 'y' -a "$REBUILD_ERRORS" != 'y' ] ; then
|
||||
find "${LOG_DIR}/" -type f -exec rm -f {} +
|
||||
fi
|
||||
|
||||
LIST=""
|
||||
|
||||
# Keep track of the number of builds and errors
|
||||
ERR_CNT=0
|
||||
ERR_LIST=""
|
||||
WRN_CNT=0
|
||||
WRN_LIST=""
|
||||
TOTAL_CNT=0
|
||||
SKIP_CNT=0
|
||||
CURRENT_CNT=0
|
||||
OLDEST_IDX=1
|
||||
RC=0
|
||||
|
||||
# Helper funcs for parsing boards.cfg
|
||||
targets_by_field()
|
||||
{
|
||||
field=$1
|
||||
regexp=$2
|
||||
|
||||
awk '($1 !~ /^#/ && $'"$field"' ~ /^'"$regexp"'$/) { print $7 }' \
|
||||
boards.cfg
|
||||
}
|
||||
|
||||
targets_by_arch() { targets_by_field 2 "$@" ; }
|
||||
targets_by_cpu() { targets_by_field 3 "$@" ; targets_by_field 3 "$@:.*" ; }
|
||||
targets_by_soc() { targets_by_field 4 "$@" ; }
|
||||
|
||||
#########################################################################
|
||||
## MPC5xx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_5xx="$(targets_by_cpu mpc5xx)"
|
||||
|
||||
#########################################################################
|
||||
## MPC5xxx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_5xxx="$(targets_by_cpu mpc5xxx)"
|
||||
|
||||
#########################################################################
|
||||
## MPC512x Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_512x="$(targets_by_cpu mpc512x)"
|
||||
|
||||
#########################################################################
|
||||
## MPC8xx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_8xx="$(targets_by_cpu mpc8xx)"
|
||||
|
||||
#########################################################################
|
||||
## PPC4xx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_4xx="$(targets_by_cpu ppc4xx)"
|
||||
|
||||
#########################################################################
|
||||
## MPC8260 Systems (includes 8250, 8255 etc.)
|
||||
#########################################################################
|
||||
|
||||
LIST_8260="$(targets_by_cpu mpc8260)"
|
||||
|
||||
#########################################################################
|
||||
## MPC83xx Systems (includes 8349, etc.)
|
||||
#########################################################################
|
||||
|
||||
LIST_83xx="$(targets_by_cpu mpc83xx)"
|
||||
|
||||
#########################################################################
|
||||
## MPC85xx Systems (includes 8540, 8560 etc.)
|
||||
#########################################################################
|
||||
|
||||
LIST_85xx="$(targets_by_cpu mpc85xx)"
|
||||
|
||||
#########################################################################
|
||||
## MPC86xx Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_86xx="$(targets_by_cpu mpc86xx)"
|
||||
|
||||
#########################################################################
|
||||
## PowerPC groups
|
||||
#########################################################################
|
||||
|
||||
LIST_TSEC=" \
|
||||
${LIST_83xx} \
|
||||
${LIST_85xx} \
|
||||
${LIST_86xx} \
|
||||
"
|
||||
|
||||
LIST_powerpc=" \
|
||||
${LIST_5xx} \
|
||||
${LIST_512x} \
|
||||
${LIST_5xxx} \
|
||||
${LIST_8xx} \
|
||||
${LIST_824x} \
|
||||
${LIST_8260} \
|
||||
${LIST_83xx} \
|
||||
${LIST_85xx} \
|
||||
${LIST_86xx} \
|
||||
${LIST_4xx} \
|
||||
"
|
||||
|
||||
# Alias "ppc" -> "powerpc" to not break compatibility with older scripts
|
||||
# still using "ppc" instead of "powerpc"
|
||||
LIST_ppc=" \
|
||||
${LIST_powerpc} \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## StrongARM Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_SA="$(targets_by_cpu sa1100)"
|
||||
|
||||
#########################################################################
|
||||
## ARM7 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_ARM7="$(targets_by_cpu arm720t)"
|
||||
|
||||
#########################################################################
|
||||
## ARM9 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_ARM9="$(targets_by_cpu arm920t) \
|
||||
$(targets_by_cpu arm926ejs) \
|
||||
$(targets_by_cpu arm946es) \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## ARM11 Systems
|
||||
#########################################################################
|
||||
LIST_ARM11="$(targets_by_cpu arm1136) \
|
||||
$(targets_by_cpu arm1176) \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## ARMV7 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_ARMV7="$(targets_by_cpu armv7)"
|
||||
|
||||
#########################################################################
|
||||
## ARMV8 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_ARMV8="$(targets_by_cpu armv8)"
|
||||
|
||||
#########################################################################
|
||||
## AT91 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_at91="$(targets_by_soc at91)"
|
||||
|
||||
#########################################################################
|
||||
## Xscale Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_pxa="$(targets_by_cpu pxa)"
|
||||
|
||||
#########################################################################
|
||||
## SPEAr Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_spear="$(targets_by_soc spear)"
|
||||
|
||||
#########################################################################
|
||||
## ARM groups
|
||||
#########################################################################
|
||||
|
||||
LIST_arm="$(targets_by_arch arm | \
|
||||
for ARMV8_TARGET in $LIST_ARMV8; \
|
||||
do sed "/$ARMV8_TARGET/d"; \
|
||||
done) \
|
||||
"
|
||||
|
||||
#########################################################################
|
||||
## MIPS Systems (default = big endian)
|
||||
#########################################################################
|
||||
|
||||
LIST_mips="$(targets_by_arch mips)"
|
||||
|
||||
#########################################################################
|
||||
## OpenRISC Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_openrisc="$(targets_by_arch openrisc)"
|
||||
|
||||
#########################################################################
|
||||
## x86 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_x86="$(targets_by_arch x86)"
|
||||
|
||||
#########################################################################
|
||||
## Nios-II Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_nios2="$(targets_by_arch nios2)"
|
||||
|
||||
#########################################################################
|
||||
## MicroBlaze Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_microblaze="$(targets_by_arch microblaze)"
|
||||
|
||||
#########################################################################
|
||||
## ColdFire Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_m68k="$(targets_by_arch m68k)"
|
||||
LIST_coldfire=${LIST_m68k}
|
||||
|
||||
#########################################################################
|
||||
## AVR32 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_avr32="$(targets_by_arch avr32)"
|
||||
|
||||
#########################################################################
|
||||
## Blackfin Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_blackfin="$(targets_by_arch blackfin)"
|
||||
|
||||
#########################################################################
|
||||
## SH Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_sh2="$(targets_by_cpu sh2)"
|
||||
LIST_sh3="$(targets_by_cpu sh3)"
|
||||
LIST_sh4="$(targets_by_cpu sh4)"
|
||||
|
||||
LIST_sh="$(targets_by_arch sh)"
|
||||
|
||||
#########################################################################
|
||||
## SPARC Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_sparc="$(targets_by_arch sparc)"
|
||||
|
||||
#########################################################################
|
||||
## NDS32 Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_nds32="$(targets_by_arch nds32)"
|
||||
|
||||
#########################################################################
|
||||
## ARC Systems
|
||||
#########################################################################
|
||||
|
||||
LIST_arc="$(targets_by_arch arc)"
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
get_target_location() {
|
||||
local target=$1
|
||||
local BOARD_NAME=""
|
||||
local CONFIG_NAME=""
|
||||
local board=""
|
||||
local vendor=""
|
||||
|
||||
# Automatic mode
|
||||
local line=`awk '\$7 == "'"$target"'" { print \$0 }' boards.cfg`
|
||||
if [ -z "${line}" ] ; then echo "" ; return ; fi
|
||||
|
||||
set ${line}
|
||||
|
||||
CONFIG_NAME="${7%_defconfig}"
|
||||
|
||||
[ "${BOARD_NAME}" ] || BOARD_NAME="${7%_defconfig}"
|
||||
|
||||
if [ $# -gt 5 ]; then
|
||||
if [ "$6" = "-" ] ; then
|
||||
board=${BOARD_NAME}
|
||||
else
|
||||
board="$6"
|
||||
fi
|
||||
fi
|
||||
|
||||
[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
|
||||
[ $# -gt 6 ] && [ "$8" != "-" ] && {
|
||||
tmp="${8%:*}"
|
||||
if [ "$tmp" ] ; then
|
||||
CONFIG_NAME="$tmp"
|
||||
fi
|
||||
}
|
||||
|
||||
# Assign board directory to BOARDIR variable
|
||||
if [ "${vendor}" == "-" ] ; then
|
||||
BOARDDIR=${board}
|
||||
else
|
||||
BOARDDIR=${vendor}/${board}
|
||||
fi
|
||||
|
||||
echo "${CONFIG_NAME}:${BOARDDIR}:${BOARD_NAME}"
|
||||
}
|
||||
|
||||
get_target_maintainers() {
|
||||
local name=`echo $1 | cut -d : -f 3`
|
||||
|
||||
local line=`awk '\$7 == "'"$target"'" { print \$0 }' boards.cfg`
|
||||
if [ -z "${line}" ]; then
|
||||
echo ""
|
||||
return ;
|
||||
fi
|
||||
|
||||
local mails=`echo ${line} | cut -d ' ' -f 9- | sed -e 's/[^<]*<//' -e 's/>.*</ /' -e 's/>[^>]*$//'`
|
||||
[ "$mails" == "-" ] && mails=""
|
||||
echo "$mails"
|
||||
}
|
||||
|
||||
get_target_arch() {
|
||||
local target=$1
|
||||
|
||||
awk '$7 == "'$target'" { print $2 }' boards.cfg
|
||||
}
|
||||
|
||||
list_target() {
|
||||
if [ "$PRINT_MAINTS" != 'y' ] ; then
|
||||
echo "$1"
|
||||
return
|
||||
fi
|
||||
|
||||
echo -n "$1:"
|
||||
|
||||
local loc=`get_target_location $1`
|
||||
|
||||
if [ -z "${loc}" ] ; then echo "ERROR" ; return ; fi
|
||||
|
||||
local maintainers_result=`get_target_maintainers ${loc} | tr " " "\n"`
|
||||
|
||||
if [ "$MAINTAINERS_ONLY" != 'y' ] ; then
|
||||
|
||||
local dir=`echo ${loc} | cut -d ":" -f 2`
|
||||
local cfg=`echo ${loc} | cut -d ":" -f 1`
|
||||
local git_result=`git log --format=%aE board/${dir} \
|
||||
include/configs/${cfg}.h | grep "@"`
|
||||
local git_result_recent=`echo ${git_result} | tr " " "\n" | \
|
||||
head -n 3`
|
||||
local git_result_top=`echo ${git_result} | tr " " "\n" | \
|
||||
sort | uniq -c | sort -nr | head -n 3 | \
|
||||
sed "s/^ \+[0-9]\+ \+//"`
|
||||
|
||||
echo -e "$git_result_recent\n$git_result_top\n$maintainers_result" | \
|
||||
sort -u | tr "\n" " " | sed "s/ $//" ;
|
||||
else
|
||||
echo -e "$maintainers_result" | sort -u | tr "\n" " " | \
|
||||
sed "s/ $//" ;
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Each finished build will have a file called ${donep}${n},
|
||||
# where n is the index of the build. Each build
|
||||
# we've already noted as finished will have ${skipp}${n}.
|
||||
# The code managing the build process will use this information
|
||||
# to ensure that only BUILD_NBUILDS builds are in flight at once
|
||||
donep="${LOG_DIR}/._done_"
|
||||
skipp="${LOG_DIR}/._skip_"
|
||||
|
||||
build_target_killed() {
|
||||
echo "Aborted $target build."
|
||||
# Remove the logs for this board since it was aborted
|
||||
rm -f ${LOG_DIR}/$target.MAKELOG ${LOG_DIR}/$target.ERR
|
||||
exit
|
||||
}
|
||||
|
||||
build_target() {
|
||||
target=$1
|
||||
build_idx=$2
|
||||
|
||||
if [ "$ONLY_LIST" == 'y' ] ; then
|
||||
list_target ${target}
|
||||
return
|
||||
fi
|
||||
|
||||
if [ $BUILD_MANY == 1 ] ; then
|
||||
output_dir="${OUTPUT_PREFIX}/${target}"
|
||||
mkdir -p "${output_dir}"
|
||||
trap build_target_killed TERM
|
||||
else
|
||||
output_dir="${OUTPUT_PREFIX}"
|
||||
fi
|
||||
|
||||
target_arch=$(get_target_arch ${target})
|
||||
eval cross_toolchain=\$CROSS_COMPILE_`echo $target_arch | tr '[:lower:]' '[:upper:]'`
|
||||
if [ "${cross_toolchain}" ] ; then
|
||||
MAKE="$GNU_MAKE CROSS_COMPILE=${cross_toolchain}"
|
||||
elif [ "${CROSS_COMPILE}" ] ; then
|
||||
MAKE="$GNU_MAKE CROSS_COMPILE=${CROSS_COMPILE}"
|
||||
else
|
||||
MAKE=$GNU_MAKE
|
||||
fi
|
||||
|
||||
if [ "${output_dir}" != "." ] ; then
|
||||
MAKE="${MAKE} O=${output_dir}"
|
||||
fi
|
||||
|
||||
${MAKE} mrproper >/dev/null
|
||||
|
||||
echo "Building ${target} board..."
|
||||
${MAKE} -s ${target}_defconfig >/dev/null
|
||||
|
||||
${MAKE} ${JOBS} ${CHECK} all \
|
||||
>${LOG_DIR}/$target.MAKELOG 2> ${LOG_DIR}/$target.ERR
|
||||
|
||||
# Check for 'make' errors
|
||||
if [ ${PIPESTATUS[0]} -ne 0 ] ; then
|
||||
RC=1
|
||||
fi
|
||||
|
||||
OBJS=${output_dir}/u-boot
|
||||
if [ -e ${output_dir}/spl/u-boot-spl ]; then
|
||||
OBJS="${OBJS} ${output_dir}/spl/u-boot-spl"
|
||||
fi
|
||||
|
||||
${CROSS_COMPILE}size ${OBJS} | tee -a ${LOG_DIR}/$target.MAKELOG
|
||||
|
||||
if [ $BUILD_MANY == 1 ] ; then
|
||||
trap - TERM
|
||||
|
||||
${MAKE} -s clean
|
||||
|
||||
if [ -s ${LOG_DIR}/${target}.ERR ] ; then
|
||||
cp ${LOG_DIR}/${target}.ERR ${OUTPUT_PREFIX}/ERR/${target}
|
||||
else
|
||||
rm ${LOG_DIR}/${target}.ERR
|
||||
fi
|
||||
else
|
||||
if [ -s ${LOG_DIR}/${target}.ERR ] ; then
|
||||
if grep -iw error ${LOG_DIR}/${target}.ERR ; then
|
||||
: $(( ERR_CNT += 1 ))
|
||||
ERR_LIST="${ERR_LIST} $target"
|
||||
else
|
||||
: $(( WRN_CNT += 1 ))
|
||||
WRN_LIST="${WRN_LIST} $target"
|
||||
fi
|
||||
else
|
||||
rm ${LOG_DIR}/${target}.ERR
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -e "${LOG_DIR}/${target}.ERR" ] && cat "${LOG_DIR}/${target}.ERR"
|
||||
|
||||
touch "${donep}${build_idx}"
|
||||
}
|
||||
|
||||
manage_builds() {
|
||||
search_idx=${OLDEST_IDX}
|
||||
if [ "$ONLY_LIST" == 'y' ] ; then return ; fi
|
||||
|
||||
while true; do
|
||||
if [ -e "${donep}${search_idx}" ] ; then
|
||||
: $(( CURRENT_CNT-- ))
|
||||
[ ${OLDEST_IDX} -eq ${search_idx} ] &&
|
||||
: $(( OLDEST_IDX++ ))
|
||||
|
||||
# Only want to count it once
|
||||
rm -f "${donep}${search_idx}"
|
||||
touch "${skipp}${search_idx}"
|
||||
elif [ -e "${skipp}${search_idx}" ] ; then
|
||||
[ ${OLDEST_IDX} -eq ${search_idx} ] &&
|
||||
: $(( OLDEST_IDX++ ))
|
||||
fi
|
||||
: $(( search_idx++ ))
|
||||
if [ ${search_idx} -gt ${TOTAL_CNT} ] ; then
|
||||
if [ ${CURRENT_CNT} -ge ${BUILD_NBUILDS} ] ; then
|
||||
search_idx=${OLDEST_IDX}
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
build_targets() {
|
||||
for t in "$@" ; do
|
||||
# If a LIST_xxx var exists, use it. But avoid variable
|
||||
# expansion in the eval when a board name contains certain
|
||||
# characters that the shell interprets.
|
||||
case ${t} in
|
||||
*[-+=]*) list= ;;
|
||||
*) list=$(eval echo '${LIST_'$t'}') ;;
|
||||
esac
|
||||
if [ -n "${list}" ] ; then
|
||||
build_targets ${list}
|
||||
else
|
||||
: $((TOTAL_CNT += 1))
|
||||
: $((CURRENT_CNT += 1))
|
||||
rm -f "${donep}${TOTAL_CNT}"
|
||||
rm -f "${skipp}${TOTAL_CNT}"
|
||||
if [ "$CONTINUE" = 'y' -a -e ${LOG_DIR}/$t.MAKELOG ] ; then
|
||||
: $((SKIP_CNT += 1))
|
||||
touch "${donep}${TOTAL_CNT}"
|
||||
elif [ "$REBUILD_ERRORS" = 'y' -a ! -e ${LOG_DIR}/$t.ERR ] ; then
|
||||
: $((SKIP_CNT += 1))
|
||||
touch "${donep}${TOTAL_CNT}"
|
||||
else
|
||||
if [ $BUILD_MANY == 1 ] ; then
|
||||
build_target ${t} ${TOTAL_CNT} &
|
||||
else
|
||||
CUR_TGT="${t}"
|
||||
build_target ${t} ${TOTAL_CNT}
|
||||
CUR_TGT=''
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# We maintain a running count of all the builds we have done.
|
||||
# Each finished build will have a file called ${donep}${n},
|
||||
# where n is the index of the build. Each build
|
||||
# we've already noted as finished will have ${skipp}${n}.
|
||||
# We track the current index via TOTAL_CNT, and the oldest
|
||||
# index. When we exceed the maximum number of parallel builds,
|
||||
# We look from oldest to current for builds that have completed,
|
||||
# and update the current count and oldest index as appropriate.
|
||||
# If we've gone through the entire list, wait a second, and
|
||||
# reprocess the entire list until we find a build that has
|
||||
# completed
|
||||
if [ ${CURRENT_CNT} -ge ${BUILD_NBUILDS} ] ; then
|
||||
manage_builds
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
kill_children() {
|
||||
local OS=$(uname -s)
|
||||
local children=""
|
||||
case "${OS}" in
|
||||
"Darwin")
|
||||
# Mac OS X is known to have BSD style ps
|
||||
local pgid=$(ps -p $$ -o pgid | sed -e "/PGID/d")
|
||||
children=$(ps -g $pgid -o pid | sed -e "/PID\|$$\|$pgid/d")
|
||||
;;
|
||||
*)
|
||||
# everything else tries the GNU style
|
||||
local pgid=$(ps -p $$ --no-headers -o "%r" | tr -d ' ')
|
||||
children=$(pgrep -g $pgid | sed -e "/$$\|$pgid/d")
|
||||
;;
|
||||
esac
|
||||
|
||||
kill $children 2> /dev/null
|
||||
wait $children 2> /dev/null
|
||||
|
||||
exit
|
||||
}
|
||||
|
||||
print_stats() {
|
||||
if [ "$ONLY_LIST" == 'y' ] ; then return ; fi
|
||||
|
||||
# Only count boards that completed
|
||||
: $((TOTAL_CNT = `find ${skipp}* 2> /dev/null | wc -l`))
|
||||
|
||||
rm -f ${donep}* ${skipp}*
|
||||
|
||||
if [ $BUILD_MANY == 1 ] && [ -e "${OUTPUT_PREFIX}/ERR" ] ; then
|
||||
ERR_LIST=`grep -riwl error ${OUTPUT_PREFIX}/ERR/`
|
||||
ERR_LIST=`for f in $ERR_LIST ; do echo -n " $(basename $f)" ; done`
|
||||
ERR_CNT=`echo $ERR_LIST | wc -w | awk '{print $1}'`
|
||||
WRN_LIST=`grep -riwL error ${OUTPUT_PREFIX}/ERR/`
|
||||
WRN_LIST=`for f in $WRN_LIST ; do echo -n " $(basename $f)" ; done`
|
||||
WRN_CNT=`echo $WRN_LIST | wc -w | awk '{print $1}'`
|
||||
else
|
||||
# Remove the logs for any board that was interrupted
|
||||
rm -f ${LOG_DIR}/${CUR_TGT}.MAKELOG ${LOG_DIR}/${CUR_TGT}.ERR
|
||||
fi
|
||||
|
||||
: $((TOTAL_CNT -= ${SKIP_CNT}))
|
||||
echo ""
|
||||
echo "--------------------- SUMMARY ----------------------------"
|
||||
if [ "$CONTINUE" = 'y' -o "$REBUILD_ERRORS" = 'y' ] ; then
|
||||
echo "Boards skipped: ${SKIP_CNT}"
|
||||
fi
|
||||
echo "Boards compiled: ${TOTAL_CNT}"
|
||||
if [ ${ERR_CNT} -gt 0 ] ; then
|
||||
echo "Boards with errors: ${ERR_CNT} (${ERR_LIST} )"
|
||||
fi
|
||||
if [ ${WRN_CNT} -gt 0 ] ; then
|
||||
echo "Boards with warnings but no errors: ${WRN_CNT} (${WRN_LIST} )"
|
||||
fi
|
||||
echo "----------------------------------------------------------"
|
||||
|
||||
if [ $BUILD_MANY == 1 ] ; then
|
||||
kill_children
|
||||
fi
|
||||
|
||||
deprecation
|
||||
|
||||
exit $RC
|
||||
}
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
# Build target groups selected by options, plus any command line args
|
||||
set -- ${SELECTED} "$@"
|
||||
# run PowerPC by default
|
||||
[ $# = 0 ] && set -- powerpc
|
||||
build_targets "$@"
|
||||
wait
|
||||
21
Makefile
21
Makefile
@@ -5,7 +5,7 @@
|
||||
VERSION = 2016
|
||||
PATCHLEVEL = 09
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc1
|
||||
EXTRAVERSION = -rc2
|
||||
NAME =
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@@ -425,7 +425,7 @@ timestamp_h := include/generated/timestamp_autogenerated.h
|
||||
|
||||
no-dot-config-targets := clean clobber mrproper distclean \
|
||||
help %docs check% coccicheck \
|
||||
ubootversion backup
|
||||
ubootversion backup tests
|
||||
|
||||
config-targets := 0
|
||||
mixed-targets := 0
|
||||
@@ -557,6 +557,14 @@ else
|
||||
include/config/auto.conf: ;
|
||||
endif # $(dot-config)
|
||||
|
||||
#
|
||||
# Xtensa linker script cannot be preprocessed with -ansi because of
|
||||
# preprocessor operations on strings that don't make C identifiers.
|
||||
#
|
||||
ifeq ($(CONFIG_XTENSA),)
|
||||
LDPPFLAGS += -ansi
|
||||
endif
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
KBUILD_CFLAGS += -Os
|
||||
else
|
||||
@@ -638,6 +646,7 @@ libs-y += drivers/net/
|
||||
libs-y += drivers/net/phy/
|
||||
libs-y += drivers/pci/
|
||||
libs-y += drivers/power/ \
|
||||
drivers/power/domain/ \
|
||||
drivers/power/fuel_gauge/ \
|
||||
drivers/power/mfd/ \
|
||||
drivers/power/pmic/ \
|
||||
@@ -666,6 +675,7 @@ libs-$(CONFIG_HAS_POST) += post/
|
||||
libs-y += test/
|
||||
libs-y += test/dm/
|
||||
libs-$(CONFIG_UT_ENV) += test/env/
|
||||
libs-$(CONFIG_UT_OVERLAY) += test/overlay/
|
||||
|
||||
libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
|
||||
|
||||
@@ -1311,7 +1321,7 @@ $(timestamp_h): $(srctree)/Makefile FORCE
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
quiet_cmd_cpp_lds = LDS $@
|
||||
cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
|
||||
cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \
|
||||
-D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $<
|
||||
|
||||
u-boot.lds: $(LDSCRIPT) prepare FORCE
|
||||
@@ -1417,7 +1427,7 @@ CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h include/license.h \
|
||||
MRPROPER_DIRS += include/config include/generated spl tpl \
|
||||
.tmp_objdiff
|
||||
MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \
|
||||
ctags etags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
|
||||
ctags etags tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
|
||||
|
||||
# clean - Delete most, but leave enough to build external modules
|
||||
#
|
||||
@@ -1488,6 +1498,7 @@ help:
|
||||
@echo ''
|
||||
@echo 'Other generic targets:'
|
||||
@echo ' all - Build all necessary images depending on configuration'
|
||||
@echo ' tests - Build U-Boot for sandbox and run tests'
|
||||
@echo '* u-boot - Build the bare u-boot'
|
||||
@echo ' dir/ - Build all files in dir and below'
|
||||
@echo ' dir/file.[oisS] - Build specified target only'
|
||||
@@ -1520,6 +1531,8 @@ help:
|
||||
@echo 'Execute "make" or "make all" to build all targets marked with [*] '
|
||||
@echo 'For further info see the ./README file'
|
||||
|
||||
tests:
|
||||
$(srctree)/test/run
|
||||
|
||||
# Documentation targets
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
38
README
38
README
@@ -840,6 +840,9 @@ The following options need to be configured:
|
||||
CONFIG_CONSOLE_EXTRA_INFO
|
||||
additional board info beside
|
||||
the logo
|
||||
CONFIG_HIDE_LOGO_VERSION
|
||||
do not display bootloader
|
||||
version string
|
||||
|
||||
When CONFIG_CFB_CONSOLE_ANSI is defined, console will support
|
||||
a limited number of ANSI escape sequences (cursor control,
|
||||
@@ -2753,7 +2756,7 @@ CBFS (Coreboot Filesystem) support
|
||||
with a special header) as build targets. By defining
|
||||
CONFIG_BUILD_TARGET in the SoC / board header, this
|
||||
special image will be automatically built upon calling
|
||||
make / MAKEALL.
|
||||
make / buildman.
|
||||
|
||||
CONFIG_IDENT_STRING
|
||||
|
||||
@@ -5080,33 +5083,10 @@ official or latest in the git repository) version of U-Boot sources.
|
||||
But before you submit such a patch, please verify that your modifi-
|
||||
cation did not break existing code. At least make sure that *ALL* of
|
||||
the supported boards compile WITHOUT ANY compiler warnings. To do so,
|
||||
just run the "MAKEALL" script, which will configure and build U-Boot
|
||||
for ALL supported system. Be warned, this will take a while. You can
|
||||
select which (cross) compiler to use by passing a `CROSS_COMPILE'
|
||||
environment variable to the script, i. e. to use the ELDK cross tools
|
||||
you can type
|
||||
|
||||
CROSS_COMPILE=ppc_8xx- MAKEALL
|
||||
|
||||
or to build on a native PowerPC system you can type
|
||||
|
||||
CROSS_COMPILE=' ' MAKEALL
|
||||
|
||||
When using the MAKEALL script, the default behaviour is to build
|
||||
U-Boot in the source directory. This location can be changed by
|
||||
setting the BUILD_DIR environment variable. Also, for each target
|
||||
built, the MAKEALL script saves two log files (<target>.ERR and
|
||||
<target>.MAKEALL) in the <source dir>/LOG directory. This default
|
||||
location can be changed by setting the MAKEALL_LOGDIR environment
|
||||
variable. For example:
|
||||
|
||||
export BUILD_DIR=/tmp/build
|
||||
export MAKEALL_LOGDIR=/tmp/log
|
||||
CROSS_COMPILE=ppc_8xx- MAKEALL
|
||||
|
||||
With the above settings build objects are saved in the /tmp/build,
|
||||
log files are saved in the /tmp/log and the source tree remains clean
|
||||
during the whole build process.
|
||||
just run the buildman script (tools/buildman/buildman), which will
|
||||
configure and build U-Boot for ALL supported system. Be warned, this
|
||||
will take a while. Please see the buildman README, or run 'buildman -H'
|
||||
for documentation.
|
||||
|
||||
|
||||
See also "U-Boot Porting Guide" below.
|
||||
@@ -6562,7 +6542,7 @@ it:
|
||||
|
||||
Notes:
|
||||
|
||||
* Before sending the patch, run the MAKEALL script on your patched
|
||||
* Before sending the patch, run the buildman script on your patched
|
||||
source tree and make sure that no errors or warnings are reported
|
||||
for any of the boards.
|
||||
|
||||
|
||||
@@ -88,6 +88,11 @@ config X86
|
||||
select DM_SPI
|
||||
select DM_SPI_FLASH
|
||||
|
||||
config XTENSA
|
||||
bool "Xtensa architecture"
|
||||
select CREATE_ARCH_SYMLINK
|
||||
select SUPPORT_OF_CONTROL
|
||||
|
||||
endchoice
|
||||
|
||||
config SYS_ARCH
|
||||
@@ -161,3 +166,4 @@ source "arch/sandbox/Kconfig"
|
||||
source "arch/sh/Kconfig"
|
||||
source "arch/sparc/Kconfig"
|
||||
source "arch/x86/Kconfig"
|
||||
source "arch/xtensa/Kconfig"
|
||||
|
||||
@@ -118,21 +118,21 @@ config SYS_DCACHE_OFF
|
||||
|
||||
choice
|
||||
prompt "Target select"
|
||||
default TARGET_AXS101
|
||||
default TARGET_AXS10X
|
||||
|
||||
config TARGET_TB100
|
||||
bool "Support tb100"
|
||||
|
||||
config TARGET_ARCANGEL4
|
||||
bool "Support arcangel4"
|
||||
config TARGET_NSIM
|
||||
bool "Support standalone nSIM & Free nSIM"
|
||||
|
||||
config TARGET_AXS101
|
||||
bool "Support axs101"
|
||||
config TARGET_AXS10X
|
||||
bool "Support Synopsys Designware SDP board (AXS101 & AXS103)"
|
||||
|
||||
endchoice
|
||||
|
||||
source "board/abilis/tb100/Kconfig"
|
||||
source "board/synopsys/Kconfig"
|
||||
source "board/synopsys/axs101/Kconfig"
|
||||
source "board/synopsys/axs10x/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -7,21 +7,26 @@
|
||||
.section .ivt, "a",@progbits
|
||||
.align 4
|
||||
/* Critical system events */
|
||||
.word _start /* 0 - 0x000 */
|
||||
.word memory_error /* 1 - 0x008 */
|
||||
.word instruction_error /* 2 - 0x010 */
|
||||
.word _start /* 0x00 - Reset */
|
||||
.word memory_error /* 0x01 - Memory Error */
|
||||
.word instruction_error /* 0x02 - Instruction Error */
|
||||
|
||||
/* Exceptions */
|
||||
.word EV_MachineCheck /* 0x100, Fatal Machine check (0x20) */
|
||||
.word EV_TLBMissI /* 0x108, Intruction TLB miss (0x21) */
|
||||
.word EV_TLBMissD /* 0x110, Data TLB miss (0x22) */
|
||||
.word EV_TLBProtV /* 0x118, Protection Violation (0x23)
|
||||
or Misaligned Access */
|
||||
.word EV_PrivilegeV /* 0x120, Privilege Violation (0x24) */
|
||||
.word EV_Trap /* 0x128, Trap exception (0x25) */
|
||||
.word EV_Extension /* 0x130, Extn Intruction Excp (0x26) */
|
||||
.word EV_MachineCheck /* 0x03 - Fatal Machine check */
|
||||
.word EV_TLBMissI /* 0x04 - Intruction TLB miss */
|
||||
.word EV_TLBMissD /* 0x05 - Data TLB miss */
|
||||
.word EV_TLBProtV /* 0x06 - Protection Violation or Misaligned Access */
|
||||
.word EV_PrivilegeV /* 0x07 - Privilege Violation */
|
||||
.word EV_SWI /* 0x08 - Software Interrupt */
|
||||
.word EV_Trap /* 0x09 - Trap */
|
||||
.word EV_Extension /* 0x0A - Extension Intruction Exception */
|
||||
.word EV_DivZero /* 0x0B - Division by Zero */
|
||||
.word EV_DCError /* 0x0C - Data cache consistency error */
|
||||
.word EV_Maligned /* 0x0D - Misaligned data access */
|
||||
.word 0 /* 0x0E - Unused */
|
||||
.word 0 /* 0x0F - Unused */
|
||||
|
||||
/* Device interrupts */
|
||||
.rept 29
|
||||
j interrupt_handler /* 3:31 - 0x018:0xF8 */
|
||||
.rept 240
|
||||
.word interrupt_handler /* 0x10 - 0xFF */
|
||||
.endr
|
||||
|
||||
@@ -4,38 +4,29 @@
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
OUTPUT_FORMAT("elf32-littlearc", "elf32-littlearc", "elf32-littlearc")
|
||||
OUTPUT_ARCH(arc)
|
||||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
. = ALIGN(4);
|
||||
. = CONFIG_SYS_TEXT_BASE;
|
||||
__image_copy_start = .;
|
||||
__text_start = .;
|
||||
.text : {
|
||||
*(.__text_start)
|
||||
*(.__image_copy_start)
|
||||
arch/arc/lib/start.o (.text*)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
. = ALIGN(4);
|
||||
.text_end :
|
||||
{
|
||||
*(.__text_end)
|
||||
}
|
||||
__text_end = .;
|
||||
|
||||
. = ALIGN(1024);
|
||||
.ivt_start : {
|
||||
*(.__ivt_start)
|
||||
}
|
||||
|
||||
__ivt_start = .;
|
||||
.ivt :
|
||||
{
|
||||
*(.ivt)
|
||||
}
|
||||
|
||||
.ivt_end : {
|
||||
*(.__ivt_end)
|
||||
}
|
||||
__ivt_end = .;
|
||||
|
||||
. = ALIGN(4);
|
||||
.rodata : {
|
||||
@@ -53,34 +44,20 @@ SECTIONS
|
||||
}
|
||||
|
||||
. = ALIGN(4);
|
||||
.rel_dyn_start : {
|
||||
*(.__rel_dyn_start)
|
||||
}
|
||||
|
||||
__rel_dyn_start = .;
|
||||
.rela.dyn : {
|
||||
*(.rela.dyn)
|
||||
}
|
||||
|
||||
.rel_dyn_end : {
|
||||
*(.__rel_dyn_end)
|
||||
}
|
||||
__rel_dyn_end = .;
|
||||
|
||||
. = ALIGN(4);
|
||||
.bss_start : {
|
||||
*(.__bss_start);
|
||||
}
|
||||
|
||||
__bss_start = .;
|
||||
.bss : {
|
||||
*(.bss*)
|
||||
}
|
||||
|
||||
.bss_end : {
|
||||
*(.__bss_end);
|
||||
}
|
||||
__bss_end = .;
|
||||
|
||||
. = ALIGN(4);
|
||||
.image_copy_end : {
|
||||
*(.__image_copy_end)
|
||||
*(.__init_end)
|
||||
}
|
||||
__image_copy_end = .;
|
||||
__init_end = .;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
dtb-$(CONFIG_TARGET_AXS101) += axs10x.dtb
|
||||
dtb-$(CONFIG_TARGET_ARCANGEL4) += arcangel4.dtb
|
||||
dtb-$(CONFIG_TARGET_AXS10X) += axs10x.dtb
|
||||
dtb-$(CONFIG_TARGET_NSIM) += nsim.dtb
|
||||
dtb-$(CONFIG_TARGET_TB100) += abilis_tb100.dtb
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Synopsys, Inc. (www.synopsys.com)
|
||||
* Copyright (C) 2015-2016 Synopsys, Inc. (www.synopsys.com)
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
@@ -9,9 +9,7 @@
|
||||
|
||||
#include <asm-generic/sections.h>
|
||||
|
||||
extern ulong __text_end;
|
||||
extern ulong __ivt_start;
|
||||
extern ulong __ivt_end;
|
||||
extern ulong __image_copy_start;
|
||||
|
||||
#endif /* __ASM_ARC_SECTIONS_H */
|
||||
|
||||
@@ -9,7 +9,6 @@ head-y := start.o
|
||||
obj-y += cache.o
|
||||
obj-y += cpu.o
|
||||
obj-y += interrupts.o
|
||||
obj-y += sections.o
|
||||
obj-y += relocate.o
|
||||
obj-y += strchr-700.o
|
||||
obj-y += strcmp.o
|
||||
|
||||
@@ -141,3 +141,29 @@ void do_extension(struct pt_regs *regs)
|
||||
printf("Extension instruction exception\n");
|
||||
bad_mode(regs);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
void do_swi(struct pt_regs *regs)
|
||||
{
|
||||
printf("Software Interrupt exception\n");
|
||||
bad_mode(regs);
|
||||
}
|
||||
|
||||
void do_divzero(unsigned long address, struct pt_regs *regs)
|
||||
{
|
||||
printf("Division by zero exception @ 0x%lx\n", address);
|
||||
bad_mode(regs);
|
||||
}
|
||||
|
||||
void do_dcerror(struct pt_regs *regs)
|
||||
{
|
||||
printf("Data cache consistency error exception\n");
|
||||
bad_mode(regs);
|
||||
}
|
||||
|
||||
void do_maligned(unsigned long address, struct pt_regs *regs)
|
||||
{
|
||||
printf("Misaligned data access exception @ 0x%lx\n", address);
|
||||
bad_mode(regs);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -149,3 +149,31 @@ ENTRY(EV_Extension)
|
||||
mov %r0, %sp
|
||||
j do_extension
|
||||
ENDPROC(EV_Extension)
|
||||
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
ENTRY(EV_SWI)
|
||||
SAVE_ALL_SYS
|
||||
mov %r0, %sp
|
||||
j do_swi
|
||||
ENDPROC(EV_SWI)
|
||||
|
||||
ENTRY(EV_DivZero)
|
||||
SAVE_ALL_SYS
|
||||
SAVE_EXCEPTION_SOURCE
|
||||
mov %r1, %sp
|
||||
j do_divzero
|
||||
ENDPROC(EV_DivZero)
|
||||
|
||||
ENTRY(EV_DCError)
|
||||
SAVE_ALL_SYS
|
||||
mov %r0, %sp
|
||||
j do_dcerror
|
||||
ENDPROC(EV_DCError)
|
||||
|
||||
ENTRY(EV_Maligned)
|
||||
SAVE_ALL_SYS
|
||||
SAVE_EXCEPTION_SOURCE
|
||||
mov %r1, %sp
|
||||
j do_maligned
|
||||
ENDPROC(EV_Maligned)
|
||||
#endif
|
||||
|
||||
@@ -6,7 +6,10 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <elf.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm-generic/sections.h>
|
||||
|
||||
extern ulong __image_copy_start;
|
||||
extern ulong __ivt_end;
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -37,6 +40,9 @@ int do_elf_reloc_fixups(void)
|
||||
Elf32_Rela *re_src = (Elf32_Rela *)(&__rel_dyn_start);
|
||||
Elf32_Rela *re_end = (Elf32_Rela *)(&__rel_dyn_end);
|
||||
|
||||
debug("Section .rela.dyn is located at %08x-%08x\n",
|
||||
(unsigned int)re_src, (unsigned int)re_end);
|
||||
|
||||
Elf32_Addr *offset_ptr_rom, *last_offset = NULL;
|
||||
Elf32_Addr *offset_ptr_ram;
|
||||
|
||||
@@ -52,6 +58,10 @@ int do_elf_reloc_fixups(void)
|
||||
offset_ptr_ram = (Elf32_Addr *)((ulong)offset_ptr_rom +
|
||||
gd->reloc_off);
|
||||
|
||||
debug("Patching value @ %08x (relocated to %08x)\n",
|
||||
(unsigned int)offset_ptr_rom,
|
||||
(unsigned int)offset_ptr_ram);
|
||||
|
||||
/*
|
||||
* Use "memcpy" because target location might be
|
||||
* 16-bit aligned on ARC so we may need to read
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013-2014 Synopsys, Inc. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/*
|
||||
* For some reason linker sets linker-generated symbols to zero in PIE mode.
|
||||
* A work-around is substitution of linker-generated symbols with
|
||||
* compiler-generated symbols which are properly handled by linker in PAE mode.
|
||||
*/
|
||||
|
||||
char __bss_start[0] __attribute__((section(".__bss_start")));
|
||||
char __bss_end[0] __attribute__((section(".__bss_end")));
|
||||
char __image_copy_start[0] __attribute__((section(".__image_copy_start")));
|
||||
char __image_copy_end[0] __attribute__((section(".__image_copy_end")));
|
||||
char __rel_dyn_start[0] __attribute__((section(".__rel_dyn_start")));
|
||||
char __rel_dyn_end[0] __attribute__((section(".__rel_dyn_end")));
|
||||
char __text_start[0] __attribute__((section(".__text_start")));
|
||||
char __text_end[0] __attribute__((section(".__text_end")));
|
||||
char __init_end[0] __attribute__((section(".__init_end")));
|
||||
char __ivt_start[0] __attribute__((section(".__ivt_start")));
|
||||
char __ivt_end[0] __attribute__((section(".__ivt_end")));
|
||||
@@ -6,6 +6,7 @@ config SYS_ARCH
|
||||
|
||||
config ARM64
|
||||
bool
|
||||
select PHYS_64BIT
|
||||
|
||||
config DMA_ADDR_T_64BIT
|
||||
bool
|
||||
@@ -553,11 +554,14 @@ config TARGET_MX53SMD
|
||||
config OMAP34XX
|
||||
bool "OMAP34XX SoC"
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
select USE_TINY_PRINTF
|
||||
|
||||
config OMAP44XX
|
||||
bool "OMAP44XX SoC"
|
||||
select CPU_V7
|
||||
select SUPPORT_SPL
|
||||
select USE_TINY_PRINTF
|
||||
|
||||
config OMAP54XX
|
||||
bool "OMAP54XX SoC"
|
||||
@@ -575,9 +579,10 @@ config AM43XX
|
||||
protocols, dual camera support, optional 3D graphics
|
||||
and an optional customer programmable secure boot.
|
||||
|
||||
config RMOBILE
|
||||
config ARCH_RMOBILE
|
||||
bool "Renesas ARM SoCs"
|
||||
select CPU_V7
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
|
||||
config TARGET_S32V234EVB
|
||||
bool "Support s32v234evb"
|
||||
@@ -657,10 +662,13 @@ config ARCH_ZYNQ
|
||||
select DM_GPIO
|
||||
select SPL_DM if SPL
|
||||
select DM_MMC
|
||||
select DM_MMC_OPS
|
||||
select DM_SPI
|
||||
select DM_SERIAL
|
||||
select DM_SPI_FLASH
|
||||
select SPL_SEPARATE_BSS if SPL
|
||||
select DM_USB if USB
|
||||
select BLK
|
||||
|
||||
config ARCH_ZYNQMP
|
||||
bool "Support Xilinx ZynqMP Platform"
|
||||
@@ -671,6 +679,7 @@ config ARCH_ZYNQMP
|
||||
select SUPPORT_SPL
|
||||
select CLK
|
||||
select SPL_CLK
|
||||
select DM_USB if USB
|
||||
|
||||
config TEGRA
|
||||
bool "NVIDIA Tegra"
|
||||
@@ -840,15 +849,12 @@ config STM32
|
||||
|
||||
config ARCH_ROCKCHIP
|
||||
bool "Support Rockchip SoCs"
|
||||
select SUPPORT_SPL
|
||||
select SPL
|
||||
select OF_CONTROL
|
||||
select CPU_V7
|
||||
select BLK
|
||||
select DM
|
||||
select SPL_DM
|
||||
select SPL_DM if SPL
|
||||
select SYS_MALLOC_F
|
||||
select SPL_SYS_MALLOC_SIMPLE
|
||||
select SPL_SYS_MALLOC_SIMPLE if SPL
|
||||
select DM_GPIO
|
||||
select DM_I2C
|
||||
select DM_MMC
|
||||
@@ -892,7 +898,7 @@ source "arch/arm/cpu/armv7/omap-common/Kconfig"
|
||||
|
||||
source "arch/arm/mach-orion5x/Kconfig"
|
||||
|
||||
source "arch/arm/cpu/armv7/rmobile/Kconfig"
|
||||
source "arch/arm/mach-rmobile/Kconfig"
|
||||
|
||||
source "arch/arm/mach-meson/Kconfig"
|
||||
|
||||
|
||||
@@ -20,6 +20,14 @@ arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, \
|
||||
$(call cc-option, -march=armv7, -march=armv5))
|
||||
arch-$(CONFIG_ARM64) =-march=armv8-a
|
||||
|
||||
# On Tegra systems we must build SPL for the armv4 core on the device
|
||||
# but otherwise we can use the value in CONFIG_SYS_ARM_ARCH
|
||||
ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TEGRA),yy)
|
||||
arch-y += -D__LINUX_ARM_ARCH__=4
|
||||
else
|
||||
arch-y += -D__LINUX_ARM_ARCH__=$(CONFIG_SYS_ARM_ARCH)
|
||||
endif
|
||||
|
||||
# Evaluate arch cc-option calls now
|
||||
arch-y := $(arch-y)
|
||||
|
||||
@@ -59,6 +67,7 @@ machine-$(CONFIG_ARCH_S5PC1XX) += s5pc1xx
|
||||
machine-$(CONFIG_ARCH_SUNXI) += sunxi
|
||||
machine-$(CONFIG_ARCH_SNAPDRAGON) += snapdragon
|
||||
machine-$(CONFIG_ARCH_SOCFPGA) += socfpga
|
||||
machine-$(CONFIG_ARCH_RMOBILE) += rmobile
|
||||
machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip
|
||||
machine-$(CONFIG_STM32) += stm32
|
||||
machine-$(CONFIG_TEGRA) += tegra
|
||||
|
||||
@@ -7,14 +7,14 @@ config CPU_V7_HAS_VIRT
|
||||
bool
|
||||
|
||||
config ARMV7_NONSEC
|
||||
boolean "Enable support for booting in non-secure mode" if EXPERT
|
||||
bool "Enable support for booting in non-secure mode" if EXPERT
|
||||
depends on CPU_V7_HAS_NONSEC
|
||||
default y
|
||||
---help---
|
||||
Say Y here to enable support for booting in non-secure / SVC mode.
|
||||
|
||||
config ARMV7_BOOT_SEC_DEFAULT
|
||||
boolean "Boot in secure mode by default" if EXPERT
|
||||
bool "Boot in secure mode by default" if EXPERT
|
||||
depends on ARMV7_NONSEC
|
||||
default y if TEGRA
|
||||
---help---
|
||||
@@ -25,14 +25,14 @@ config ARMV7_BOOT_SEC_DEFAULT
|
||||
variable to "sec" or "nonsec".
|
||||
|
||||
config ARMV7_VIRT
|
||||
boolean "Enable support for hardware virtualization" if EXPERT
|
||||
bool "Enable support for hardware virtualization" if EXPERT
|
||||
depends on CPU_V7_HAS_VIRT && ARMV7_NONSEC
|
||||
default y
|
||||
---help---
|
||||
Say Y here to boot in hypervisor (HYP) mode when booting non-secure.
|
||||
|
||||
config ARMV7_LPAE
|
||||
boolean "Use LPAE page table format" if EXPERT
|
||||
bool "Use LPAE page table format" if EXPERT
|
||||
depends on CPU_V7
|
||||
default n
|
||||
---help---
|
||||
|
||||
@@ -75,7 +75,7 @@ static void v7_dcache_maint_range(u32 start, u32 stop, u32 range_op)
|
||||
}
|
||||
|
||||
/* DSB to make sure the operation is complete */
|
||||
DSB;
|
||||
dsb();
|
||||
}
|
||||
|
||||
/* Invalidate TLB */
|
||||
@@ -88,9 +88,9 @@ static void v7_inval_tlb(void)
|
||||
/* Invalidate entire instruction TLB */
|
||||
asm volatile ("mcr p15, 0, %0, c8, c5, 0" : : "r" (0));
|
||||
/* Full system DSB - make sure that the invalidation is complete */
|
||||
DSB;
|
||||
dsb();
|
||||
/* Full system ISB - make sure the instruction stream sees it */
|
||||
ISB;
|
||||
isb();
|
||||
}
|
||||
|
||||
void invalidate_dcache_all(void)
|
||||
@@ -194,10 +194,10 @@ void invalidate_icache_all(void)
|
||||
asm volatile ("mcr p15, 0, %0, c7, c5, 6" : : "r" (0));
|
||||
|
||||
/* Full system DSB - make sure that the invalidation is complete */
|
||||
DSB;
|
||||
dsb();
|
||||
|
||||
/* ISB - make sure the instruction stream sees it */
|
||||
ISB;
|
||||
isb();
|
||||
}
|
||||
#else
|
||||
void invalidate_icache_all(void)
|
||||
|
||||
@@ -12,19 +12,102 @@
|
||||
#include <asm/arch-armv7/generictimer.h>
|
||||
#include <asm/psci.h>
|
||||
|
||||
#define RCPM_TWAITSR 0x04C
|
||||
|
||||
#define SCFG_CORE0_SFT_RST 0x130
|
||||
#define SCFG_CORESRENCR 0x204
|
||||
|
||||
#define DCFG_CCSR_BRR 0x0E4
|
||||
#define DCFG_CCSR_SCRATCHRW1 0x200
|
||||
#define DCFG_CCSR_RSTCR 0x0B0
|
||||
#define DCFG_CCSR_RSTCR_RESET_REQ 0x2
|
||||
#define DCFG_CCSR_BRR 0x0E4
|
||||
#define DCFG_CCSR_SCRATCHRW1 0x200
|
||||
|
||||
#define PSCI_FN_PSCI_VERSION_FEATURE_MASK 0x0
|
||||
#define PSCI_FN_CPU_SUSPEND_FEATURE_MASK 0x0
|
||||
#define PSCI_FN_CPU_OFF_FEATURE_MASK 0x0
|
||||
#define PSCI_FN_CPU_ON_FEATURE_MASK 0x0
|
||||
#define PSCI_FN_AFFINITY_INFO_FEATURE_MASK 0x0
|
||||
#define PSCI_FN_SYSTEM_OFF_FEATURE_MASK 0x0
|
||||
#define PSCI_FN_SYSTEM_RESET_FEATURE_MASK 0x0
|
||||
|
||||
.pushsection ._secure.text, "ax"
|
||||
|
||||
.arch_extension sec
|
||||
|
||||
.align 5
|
||||
|
||||
#define ONE_MS (GENERIC_TIMER_CLK / 1000)
|
||||
#define RESET_WAIT (30 * ONE_MS)
|
||||
|
||||
.globl psci_version
|
||||
psci_version:
|
||||
movw r0, #0
|
||||
movt r0, #1
|
||||
|
||||
bx lr
|
||||
|
||||
_ls102x_psci_supported_table:
|
||||
.word ARM_PSCI_0_2_FN_PSCI_VERSION
|
||||
.word PSCI_FN_PSCI_VERSION_FEATURE_MASK
|
||||
.word ARM_PSCI_0_2_FN_CPU_SUSPEND
|
||||
.word PSCI_FN_CPU_SUSPEND_FEATURE_MASK
|
||||
.word ARM_PSCI_0_2_FN_CPU_OFF
|
||||
.word PSCI_FN_CPU_OFF_FEATURE_MASK
|
||||
.word ARM_PSCI_0_2_FN_CPU_ON
|
||||
.word PSCI_FN_CPU_ON_FEATURE_MASK
|
||||
.word ARM_PSCI_0_2_FN_AFFINITY_INFO
|
||||
.word PSCI_FN_AFFINITY_INFO_FEATURE_MASK
|
||||
.word ARM_PSCI_0_2_FN_SYSTEM_OFF
|
||||
.word PSCI_FN_SYSTEM_OFF_FEATURE_MASK
|
||||
.word ARM_PSCI_0_2_FN_SYSTEM_RESET
|
||||
.word PSCI_FN_SYSTEM_RESET_FEATURE_MASK
|
||||
.word 0
|
||||
.word ARM_PSCI_RET_NI
|
||||
|
||||
.globl psci_features
|
||||
psci_features:
|
||||
adr r2, _ls102x_psci_supported_table
|
||||
1: ldr r3, [r2]
|
||||
cmp r3, #0
|
||||
beq out_psci_features
|
||||
cmp r1, r3
|
||||
addne r2, r2, #8
|
||||
bne 1b
|
||||
|
||||
out_psci_features:
|
||||
ldr r0, [r2, #4]
|
||||
bx lr
|
||||
|
||||
@ r0: return value ARM_PSCI_RET_SUCCESS or ARM_PSCI_RET_INVAL
|
||||
@ r1: input target CPU ID in MPIDR format, original value in r1 may be dropped
|
||||
@ r4: output validated CPU ID if ARM_PSCI_RET_SUCCESS returns, meaningless for
|
||||
@ ARM_PSCI_RET_INVAL,suppose caller saves r4 before calling
|
||||
LENTRY(psci_check_target_cpu_id)
|
||||
@ Get the real CPU number
|
||||
and r4, r1, #0xff
|
||||
mov r0, #ARM_PSCI_RET_INVAL
|
||||
|
||||
@ Bit[31:24], bits must be zero.
|
||||
tst r1, #0xff000000
|
||||
bxne lr
|
||||
|
||||
@ Affinity level 2 - Cluster: only one cluster in LS1021xa.
|
||||
tst r1, #0xff0000
|
||||
bxne lr
|
||||
|
||||
@ Affinity level 1 - Processors: should be in 0xf00 format.
|
||||
lsr r1, r1, #8
|
||||
teq r1, #0xf
|
||||
bxne lr
|
||||
|
||||
@ Affinity level 0 - CPU: only 0, 1 are valid in LS1021xa.
|
||||
cmp r4, #2
|
||||
bxge lr
|
||||
|
||||
mov r0, #ARM_PSCI_RET_SUCCESS
|
||||
bx lr
|
||||
ENDPROC(psci_check_target_cpu_id)
|
||||
|
||||
@ r1 = target CPU
|
||||
@ r2 = target PC
|
||||
.globl psci_cpu_on
|
||||
@@ -33,7 +116,9 @@ psci_cpu_on:
|
||||
|
||||
@ Clear and Get the correct CPU number
|
||||
@ r1 = 0xf01
|
||||
and r4, r1, #0xff
|
||||
bl psci_check_target_cpu_id
|
||||
cmp r0, #ARM_PSCI_RET_INVAL
|
||||
beq out_psci_cpu_on
|
||||
|
||||
mov r0, r4
|
||||
mov r1, r2
|
||||
@@ -101,6 +186,7 @@ holdoff_release:
|
||||
@ Return
|
||||
mov r0, #ARM_PSCI_RET_SUCCESS
|
||||
|
||||
out_psci_cpu_on:
|
||||
pop {r4, r5, r6, lr}
|
||||
bx lr
|
||||
|
||||
@@ -108,6 +194,52 @@ holdoff_release:
|
||||
psci_cpu_off:
|
||||
bl psci_cpu_off_common
|
||||
|
||||
1: wfi
|
||||
b 1b
|
||||
|
||||
.globl psci_affinity_info
|
||||
psci_affinity_info:
|
||||
push {lr}
|
||||
|
||||
mov r0, #ARM_PSCI_RET_INVAL
|
||||
|
||||
@ Verify Affinity level
|
||||
cmp r2, #0
|
||||
bne out_affinity_info
|
||||
|
||||
bl psci_check_target_cpu_id
|
||||
cmp r0, #ARM_PSCI_RET_INVAL
|
||||
beq out_affinity_info
|
||||
mov r1, r4
|
||||
|
||||
@ Get RCPM base address
|
||||
movw r4, #(CONFIG_SYS_FSL_RCPM_ADDR & 0xffff)
|
||||
movt r4, #(CONFIG_SYS_FSL_RCPM_ADDR >> 16)
|
||||
|
||||
mov r0, #PSCI_AFFINITY_LEVEL_ON
|
||||
|
||||
@ Detect target CPU state
|
||||
ldr r2, [r4, #RCPM_TWAITSR]
|
||||
rev r2, r2
|
||||
lsr r2, r2, r1
|
||||
ands r2, r2, #1
|
||||
beq out_affinity_info
|
||||
|
||||
mov r0, #PSCI_AFFINITY_LEVEL_OFF
|
||||
|
||||
out_affinity_info:
|
||||
pop {pc}
|
||||
|
||||
.globl psci_system_reset
|
||||
psci_system_reset:
|
||||
@ Get DCFG base address
|
||||
movw r1, #(CONFIG_SYS_FSL_GUTS_ADDR & 0xffff)
|
||||
movt r1, #(CONFIG_SYS_FSL_GUTS_ADDR >> 16)
|
||||
|
||||
mov r2, #DCFG_CCSR_RSTCR_RESET_REQ
|
||||
rev r2, r2
|
||||
str r2, [r1, #DCFG_CCSR_RSTCR]
|
||||
|
||||
1: wfi
|
||||
b 1b
|
||||
|
||||
|
||||
@@ -148,6 +148,10 @@ config TARGET_PLATINUM_TITANIUM
|
||||
bool "platinum-titanium"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_PCM058
|
||||
bool "Phytec PCM058 i.MX6 Quad"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_SECOMX6
|
||||
bool "secomx6 boards"
|
||||
|
||||
@@ -178,6 +182,18 @@ config TARGET_XPRESS
|
||||
select DM_THERMAL
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_ZC5202
|
||||
bool "zc5202"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_THERMAL
|
||||
|
||||
config TARGET_ZC5601
|
||||
bool "zc5601"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_THERMAL
|
||||
|
||||
endchoice
|
||||
|
||||
config SYS_SOC
|
||||
@@ -192,6 +208,7 @@ source "board/boundary/nitrogen6x/Kconfig"
|
||||
source "board/ccv/xpress/Kconfig"
|
||||
source "board/compulab/cm_fx6/Kconfig"
|
||||
source "board/congatec/cgtqmx6eval/Kconfig"
|
||||
source "board/el/el6x/Kconfig"
|
||||
source "board/embest/mx6boards/Kconfig"
|
||||
source "board/freescale/mx6qarm2/Kconfig"
|
||||
source "board/freescale/mx6qsabreauto/Kconfig"
|
||||
@@ -200,6 +217,7 @@ source "board/freescale/mx6slevk/Kconfig"
|
||||
source "board/freescale/mx6sxsabresd/Kconfig"
|
||||
source "board/freescale/mx6sxsabreauto/Kconfig"
|
||||
source "board/freescale/mx6ul_14x14_evk/Kconfig"
|
||||
source "board/phytec/pcm058/Kconfig"
|
||||
source "board/gateworks/gw_ventana/Kconfig"
|
||||
source "board/kosagi/novena/Kconfig"
|
||||
source "board/seco/Kconfig"
|
||||
|
||||
@@ -281,7 +281,7 @@ static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num)
|
||||
case PLL_BUS:
|
||||
if (!is_mx6ul()) {
|
||||
if (pfd_num == 3) {
|
||||
/* No PFD3 on PPL2 */
|
||||
/* No PFD3 on PLL2 */
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -433,9 +433,9 @@ static u32 get_axi_clk(void)
|
||||
|
||||
if (cbcdr & MXC_CCM_CBCDR_AXI_SEL) {
|
||||
if (cbcdr & MXC_CCM_CBCDR_AXI_ALT_SEL)
|
||||
root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
|
||||
else
|
||||
root_freq = mxc_get_pll_pfd(PLL_USBOTG, 1);
|
||||
else
|
||||
root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
|
||||
} else
|
||||
root_freq = get_periph_clk();
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ if ARCH_MX7
|
||||
config MX7
|
||||
bool
|
||||
select ROM_UNIFIED_SECTIONS
|
||||
select CPU_V7_HAS_VIRT
|
||||
select CPU_V7_HAS_NONSEC
|
||||
default y
|
||||
|
||||
config MX7D
|
||||
@@ -25,12 +27,19 @@ config TARGET_WARP7
|
||||
select DM
|
||||
select DM_THERMAL
|
||||
|
||||
config TARGET_COLIBRI_IMX7
|
||||
bool "Support Colibri iMX7S/iMX7D modules"
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_THERMAL
|
||||
|
||||
endchoice
|
||||
|
||||
config SYS_SOC
|
||||
default "mx7"
|
||||
|
||||
source "board/freescale/mx7dsabresd/Kconfig"
|
||||
source "board/toradex/colibri_imx7/Kconfig"
|
||||
source "board/warp7/Kconfig"
|
||||
|
||||
endif
|
||||
|
||||
@@ -248,6 +248,20 @@ int arch_cpu_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_MISC_INIT
|
||||
int arch_misc_init(void)
|
||||
{
|
||||
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
|
||||
if (is_mx7d())
|
||||
setenv("soc", "imx7d");
|
||||
else
|
||||
setenv("soc", "imx7s");
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SERIAL_TAG
|
||||
void get_board_serial(struct tag_serialnr *serialnr)
|
||||
{
|
||||
|
||||
@@ -443,15 +443,12 @@ void do_scale_vcore(u32 vcore_reg, u32 volt_mv, struct pmic_data *pmic)
|
||||
{
|
||||
u32 offset_code;
|
||||
u32 offset = volt_mv;
|
||||
#ifndef CONFIG_DRA7XX
|
||||
int ret = 0;
|
||||
#endif
|
||||
|
||||
if (!volt_mv)
|
||||
return;
|
||||
|
||||
pmic->pmic_bus_init();
|
||||
#ifndef CONFIG_DRA7XX
|
||||
/* See if we can first get the GPIO if needed */
|
||||
if (pmic->gpio_en)
|
||||
ret = gpio_request(pmic->gpio, "PMIC_GPIO");
|
||||
@@ -465,7 +462,7 @@ void do_scale_vcore(u32 vcore_reg, u32 volt_mv, struct pmic_data *pmic)
|
||||
/* Pull the GPIO low to select SET0 register, while we program SET1 */
|
||||
if (pmic->gpio_en)
|
||||
gpio_direction_output(pmic->gpio, 0);
|
||||
#endif
|
||||
|
||||
/* convert to uV for better accuracy in the calculations */
|
||||
offset *= 1000;
|
||||
|
||||
@@ -476,10 +473,8 @@ void do_scale_vcore(u32 vcore_reg, u32 volt_mv, struct pmic_data *pmic)
|
||||
|
||||
if (pmic->pmic_write(pmic->i2c_slave_addr, vcore_reg, offset_code))
|
||||
printf("Scaling voltage failed for 0x%x\n", vcore_reg);
|
||||
#ifndef CONFIG_DRA7XX
|
||||
if (pmic->gpio_en)
|
||||
gpio_direction_output(pmic->gpio, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
static u32 optimize_vcore_voltage(struct volts const *v)
|
||||
@@ -534,7 +529,6 @@ void __weak recalibrate_iodelay(void)
|
||||
*/
|
||||
void scale_vcores(struct vcores_data const *vcores)
|
||||
{
|
||||
#if defined(CONFIG_DRA7XX)
|
||||
int i;
|
||||
struct volts *pv = (struct volts *)vcores;
|
||||
struct volts *px;
|
||||
@@ -594,7 +588,16 @@ void scale_vcores(struct vcores_data const *vcores)
|
||||
vcores->mpu.abb_tx_done_mask,
|
||||
OMAP_ABB_FAST_OPP);
|
||||
|
||||
/* The .mm member is not used for the DRA7xx */
|
||||
debug("mm: %d\n", vcores->mm.value);
|
||||
do_scale_vcore(vcores->mm.addr, vcores->mm.value, vcores->mm.pmic);
|
||||
/* Configure MM ABB LDO after scale */
|
||||
abb_setup(vcores->mm.efuse.reg,
|
||||
(*ctrl)->control_wkup_ldovbb_mm_voltage_ctrl,
|
||||
(*prcm)->prm_abbldo_mm_setup,
|
||||
(*prcm)->prm_abbldo_mm_ctrl,
|
||||
(*prcm)->prm_irqstatus_mpu,
|
||||
vcores->mm.abb_tx_done_mask,
|
||||
OMAP_ABB_FAST_OPP);
|
||||
|
||||
debug("gpu: %d\n", vcores->gpu.value);
|
||||
do_scale_vcore(vcores->gpu.addr, vcores->gpu.value, vcores->gpu.pmic);
|
||||
@@ -626,56 +629,6 @@ void scale_vcores(struct vcores_data const *vcores)
|
||||
(*prcm)->prm_irqstatus_mpu,
|
||||
vcores->iva.abb_tx_done_mask,
|
||||
OMAP_ABB_FAST_OPP);
|
||||
/* Might need udelay(1000) here if debug is enabled to see all prints */
|
||||
#else
|
||||
u32 val;
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->core);
|
||||
do_scale_vcore(vcores->core.addr, val, vcores->core.pmic);
|
||||
|
||||
/*
|
||||
* IO delay recalibration should be done immediately after
|
||||
* adjusting AVS voltages for VDD_CORE_L.
|
||||
* Respective boards should call __recalibrate_iodelay()
|
||||
* with proper mux, virtual and manual mode configurations.
|
||||
*/
|
||||
#ifdef CONFIG_IODELAY_RECALIBRATION
|
||||
recalibrate_iodelay();
|
||||
#endif
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->mpu);
|
||||
do_scale_vcore(vcores->mpu.addr, val, vcores->mpu.pmic);
|
||||
|
||||
/* Configure MPU ABB LDO after scale */
|
||||
abb_setup(vcores->mpu.efuse.reg,
|
||||
(*ctrl)->control_wkup_ldovbb_mpu_voltage_ctrl,
|
||||
(*prcm)->prm_abbldo_mpu_setup,
|
||||
(*prcm)->prm_abbldo_mpu_ctrl,
|
||||
(*prcm)->prm_irqstatus_mpu_2,
|
||||
vcores->mpu.abb_tx_done_mask,
|
||||
OMAP_ABB_FAST_OPP);
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->mm);
|
||||
do_scale_vcore(vcores->mm.addr, val, vcores->mm.pmic);
|
||||
|
||||
/* Configure MM ABB LDO after scale */
|
||||
abb_setup(vcores->mm.efuse.reg,
|
||||
(*ctrl)->control_wkup_ldovbb_mm_voltage_ctrl,
|
||||
(*prcm)->prm_abbldo_mm_setup,
|
||||
(*prcm)->prm_abbldo_mm_ctrl,
|
||||
(*prcm)->prm_irqstatus_mpu,
|
||||
vcores->mm.abb_tx_done_mask,
|
||||
OMAP_ABB_FAST_OPP);
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->gpu);
|
||||
do_scale_vcore(vcores->gpu.addr, val, vcores->gpu.pmic);
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->eve);
|
||||
do_scale_vcore(vcores->eve.addr, val, vcores->eve.pmic);
|
||||
|
||||
val = optimize_vcore_voltage(&vcores->iva);
|
||||
do_scale_vcore(vcores->iva.addr, val, vcores->iva.pmic);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void enable_clock_domain(u32 const clkctrl_reg, u32 enable_mode)
|
||||
|
||||
@@ -6,55 +6,39 @@ choice
|
||||
|
||||
config TARGET_AM3517_EVM
|
||||
bool "AM3517 EVM"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_MT_VENTOUX
|
||||
bool "TeeJet Mt.Ventoux"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_BEAGLE
|
||||
bool "TI OMAP3 BeagleBoard"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_CM_T35
|
||||
bool "CompuLab CM-T3530 and CM-T3730 boards"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_CM_T3517
|
||||
bool "CompuLab CM-T3517 boards"
|
||||
|
||||
config TARGET_DEVKIT8000
|
||||
bool "TimLL OMAP3 Devkit8000"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_OMAP3_EVM
|
||||
bool "TI OMAP3 EVM"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_EVM_QUICK_MMC
|
||||
bool "TI OMAP3 EVM Quick MMC"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_EVM_QUICK_NAND
|
||||
bool "TI OMAP3 EVM Quick NAND"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_IGEP00X0
|
||||
bool "IGEP"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_OMAP3_OVERO
|
||||
bool "OMAP35xx Gumstix Overo"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
@@ -67,51 +51,42 @@ config TARGET_OMAP3_ZOOM1
|
||||
|
||||
config TARGET_AM3517_CRANE
|
||||
bool "am3517_crane"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_PANDORA
|
||||
bool "OMAP3 Pandora"
|
||||
|
||||
config TARGET_ECO5PK
|
||||
bool "ECO5PK"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_TRICORDER
|
||||
bool "Tricorder"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_MCX
|
||||
bool "MCX"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_LOGIC
|
||||
bool "OMAP3 Logic"
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_NOKIA_RX51
|
||||
bool "Nokia RX51"
|
||||
|
||||
config TARGET_TAO3530
|
||||
bool "TAO3530"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_TWISTER
|
||||
bool "Twister"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_OMAP3_CAIRO
|
||||
bool "QUIPOS CAIRO"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
config TARGET_SNIPER
|
||||
bool "LG Optimus Black"
|
||||
select SUPPORT_SPL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select DM_GPIO
|
||||
|
||||
@@ -13,6 +13,7 @@ config TARGET_OMAP5_UEVM
|
||||
config TARGET_DRA7XX_EVM
|
||||
bool "TI DRA7XX"
|
||||
select TI_I2C_BOARD_DETECT
|
||||
select PHYS_64BIT
|
||||
|
||||
config TARGET_AM57XX_EVM
|
||||
bool "AM57XX"
|
||||
|
||||
@@ -160,7 +160,7 @@ static const struct dpll_params per_dpll_params_768mhz_es2[NUM_SYS_CLKS] = {
|
||||
|
||||
static const struct dpll_params per_dpll_params_768mhz_dra7xx[NUM_SYS_CLKS] = {
|
||||
{32, 0, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 12 MHz */
|
||||
{96, 4, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 20 MHz */
|
||||
{96, 4, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 20 MHz */
|
||||
{160, 6, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 16.8 MHz */
|
||||
{20, 0, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 19.2 MHz */
|
||||
{192, 12, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 26 MHz */
|
||||
@@ -318,6 +318,7 @@ struct pmic_data palmas = {
|
||||
.i2c_slave_addr = SMPS_I2C_SLAVE_ADDR,
|
||||
.pmic_bus_init = sri2c_init,
|
||||
.pmic_write = omap_vc_bypass_send_value,
|
||||
.gpio_en = 0,
|
||||
};
|
||||
|
||||
/* The TPS659038 and TPS65917 are software-compatible, use common struct */
|
||||
@@ -332,6 +333,7 @@ struct pmic_data tps659038 = {
|
||||
.i2c_slave_addr = TPS659038_I2C_SLAVE_ADDR,
|
||||
.pmic_bus_init = gpi2c_init,
|
||||
.pmic_write = palmas_i2c_write_u8,
|
||||
.gpio_en = 0,
|
||||
};
|
||||
|
||||
struct vcores_data omap5430_volts = {
|
||||
|
||||
@@ -29,7 +29,7 @@ static u32 psci_target_pc[CONFIG_ARMV7_PSCI_NR_CPUS] __secure_data = { 0 };
|
||||
void __secure psci_save_target_pc(int cpu, u32 pc)
|
||||
{
|
||||
psci_target_pc[cpu] = pc;
|
||||
DSB;
|
||||
dsb();
|
||||
}
|
||||
|
||||
u32 __secure psci_get_target_pc(int cpu)
|
||||
|
||||
@@ -46,20 +46,62 @@ ENTRY(default_psci_vector)
|
||||
ENDPROC(default_psci_vector)
|
||||
.weak default_psci_vector
|
||||
|
||||
ENTRY(psci_version)
|
||||
ENTRY(psci_cpu_suspend)
|
||||
ENTRY(psci_cpu_off)
|
||||
ENTRY(psci_cpu_on)
|
||||
ENTRY(psci_affinity_info)
|
||||
ENTRY(psci_migrate)
|
||||
ENTRY(psci_migrate_info_type)
|
||||
ENTRY(psci_migrate_info_up_cpu)
|
||||
ENTRY(psci_system_off)
|
||||
ENTRY(psci_system_reset)
|
||||
ENTRY(psci_features)
|
||||
ENTRY(psci_cpu_freeze)
|
||||
ENTRY(psci_cpu_default_suspend)
|
||||
ENTRY(psci_node_hw_state)
|
||||
ENTRY(psci_system_suspend)
|
||||
ENTRY(psci_set_suspend_mode)
|
||||
ENTRY(psi_stat_residency)
|
||||
ENTRY(psci_stat_count)
|
||||
mov r0, #ARM_PSCI_RET_NI @ Return -1 (Not Implemented)
|
||||
mov pc, lr
|
||||
ENDPROC(psci_stat_count)
|
||||
ENDPROC(psi_stat_residency)
|
||||
ENDPROC(psci_set_suspend_mode)
|
||||
ENDPROC(psci_system_suspend)
|
||||
ENDPROC(psci_node_hw_state)
|
||||
ENDPROC(psci_cpu_default_suspend)
|
||||
ENDPROC(psci_cpu_freeze)
|
||||
ENDPROC(psci_features)
|
||||
ENDPROC(psci_system_reset)
|
||||
ENDPROC(psci_system_off)
|
||||
ENDPROC(psci_migrate_info_up_cpu)
|
||||
ENDPROC(psci_migrate_info_type)
|
||||
ENDPROC(psci_migrate)
|
||||
ENDPROC(psci_affinity_info)
|
||||
ENDPROC(psci_cpu_on)
|
||||
ENDPROC(psci_cpu_off)
|
||||
ENDPROC(psci_cpu_suspend)
|
||||
ENDPROC(psci_version)
|
||||
.weak psci_version
|
||||
.weak psci_cpu_suspend
|
||||
.weak psci_cpu_off
|
||||
.weak psci_cpu_on
|
||||
.weak psci_affinity_info
|
||||
.weak psci_migrate
|
||||
.weak psci_migrate_info_type
|
||||
.weak psci_migrate_info_up_cpu
|
||||
.weak psci_system_off
|
||||
.weak psci_system_reset
|
||||
.weak psci_features
|
||||
.weak psci_cpu_freeze
|
||||
.weak psci_cpu_default_suspend
|
||||
.weak psci_node_hw_state
|
||||
.weak psci_system_suspend
|
||||
.weak psci_set_suspend_mode
|
||||
.weak psi_stat_residency
|
||||
.weak psci_stat_count
|
||||
|
||||
_psci_table:
|
||||
.word ARM_PSCI_FN_CPU_SUSPEND
|
||||
@@ -70,6 +112,42 @@ _psci_table:
|
||||
.word psci_cpu_on
|
||||
.word ARM_PSCI_FN_MIGRATE
|
||||
.word psci_migrate
|
||||
.word ARM_PSCI_0_2_FN_PSCI_VERSION
|
||||
.word psci_version
|
||||
.word ARM_PSCI_0_2_FN_CPU_SUSPEND
|
||||
.word psci_cpu_suspend
|
||||
.word ARM_PSCI_0_2_FN_CPU_OFF
|
||||
.word psci_cpu_off
|
||||
.word ARM_PSCI_0_2_FN_CPU_ON
|
||||
.word psci_cpu_on
|
||||
.word ARM_PSCI_0_2_FN_AFFINITY_INFO
|
||||
.word psci_affinity_info
|
||||
.word ARM_PSCI_0_2_FN_MIGRATE
|
||||
.word psci_migrate
|
||||
.word ARM_PSCI_0_2_FN_MIGRATE_INFO_TYPE
|
||||
.word psci_migrate_info_type
|
||||
.word ARM_PSCI_0_2_FN_MIGRATE_INFO_UP_CPU
|
||||
.word psci_migrate_info_up_cpu
|
||||
.word ARM_PSCI_0_2_FN_SYSTEM_OFF
|
||||
.word psci_system_off
|
||||
.word ARM_PSCI_0_2_FN_SYSTEM_RESET
|
||||
.word psci_system_reset
|
||||
.word ARM_PSCI_1_0_FN_PSCI_FEATURES
|
||||
.word psci_features
|
||||
.word ARM_PSCI_1_0_FN_CPU_FREEZE
|
||||
.word psci_cpu_freeze
|
||||
.word ARM_PSCI_1_0_FN_CPU_DEFAULT_SUSPEND
|
||||
.word psci_cpu_default_suspend
|
||||
.word ARM_PSCI_1_0_FN_NODE_HW_STATE
|
||||
.word psci_node_hw_state
|
||||
.word ARM_PSCI_1_0_FN_SYSTEM_SUSPEND
|
||||
.word psci_system_suspend
|
||||
.word ARM_PSCI_1_0_FN_SET_SUSPEND_MODE
|
||||
.word psci_set_suspend_mode
|
||||
.word ARM_PSCI_1_0_FN_STAT_RESIDENCY
|
||||
.word psi_stat_residency
|
||||
.word ARM_PSCI_1_0_FN_STAT_COUNT
|
||||
.word psci_stat_count
|
||||
.word 0
|
||||
.word 0
|
||||
|
||||
|
||||
@@ -53,16 +53,16 @@ static void __secure __mdelay(u32 ms)
|
||||
u32 reg = ONE_MS * ms;
|
||||
|
||||
cp15_write_cntp_tval(reg);
|
||||
ISB;
|
||||
isb();
|
||||
cp15_write_cntp_ctl(3);
|
||||
|
||||
do {
|
||||
ISB;
|
||||
isb();
|
||||
reg = cp15_read_cntp_ctl();
|
||||
} while (!(reg & BIT(2)));
|
||||
|
||||
cp15_write_cntp_ctl(0);
|
||||
ISB;
|
||||
isb();
|
||||
}
|
||||
|
||||
static void __secure clamp_release(u32 __maybe_unused *clamp)
|
||||
@@ -164,7 +164,7 @@ static u32 __secure cp15_read_scr(void)
|
||||
static void __secure cp15_write_scr(u32 scr)
|
||||
{
|
||||
asm volatile ("mcr p15, 0, %0, c1, c1, 0" : : "r" (scr));
|
||||
ISB;
|
||||
isb();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -190,7 +190,7 @@ void __secure __irq psci_fiq_enter(void)
|
||||
|
||||
/* End of interrupt */
|
||||
writel(reg, GICC_BASE + GICC_EOIR);
|
||||
DSB;
|
||||
dsb();
|
||||
|
||||
/* Get CPU number */
|
||||
cpu = (reg >> 10) & 0x7;
|
||||
@@ -242,7 +242,7 @@ void __secure psci_cpu_off(void)
|
||||
|
||||
/* Ask CPU0 via SGI15 to pull the rug... */
|
||||
writel(BIT(16) | 15, GICD_BASE + GICD_SGIR);
|
||||
DSB;
|
||||
dsb();
|
||||
|
||||
/* Wait to be turned off */
|
||||
while (1)
|
||||
|
||||
@@ -54,10 +54,12 @@ static void relocate_secure_section(void)
|
||||
{
|
||||
#ifdef CONFIG_ARMV7_SECURE_BASE
|
||||
size_t sz = __secure_end - __secure_start;
|
||||
unsigned long szflush = ALIGN(sz + 1, CONFIG_SYS_CACHELINE_SIZE);
|
||||
|
||||
memcpy((void *)CONFIG_ARMV7_SECURE_BASE, __secure_start, sz);
|
||||
|
||||
flush_dcache_range(CONFIG_ARMV7_SECURE_BASE,
|
||||
CONFIG_ARMV7_SECURE_BASE + sz + 1);
|
||||
CONFIG_ARMV7_SECURE_BASE + szflush);
|
||||
protect_secure_section();
|
||||
invalidate_icache_all();
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
if ARM64
|
||||
|
||||
config ARMV8_MULTIENTRY
|
||||
boolean "Enable multiple CPUs to enter into U-Boot"
|
||||
bool "Enable multiple CPUs to enter into U-Boot"
|
||||
|
||||
config ARMV8_SPIN_TABLE
|
||||
bool "Support spin-table enable method"
|
||||
|
||||
@@ -380,6 +380,7 @@ void setup_pgtables(void)
|
||||
static void setup_all_pgtables(void)
|
||||
{
|
||||
u64 tlb_addr = gd->arch.tlb_addr;
|
||||
u64 tlb_size = gd->arch.tlb_size;
|
||||
|
||||
/* Reset the fill ptr */
|
||||
gd->arch.tlb_fillptr = tlb_addr;
|
||||
@@ -388,10 +389,13 @@ static void setup_all_pgtables(void)
|
||||
setup_pgtables();
|
||||
|
||||
/* Create emergency page tables */
|
||||
gd->arch.tlb_size -= (uintptr_t)gd->arch.tlb_fillptr -
|
||||
(uintptr_t)gd->arch.tlb_addr;
|
||||
gd->arch.tlb_addr = gd->arch.tlb_fillptr;
|
||||
setup_pgtables();
|
||||
gd->arch.tlb_emerg = gd->arch.tlb_addr;
|
||||
gd->arch.tlb_addr = tlb_addr;
|
||||
gd->arch.tlb_size = tlb_size;
|
||||
}
|
||||
|
||||
/* to activate the MMU we need to set up virtual memory */
|
||||
|
||||
@@ -33,3 +33,7 @@ endif
|
||||
ifneq ($(CONFIG_LS1012A),)
|
||||
obj-$(CONFIG_SYS_HAS_SERDES) += ls1012a_serdes.o
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_LS1046A),)
|
||||
obj-$(CONFIG_SYS_HAS_SERDES) += ls1046a_serdes.o
|
||||
endif
|
||||
|
||||
@@ -145,11 +145,14 @@ static inline void final_mmu_setup(void)
|
||||
set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL),
|
||||
MEMORY_ATTRIBUTES);
|
||||
/*
|
||||
* MMU is already enabled, just need to invalidate TLB to load the
|
||||
* EL3 MMU is already enabled, just need to invalidate TLB to load the
|
||||
* new table. The new table is compatible with the current table, if
|
||||
* MMU somehow walks through the new table before invalidation TLB,
|
||||
* it still works. So we don't need to turn off MMU here.
|
||||
* When EL2 MMU table is created by calling this function, MMU needs
|
||||
* to be enabled.
|
||||
*/
|
||||
set_sctlr(get_sctlr() | CR_M);
|
||||
}
|
||||
|
||||
u64 get_page_table_size(void)
|
||||
@@ -309,7 +312,8 @@ int print_cpuinfo(void)
|
||||
printf("CPU%d(%s):%-4s MHz ", core,
|
||||
type == TY_ITYP_VER_A7 ? "A7 " :
|
||||
(type == TY_ITYP_VER_A53 ? "A53" :
|
||||
(type == TY_ITYP_VER_A57 ? "A57" : " ")),
|
||||
(type == TY_ITYP_VER_A57 ? "A57" :
|
||||
(type == TY_ITYP_VER_A72 ? "A72" : " "))),
|
||||
strmhz(buf, sysinfo.freq_processor[core]));
|
||||
}
|
||||
printf("\n Bus: %-4s MHz ",
|
||||
|
||||
@@ -3,6 +3,7 @@ SoC overview
|
||||
1. LS1043A
|
||||
2. LS2080A
|
||||
3. LS1012A
|
||||
4. LS1046A
|
||||
|
||||
LS1043A
|
||||
---------
|
||||
@@ -127,3 +128,44 @@ The LS1012A SoC includes the following function and features:
|
||||
- Two WatchDog timers
|
||||
- ARM generic timer
|
||||
- QorIQ platform's trust architecture 2.1
|
||||
|
||||
LS1046A
|
||||
--------
|
||||
The LS1046A integrated multicore processor combines four ARM Cortex-A72
|
||||
processor cores with datapath acceleration optimized for L2/3 packet
|
||||
processing, single pass security offload and robust traffic management
|
||||
and quality of service.
|
||||
|
||||
The LS1046A SoC includes the following function and features:
|
||||
- Four 64-bit ARM Cortex-A72 CPUs
|
||||
- 2 MB unified L2 Cache
|
||||
- One 64-bit DDR4 SDRAM memory controllers with ECC and interleaving
|
||||
support
|
||||
- Data Path Acceleration Architecture (DPAA) incorporating acceleration the
|
||||
the following functions:
|
||||
- Packet parsing, classification, and distribution (FMan)
|
||||
- Queue management for scheduling, packet sequencing, and congestion
|
||||
management (QMan)
|
||||
- Hardware buffer management for buffer allocation and de-allocation (BMan)
|
||||
- Cryptography acceleration (SEC)
|
||||
- Two Configurable x4 SerDes
|
||||
- Two PLLs per four-lane SerDes
|
||||
- Support for 10G operation
|
||||
- Ethernet interfaces by FMan
|
||||
- Up to 2 x XFI supporting 10G interface (MAC 9, 10)
|
||||
- Up to 1 x QSGMII (MAC 5, 6, 10, 1)
|
||||
- Up to 4 x SGMII supporting 1000Mbps (MAC 5, 6, 9, 10)
|
||||
- Up to 3 x SGMII supporting 2500Mbps (MAC 5, 9, 10)
|
||||
- Up to 2 x RGMII supporting 1000Mbps (MAC 3, 4)
|
||||
- High-speed peripheral interfaces
|
||||
- Three PCIe 3.0 controllers, one supporting x4 operation
|
||||
- One serial ATA (SATA 3.0) controllers
|
||||
- Additional peripheral interfaces
|
||||
- Three high-speed USB 3.0 controllers with integrated PHY
|
||||
- Enhanced secure digital host controller (eSDXC/eMMC)
|
||||
- Quad Serial Peripheral Interface (QSPI) Controller
|
||||
- Serial peripheral interface (SPI) controller
|
||||
- Four I2C controllers
|
||||
- Two DUARTs
|
||||
- Integrated flash controller (IFC) supporting NAND and NOR flash
|
||||
- QorIQ platform's trust architecture 2.1
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
#ifdef CONFIG_SYS_FSL_SRDS_1
|
||||
static u8 serdes1_prtcl_map[SERDES_PRCTL_COUNT];
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_SRDS_2
|
||||
static u8 serdes2_prtcl_map[SERDES_PRCTL_COUNT];
|
||||
#endif
|
||||
|
||||
int is_serdes_configured(enum srds_prtcl device)
|
||||
{
|
||||
@@ -21,6 +24,9 @@ int is_serdes_configured(enum srds_prtcl device)
|
||||
#ifdef CONFIG_SYS_FSL_SRDS_1
|
||||
ret |= serdes1_prtcl_map[device];
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_SRDS_2
|
||||
ret |= serdes2_prtcl_map[device];
|
||||
#endif
|
||||
|
||||
return !!ret;
|
||||
}
|
||||
@@ -37,6 +43,12 @@ int serdes_get_first_lane(u32 sd, enum srds_prtcl device)
|
||||
cfg &= FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_MASK;
|
||||
cfg >>= FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_SHIFT;
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_SRDS_2
|
||||
case FSL_SRDS_2:
|
||||
cfg &= FSL_CHASSIS2_RCWSR4_SRDS2_PRTCL_MASK;
|
||||
cfg >>= FSL_CHASSIS2_RCWSR4_SRDS2_PRTCL_SHIFT;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
printf("invalid SerDes%d\n", sd);
|
||||
@@ -114,4 +126,11 @@ void fsl_serdes_init(void)
|
||||
FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_SHIFT,
|
||||
serdes1_prtcl_map);
|
||||
#endif
|
||||
#ifdef CONFIG_SYS_FSL_SRDS_2
|
||||
serdes_init(FSL_SRDS_2,
|
||||
CONFIG_SYS_FSL_SERDES_ADDR,
|
||||
FSL_CHASSIS2_RCWSR4_SRDS2_PRTCL_MASK,
|
||||
FSL_CHASSIS2_RCWSR4_SRDS2_PRTCL_SHIFT,
|
||||
serdes2_prtcl_map);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -107,6 +107,12 @@ void get_sys_info(struct sys_info *sys_info)
|
||||
case 3:
|
||||
sys_info->freq_fman[0] = freq_c_pll[0] / 3;
|
||||
break;
|
||||
case 4:
|
||||
sys_info->freq_fman[0] = freq_c_pll[0] / 4;
|
||||
break;
|
||||
case 5:
|
||||
sys_info->freq_fman[0] = sys_info->freq_systembus;
|
||||
break;
|
||||
case 6:
|
||||
sys_info->freq_fman[0] = freq_c_pll[1] / 2;
|
||||
break;
|
||||
@@ -124,8 +130,23 @@ void get_sys_info(struct sys_info *sys_info)
|
||||
#ifdef CONFIG_FSL_ESDHC
|
||||
#ifdef CONFIG_FSL_ESDHC_USE_PERIPHERAL_CLK
|
||||
rcw_tmp = in_be32(&gur->rcwsr[15]);
|
||||
rcw_tmp = (rcw_tmp & HWA_CGA_M2_CLK_SEL) >> HWA_CGA_M2_CLK_SHIFT;
|
||||
sys_info->freq_sdhc = freq_c_pll[1] / rcw_tmp;
|
||||
switch ((rcw_tmp & HWA_CGA_M2_CLK_SEL) >> HWA_CGA_M2_CLK_SHIFT) {
|
||||
case 1:
|
||||
sys_info->freq_sdhc = freq_c_pll[1];
|
||||
break;
|
||||
case 2:
|
||||
sys_info->freq_sdhc = freq_c_pll[1] / 2;
|
||||
break;
|
||||
case 3:
|
||||
sys_info->freq_sdhc = freq_c_pll[1] / 3;
|
||||
break;
|
||||
case 6:
|
||||
sys_info->freq_sdhc = freq_c_pll[0] / 2;
|
||||
break;
|
||||
default:
|
||||
printf("Error: Unknown ESDHC clock select!\n");
|
||||
break;
|
||||
}
|
||||
#else
|
||||
sys_info->freq_sdhc = sys_info->freq_systembus;
|
||||
#endif
|
||||
|
||||
99
arch/arm/cpu/armv8/fsl-layerscape/ls1046a_serdes.c
Normal file
99
arch/arm/cpu/armv8/fsl-layerscape/ls1046a_serdes.c
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright 2016 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/arch/fsl_serdes.h>
|
||||
#include <asm/arch/immap_lsch2.h>
|
||||
|
||||
struct serdes_config {
|
||||
u32 protocol;
|
||||
u8 lanes[SRDS_MAX_LANES];
|
||||
};
|
||||
|
||||
static struct serdes_config serdes1_cfg_tbl[] = {
|
||||
/* SerDes 1 */
|
||||
{0x3333, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC5,
|
||||
SGMII_FM1_DTSEC6} },
|
||||
{0x1133, {XFI_FM1_MAC9, XFI_FM1_MAC10, SGMII_FM1_DTSEC5,
|
||||
SGMII_FM1_DTSEC6} },
|
||||
{0x1333, {XFI_FM1_MAC9, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC5,
|
||||
SGMII_FM1_DTSEC6} },
|
||||
{0x2333, {SGMII_2500_FM1_DTSEC9, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC5,
|
||||
SGMII_FM1_DTSEC6} },
|
||||
{0x2233, {SGMII_2500_FM1_DTSEC9, SGMII_2500_FM1_DTSEC10,
|
||||
SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} },
|
||||
{0x1040, {XFI_FM1_MAC9, NONE, QSGMII_FM1_A, NONE} },
|
||||
{0x2040, {SGMII_2500_FM1_DTSEC9, NONE, QSGMII_FM1_A, NONE} },
|
||||
{0x1163, {XFI_FM1_MAC9, XFI_FM1_MAC10, PCIE1, SGMII_FM1_DTSEC6} },
|
||||
{0x2263, {SGMII_2500_FM1_DTSEC9, SGMII_2500_FM1_DTSEC10, PCIE1,
|
||||
SGMII_FM1_DTSEC6} },
|
||||
{0x3363, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, PCIE1,
|
||||
SGMII_FM1_DTSEC6} },
|
||||
{0x2223, {SGMII_2500_FM1_DTSEC9, SGMII_2500_FM1_DTSEC10,
|
||||
SGMII_2500_FM1_DTSEC5, SGMII_FM1_DTSEC6} },
|
||||
{}
|
||||
};
|
||||
|
||||
static struct serdes_config serdes2_cfg_tbl[] = {
|
||||
/* SerDes 2 */
|
||||
{0x8888, {PCIE1, PCIE1, PCIE1, PCIE1} },
|
||||
{0x5559, {PCIE1, PCIE2, PCIE3, SATA1} },
|
||||
{0x5577, {PCIE1, PCIE2, PCIE3, PCIE3} },
|
||||
{0x5506, {PCIE1, PCIE2, NONE, PCIE3} },
|
||||
{0x0506, {NONE, PCIE2, NONE, PCIE3} },
|
||||
{0x0559, {NONE, PCIE2, PCIE3, SATA1} },
|
||||
{0x5A59, {PCIE1, SGMII_FM1_DTSEC2, PCIE3, SATA1} },
|
||||
{0x5A06, {PCIE1, SGMII_FM1_DTSEC2, NONE, PCIE3} },
|
||||
{}
|
||||
};
|
||||
|
||||
static struct serdes_config *serdes_cfg_tbl[] = {
|
||||
serdes1_cfg_tbl,
|
||||
serdes2_cfg_tbl,
|
||||
};
|
||||
|
||||
enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
|
||||
{
|
||||
struct serdes_config *ptr;
|
||||
|
||||
if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
|
||||
return 0;
|
||||
|
||||
ptr = serdes_cfg_tbl[serdes];
|
||||
while (ptr->protocol) {
|
||||
if (ptr->protocol == cfg)
|
||||
return ptr->lanes[lane];
|
||||
ptr++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int is_serdes_prtcl_valid(int serdes, u32 prtcl)
|
||||
{
|
||||
int i;
|
||||
struct serdes_config *ptr;
|
||||
|
||||
if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
|
||||
return 0;
|
||||
|
||||
ptr = serdes_cfg_tbl[serdes];
|
||||
while (ptr->protocol) {
|
||||
if (ptr->protocol == prtcl)
|
||||
break;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
if (!ptr->protocol)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < SRDS_MAX_LANES; i++) {
|
||||
if (ptr->lanes[i] != NONE)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -24,7 +24,7 @@ int ppa_init(void)
|
||||
u32 *boot_loc_ptr_l, *boot_loc_ptr_h;
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_SYS_LS_PPA_FW_IN_NOR
|
||||
#ifdef CONFIG_SYS_LS_PPA_FW_IN_XIP
|
||||
ppa_fit_addr = (void *)CONFIG_SYS_LS_PPA_FW_ADDR;
|
||||
#else
|
||||
#error "No CONFIG_SYS_LS_PPA_FW_IN_xxx defined"
|
||||
|
||||
@@ -20,4 +20,8 @@ config SYS_CONFIG_NAME
|
||||
config ZYNQMP_USB
|
||||
bool "Configure ZynqMP USB"
|
||||
|
||||
config SYS_MALLOC_F_LEN
|
||||
default 0x600
|
||||
|
||||
|
||||
endif
|
||||
|
||||
@@ -31,7 +31,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
|
||||
rk3288-firefly.dtb \
|
||||
rk3288-jerry.dtb \
|
||||
rk3288-rock2-square.dtb \
|
||||
rk3036-sdk.dtb
|
||||
rk3288-evb.dtb \
|
||||
rk3288-fennec.dtb \
|
||||
rk3288-miniarm.dtb \
|
||||
rk3288-popmetal.dtb \
|
||||
rk3036-sdk.dtb \
|
||||
rk3399-evb.dtb
|
||||
dtb-$(CONFIG_ARCH_MESON) += \
|
||||
meson-gxbb-odroidc2.dtb
|
||||
dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
|
||||
@@ -246,6 +251,7 @@ dtb-$(CONFIG_MACH_SUN8I_H3) += \
|
||||
sun8i-h3-orangepi-lite.dtb \
|
||||
sun8i-h3-orangepi-one.dtb \
|
||||
sun8i-h3-orangepi-pc.dtb \
|
||||
sun8i-h3-orangepi-pc-plus.dtb \
|
||||
sun8i-h3-orangepi-plus.dtb
|
||||
dtb-$(CONFIG_MACH_SUN50I) += \
|
||||
sun50i-a64-pine64-plus.dtb \
|
||||
@@ -264,6 +270,9 @@ dtb-$(CONFIG_SOC_KEYSTONE) += k2hk-evm.dtb \
|
||||
k2e-evm.dtb \
|
||||
k2g-evm.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_SAMA5D2_XPLAINED) += \
|
||||
at91-sama5d2_xplained.dtb
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
# Add any required device tree compiler flags here
|
||||
|
||||
@@ -300,3 +300,52 @@
|
||||
ti,non-removable;
|
||||
max-frequency = <96000000>;
|
||||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
|
||||
spi-max-frequency = <76800000>;
|
||||
m25p80@0 {
|
||||
compatible = "s25fl256s1","spi-flash";
|
||||
spi-max-frequency = <76800000>;
|
||||
reg = <0>;
|
||||
spi-tx-bus-width = <1>;
|
||||
spi-rx-bus-width = <4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/* MTD partition table.
|
||||
* The ROM checks the first four physical blocks
|
||||
* for a valid file to boot and the flash here is
|
||||
* 64KiB block size.
|
||||
*/
|
||||
partition@0 {
|
||||
label = "QSPI.SPL";
|
||||
reg = <0x00000000 0x000040000>;
|
||||
};
|
||||
partition@1 {
|
||||
label = "QSPI.u-boot";
|
||||
reg = <0x00040000 0x00100000>;
|
||||
};
|
||||
partition@2 {
|
||||
label = "QSPI.u-boot-spl-os";
|
||||
reg = <0x00140000 0x00080000>;
|
||||
};
|
||||
partition@3 {
|
||||
label = "QSPI.u-boot-env";
|
||||
reg = <0x001c0000 0x00010000>;
|
||||
};
|
||||
partition@4 {
|
||||
label = "QSPI.u-boot-env.backup1";
|
||||
reg = <0x001d0000 0x0010000>;
|
||||
};
|
||||
partition@5 {
|
||||
label = "QSPI.kernel";
|
||||
reg = <0x001e0000 0x0800000>;
|
||||
};
|
||||
partition@6 {
|
||||
label = "QSPI.file-system";
|
||||
reg = <0x009e0000 0x01620000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
200
arch/arm/dts/at91-sama5d2_xplained.dts
Normal file
200
arch/arm/dts/at91-sama5d2_xplained.dts
Normal file
@@ -0,0 +1,200 @@
|
||||
/dts-v1/;
|
||||
#include "sama5d2.dtsi"
|
||||
#include "sama5d2-pinfunc.h"
|
||||
|
||||
/ {
|
||||
model = "Atmel SAMA5D2 Xplained";
|
||||
compatible = "atmel,sama5d2-xplained", "atmel,sama5d2", "atmel,sama5";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
ahb {
|
||||
usb1: ohci@00400000 {
|
||||
num-ports = <3>;
|
||||
atmel,vbus-gpio = <&pioA 42 0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usb_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
usb2: ehci@00500000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdmmc0: sdio-host@a0000000 {
|
||||
bus-width = <8>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc0_cmd_dat_default &pinctrl_sdmmc0_ck_cd_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdmmc1: sdio-host@b0000000 {
|
||||
bus-width = <4>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc1_cmd_dat_default &pinctrl_sdmmc1_ck_cd_default>;
|
||||
status = "okay"; /* conflict with qspi0 */
|
||||
};
|
||||
|
||||
apb {
|
||||
qspi0: spi@f0020000 {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "atmel,sama5d2-qspi-flash";
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_qspi0_default>;
|
||||
spi-max-frequency = <83000000>;
|
||||
|
||||
partition@00000000 {
|
||||
label = "boot";
|
||||
reg = <0x00000000 0x00c00000>;
|
||||
};
|
||||
|
||||
partition@00c00000 {
|
||||
label = "rootfs";
|
||||
reg = <0x00c00000 0x00000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi0: spi@f8000000 {
|
||||
cs-gpios = <&pioA 17 0>, <0>, <0>, <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spi0_default>;
|
||||
status = "okay";
|
||||
|
||||
spi_flash@0 {
|
||||
compatible = "spi-flash";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
};
|
||||
};
|
||||
|
||||
macb0: ethernet@f8008000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
|
||||
phy-mode = "rmii";
|
||||
status = "okay";
|
||||
|
||||
ethernet-phy@1 {
|
||||
reg = <0x1>;
|
||||
};
|
||||
};
|
||||
|
||||
uart1: serial@f8020000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c1: i2c@fc028000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pioA: gpio@fc038000 {
|
||||
pinctrl {
|
||||
pinctrl_i2c1_default: i2c1_default {
|
||||
pinmux = <PIN_PD4__TWD1>,
|
||||
<PIN_PD5__TWCK1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_macb0_phy_irq: macb0_phy_irq {
|
||||
pinmux = <PIN_PC9__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_macb0_rmii: macb0_rmii {
|
||||
pinmux = <PIN_PB14__GTXCK>,
|
||||
<PIN_PB15__GTXEN>,
|
||||
<PIN_PB16__GRXDV>,
|
||||
<PIN_PB17__GRXER>,
|
||||
<PIN_PB18__GRX0>,
|
||||
<PIN_PB19__GRX1>,
|
||||
<PIN_PB20__GTX0>,
|
||||
<PIN_PB21__GTX1>,
|
||||
<PIN_PB22__GMDC>,
|
||||
<PIN_PB23__GMDIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_qspi0_default: qspi0_default {
|
||||
pinmux = <PIN_PA22__QSPI0_SCK>,
|
||||
<PIN_PA23__QSPI0_CS>,
|
||||
<PIN_PA24__QSPI0_IO0>,
|
||||
<PIN_PA25__QSPI0_IO1>,
|
||||
<PIN_PA26__QSPI0_IO2>,
|
||||
<PIN_PA27__QSPI0_IO3>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc0_cmd_dat_default: sdmmc0_cmd_dat_default {
|
||||
pinmux = <PIN_PA1__SDMMC0_CMD>,
|
||||
<PIN_PA2__SDMMC0_DAT0>,
|
||||
<PIN_PA3__SDMMC0_DAT1>,
|
||||
<PIN_PA4__SDMMC0_DAT2>,
|
||||
<PIN_PA5__SDMMC0_DAT3>,
|
||||
<PIN_PA6__SDMMC0_DAT4>,
|
||||
<PIN_PA7__SDMMC0_DAT5>,
|
||||
<PIN_PA8__SDMMC0_DAT6>,
|
||||
<PIN_PA9__SDMMC0_DAT7>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc0_ck_cd_default: sdmmc0_ck_cd_default {
|
||||
pinmux = <PIN_PA0__SDMMC0_CK>,
|
||||
<PIN_PA10__SDMMC0_RSTN>,
|
||||
<PIN_PA11__SDMMC0_VDDSEL>,
|
||||
<PIN_PA13__SDMMC0_CD>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc1_cmd_dat_default: sdmmc1_cmd_dat_default {
|
||||
pinmux = <PIN_PA28__SDMMC1_CMD>,
|
||||
<PIN_PA18__SDMMC1_DAT0>,
|
||||
<PIN_PA19__SDMMC1_DAT1>,
|
||||
<PIN_PA20__SDMMC1_DAT2>,
|
||||
<PIN_PA21__SDMMC1_DAT3>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc1_ck_cd_default: sdmmc1_ck_cd_default {
|
||||
pinmux = <PIN_PA22__SDMMC1_CK>,
|
||||
<PIN_PA30__SDMMC1_CD>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_spi0_default: spi0_default {
|
||||
pinmux = <PIN_PA14__SPI0_SPCK>,
|
||||
<PIN_PA15__SPI0_MOSI>,
|
||||
<PIN_PA16__SPI0_MISO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_uart1_default: uart1_default {
|
||||
pinmux = <PIN_PD2__URXD1>,
|
||||
<PIN_PD3__UTXD1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_usb_default: usb_default {
|
||||
pinmux = <PIN_PB10__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_usba_vbus: usba_vbus {
|
||||
pinmux = <PIN_PA31__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -24,6 +24,15 @@
|
||||
reg = <0x80000000 0x60000000>; /* 1536 MB */
|
||||
};
|
||||
|
||||
evm_3v3_sd: fixedregulator-sd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "evm_3v3_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
mmc2_3v3: fixedregulator-mmc2 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "mmc2_3v3";
|
||||
@@ -415,6 +424,7 @@
|
||||
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
};
|
||||
|
||||
};
|
||||
@@ -467,7 +477,8 @@
|
||||
|
||||
&mmc1 {
|
||||
status = "okay";
|
||||
vmmc-supply = <&ldo1_reg>;
|
||||
vmmc-supply = <&evm_3v3_sd>;
|
||||
vmmc_aux-supply = <&ldo1_reg>;
|
||||
bus-width = <4>;
|
||||
/*
|
||||
* SDCD signal is not being used here - using the fact that GPIO mode
|
||||
@@ -491,7 +502,7 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&qspi1_pins>;
|
||||
|
||||
spi-max-frequency = <64000000>;
|
||||
spi-max-frequency = <76800000>;
|
||||
m25p80@0 {
|
||||
compatible = "s25fl256s1","spi-flash";
|
||||
spi-max-frequency = <64000000>;
|
||||
|
||||
@@ -35,6 +35,15 @@
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
evm_3v3_sd: fixedregulator-sd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "evm_3v3_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
extcon_usb1: extcon_usb1 {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
|
||||
@@ -348,6 +357,7 @@
|
||||
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -369,6 +379,7 @@
|
||||
* VIN6_SEL_S0 is low, thus selecting McASP3 over VIN6
|
||||
*/
|
||||
lines-initial-states = <0x0f2b>;
|
||||
u-boot,i2c-offset-len = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -497,7 +508,8 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc1_pins_default>;
|
||||
|
||||
vmmc-supply = <&ldo1_reg>;
|
||||
vmmc_aux-supply = <&ldo1_reg>;
|
||||
vmmc-supply = <&evm_3v3_sd>;
|
||||
bus-width = <4>;
|
||||
/*
|
||||
* SDCD signal is not being used here - using the fact that GPIO mode
|
||||
@@ -576,6 +588,7 @@
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&cpsw_default>;
|
||||
pinctrl-1 = <&cpsw_sleep>;
|
||||
mode-gpios = <&pcf_gpio_21 4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&cpsw_emac1 {
|
||||
@@ -587,7 +600,6 @@
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&davinci_mdio_default>;
|
||||
pinctrl-1 = <&davinci_mdio_sleep>;
|
||||
active_slave = <1>;
|
||||
};
|
||||
|
||||
&dcan1 {
|
||||
@@ -603,7 +615,7 @@
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&qspi1_pins>;
|
||||
|
||||
spi-max-frequency = <64000000>;
|
||||
spi-max-frequency = <76800000>;
|
||||
m25p80@0 {
|
||||
compatible = "s25fl256s1","spi-flash";
|
||||
spi-max-frequency = <64000000>;
|
||||
|
||||
@@ -100,3 +100,11 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@@ -149,5 +149,28 @@
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mmc0: mmc@23000000 {
|
||||
compatible = "ti,omap4-hsmmc";
|
||||
reg = <0x23000000 0x400>;
|
||||
interrupts = <GIC_SPI 96 IRQ_TYPE_EDGE_RISING>;
|
||||
bus-width = <4>;
|
||||
ti,needs-special-reset;
|
||||
no-1-8-v;
|
||||
max-frequency = <96000000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mmc1: mmc@23100000 {
|
||||
compatible = "ti,omap4-hsmmc";
|
||||
reg = <0x23100000 0x400>;
|
||||
interrupts = <GIC_SPI 97 IRQ_TYPE_EDGE_RISING>;
|
||||
bus-width = <8>;
|
||||
ti,needs-special-reset;
|
||||
ti,non-removable;
|
||||
max-frequency = <96000000>;
|
||||
status = "disabled";
|
||||
clock-names = "fck";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
};
|
||||
|
||||
usb3@3100000 {
|
||||
compatible = "snps,dwc3";
|
||||
compatible = "fsl,layerscape-dwc3";
|
||||
reg = <0x3100000 0x10000>;
|
||||
interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dr_mode = "host";
|
||||
|
||||
@@ -41,6 +41,4 @@
|
||||
|
||||
&usb_otg {
|
||||
status = "okay";
|
||||
|
||||
dr_mode = "host";
|
||||
};
|
||||
|
||||
60
arch/arm/dts/rk3288-evb.dts
Normal file
60
arch/arm/dts/rk3288-evb.dts
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "rk3288-evb.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Evb-RK3288";
|
||||
compatible = "evb-rk3288,evb-rk3288", "rockchip,rk3288";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
};
|
||||
|
||||
&dmc {
|
||||
rockchip,num-channels = <2>;
|
||||
rockchip,pctl-timing = <0x215 0xc8 0x0 0x35 0x26 0x2 0x70 0x2000d
|
||||
0x6 0x0 0x8 0x4 0x17 0x24 0xd 0x6
|
||||
0x4 0x8 0x4 0x76 0x4 0x0 0x30 0x0
|
||||
0x1 0x2 0x2 0x4 0x0 0x0 0xc0 0x4
|
||||
0x8 0x1f4>;
|
||||
rockchip,phy-timing = <0x48d7dd93 0x187008d8 0x121076
|
||||
0x0 0xc3 0x6 0x2>;
|
||||
/* Add a dummy value to cause of-platdata think this is bytes */
|
||||
rockchip,sdram-channel = /bits/ 8 <0x2 0xa 0x3 0x2 0x2 0x0 0xe 0xe 0xff>;
|
||||
rockchip,sdram-params = <0x20d266a4 0x5b6 2 533000000 6 9 0>;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
u-boot,dm-pre-reloc;
|
||||
reg-shift = <2>;
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio8 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
379
arch/arm/dts/rk3288-evb.dtsi
Normal file
379
arch/arm/dts/rk3288-evb.dtsi
Normal file
@@ -0,0 +1,379 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ X11
|
||||
*/
|
||||
|
||||
#include "rk3288.dtsi"
|
||||
|
||||
/ {
|
||||
memory {
|
||||
reg = <0 0x80000000>;
|
||||
};
|
||||
|
||||
keys: gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
button@0 {
|
||||
gpio-key,wakeup = <1>;
|
||||
gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
label = "GPIO Power";
|
||||
linux,code = <116>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwr_key>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_sys: vsys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sys";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
vcc_flash: flash-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_flash";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
|
||||
vcc_5v: usb-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_5v";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
vin-supply = <&vcc_sys>;
|
||||
};
|
||||
|
||||
vcc_host_5v: usb-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 14 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&host_vbus_drv>;
|
||||
regulator-name = "vcc_host_5v";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
vin-supply = <&vcc_5v>;
|
||||
};
|
||||
|
||||
vcc_otg_5v: usb-otg-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&otg_vbus_drv>;
|
||||
regulator-name = "vcc_otg_5v";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
vin-supply = <&vcc_5v>;
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu0-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
broken-cd;
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
disable-wp;
|
||||
non-removable;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
|
||||
vmmc-supply = <&vcc_io>;
|
||||
vqmmc-supply = <&vcc_flash>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
ddc-i2c-bus = <&i2c5>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
clock-frequency = <400000>;
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu: syr827@40 {
|
||||
compatible = "silergy,syr827";
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
reg = <0x40>;
|
||||
regulator-name = "vdd_cpu";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
vin-supply = <&vcc_sys>;
|
||||
};
|
||||
|
||||
vdd_gpu: syr828@41 {
|
||||
compatible = "silergy,syr828";
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
reg = <0x41>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
vin-supply = <&vcc_sys>;
|
||||
};
|
||||
|
||||
hym8563: hym8563@51 {
|
||||
compatible = "haoyu,hym8563";
|
||||
reg = <0x51>;
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "xin32k";
|
||||
interrupt-parent = <&gpio7>;
|
||||
interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rtc_int>;
|
||||
};
|
||||
|
||||
act8846: act8846@5a {
|
||||
compatible = "active-semi,act8846";
|
||||
reg = <0x5a>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwr_hold>;
|
||||
system-power-controller;
|
||||
|
||||
regulators {
|
||||
vcc_ddr: REG1 {
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcc_io: REG2 {
|
||||
regulator-name = "vcc_io";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_log: REG3 {
|
||||
regulator-name = "vdd_log";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcc_20: REG4 {
|
||||
regulator-name = "vcc_20";
|
||||
regulator-min-microvolt = <2000000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vccio_sd: REG5 {
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd10_lcd: REG6 {
|
||||
regulator-name = "vdd10_lcd";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcca_codec: REG7 {
|
||||
regulator-name = "vcca_codec";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
vcc_tp: REG8 {
|
||||
regulator-name = "vcca_33";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
vccio_pmu: REG9 {
|
||||
regulator-name = "vccio_pmu";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
vdd_10: REG10 {
|
||||
regulator-name = "vdd_10";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcc_18: REG11 {
|
||||
regulator-name = "vcc_18";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcc18_lcd: REG12 {
|
||||
regulator-name = "vcc18_lcd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
pcfg_output_high: pcfg-output-high {
|
||||
output-high;
|
||||
};
|
||||
|
||||
pcfg_output_low: pcfg-output-low {
|
||||
output-low;
|
||||
};
|
||||
|
||||
act8846 {
|
||||
pwr_hold: pwr-hold {
|
||||
rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_output_high>;
|
||||
};
|
||||
};
|
||||
|
||||
hym8563 {
|
||||
rtc_int: rtc-int {
|
||||
rockchip,pins = <0 4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
pwr_key: pwr-key {
|
||||
rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc {
|
||||
sdmmc_pwr: sdmmc-pwr {
|
||||
rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb_host {
|
||||
host_vbus_drv: host-vbus-drv {
|
||||
rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb_otg {
|
||||
otg_vbus_drv: otg-vbus-drv {
|
||||
rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcc_18>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdio0 {
|
||||
broken-cd;
|
||||
bus-width = <4>;
|
||||
disable-wp;
|
||||
non-removable;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
|
||||
vmmc-supply = <&vcc_18>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
card-detect-delay = <200>;
|
||||
disable-wp;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
|
||||
vmmc-supply = <&vccio_sd>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdt {
|
||||
status = "okay";
|
||||
};
|
||||
60
arch/arm/dts/rk3288-fennec.dts
Normal file
60
arch/arm/dts/rk3288-fennec.dts
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "rk3288-fennec.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Rockchip RK3288 Fennec Board";
|
||||
compatible = "rockchip,rk3288-fennec", "rockchip,rk3288";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
};
|
||||
|
||||
&dmc {
|
||||
rockchip,num-channels = <2>;
|
||||
rockchip,pctl-timing = <0x215 0xc8 0x0 0x35 0x26 0x2 0x70 0x2000d
|
||||
0x6 0x0 0x8 0x4 0x17 0x24 0xd 0x6
|
||||
0x4 0x8 0x4 0x76 0x4 0x0 0x30 0x0
|
||||
0x1 0x2 0x2 0x4 0x0 0x0 0xc0 0x4
|
||||
0x8 0x1f4>;
|
||||
rockchip,phy-timing = <0x48d7dd93 0x187008d8 0x121076
|
||||
0x0 0xc3 0x6 0x2>;
|
||||
/* Add a dummy value to cause of-platdata think this is bytes */
|
||||
rockchip,sdram-channel = /bits/ 8 <0x2 0xa 0x3 0x2 0x2 0x0 0xe 0xe 0xff>;
|
||||
rockchip,sdram-params = <0x20d266a4 0x5b6 2 533000000 6 9 0>;
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
u-boot,dm-pre-reloc;
|
||||
reg-shift = <2>;
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio8 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
421
arch/arm/dts/rk3288-fennec.dtsi
Normal file
421
arch/arm/dts/rk3288-fennec.dtsi
Normal file
@@ -0,0 +1,421 @@
|
||||
/*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "rk3288.dtsi"
|
||||
|
||||
/ {
|
||||
memory {
|
||||
reg = <0x0 0x80000000>;
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
ext_gmac: external-gmac-clock {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <125000000>;
|
||||
clock-output-names = "ext_gmac";
|
||||
};
|
||||
|
||||
vcc_sys: vsys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sys";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu0-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
disable-wp;
|
||||
non-removable;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
card-detect-delay = <200>;
|
||||
disable-wp;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
||||
status = "okay";
|
||||
vmmc-supply = <&vcc_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
};
|
||||
|
||||
&gmac {
|
||||
assigned-clocks = <&cru SCLK_MAC>;
|
||||
assigned-clock-parents = <&ext_gmac>;
|
||||
clock_in_out = "input";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rgmii_pins>, <&phy_rst>, <&phy_pmeb>, <&phy_int>;
|
||||
phy-supply = <&vcc_lan>;
|
||||
phy-mode = "rgmii";
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 10000 1000000>;
|
||||
snps,reset-gpio = <&gpio4 8 GPIO_ACTIVE_LOW>;
|
||||
tx_delay = <0x30>;
|
||||
rx_delay = <0x10>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
rk808: pmic@1b {
|
||||
compatible = "rockchip,rk808";
|
||||
reg = <0x1b>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <1>;
|
||||
clock-output-names = "xin32k", "rk808-clkout2";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int &global_pwroff>;
|
||||
rockchip,system-power-controller;
|
||||
wakeup-source;
|
||||
|
||||
vcc1-supply = <&vcc_sys>;
|
||||
vcc2-supply = <&vcc_sys>;
|
||||
vcc3-supply = <&vcc_sys>;
|
||||
vcc4-supply = <&vcc_sys>;
|
||||
vcc6-supply = <&vcc_sys>;
|
||||
vcc7-supply = <&vcc_sys>;
|
||||
vcc8-supply = <&vcc_io>;
|
||||
vcc9-supply = <&vcc_io>;
|
||||
vcc10-supply = <&vcc_io>;
|
||||
vcc11-supply = <&vcc_io>;
|
||||
vcc12-supply = <&vcc_io>;
|
||||
vddio-supply = <&vcc_io>;
|
||||
|
||||
regulators {
|
||||
vdd_cpu: DCDC_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_io: DCDC_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc_io";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_pmu: LDO_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vccio_pmu";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_33: LDO_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcca_33";
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_10: LDO_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-name = "vdd_10";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_wl: LDO_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_wl";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG5 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vdd10_lcd: LDO_REG6 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-name = "vdd10_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_18: LDO_REG7 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_18";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc18_lcd: LDO_REG8 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc18_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_sd: SWITCH_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_sd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_lan: SWITCH_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_lan";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
pcfg_output_high: pcfg-output-high {
|
||||
output-high;
|
||||
};
|
||||
|
||||
pcfg_output_low: pcfg-output-low {
|
||||
output-low;
|
||||
};
|
||||
|
||||
pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
||||
bias-pull-up;
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
gmac {
|
||||
phy_int: phy-int {
|
||||
rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
|
||||
phy_pmeb: phy-pmeb {
|
||||
rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
|
||||
phy_rst: phy-rst {
|
||||
rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
pmic_int: pmic-int {
|
||||
rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc {
|
||||
sdmmc_bus4: sdmmc-bus4 {
|
||||
rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||
<6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||
<6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||
<6 19 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||
};
|
||||
|
||||
sdmmc_clk: sdmmc-clk {
|
||||
rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
|
||||
};
|
||||
|
||||
sdmmc_cmd: sdmmc-cmd {
|
||||
rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||
};
|
||||
|
||||
sdmmc_pwr: sdmmc-pwr {
|
||||
rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usbphy {
|
||||
host_drv: host-drv {
|
||||
rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&host_drv>;
|
||||
vbus_drv-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_otg {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_hsic {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vpu {
|
||||
status = "okay";
|
||||
};
|
||||
61
arch/arm/dts/rk3288-miniarm.dts
Normal file
61
arch/arm/dts/rk3288-miniarm.dts
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "rk3288-miniarm.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Miniarm-RK3288";
|
||||
compatible = "rockchip,rk3288-miniarm", "rockchip,rk3288";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
};
|
||||
|
||||
&dmc {
|
||||
rockchip,num-channels = <2>;
|
||||
rockchip,pctl-timing = <0x29a 0xc8 0x1f8 0x42 0x4e 0x4 0xea 0xa
|
||||
0x5 0x0 0xa 0x7 0x19 0x24 0xa 0x7
|
||||
0x5 0xa 0x5 0x200 0x5 0x10 0x40 0x0
|
||||
0x1 0x7 0x7 0x4 0xc 0x43 0x100 0x0
|
||||
0x5 0x0>;
|
||||
rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
|
||||
0xa60 0x40 0x10 0x0>;
|
||||
/* Add a dummy value to cause of-platdata think this is bytes */
|
||||
rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf 0xff>;
|
||||
rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
|
||||
};
|
||||
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
u-boot,dm-pre-reloc;
|
||||
reg-shift = <2>;
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio8 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
533
arch/arm/dts/rk3288-miniarm.dtsi
Normal file
533
arch/arm/dts/rk3288-miniarm.dtsi
Normal file
@@ -0,0 +1,533 @@
|
||||
/*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "rk3288.dtsi"
|
||||
|
||||
/ {
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x80000000>;
|
||||
};
|
||||
|
||||
ext_gmac: external-gmac-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <125000000>;
|
||||
clock-output-names = "ext_gmac";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
autorepeat;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwrbtn>;
|
||||
|
||||
button@0 {
|
||||
gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
label = "GPIO Key Power";
|
||||
linux,input-type = <1>;
|
||||
gpio-key,wakeup = <1>;
|
||||
debounce-interval = <100>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
pwr-led {
|
||||
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
act-led {
|
||||
gpios=<&gpio2 3 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger="mmc0";
|
||||
};
|
||||
};
|
||||
|
||||
vcc_sys: vsys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sys";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
/*
|
||||
* NOTE: vcc_sd isn't hooked up on v1.0 boards where power comes from
|
||||
* vcc_io directly. Those boards won't be able to power cycle SD cards
|
||||
* but it shouldn't hurt to toggle this pin there anyway.
|
||||
*/
|
||||
vcc_sd: sdmmc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_pwr>;
|
||||
regulator-name = "vcc_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
startup-delay-us = <100000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu0-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
broken-cd;
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
disable-wp;
|
||||
non-removable;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
card-detect-delay = <200>;
|
||||
disable-wp; /* wp not hooked up */
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
||||
status = "okay";
|
||||
supports-sd;
|
||||
vmmc-supply = <&vcc_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac {
|
||||
phy-supply = <&vcc33_lan>;
|
||||
phy-mode = "rgmii";
|
||||
clock_in_out = "input";
|
||||
snps,reset-gpio = <&gpio4 7 0>;
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 10000 1000000>;
|
||||
assigned-clocks = <&cru SCLK_MAC>;
|
||||
assigned-clock-parents = <&ext_gmac>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rgmii_pins>;
|
||||
tx_delay = <0x30>;
|
||||
rx_delay = <0x10>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
ddc-i2c-bus = <&i2c5>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
rk808: pmic@1b {
|
||||
compatible = "rockchip,rk808";
|
||||
reg = <0x1b>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int &global_pwroff>;
|
||||
rockchip,system-power-controller;
|
||||
wakeup-source;
|
||||
#clock-cells = <1>;
|
||||
clock-output-names = "xin32k", "rk808-clkout2";
|
||||
|
||||
vcc1-supply = <&vcc_sys>;
|
||||
vcc2-supply = <&vcc_sys>;
|
||||
vcc3-supply = <&vcc_sys>;
|
||||
vcc4-supply = <&vcc_sys>;
|
||||
vcc6-supply = <&vcc_sys>;
|
||||
vcc7-supply = <&vcc_sys>;
|
||||
vcc8-supply = <&vcc_18>;
|
||||
vcc9-supply = <&vcc_io>;
|
||||
vcc10-supply = <&vcc_io>;
|
||||
vcc11-supply = <&vcc_sys>;
|
||||
vcc12-supply = <&vcc_io>;
|
||||
vddio-supply = <&vcc18_ldo1>;
|
||||
|
||||
regulators {
|
||||
vdd_cpu: DCDC_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_io: DCDC_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc_io";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc18_ldo1: LDO_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc18_ldo1";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc33_mipi: LDO_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc33_mipi";
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_10: LDO_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-name = "vdd_10";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc18_codec: LDO_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc18_codec";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG5 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vdd10_lcd: LDO_REG6 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-name = "vdd10_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_18: LDO_REG7 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_18";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc18_lcd: LDO_REG8 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc18_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc33_sd: SWITCH_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc33_sd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc33_lan: SWITCH_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc33_lan";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
headset: nau8825@1a {
|
||||
compatible = "nuvoton,nau8825";
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x1a>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
||||
nuvoton,jkdet-enable = <1>;
|
||||
nuvoton,jkdet-pull-enable = <1>;
|
||||
nuvoton,jkdet-pull-up = <0>;
|
||||
nuvoton,jkdet-polarity = <1>;
|
||||
nuvoton,vref-impedance = <2>;
|
||||
nuvoton,micbias-voltage = <6>;
|
||||
nuvoton,sar-threshold-num = <4>;
|
||||
nuvoton,sar-threshold = <0xa 0x14 0x26 0x73>;
|
||||
nuvoton,sar-hysteresis = <0>;
|
||||
nuvoton,sar-voltage = <6>;
|
||||
nuvoton,sar-compare-time = <0>;
|
||||
nuvoton,sar-sampling-time = <0>;
|
||||
nuvoton,short-key-debounce = <3>;
|
||||
nuvoton,jack-insert-debounce = <7>;
|
||||
nuvoton,jack-eject-debounce = <7>;
|
||||
clock-names = "mclk";
|
||||
clocks = <&cru SCLK_I2S0_OUT>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdt {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcc18_ldo1>;
|
||||
status ="okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
|
||||
rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_otg {
|
||||
status= "okay";
|
||||
};
|
||||
|
||||
&vopb {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
||||
bias-pull-up;
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
backlight {
|
||||
bl_en: bl-en {
|
||||
rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
buttons {
|
||||
pwrbtn: pwrbtn {
|
||||
rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
eth_phy {
|
||||
eth_phy_pwr: eth-phy-pwr {
|
||||
rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
pmic_int: pmic-int {
|
||||
rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc {
|
||||
/*
|
||||
* Default drive strength isn't enough to achieve even
|
||||
* high-speed mode on EVB board so bump up to 8ma.
|
||||
*/
|
||||
sdmmc_bus4: sdmmc-bus4 {
|
||||
rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||
<6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||
<6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||
<6 19 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||
};
|
||||
|
||||
sdmmc_clk: sdmmc-clk {
|
||||
rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
|
||||
};
|
||||
|
||||
sdmmc_cmd: sdmmc-cmd {
|
||||
rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||
};
|
||||
|
||||
sdmmc_pwr: sdmmc-pwr {
|
||||
rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
host_vbus_drv: host-vbus-drv {
|
||||
rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
pwr_3g: pwr-3g {
|
||||
rockchip,pins = <7 8 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
61
arch/arm/dts/rk3288-popmetal.dts
Normal file
61
arch/arm/dts/rk3288-popmetal.dts
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+ X11
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "rk3288-popmetal.dtsi"
|
||||
|
||||
/ {
|
||||
model = "PopMetal-RK3288";
|
||||
compatible = "chipspark,popmetal-rk3288", "rockchip,rk3288";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
};
|
||||
|
||||
&dmc {
|
||||
rockchip,num-channels = <2>;
|
||||
rockchip,pctl-timing = <0x29a 0xc8 0x1f8 0x42 0x4e 0x4 0xea 0xa
|
||||
0x5 0x0 0xa 0x7 0x19 0x24 0xa 0x7
|
||||
0x5 0xa 0x5 0x200 0x5 0x10 0x40 0x0
|
||||
0x1 0x7 0x7 0x4 0xc 0x43 0x100 0x0
|
||||
0x5 0x0>;
|
||||
rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
|
||||
0xa60 0x40 0x10 0x0>;
|
||||
/* Add a dummy value to cause of-platdata think this is bytes */
|
||||
rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf 0xff>;
|
||||
rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
|
||||
};
|
||||
|
||||
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
u-boot,dm-pre-reloc;
|
||||
reg-shift = <2>;
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&gpio8 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
520
arch/arm/dts/rk3288-popmetal.dtsi
Normal file
520
arch/arm/dts/rk3288-popmetal.dtsi
Normal file
@@ -0,0 +1,520 @@
|
||||
/*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "rk3288.dtsi"
|
||||
|
||||
/ {
|
||||
memory{
|
||||
device_type = "memory";
|
||||
reg = <0 0x80000000>;
|
||||
};
|
||||
|
||||
ext_gmac: external-gmac-clock {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <125000000>;
|
||||
clock-output-names = "ext_gmac";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
autorepeat;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwrbtn>;
|
||||
|
||||
power {
|
||||
gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
label = "GPIO Key Power";
|
||||
linux,input-type = <1>;
|
||||
wakeup-source;
|
||||
debounce-interval = <100>;
|
||||
};
|
||||
};
|
||||
|
||||
io_domains: io-domains {
|
||||
compatible = "rockchip,rk3288-io-voltage-domain";
|
||||
rockchip,grf = <&grf>;
|
||||
|
||||
audio-supply = <&vcca_33>;
|
||||
bb-supply = <&vcc_io>;
|
||||
dvp-supply = <&vcc18_dvp>;
|
||||
flash0-supply = <&vcc_flash>;
|
||||
flash1-supply = <&vcc_lan>;
|
||||
gpio30-supply = <&vcc_io>;
|
||||
gpio1830-supply = <&vcc_io>;
|
||||
lcdc-supply = <&vcc_io>;
|
||||
sdcard-supply = <&vccio_sd>;
|
||||
wifi-supply = <&vccio_wl>;
|
||||
};
|
||||
|
||||
ir: ir-receiver {
|
||||
compatible = "gpio-ir-receiver";
|
||||
gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ir_int>;
|
||||
};
|
||||
|
||||
vcc_flash: flash-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_flash";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
|
||||
vcc_sd: sdmmc-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_pwr>;
|
||||
regulator-name = "vcc_sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
startup-delay-us = <100000>;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
|
||||
vcc_sys: vsys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_sys";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
/*
|
||||
* A PT5128 creates both dovdd_1v8 and vcc28_dvp, controlled
|
||||
* by the dvp_pwr pin.
|
||||
*/
|
||||
vcc18_dvp: vcc18-dvp-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc18-dvp";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&vcc28_dvp>;
|
||||
};
|
||||
|
||||
vcc28_dvp: vcc28-dvp-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 17 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dvp_pwr>;
|
||||
regulator-name = "vcc28_dvp";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
regulator-always-on;
|
||||
vin-supply = <&vcc_io>;
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu0-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&emmc {
|
||||
bus-width = <8>;
|
||||
cap-mmc-highspeed;
|
||||
disable-wp;
|
||||
non-removable;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
|
||||
vmmc-supply = <&vcc_io>;
|
||||
vqmmc-supply = <&vcc_flash>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
card-detect-delay = <200>;
|
||||
disable-wp;
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
||||
vmmc-supply = <&vcc_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac {
|
||||
phy-supply = <&vcc_lan>;
|
||||
phy-mode = "rgmii";
|
||||
clock_in_out = "input";
|
||||
snps,reset-gpio = <&gpio4 7 0>;
|
||||
snps,reset-active-low;
|
||||
snps,reset-delays-us = <0 10000 1000000>;
|
||||
assigned-clocks = <&cru SCLK_MAC>;
|
||||
assigned-clock-parents = <&ext_gmac>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&rgmii_pins>;
|
||||
tx_delay = <0x30>;
|
||||
rx_delay = <0x10>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
ddc-i2c-bus = <&i2c5>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
rk808: pmic@1b {
|
||||
compatible = "rockchip,rk808";
|
||||
reg = <0x1b>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int &global_pwroff>;
|
||||
rockchip,system-power-controller;
|
||||
wakeup-source;
|
||||
#clock-cells = <1>;
|
||||
clock-output-names = "xin32k", "rk808-clkout2";
|
||||
|
||||
vcc1-supply = <&vcc_sys>;
|
||||
vcc2-supply = <&vcc_sys>;
|
||||
vcc3-supply = <&vcc_sys>;
|
||||
vcc4-supply = <&vcc_sys>;
|
||||
vcc6-supply = <&vcc_sys>;
|
||||
vcc7-supply = <&vcc_sys>;
|
||||
vcc8-supply = <&vcc_18>;
|
||||
vcc9-supply = <&vcc_io>;
|
||||
vcc10-supply = <&vcc_io>;
|
||||
vcc11-supply = <&vcc_sys>;
|
||||
vcc12-supply = <&vcc_io>;
|
||||
vddio-supply = <&vcc_io>;
|
||||
|
||||
regulators {
|
||||
vdd_cpu: DCDC_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_io: DCDC_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc_io";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_lan: LDO_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcc_lan";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_10: LDO_REG3 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-name = "vdd_10";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc18_lcd: LDO_REG4 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc18_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
ldo5: LDO_REG5 {
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "ldo5";
|
||||
};
|
||||
|
||||
vdd10_lcd: LDO_REG6 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-name = "vdd10_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_18: LDO_REG7 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-name = "vcc_18";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_33: LDO_REG8 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-name = "vcca_33";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_wl: SWITCH_REG1 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vccio_wl";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_lcd: SWITCH_REG2 {
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-name = "vcc_lcd";
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
ak8963: ak8963@0d {
|
||||
compatible = "asahi-kasei,ak8975";
|
||||
reg = <0x0d>;
|
||||
interrupt-parent = <&gpio8>;
|
||||
interrupts = <1 IRQ_TYPE_EDGE_RISING>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&comp_int>;
|
||||
};
|
||||
|
||||
l3g4200d: l3g4200d@68 {
|
||||
compatible = "st,l3g4200d-gyro";
|
||||
st,drdy-int-pin = <2>;
|
||||
reg = <0x6b>;
|
||||
};
|
||||
|
||||
mma8452: mma8452@1d {
|
||||
compatible = "fsl,mma8452";
|
||||
reg = <0x1d>;
|
||||
interrupt-parent = <&gpio8>;
|
||||
interrupts = <0 IRQ_TYPE_EDGE_RISING>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gsensor_int>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c5 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
ak8963 {
|
||||
comp_int: comp-int {
|
||||
rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
buttons {
|
||||
pwrbtn: pwrbtn {
|
||||
rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
dvp {
|
||||
dvp_pwr: dvp-pwr {
|
||||
rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
ir {
|
||||
ir_int: ir-int {
|
||||
rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
mma8452 {
|
||||
gsensor_int: gsensor-int {
|
||||
rockchip,pins = <8 0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
pmic_int: pmic-int {
|
||||
rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc {
|
||||
sdmmc_pwr: sdmmc-pwr {
|
||||
rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <0>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopb_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vopl_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -192,7 +192,7 @@
|
||||
0x5 0x0>;
|
||||
rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
|
||||
0xa60 0x40 0x10 0x0>;
|
||||
rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf>;
|
||||
rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf 0xff>;
|
||||
rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
|
||||
};
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
0x5 0x0>;
|
||||
rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
|
||||
0xa60 0x40 0x10 0x0>;
|
||||
rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf>;
|
||||
rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf 0xff>;
|
||||
rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
|
||||
};
|
||||
|
||||
|
||||
@@ -454,6 +454,7 @@
|
||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru HCLK_OTG0>;
|
||||
clock-names = "otg";
|
||||
dr_mode = "otg";
|
||||
phys = <&usbphy0>;
|
||||
phy-names = "usb2-phy";
|
||||
status = "disabled";
|
||||
|
||||
108
arch/arm/dts/rk3399-evb.dts
Normal file
108
arch/arm/dts/rk3399-evb.dts
Normal file
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/pwm/pwm.h>
|
||||
#include "rk3399.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Rockchip RK3399 Evaluation Board";
|
||||
compatible = "rockchip,rk3399-evb", "rockchip,rk3399",
|
||||
"google,rk3399evb-rev2";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
|
||||
vdd_center: vdd-center {
|
||||
compatible = "pwm-regulator";
|
||||
pwms = <&pwm3 0 25000 0>;
|
||||
regulator-name = "vdd_center";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
vcc_phy: vcc-phy-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_phy";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
|
||||
&emmc_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
bus-width = <8>;
|
||||
mmc-hs400-1_8v;
|
||||
mmc-hs400-enhanced-strobe;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
pmic {
|
||||
pmic_int_l: pmic-int-l {
|
||||
rockchip,pins =
|
||||
<1 21 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
|
||||
pmic_dvs2: pmic-dvs2 {
|
||||
rockchip,pins =
|
||||
<1 18 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
};
|
||||
};
|
||||
};
|
||||
1028
arch/arm/dts/rk3399.dtsi
Normal file
1028
arch/arm/dts/rk3399.dtsi
Normal file
File diff suppressed because it is too large
Load Diff
880
arch/arm/dts/sama5d2-pinfunc.h
Normal file
880
arch/arm/dts/sama5d2-pinfunc.h
Normal file
@@ -0,0 +1,880 @@
|
||||
#define PINMUX_PIN(no, func, ioset) \
|
||||
(((no) & 0xffff) | (((func) & 0xf) << 16) | (((ioset) & 0xff) << 20))
|
||||
|
||||
#define PIN_PA0 0
|
||||
#define PIN_PA0__GPIO PINMUX_PIN(PIN_PA0, 0, 0)
|
||||
#define PIN_PA0__SDMMC0_CK PINMUX_PIN(PIN_PA0, 1, 1)
|
||||
#define PIN_PA0__QSPI0_SCK PINMUX_PIN(PIN_PA0, 2, 1)
|
||||
#define PIN_PA0__D0 PINMUX_PIN(PIN_PA0, 6, 2)
|
||||
#define PIN_PA1 1
|
||||
#define PIN_PA1__GPIO PINMUX_PIN(PIN_PA1, 0, 0)
|
||||
#define PIN_PA1__SDMMC0_CMD PINMUX_PIN(PIN_PA1, 1, 1)
|
||||
#define PIN_PA1__QSPI0_CS PINMUX_PIN(PIN_PA1, 2, 1)
|
||||
#define PIN_PA1__D1 PINMUX_PIN(PIN_PA1, 6, 2)
|
||||
#define PIN_PA2 2
|
||||
#define PIN_PA2__GPIO PINMUX_PIN(PIN_PA2, 0, 0)
|
||||
#define PIN_PA2__SDMMC0_DAT0 PINMUX_PIN(PIN_PA2, 1, 1)
|
||||
#define PIN_PA2__QSPI0_IO0 PINMUX_PIN(PIN_PA2, 2, 1)
|
||||
#define PIN_PA2__D2 PINMUX_PIN(PIN_PA2, 6, 2)
|
||||
#define PIN_PA3 3
|
||||
#define PIN_PA3__GPIO PINMUX_PIN(PIN_PA3, 0, 0)
|
||||
#define PIN_PA3__SDMMC0_DAT1 PINMUX_PIN(PIN_PA3, 1, 1)
|
||||
#define PIN_PA3__QSPI0_IO1 PINMUX_PIN(PIN_PA3, 2, 1)
|
||||
#define PIN_PA3__D3 PINMUX_PIN(PIN_PA3, 6, 2)
|
||||
#define PIN_PA4 4
|
||||
#define PIN_PA4__GPIO PINMUX_PIN(PIN_PA4, 0, 0)
|
||||
#define PIN_PA4__SDMMC0_DAT2 PINMUX_PIN(PIN_PA4, 1, 1)
|
||||
#define PIN_PA4__QSPI0_IO2 PINMUX_PIN(PIN_PA4, 2, 1)
|
||||
#define PIN_PA4__D4 PINMUX_PIN(PIN_PA4, 6, 2)
|
||||
#define PIN_PA5 5
|
||||
#define PIN_PA5__GPIO PINMUX_PIN(PIN_PA5, 0, 0)
|
||||
#define PIN_PA5__SDMMC0_DAT3 PINMUX_PIN(PIN_PA5, 1, 1)
|
||||
#define PIN_PA5__QSPI0_IO3 PINMUX_PIN(PIN_PA5, 2, 1)
|
||||
#define PIN_PA5__D5 PINMUX_PIN(PIN_PA5, 6, 2)
|
||||
#define PIN_PA6 6
|
||||
#define PIN_PA6__GPIO PINMUX_PIN(PIN_PA6, 0, 0)
|
||||
#define PIN_PA6__SDMMC0_DAT4 PINMUX_PIN(PIN_PA6, 1, 1)
|
||||
#define PIN_PA6__QSPI1_SCK PINMUX_PIN(PIN_PA6, 2, 1)
|
||||
#define PIN_PA6__TIOA5 PINMUX_PIN(PIN_PA6, 4, 1)
|
||||
#define PIN_PA6__FLEXCOM2_IO0 PINMUX_PIN(PIN_PA6, 5, 1)
|
||||
#define PIN_PA6__D6 PINMUX_PIN(PIN_PA6, 6, 2)
|
||||
#define PIN_PA7 7
|
||||
#define PIN_PA7__GPIO PINMUX_PIN(PIN_PA7, 0, 0)
|
||||
#define PIN_PA7__SDMMC0_DAT5 PINMUX_PIN(PIN_PA7, 1, 1)
|
||||
#define PIN_PA7__QSPI1_IO0 PINMUX_PIN(PIN_PA7, 2, 1)
|
||||
#define PIN_PA7__TIOB5 PINMUX_PIN(PIN_PA7, 4, 1)
|
||||
#define PIN_PA7__FLEXCOM2_IO1 PINMUX_PIN(PIN_PA7, 5, 1)
|
||||
#define PIN_PA7__D7 PINMUX_PIN(PIN_PA7, 6, 2)
|
||||
#define PIN_PA8 8
|
||||
#define PIN_PA8__GPIO PINMUX_PIN(PIN_PA8, 0, 0)
|
||||
#define PIN_PA8__SDMMC0_DAT6 PINMUX_PIN(PIN_PA8, 1, 1)
|
||||
#define PIN_PA8__QSPI1_IO1 PINMUX_PIN(PIN_PA8, 2, 1)
|
||||
#define PIN_PA8__TCLK5 PINMUX_PIN(PIN_PA8, 4, 1)
|
||||
#define PIN_PA8__FLEXCOM2_IO2 PINMUX_PIN(PIN_PA8, 5, 1)
|
||||
#define PIN_PA8__NWE_NANDWE PINMUX_PIN(PIN_PA8, 6, 2)
|
||||
#define PIN_PA9 9
|
||||
#define PIN_PA9__GPIO PINMUX_PIN(PIN_PA9, 0, 0)
|
||||
#define PIN_PA9__SDMMC0_DAT7 PINMUX_PIN(PIN_PA9, 1, 1)
|
||||
#define PIN_PA9__QSPI1_IO2 PINMUX_PIN(PIN_PA9, 2, 1)
|
||||
#define PIN_PA9__TIOA4 PINMUX_PIN(PIN_PA9, 4, 1)
|
||||
#define PIN_PA9__FLEXCOM2_IO3 PINMUX_PIN(PIN_PA9, 5, 1)
|
||||
#define PIN_PA9__NCS3 PINMUX_PIN(PIN_PA9, 6, 2)
|
||||
#define PIN_PA10 10
|
||||
#define PIN_PA10__GPIO PINMUX_PIN(PIN_PA10, 0, 0)
|
||||
#define PIN_PA10__SDMMC0_RSTN PINMUX_PIN(PIN_PA10, 1, 1)
|
||||
#define PIN_PA10__QSPI1_IO3 PINMUX_PIN(PIN_PA10, 2, 1)
|
||||
#define PIN_PA10__TIOB4 PINMUX_PIN(PIN_PA10, 4, 1)
|
||||
#define PIN_PA10__FLEXCOM2_IO4 PINMUX_PIN(PIN_PA10, 5, 1)
|
||||
#define PIN_PA10__A21_NANDALE PINMUX_PIN(PIN_PA10, 6, 2)
|
||||
#define PIN_PA11 11
|
||||
#define PIN_PA11__GPIO PINMUX_PIN(PIN_PA11, 0, 0)
|
||||
#define PIN_PA11__SDMMC0_VDDSEL PINMUX_PIN(PIN_PA11, 1, 1)
|
||||
#define PIN_PA11__QSPI1_CS PINMUX_PIN(PIN_PA11, 2, 1)
|
||||
#define PIN_PA11__TCLK4 PINMUX_PIN(PIN_PA11, 4, 1)
|
||||
#define PIN_PA11__A22_NANDCLE PINMUX_PIN(PIN_PA11, 6, 2)
|
||||
#define PIN_PA12 12
|
||||
#define PIN_PA12__GPIO PINMUX_PIN(PIN_PA12, 0, 0)
|
||||
#define PIN_PA12__SDMMC0_WP PINMUX_PIN(PIN_PA12, 1, 1)
|
||||
#define PIN_PA12__IRQ PINMUX_PIN(PIN_PA12, 2, 1)
|
||||
#define PIN_PA12__NRD_NANDOE PINMUX_PIN(PIN_PA12, 6, 2)
|
||||
#define PIN_PA13 13
|
||||
#define PIN_PA13__GPIO PINMUX_PIN(PIN_PA13, 0, 0)
|
||||
#define PIN_PA13__SDMMC0_CD PINMUX_PIN(PIN_PA13, 1, 1)
|
||||
#define PIN_PA13__FLEXCOM3_IO1 PINMUX_PIN(PIN_PA13, 5, 1)
|
||||
#define PIN_PA13__D8 PINMUX_PIN(PIN_PA13, 6, 2)
|
||||
#define PIN_PA14 14
|
||||
#define PIN_PA14__GPIO PINMUX_PIN(PIN_PA14, 0, 0)
|
||||
#define PIN_PA14__SPI0_SPCK PINMUX_PIN(PIN_PA14, 1, 1)
|
||||
#define PIN_PA14__TK1 PINMUX_PIN(PIN_PA14, 2, 1)
|
||||
#define PIN_PA14__QSPI0_SCK PINMUX_PIN(PIN_PA14, 3, 2)
|
||||
#define PIN_PA14__I2SC1_MCK PINMUX_PIN(PIN_PA14, 4, 2)
|
||||
#define PIN_PA14__FLEXCOM3_IO2 PINMUX_PIN(PIN_PA14, 5, 1)
|
||||
#define PIN_PA14__D9 PINMUX_PIN(PIN_PA14, 6, 2)
|
||||
#define PIN_PA15 15
|
||||
#define PIN_PA15__GPIO PINMUX_PIN(PIN_PA15, 0, 0)
|
||||
#define PIN_PA15__SPI0_MOSI PINMUX_PIN(PIN_PA15, 1, 1)
|
||||
#define PIN_PA15__TF1 PINMUX_PIN(PIN_PA15, 2, 1)
|
||||
#define PIN_PA15__QSPI0_CS PINMUX_PIN(PIN_PA15, 3, 2)
|
||||
#define PIN_PA15__I2SC1_CK PINMUX_PIN(PIN_PA15, 4, 2)
|
||||
#define PIN_PA15__FLEXCOM3_IO0 PINMUX_PIN(PIN_PA15, 5, 1)
|
||||
#define PIN_PA15__D10 PINMUX_PIN(PIN_PA15, 6, 2)
|
||||
#define PIN_PA16 16
|
||||
#define PIN_PA16__GPIO PINMUX_PIN(PIN_PA16, 0, 0)
|
||||
#define PIN_PA16__SPI0_MISO PINMUX_PIN(PIN_PA16, 1, 1)
|
||||
#define PIN_PA16__TD1 PINMUX_PIN(PIN_PA16, 2, 1)
|
||||
#define PIN_PA16__QSPI0_IO0 PINMUX_PIN(PIN_PA16, 3, 2)
|
||||
#define PIN_PA16__I2SC1_WS PINMUX_PIN(PIN_PA16, 4, 2)
|
||||
#define PIN_PA16__FLEXCOM3_IO3 PINMUX_PIN(PIN_PA16, 5, 1)
|
||||
#define PIN_PA16__D11 PINMUX_PIN(PIN_PA16, 6, 2)
|
||||
#define PIN_PA17 17
|
||||
#define PIN_PA17__GPIO PINMUX_PIN(PIN_PA17, 0, 0)
|
||||
#define PIN_PA17__SPI0_NPCS0 PINMUX_PIN(PIN_PA17, 1, 1)
|
||||
#define PIN_PA17__RD1 PINMUX_PIN(PIN_PA17, 2, 1)
|
||||
#define PIN_PA17__QSPI0_IO1 PINMUX_PIN(PIN_PA17, 3, 2)
|
||||
#define PIN_PA17__I2SC1_DI0 PINMUX_PIN(PIN_PA17, 4, 2)
|
||||
#define PIN_PA17__FLEXCOM3_IO4 PINMUX_PIN(PIN_PA17, 5, 1)
|
||||
#define PIN_PA17__D12 PINMUX_PIN(PIN_PA17, 6, 2)
|
||||
#define PIN_PA18 18
|
||||
#define PIN_PA18__GPIO PINMUX_PIN(PIN_PA18, 0, 0)
|
||||
#define PIN_PA18__SPI0_NPCS1 PINMUX_PIN(PIN_PA18, 1, 1)
|
||||
#define PIN_PA18__RK1 PINMUX_PIN(PIN_PA18, 2, 1)
|
||||
#define PIN_PA18__QSPI0_IO2 PINMUX_PIN(PIN_PA18, 3, 2)
|
||||
#define PIN_PA18__I2SC1_DO0 PINMUX_PIN(PIN_PA18, 4, 2)
|
||||
#define PIN_PA18__SDMMC1_DAT0 PINMUX_PIN(PIN_PA18, 5, 1)
|
||||
#define PIN_PA18__D13 PINMUX_PIN(PIN_PA18, 6, 2)
|
||||
#define PIN_PA19 19
|
||||
#define PIN_PA19__GPIO PINMUX_PIN(PIN_PA19, 0, 0)
|
||||
#define PIN_PA19__SPI0_NPCS2 PINMUX_PIN(PIN_PA19, 1, 1)
|
||||
#define PIN_PA19__RF1 PINMUX_PIN(PIN_PA19, 2, 1)
|
||||
#define PIN_PA19__QSPI0_IO3 PINMUX_PIN(PIN_PA19, 3, 2)
|
||||
#define PIN_PA19__TIOA0 PINMUX_PIN(PIN_PA19, 4, 1)
|
||||
#define PIN_PA19__SDMMC1_DAT1 PINMUX_PIN(PIN_PA19, 5, 1)
|
||||
#define PIN_PA19__D14 PINMUX_PIN(PIN_PA19, 6, 2)
|
||||
#define PIN_PA20 20
|
||||
#define PIN_PA20__GPIO PINMUX_PIN(PIN_PA20, 0, 0)
|
||||
#define PIN_PA20__SPI0_NPCS3 PINMUX_PIN(PIN_PA20, 1, 1)
|
||||
#define PIN_PA20__TIOB0 PINMUX_PIN(PIN_PA20, 4, 1)
|
||||
#define PIN_PA20__SDMMC1_DAT2 PINMUX_PIN(PIN_PA20, 5, 1)
|
||||
#define PIN_PA20__D15 PINMUX_PIN(PIN_PA20, 6, 2)
|
||||
#define PIN_PA21 21
|
||||
#define PIN_PA21__GPIO PINMUX_PIN(PIN_PA21, 0, 0)
|
||||
#define PIN_PA21__IRQ PINMUX_PIN(PIN_PA21, 1, 2)
|
||||
#define PIN_PA21__PCK2 PINMUX_PIN(PIN_PA21, 2, 3)
|
||||
#define PIN_PA21__TCLK0 PINMUX_PIN(PIN_PA21, 4, 1)
|
||||
#define PIN_PA21__SDMMC1_DAT3 PINMUX_PIN(PIN_PA21, 5, 1)
|
||||
#define PIN_PA21__NANDRDY PINMUX_PIN(PIN_PA21, 6, 2)
|
||||
#define PIN_PA22 22
|
||||
#define PIN_PA22__GPIO PINMUX_PIN(PIN_PA22, 0, 0)
|
||||
#define PIN_PA22__FLEXCOM1_IO2 PINMUX_PIN(PIN_PA22, 1, 1)
|
||||
#define PIN_PA22__D0 PINMUX_PIN(PIN_PA22, 2, 1)
|
||||
#define PIN_PA22__TCK PINMUX_PIN(PIN_PA22, 3, 4)
|
||||
#define PIN_PA22__SPI1_SPCK PINMUX_PIN(PIN_PA22, 4, 2)
|
||||
#define PIN_PA22__SDMMC1_CK PINMUX_PIN(PIN_PA22, 5, 1)
|
||||
#define PIN_PA22__QSPI0_SCK PINMUX_PIN(PIN_PA22, 6, 3)
|
||||
#define PIN_PA23 23
|
||||
#define PIN_PA23__GPIO PINMUX_PIN(PIN_PA23, 0, 0)
|
||||
#define PIN_PA23__FLEXCOM1_IO1 PINMUX_PIN(PIN_PA23, 1, 1)
|
||||
#define PIN_PA23__D1 PINMUX_PIN(PIN_PA23, 2, 1)
|
||||
#define PIN_PA23__TDI PINMUX_PIN(PIN_PA23, 3, 4)
|
||||
#define PIN_PA23__SPI1_MOSI PINMUX_PIN(PIN_PA23, 4, 2)
|
||||
#define PIN_PA23__QSPI0_CS PINMUX_PIN(PIN_PA23, 6, 3)
|
||||
#define PIN_PA24 24
|
||||
#define PIN_PA24__GPIO PINMUX_PIN(PIN_PA24, 0, 0)
|
||||
#define PIN_PA24__FLEXCOM1_IO0 PINMUX_PIN(PIN_PA24, 1, 1)
|
||||
#define PIN_PA24__D2 PINMUX_PIN(PIN_PA24, 2, 1)
|
||||
#define PIN_PA24__TDO PINMUX_PIN(PIN_PA24, 3, 4)
|
||||
#define PIN_PA24__SPI1_MISO PINMUX_PIN(PIN_PA24, 4, 2)
|
||||
#define PIN_PA24__QSPI0_IO0 PINMUX_PIN(PIN_PA24, 6, 3)
|
||||
#define PIN_PA25 25
|
||||
#define PIN_PA25__GPIO PINMUX_PIN(PIN_PA25, 0, 0)
|
||||
#define PIN_PA25__FLEXCOM1_IO3 PINMUX_PIN(PIN_PA25, 1, 1)
|
||||
#define PIN_PA25__D3 PINMUX_PIN(PIN_PA25, 2, 1)
|
||||
#define PIN_PA25__TMS PINMUX_PIN(PIN_PA25, 3, 4)
|
||||
#define PIN_PA25__SPI1_NPCS0 PINMUX_PIN(PIN_PA25, 4, 2)
|
||||
#define PIN_PA25__QSPI0_IO1 PINMUX_PIN(PIN_PA25, 6, 3)
|
||||
#define PIN_PA26 26
|
||||
#define PIN_PA26__GPIO PINMUX_PIN(PIN_PA26, 0, 0)
|
||||
#define PIN_PA26__FLEXCOM1_IO4 PINMUX_PIN(PIN_PA26, 1, 1)
|
||||
#define PIN_PA26__D4 PINMUX_PIN(PIN_PA26, 2, 1)
|
||||
#define PIN_PA26__NTRST PINMUX_PIN(PIN_PA26, 3, 4)
|
||||
#define PIN_PA26__SPI1_NPCS1 PINMUX_PIN(PIN_PA26, 4, 2)
|
||||
#define PIN_PA26__QSPI0_IO2 PINMUX_PIN(PIN_PA26, 6, 3)
|
||||
#define PIN_PA27 27
|
||||
#define PIN_PA27__GPIO PINMUX_PIN(PIN_PA27, 0, 0)
|
||||
#define PIN_PA27__TIOA1 PINMUX_PIN(PIN_PA27, 1, 2)
|
||||
#define PIN_PA27__D5 PINMUX_PIN(PIN_PA27, 2, 1)
|
||||
#define PIN_PA27__SPI0_NPCS2 PINMUX_PIN(PIN_PA27, 3, 2)
|
||||
#define PIN_PA27__SPI1_NPCS2 PINMUX_PIN(PIN_PA27, 4, 2)
|
||||
#define PIN_PA27__SDMMC1_RSTN PINMUX_PIN(PIN_PA27, 5, 1)
|
||||
#define PIN_PA27__QSPI0_IO3 PINMUX_PIN(PIN_PA27, 6, 3)
|
||||
#define PIN_PA28 28
|
||||
#define PIN_PA28__GPIO PINMUX_PIN(PIN_PA28, 0, 0)
|
||||
#define PIN_PA28__TIOB1 PINMUX_PIN(PIN_PA28, 1, 2)
|
||||
#define PIN_PA28__D6 PINMUX_PIN(PIN_PA28, 2, 1)
|
||||
#define PIN_PA28__SPI0_NPCS3 PINMUX_PIN(PIN_PA28, 3, 2)
|
||||
#define PIN_PA28__SPI1_NPCS3 PINMUX_PIN(PIN_PA28, 4, 2)
|
||||
#define PIN_PA28__SDMMC1_CMD PINMUX_PIN(PIN_PA28, 5, 1)
|
||||
#define PIN_PA28__CLASSD_L0 PINMUX_PIN(PIN_PA28, 6, 1)
|
||||
#define PIN_PA29 29
|
||||
#define PIN_PA29__GPIO PINMUX_PIN(PIN_PA29, 0, 0)
|
||||
#define PIN_PA29__TCLK1 PINMUX_PIN(PIN_PA29, 1, 2)
|
||||
#define PIN_PA29__D7 PINMUX_PIN(PIN_PA29, 2, 1)
|
||||
#define PIN_PA29__SPI0_NPCS1 PINMUX_PIN(PIN_PA29, 3, 2)
|
||||
#define PIN_PA29__SDMMC1_WP PINMUX_PIN(PIN_PA29, 5, 1)
|
||||
#define PIN_PA29__CLASSD_L1 PINMUX_PIN(PIN_PA29, 6, 1)
|
||||
#define PIN_PA30 30
|
||||
#define PIN_PA30__GPIO PINMUX_PIN(PIN_PA30, 0, 0)
|
||||
#define PIN_PA30__NWE_NANDWE PINMUX_PIN(PIN_PA30, 2, 1)
|
||||
#define PIN_PA30__SPI0_NPCS0 PINMUX_PIN(PIN_PA30, 3, 2)
|
||||
#define PIN_PA30__PWMH0 PINMUX_PIN(PIN_PA30, 4, 1)
|
||||
#define PIN_PA30__SDMMC1_CD PINMUX_PIN(PIN_PA30, 5, 1)
|
||||
#define PIN_PA30__CLASSD_L2 PINMUX_PIN(PIN_PA30, 6, 1)
|
||||
#define PIN_PA31 31
|
||||
#define PIN_PA31__GPIO PINMUX_PIN(PIN_PA31, 0, 0)
|
||||
#define PIN_PA31__NCS3 PINMUX_PIN(PIN_PA31, 2, 1)
|
||||
#define PIN_PA31__SPI0_MISO PINMUX_PIN(PIN_PA31, 3, 2)
|
||||
#define PIN_PA31__PWML0 PINMUX_PIN(PIN_PA31, 4, 1)
|
||||
#define PIN_PA31__CLASSD_L3 PINMUX_PIN(PIN_PA31, 6, 1)
|
||||
#define PIN_PB0 32
|
||||
#define PIN_PB0__GPIO PINMUX_PIN(PIN_PB0, 0, 0)
|
||||
#define PIN_PB0__A21_NANDALE PINMUX_PIN(PIN_PB0, 2, 1)
|
||||
#define PIN_PB0__SPI0_MOSI PINMUX_PIN(PIN_PB0, 3, 2)
|
||||
#define PIN_PB0__PWMH1 PINMUX_PIN(PIN_PB0, 4, 1)
|
||||
#define PIN_PB1 33
|
||||
#define PIN_PB1__GPIO PINMUX_PIN(PIN_PB1, 0, 0)
|
||||
#define PIN_PB1__A22_NANDCLE PINMUX_PIN(PIN_PB1, 2, 1)
|
||||
#define PIN_PB1__SPI0_SPCK PINMUX_PIN(PIN_PB1, 3, 2)
|
||||
#define PIN_PB1__PWML1 PINMUX_PIN(PIN_PB1, 4, 1)
|
||||
#define PIN_PB1__CLASSD_R0 PINMUX_PIN(PIN_PB1, 6, 1)
|
||||
#define PIN_PB2 34
|
||||
#define PIN_PB2__GPIO PINMUX_PIN(PIN_PB2, 0, 0)
|
||||
#define PIN_PB2__NRD_NANDOE PINMUX_PIN(PIN_PB2, 2, 1)
|
||||
#define PIN_PB2__PWMFI0 PINMUX_PIN(PIN_PB2, 4, 1)
|
||||
#define PIN_PB2__CLASSD_R1 PINMUX_PIN(PIN_PB2, 6, 1)
|
||||
#define PIN_PB3 35
|
||||
#define PIN_PB3__GPIO PINMUX_PIN(PIN_PB3, 0, 0)
|
||||
#define PIN_PB3__URXD4 PINMUX_PIN(PIN_PB3, 1, 1)
|
||||
#define PIN_PB3__D8 PINMUX_PIN(PIN_PB3, 2, 1)
|
||||
#define PIN_PB3__IRQ PINMUX_PIN(PIN_PB3, 3, 3)
|
||||
#define PIN_PB3__PWMEXTRG0 PINMUX_PIN(PIN_PB3, 4, 1)
|
||||
#define PIN_PB3__CLASSD_R2 PINMUX_PIN(PIN_PB3, 6, 1)
|
||||
#define PIN_PB4 36
|
||||
#define PIN_PB4__GPIO PINMUX_PIN(PIN_PB4, 0, 0)
|
||||
#define PIN_PB4__UTXD4 PINMUX_PIN(PIN_PB4, 1, 1)
|
||||
#define PIN_PB4__D9 PINMUX_PIN(PIN_PB4, 2, 1)
|
||||
#define PIN_PB4__FIQ PINMUX_PIN(PIN_PB4, 3, 4)
|
||||
#define PIN_PB4__CLASSD_R3 PINMUX_PIN(PIN_PB4, 6, 1)
|
||||
#define PIN_PB5 37
|
||||
#define PIN_PB5__GPIO PINMUX_PIN(PIN_PB5, 0, 0)
|
||||
#define PIN_PB5__TCLK2 PINMUX_PIN(PIN_PB5, 1, 1)
|
||||
#define PIN_PB5__D10 PINMUX_PIN(PIN_PB5, 2, 1)
|
||||
#define PIN_PB5__PWMH2 PINMUX_PIN(PIN_PB5, 3, 1)
|
||||
#define PIN_PB5__QSPI1_SCK PINMUX_PIN(PIN_PB5, 4, 2)
|
||||
#define PIN_PB5__GTSUCOMP PINMUX_PIN(PIN_PB5, 6, 3)
|
||||
#define PIN_PB6 38
|
||||
#define PIN_PB6__GPIO PINMUX_PIN(PIN_PB6, 0, 0)
|
||||
#define PIN_PB6__TIOA2 PINMUX_PIN(PIN_PB6, 1, 1)
|
||||
#define PIN_PB6__D11 PINMUX_PIN(PIN_PB6, 2, 1)
|
||||
#define PIN_PB6__PWML2 PINMUX_PIN(PIN_PB6, 3, 1)
|
||||
#define PIN_PB6__QSPI1_CS PINMUX_PIN(PIN_PB6, 4, 2)
|
||||
#define PIN_PB6__GTXER PINMUX_PIN(PIN_PB6, 6, 3)
|
||||
#define PIN_PB7 39
|
||||
#define PIN_PB7__GPIO PINMUX_PIN(PIN_PB7, 0, 0)
|
||||
#define PIN_PB7__TIOB2 PINMUX_PIN(PIN_PB7, 1, 1)
|
||||
#define PIN_PB7__D12 PINMUX_PIN(PIN_PB7, 2, 1)
|
||||
#define PIN_PB7__PWMH3 PINMUX_PIN(PIN_PB7, 3, 1)
|
||||
#define PIN_PB7__QSPI1_IO0 PINMUX_PIN(PIN_PB7, 4, 2)
|
||||
#define PIN_PB7__GRXCK PINMUX_PIN(PIN_PB7, 6, 3)
|
||||
#define PIN_PB8 40
|
||||
#define PIN_PB8__GPIO PINMUX_PIN(PIN_PB8, 0, 0)
|
||||
#define PIN_PB8__TCLK3 PINMUX_PIN(PIN_PB8, 1, 1)
|
||||
#define PIN_PB8__D13 PINMUX_PIN(PIN_PB8, 2, 1)
|
||||
#define PIN_PB8__PWML3 PINMUX_PIN(PIN_PB8, 3, 1)
|
||||
#define PIN_PB8__QSPI1_IO1 PINMUX_PIN(PIN_PB8, 4, 2)
|
||||
#define PIN_PB8__GCRS PINMUX_PIN(PIN_PB8, 6, 3)
|
||||
#define PIN_PB9 41
|
||||
#define PIN_PB9__GPIO PINMUX_PIN(PIN_PB9, 0, 0)
|
||||
#define PIN_PB9__TIOA3 PINMUX_PIN(PIN_PB9, 1, 1)
|
||||
#define PIN_PB9__D14 PINMUX_PIN(PIN_PB9, 2, 1)
|
||||
#define PIN_PB9__PWMFI1 PINMUX_PIN(PIN_PB9, 3, 1)
|
||||
#define PIN_PB9__QSPI1_IO2 PINMUX_PIN(PIN_PB9, 4, 2)
|
||||
#define PIN_PB9__GCOL PINMUX_PIN(PIN_PB9, 6, 3)
|
||||
#define PIN_PB10 42
|
||||
#define PIN_PB10__GPIO PINMUX_PIN(PIN_PB10, 0, 0)
|
||||
#define PIN_PB10__TIOB3 PINMUX_PIN(PIN_PB10, 1, 1)
|
||||
#define PIN_PB10__D15 PINMUX_PIN(PIN_PB10, 2, 1)
|
||||
#define PIN_PB10__PWMEXTRG1 PINMUX_PIN(PIN_PB10, 3, 1)
|
||||
#define PIN_PB10__QSPI1_IO3 PINMUX_PIN(PIN_PB10, 4, 2)
|
||||
#define PIN_PB10__GRX2 PINMUX_PIN(PIN_PB10, 6, 3)
|
||||
#define PIN_PB11 43
|
||||
#define PIN_PB11__GPIO PINMUX_PIN(PIN_PB11, 0, 0)
|
||||
#define PIN_PB11__LCDDAT0 PINMUX_PIN(PIN_PB11, 1, 1)
|
||||
#define PIN_PB11__A0_NBS0 PINMUX_PIN(PIN_PB11, 2, 1)
|
||||
#define PIN_PB11__URXD3 PINMUX_PIN(PIN_PB11, 3, 3)
|
||||
#define PIN_PB11__PDMIC_DAT PINMUX_PIN(PIN_PB11, 4, 2)
|
||||
#define PIN_PB11__GRX3 PINMUX_PIN(PIN_PB11, 6, 3)
|
||||
#define PIN_PB12 44
|
||||
#define PIN_PB12__GPIO PINMUX_PIN(PIN_PB12, 0, 0)
|
||||
#define PIN_PB12__LCDDAT1 PINMUX_PIN(PIN_PB12, 1, 1)
|
||||
#define PIN_PB12__A1 PINMUX_PIN(PIN_PB12, 2, 1)
|
||||
#define PIN_PB12__UTXD3 PINMUX_PIN(PIN_PB12, 3, 3)
|
||||
#define PIN_PB12__PDMIC_CLK PINMUX_PIN(PIN_PB12, 4, 2)
|
||||
#define PIN_PB12__GTX2 PINMUX_PIN(PIN_PB12, 6, 3)
|
||||
#define PIN_PB13 45
|
||||
#define PIN_PB13__GPIO PINMUX_PIN(PIN_PB13, 0, 0)
|
||||
#define PIN_PB13__LCDDAT2 PINMUX_PIN(PIN_PB13, 1, 1)
|
||||
#define PIN_PB13__A2 PINMUX_PIN(PIN_PB13, 2, 1)
|
||||
#define PIN_PB13__PCK1 PINMUX_PIN(PIN_PB13, 3, 3)
|
||||
#define PIN_PB13__GTX3 PINMUX_PIN(PIN_PB13, 6, 3)
|
||||
#define PIN_PB14 46
|
||||
#define PIN_PB14__GPIO PINMUX_PIN(PIN_PB14, 0, 0)
|
||||
#define PIN_PB14__LCDDAT3 PINMUX_PIN(PIN_PB14, 1, 1)
|
||||
#define PIN_PB14__A3 PINMUX_PIN(PIN_PB14, 2, 1)
|
||||
#define PIN_PB14__TK1 PINMUX_PIN(PIN_PB14, 3, 2)
|
||||
#define PIN_PB14__I2SC1_MCK PINMUX_PIN(PIN_PB14, 4, 1)
|
||||
#define PIN_PB14__QSPI1_SCK PINMUX_PIN(PIN_PB14, 5, 3)
|
||||
#define PIN_PB14__GTXCK PINMUX_PIN(PIN_PB14, 6, 3)
|
||||
#define PIN_PB15 47
|
||||
#define PIN_PB15__GPIO PINMUX_PIN(PIN_PB15, 0, 0)
|
||||
#define PIN_PB15__LCDDAT4 PINMUX_PIN(PIN_PB15, 1, 1)
|
||||
#define PIN_PB15__A4 PINMUX_PIN(PIN_PB15, 2, 1)
|
||||
#define PIN_PB15__TF1 PINMUX_PIN(PIN_PB15, 3, 2)
|
||||
#define PIN_PB15__I2SC1_CK PINMUX_PIN(PIN_PB15, 4, 1)
|
||||
#define PIN_PB15__QSPI1_CS PINMUX_PIN(PIN_PB15, 5, 3)
|
||||
#define PIN_PB15__GTXEN PINMUX_PIN(PIN_PB15, 6, 3)
|
||||
#define PIN_PB16 48
|
||||
#define PIN_PB16__GPIO PINMUX_PIN(PIN_PB16, 0, 0)
|
||||
#define PIN_PB16__LCDDAT5 PINMUX_PIN(PIN_PB16, 1, 1)
|
||||
#define PIN_PB16__A5 PINMUX_PIN(PIN_PB16, 2, 1)
|
||||
#define PIN_PB16__TD1 PINMUX_PIN(PIN_PB16, 3, 2)
|
||||
#define PIN_PB16__I2SC1_WS PINMUX_PIN(PIN_PB16, 4, 1)
|
||||
#define PIN_PB16__QSPI1_IO0 PINMUX_PIN(PIN_PB16, 5, 3)
|
||||
#define PIN_PB16__GRXDV PINMUX_PIN(PIN_PB16, 6, 3)
|
||||
#define PIN_PB17 49
|
||||
#define PIN_PB17__GPIO PINMUX_PIN(PIN_PB17, 0, 0)
|
||||
#define PIN_PB17__LCDDAT6 PINMUX_PIN(PIN_PB17, 1, 1)
|
||||
#define PIN_PB17__A6 PINMUX_PIN(PIN_PB17, 2, 1)
|
||||
#define PIN_PB17__RD1 PINMUX_PIN(PIN_PB17, 3, 2)
|
||||
#define PIN_PB17__I2SC1_DI0 PINMUX_PIN(PIN_PB17, 4, 1)
|
||||
#define PIN_PB17__QSPI1_IO1 PINMUX_PIN(PIN_PB17, 5, 3)
|
||||
#define PIN_PB17__GRXER PINMUX_PIN(PIN_PB17, 6, 3)
|
||||
#define PIN_PB18 50
|
||||
#define PIN_PB18__GPIO PINMUX_PIN(PIN_PB18, 0, 0)
|
||||
#define PIN_PB18__LCDDAT7 PINMUX_PIN(PIN_PB18, 1, 1)
|
||||
#define PIN_PB18__A7 PINMUX_PIN(PIN_PB18, 2, 1)
|
||||
#define PIN_PB18__RK1 PINMUX_PIN(PIN_PB18, 3, 2)
|
||||
#define PIN_PB18__I2SC1_DO0 PINMUX_PIN(PIN_PB18, 4, 1)
|
||||
#define PIN_PB18__QSPI1_IO2 PINMUX_PIN(PIN_PB18, 5, 3)
|
||||
#define PIN_PB18__GRX0 PINMUX_PIN(PIN_PB18, 6, 3)
|
||||
#define PIN_PB19 51
|
||||
#define PIN_PB19__GPIO PINMUX_PIN(PIN_PB19, 0, 0)
|
||||
#define PIN_PB19__LCDDAT8 PINMUX_PIN(PIN_PB19, 1, 1)
|
||||
#define PIN_PB19__A8 PINMUX_PIN(PIN_PB19, 2, 1)
|
||||
#define PIN_PB19__RF1 PINMUX_PIN(PIN_PB19, 3, 2)
|
||||
#define PIN_PB19__TIOA3 PINMUX_PIN(PIN_PB19, 4, 2)
|
||||
#define PIN_PB19__QSPI1_IO3 PINMUX_PIN(PIN_PB19, 5, 3)
|
||||
#define PIN_PB19__GRX1 PINMUX_PIN(PIN_PB19, 6, 3)
|
||||
#define PIN_PB20 52
|
||||
#define PIN_PB20__GPIO PINMUX_PIN(PIN_PB20, 0, 0)
|
||||
#define PIN_PB20__LCDDAT9 PINMUX_PIN(PIN_PB20, 1, 1)
|
||||
#define PIN_PB20__A9 PINMUX_PIN(PIN_PB20, 2, 1)
|
||||
#define PIN_PB20__TK0 PINMUX_PIN(PIN_PB20, 3, 1)
|
||||
#define PIN_PB20__TIOB3 PINMUX_PIN(PIN_PB20, 4, 2)
|
||||
#define PIN_PB20__PCK1 PINMUX_PIN(PIN_PB20, 5, 4)
|
||||
#define PIN_PB20__GTX0 PINMUX_PIN(PIN_PB20, 6, 3)
|
||||
#define PIN_PB21 53
|
||||
#define PIN_PB21__GPIO PINMUX_PIN(PIN_PB21, 0, 0)
|
||||
#define PIN_PB21__LCDDAT10 PINMUX_PIN(PIN_PB21, 1, 1)
|
||||
#define PIN_PB21__A10 PINMUX_PIN(PIN_PB21, 2, 1)
|
||||
#define PIN_PB21__TF0 PINMUX_PIN(PIN_PB21, 3, 1)
|
||||
#define PIN_PB21__TCLK3 PINMUX_PIN(PIN_PB21, 4, 2)
|
||||
#define PIN_PB21__FLEXCOM3_IO2 PINMUX_PIN(PIN_PB21, 5, 3)
|
||||
#define PIN_PB21__GTX1 PINMUX_PIN(PIN_PB21, 6, 3)
|
||||
#define PIN_PB22 54
|
||||
#define PIN_PB22__GPIO PINMUX_PIN(PIN_PB22, 0, 0)
|
||||
#define PIN_PB22__LCDDAT11 PINMUX_PIN(PIN_PB22, 1, 1)
|
||||
#define PIN_PB22__A11 PINMUX_PIN(PIN_PB22, 2, 1)
|
||||
#define PIN_PB22__TDO PINMUX_PIN(PIN_PB22, 3, 1)
|
||||
#define PIN_PB22__TIOA2 PINMUX_PIN(PIN_PB22, 4, 2)
|
||||
#define PIN_PB22__FLEXCOM3_IO1 PINMUX_PIN(PIN_PB22, 5, 3)
|
||||
#define PIN_PB22__GMDC PINMUX_PIN(PIN_PB22, 6, 3)
|
||||
#define PIN_PB23 55
|
||||
#define PIN_PB23__GPIO PINMUX_PIN(PIN_PB23, 0, 0)
|
||||
#define PIN_PB23__LCDDAT12 PINMUX_PIN(PIN_PB23, 1, 1)
|
||||
#define PIN_PB23__A12 PINMUX_PIN(PIN_PB23, 2, 1)
|
||||
#define PIN_PB23__RD0 PINMUX_PIN(PIN_PB23, 3, 1)
|
||||
#define PIN_PB23__TIOB2 PINMUX_PIN(PIN_PB23, 4, 2)
|
||||
#define PIN_PB23__FLEXCOM3_IO0 PINMUX_PIN(PIN_PB23, 5, 3)
|
||||
#define PIN_PB23__GMDIO PINMUX_PIN(PIN_PB23, 6, 3)
|
||||
#define PIN_PB24 56
|
||||
#define PIN_PB24__GPIO PINMUX_PIN(PIN_PB24, 0, 0)
|
||||
#define PIN_PB24__LCDDAT13 PINMUX_PIN(PIN_PB24, 1, 1)
|
||||
#define PIN_PB24__A13 PINMUX_PIN(PIN_PB24, 2, 1)
|
||||
#define PIN_PB24__RK0 PINMUX_PIN(PIN_PB24, 3, 1)
|
||||
#define PIN_PB24__TCLK2 PINMUX_PIN(PIN_PB24, 4, 2)
|
||||
#define PIN_PB24__FLEXCOM3_IO3 PINMUX_PIN(PIN_PB24, 5, 3)
|
||||
#define PIN_PB24__ISC_D10 PINMUX_PIN(PIN_PB24, 6, 3)
|
||||
#define PIN_PB25 57
|
||||
#define PIN_PB25__GPIO PINMUX_PIN(PIN_PB25, 0, 0)
|
||||
#define PIN_PB25__LCDDAT14 PINMUX_PIN(PIN_PB25, 1, 1)
|
||||
#define PIN_PB25__A14 PINMUX_PIN(PIN_PB25, 2, 1)
|
||||
#define PIN_PB25__RF0 PINMUX_PIN(PIN_PB25, 3, 1)
|
||||
#define PIN_PB25__FLEXCOM3_IO4 PINMUX_PIN(PIN_PB25, 5, 3)
|
||||
#define PIN_PB25__ISC_D11 PINMUX_PIN(PIN_PB25, 6, 3)
|
||||
#define PIN_PB26 58
|
||||
#define PIN_PB26__GPIO PINMUX_PIN(PIN_PB26, 0, 0)
|
||||
#define PIN_PB26__LCDDAT15 PINMUX_PIN(PIN_PB26, 1, 1)
|
||||
#define PIN_PB26__A15 PINMUX_PIN(PIN_PB26, 2, 1)
|
||||
#define PIN_PB26__URXD0 PINMUX_PIN(PIN_PB26, 3, 1)
|
||||
#define PIN_PB26__PDMIC_DAT PINMUX_PIN(PIN_PB26, 4, 1)
|
||||
#define PIN_PB26__ISC_D0 PINMUX_PIN(PIN_PB26, 6, 3)
|
||||
#define PIN_PB27 59
|
||||
#define PIN_PB27__GPIO PINMUX_PIN(PIN_PB27, 0, 0)
|
||||
#define PIN_PB27__LCDDAT16 PINMUX_PIN(PIN_PB27, 1, 1)
|
||||
#define PIN_PB27__A16 PINMUX_PIN(PIN_PB27, 2, 1)
|
||||
#define PIN_PB27__UTXD0 PINMUX_PIN(PIN_PB27, 3, 1)
|
||||
#define PIN_PB27__PDMIC_CLK PINMUX_PIN(PIN_PB27, 4, 1)
|
||||
#define PIN_PB27__ISC_D1 PINMUX_PIN(PIN_PB27, 6, 3)
|
||||
#define PIN_PB28 60
|
||||
#define PIN_PB28__GPIO PINMUX_PIN(PIN_PB28, 0, 0)
|
||||
#define PIN_PB28__LCDDAT17 PINMUX_PIN(PIN_PB28, 1, 1)
|
||||
#define PIN_PB28__A17 PINMUX_PIN(PIN_PB28, 2, 1)
|
||||
#define PIN_PB28__FLEXCOM0_IO0 PINMUX_PIN(PIN_PB28, 3, 1)
|
||||
#define PIN_PB28__TIOA5 PINMUX_PIN(PIN_PB28, 4, 2)
|
||||
#define PIN_PB28__ISC_D2 PINMUX_PIN(PIN_PB28, 6, 3)
|
||||
#define PIN_PB29 61
|
||||
#define PIN_PB29__GPIO PINMUX_PIN(PIN_PB29, 0, 0)
|
||||
#define PIN_PB29__LCDDAT18 PINMUX_PIN(PIN_PB29, 1, 1)
|
||||
#define PIN_PB29__A18 PINMUX_PIN(PIN_PB29, 2, 1)
|
||||
#define PIN_PB29__FLEXCOM0_IO1 PINMUX_PIN(PIN_PB29, 3, 1)
|
||||
#define PIN_PB29__TIOB5 PINMUX_PIN(PIN_PB29, 4, 2)
|
||||
#define PIN_PB29__ISC_D3 PINMUX_PIN(PIN_PB29, 7, 3)
|
||||
#define PIN_PB30 62
|
||||
#define PIN_PB30__GPIO PINMUX_PIN(PIN_PB30, 0, 0)
|
||||
#define PIN_PB30__LCDDAT19 PINMUX_PIN(PIN_PB30, 1, 1)
|
||||
#define PIN_PB30__A19 PINMUX_PIN(PIN_PB30, 2, 1)
|
||||
#define PIN_PB30__FLEXCOM0_IO2 PINMUX_PIN(PIN_PB30, 3, 1)
|
||||
#define PIN_PB30__TCLK5 PINMUX_PIN(PIN_PB30, 4, 2)
|
||||
#define PIN_PB30__ISC_D4 PINMUX_PIN(PIN_PB30, 6, 3)
|
||||
#define PIN_PB31 63
|
||||
#define PIN_PB31__GPIO PINMUX_PIN(PIN_PB31, 0, 0)
|
||||
#define PIN_PB31__LCDDAT20 PINMUX_PIN(PIN_PB31, 1, 1)
|
||||
#define PIN_PB31__A20 PINMUX_PIN(PIN_PB31, 2, 1)
|
||||
#define PIN_PB31__FLEXCOM0_IO3 PINMUX_PIN(PIN_PB31, 3, 1)
|
||||
#define PIN_PB31__TWD0 PINMUX_PIN(PIN_PB31, 4, 1)
|
||||
#define PIN_PB31__ISC_D5 PINMUX_PIN(PIN_PB31, 6, 3)
|
||||
#define PIN_PC0 64
|
||||
#define PIN_PC0__GPIO PINMUX_PIN(PIN_PC0, 0, 0)
|
||||
#define PIN_PC0__LCDDAT21 PINMUX_PIN(PIN_PC0, 1, 1)
|
||||
#define PIN_PC0__A23 PINMUX_PIN(PIN_PC0, 2, 1)
|
||||
#define PIN_PC0__FLEXCOM0_IO4 PINMUX_PIN(PIN_PC0, 3, 1)
|
||||
#define PIN_PC0__TWCK0 PINMUX_PIN(PIN_PC0, 4, 1)
|
||||
#define PIN_PC0__ISC_D6 PINMUX_PIN(PIN_PC0, 6, 3)
|
||||
#define PIN_PC1 65
|
||||
#define PIN_PC1__GPIO PINMUX_PIN(PIN_PC1, 0, 0)
|
||||
#define PIN_PC1__LCDDAT22 PINMUX_PIN(PIN_PC1, 1, 1)
|
||||
#define PIN_PC1__A24 PINMUX_PIN(PIN_PC1, 2, 1)
|
||||
#define PIN_PC1__CANTX0 PINMUX_PIN(PIN_PC1, 3, 1)
|
||||
#define PIN_PC1__SPI1_SPCK PINMUX_PIN(PIN_PC1, 4, 1)
|
||||
#define PIN_PC1__I2SC0_CK PINMUX_PIN(PIN_PC1, 5, 1)
|
||||
#define PIN_PC1__ISC_D7 PINMUX_PIN(PIN_PC1, 6, 3)
|
||||
#define PIN_PC2 66
|
||||
#define PIN_PC2__GPIO PINMUX_PIN(PIN_PC2, 0, 0)
|
||||
#define PIN_PC2__LCDDAT23 PINMUX_PIN(PIN_PC2, 1, 1)
|
||||
#define PIN_PC2__A25 PINMUX_PIN(PIN_PC2, 2, 1)
|
||||
#define PIN_PC2__CANRX0 PINMUX_PIN(PIN_PC2, 3, 1)
|
||||
#define PIN_PC2__SPI1_MOSI PINMUX_PIN(PIN_PC2, 4, 1)
|
||||
#define PIN_PC2__I2SC0_MCK PINMUX_PIN(PIN_PC2, 5, 1)
|
||||
#define PIN_PC2__ISC_D8 PINMUX_PIN(PIN_PC2, 6, 3)
|
||||
#define PIN_PC3 67
|
||||
#define PIN_PC3__GPIO PINMUX_PIN(PIN_PC3, 0, 0)
|
||||
#define PIN_PC3__LCDPWM PINMUX_PIN(PIN_PC3, 1, 1)
|
||||
#define PIN_PC3__NWAIT PINMUX_PIN(PIN_PC3, 2, 1)
|
||||
#define PIN_PC3__TIOA1 PINMUX_PIN(PIN_PC3, 3, 1)
|
||||
#define PIN_PC3__SPI1_MISO PINMUX_PIN(PIN_PC3, 4, 1)
|
||||
#define PIN_PC3__I2SC0_WS PINMUX_PIN(PIN_PC3, 5, 1)
|
||||
#define PIN_PC3__ISC_D9 PINMUX_PIN(PIN_PC3, 6, 3)
|
||||
#define PIN_PC4 68
|
||||
#define PIN_PC4__GPIO PINMUX_PIN(PIN_PC4, 0, 0)
|
||||
#define PIN_PC4__LCDDISP PINMUX_PIN(PIN_PC4, 1, 1)
|
||||
#define PIN_PC4__NWR1_NBS1 PINMUX_PIN(PIN_PC4, 2, 1)
|
||||
#define PIN_PC4__TIOB1 PINMUX_PIN(PIN_PC4, 3, 1)
|
||||
#define PIN_PC4__SPI1_NPCS0 PINMUX_PIN(PIN_PC4, 4, 1)
|
||||
#define PIN_PC4__I2SC0_DI0 PINMUX_PIN(PIN_PC4, 5, 1)
|
||||
#define PIN_PC4__ISC_PCK PINMUX_PIN(PIN_PC4, 6, 3)
|
||||
#define PIN_PC5 69
|
||||
#define PIN_PC5__GPIO PINMUX_PIN(PIN_PC5, 0, 0)
|
||||
#define PIN_PC5__LCDVSYNC PINMUX_PIN(PIN_PC5, 1, 1)
|
||||
#define PIN_PC5__NCS0 PINMUX_PIN(PIN_PC5, 2, 1)
|
||||
#define PIN_PC5__TCLK1 PINMUX_PIN(PIN_PC5, 3, 1)
|
||||
#define PIN_PC5__SPI1_NPCS1 PINMUX_PIN(PIN_PC5, 4, 1)
|
||||
#define PIN_PC5__I2SC0_DO0 PINMUX_PIN(PIN_PC5, 5, 1)
|
||||
#define PIN_PC5__ISC_VSYNC PINMUX_PIN(PIN_PC5, 6, 3)
|
||||
#define PIN_PC6 70
|
||||
#define PIN_PC6__GPIO PINMUX_PIN(PIN_PC6, 0, 0)
|
||||
#define PIN_PC6__LCDHSYNC PINMUX_PIN(PIN_PC6, 1, 1)
|
||||
#define PIN_PC6__NCS1 PINMUX_PIN(PIN_PC6, 2, 1)
|
||||
#define PIN_PC6__TWD1 PINMUX_PIN(PIN_PC6, 3, 1)
|
||||
#define PIN_PC6__SPI1_NPCS2 PINMUX_PIN(PIN_PC6, 4, 1)
|
||||
#define PIN_PC6__ISC_HSYNC PINMUX_PIN(PIN_PC6, 6, 3)
|
||||
#define PIN_PC7 71
|
||||
#define PIN_PC7__GPIO PINMUX_PIN(PIN_PC7, 0, 0)
|
||||
#define PIN_PC7__LCDPCK PINMUX_PIN(PIN_PC7, 1, 1)
|
||||
#define PIN_PC7__NCS2 PINMUX_PIN(PIN_PC7, 2, 1)
|
||||
#define PIN_PC7__TWCK1 PINMUX_PIN(PIN_PC7, 3, 1)
|
||||
#define PIN_PC7__SPI1_NPCS3 PINMUX_PIN(PIN_PC7, 4, 1)
|
||||
#define PIN_PC7__URXD1 PINMUX_PIN(PIN_PC7, 5, 2)
|
||||
#define PIN_PC7__ISC_MCK PINMUX_PIN(PIN_PC7, 6, 3)
|
||||
#define PIN_PC8 72
|
||||
#define PIN_PC8__GPIO PINMUX_PIN(PIN_PC8, 0, 0)
|
||||
#define PIN_PC8__LCDDEN PINMUX_PIN(PIN_PC8, 1, 1)
|
||||
#define PIN_PC8__NANDRDY PINMUX_PIN(PIN_PC8, 2, 1)
|
||||
#define PIN_PC8__FIQ PINMUX_PIN(PIN_PC8, 3, 1)
|
||||
#define PIN_PC8__PCK0 PINMUX_PIN(PIN_PC8, 4, 3)
|
||||
#define PIN_PC8__UTXD1 PINMUX_PIN(PIN_PC8, 5, 2)
|
||||
#define PIN_PC8__ISC_FIELD PINMUX_PIN(PIN_PC8, 6, 3)
|
||||
#define PIN_PC9 73
|
||||
#define PIN_PC9__GPIO PINMUX_PIN(PIN_PC9, 0, 0)
|
||||
#define PIN_PC9__FIQ PINMUX_PIN(PIN_PC9, 1, 3)
|
||||
#define PIN_PC9__GTSUCOMP PINMUX_PIN(PIN_PC9, 2, 1)
|
||||
#define PIN_PC9__ISC_D0 PINMUX_PIN(PIN_PC9, 2, 1)
|
||||
#define PIN_PC9__TIOA4 PINMUX_PIN(PIN_PC9, 4, 2)
|
||||
#define PIN_PC10 74
|
||||
#define PIN_PC10__GPIO PINMUX_PIN(PIN_PC10, 0, 0)
|
||||
#define PIN_PC10__LCDDAT2 PINMUX_PIN(PIN_PC10, 1, 2)
|
||||
#define PIN_PC10__GTXCK PINMUX_PIN(PIN_PC10, 2, 1)
|
||||
#define PIN_PC10__ISC_D1 PINMUX_PIN(PIN_PC10, 3, 1)
|
||||
#define PIN_PC10__TIOB4 PINMUX_PIN(PIN_PC10, 4, 2)
|
||||
#define PIN_PC10__CANTX0 PINMUX_PIN(PIN_PC10, 5, 2)
|
||||
#define PIN_PC11 75
|
||||
#define PIN_PC11__GPIO PINMUX_PIN(PIN_PC11, 0, 0)
|
||||
#define PIN_PC11__LCDDAT3 PINMUX_PIN(PIN_PC11, 1, 2)
|
||||
#define PIN_PC11__GTXEN PINMUX_PIN(PIN_PC11, 2, 1)
|
||||
#define PIN_PC11__ISC_D2 PINMUX_PIN(PIN_PC11, 3, 1)
|
||||
#define PIN_PC11__TCLK4 PINMUX_PIN(PIN_PC11, 4, 2)
|
||||
#define PIN_PC11__CANRX0 PINMUX_PIN(PIN_PC11, 5, 2)
|
||||
#define PIN_PC11__A0_NBS0 PINMUX_PIN(PIN_PC11, 6, 2)
|
||||
#define PIN_PC12 76
|
||||
#define PIN_PC12__GPIO PINMUX_PIN(PIN_PC12, 0, 0)
|
||||
#define PIN_PC12__LCDDAT4 PINMUX_PIN(PIN_PC12, 1, 2)
|
||||
#define PIN_PC12__GRXDV PINMUX_PIN(PIN_PC12, 2, 1)
|
||||
#define PIN_PC12__ISC_D3 PINMUX_PIN(PIN_PC12, 3, 1)
|
||||
#define PIN_PC12__URXD3 PINMUX_PIN(PIN_PC12, 4, 1)
|
||||
#define PIN_PC12__TK0 PINMUX_PIN(PIN_PC12, 5, 2)
|
||||
#define PIN_PC12__A1 PINMUX_PIN(PIN_PC12, 6, 2)
|
||||
#define PIN_PC13 77
|
||||
#define PIN_PC13__GPIO PINMUX_PIN(PIN_PC13, 0, 0)
|
||||
#define PIN_PC13__LCDDAT5 PINMUX_PIN(PIN_PC13, 1, 2)
|
||||
#define PIN_PC13__GRXER PINMUX_PIN(PIN_PC13, 2, 1)
|
||||
#define PIN_PC13__ISC_D4 PINMUX_PIN(PIN_PC13, 3, 1)
|
||||
#define PIN_PC13__UTXD3 PINMUX_PIN(PIN_PC13, 4, 1)
|
||||
#define PIN_PC13__TF0 PINMUX_PIN(PIN_PC13, 5, 2)
|
||||
#define PIN_PC13__A2 PINMUX_PIN(PIN_PC13, 6, 2)
|
||||
#define PIN_PC14 78
|
||||
#define PIN_PC14__GPIO PINMUX_PIN(PIN_PC14, 0, 0)
|
||||
#define PIN_PC14__LCDDAT6 PINMUX_PIN(PIN_PC14, 1, 2)
|
||||
#define PIN_PC14__GRX0 PINMUX_PIN(PIN_PC14, 2, 1)
|
||||
#define PIN_PC14__ISC_D5 PINMUX_PIN(PIN_PC14, 3, 1)
|
||||
#define PIN_PC14__TDO PINMUX_PIN(PIN_PC14, 5, 2)
|
||||
#define PIN_PC14__A3 PINMUX_PIN(PIN_PC14, 6, 2)
|
||||
#define PIN_PC15 79
|
||||
#define PIN_PC15__GPIO PINMUX_PIN(PIN_PC15, 0, 0)
|
||||
#define PIN_PC15__LCDDAT7 PINMUX_PIN(PIN_PC15, 1, 2)
|
||||
#define PIN_PC15__GRX1 PINMUX_PIN(PIN_PC15, 2, 1)
|
||||
#define PIN_PC15__ISC_D6 PINMUX_PIN(PIN_PC15, 3, 1)
|
||||
#define PIN_PC15__RD0 PINMUX_PIN(PIN_PC15, 5, 2)
|
||||
#define PIN_PC15__A4 PINMUX_PIN(PIN_PC15, 6, 2)
|
||||
#define PIN_PC16 80
|
||||
#define PIN_PC16__GPIO PINMUX_PIN(PIN_PC16, 0, 0)
|
||||
#define PIN_PC16__LCDDAT10 PINMUX_PIN(PIN_PC16, 1, 2)
|
||||
#define PIN_PC16__GTX0 PINMUX_PIN(PIN_PC16, 2, 1)
|
||||
#define PIN_PC16__ISC_D7 PINMUX_PIN(PIN_PC16, 3, 1)
|
||||
#define PIN_PC16__RK0 PINMUX_PIN(PIN_PC16, 5, 2)
|
||||
#define PIN_PC16__A5 PINMUX_PIN(PIN_PC16, 6, 2)
|
||||
#define PIN_PC17 81
|
||||
#define PIN_PC17__GPIO PINMUX_PIN(PIN_PC17, 0, 0)
|
||||
#define PIN_PC17__LCDDAT11 PINMUX_PIN(PIN_PC17, 1, 2)
|
||||
#define PIN_PC17__GTX1 PINMUX_PIN(PIN_PC17, 2, 1)
|
||||
#define PIN_PC17__ISC_D8 PINMUX_PIN(PIN_PC17, 3, 1)
|
||||
#define PIN_PC17__RF0 PINMUX_PIN(PIN_PC17, 5, 2)
|
||||
#define PIN_PC17__A6 PINMUX_PIN(PIN_PC17, 6, 2)
|
||||
#define PIN_PC18 82
|
||||
#define PIN_PC18__GPIO PINMUX_PIN(PIN_PC18, 0, 0)
|
||||
#define PIN_PC18__LCDDAT12 PINMUX_PIN(PIN_PC18, 1, 2)
|
||||
#define PIN_PC18__GMDC PINMUX_PIN(PIN_PC18, 2, 1)
|
||||
#define PIN_PC18__ISC_D9 PINMUX_PIN(PIN_PC18, 3, 1)
|
||||
#define PIN_PC18__FLEXCOM3_IO2 PINMUX_PIN(PIN_PC18, 5, 2)
|
||||
#define PIN_PC18__A7 PINMUX_PIN(PIN_PC18, 6, 2)
|
||||
#define PIN_PC19 83
|
||||
#define PIN_PC19__GPIO PINMUX_PIN(PIN_PC19, 0, 0)
|
||||
#define PIN_PC19__LCDDAT13 PINMUX_PIN(PIN_PC19, 1, 2)
|
||||
#define PIN_PC19__GMDIO PINMUX_PIN(PIN_PC19, 2, 1)
|
||||
#define PIN_PC19__ISC_D10 PINMUX_PIN(PIN_PC19, 3, 1)
|
||||
#define PIN_PC19__FLEXCOM3_IO1 PINMUX_PIN(PIN_PC19, 5, 2)
|
||||
#define PIN_PC19__A8 PINMUX_PIN(PIN_PC19, 6, 2)
|
||||
#define PIN_PC20 84
|
||||
#define PIN_PC20__GPIO PINMUX_PIN(PIN_PC20, 0, 0)
|
||||
#define PIN_PC20__LCDDAT14 PINMUX_PIN(PIN_PC20, 1, 2)
|
||||
#define PIN_PC20__GRXCK PINMUX_PIN(PIN_PC20, 2, 1)
|
||||
#define PIN_PC20__ISC_D11 PINMUX_PIN(PIN_PC20, 3, 1)
|
||||
#define PIN_PC20__FLEXCOM3_IO0 PINMUX_PIN(PIN_PC20, 5, 2)
|
||||
#define PIN_PC20__A9 PINMUX_PIN(PIN_PC20, 6, 2)
|
||||
#define PIN_PC21 85
|
||||
#define PIN_PC21__GPIO PINMUX_PIN(PIN_PC21, 0, 0)
|
||||
#define PIN_PC21__LCDDAT15 PINMUX_PIN(PIN_PC21, 1, 2)
|
||||
#define PIN_PC21__GTXER PINMUX_PIN(PIN_PC21, 2, 1)
|
||||
#define PIN_PC21__ISC_PCK PINMUX_PIN(PIN_PC21, 3, 1)
|
||||
#define PIN_PC21__FLEXCOM3_IO3 PINMUX_PIN(PIN_PC21, 5, 2)
|
||||
#define PIN_PC21__A10 PINMUX_PIN(PIN_PC21, 6, 2)
|
||||
#define PIN_PC22 86
|
||||
#define PIN_PC22__GPIO PINMUX_PIN(PIN_PC22, 0, 0)
|
||||
#define PIN_PC22__LCDDAT18 PINMUX_PIN(PIN_PC22, 1, 2)
|
||||
#define PIN_PC22__GCRS PINMUX_PIN(PIN_PC22, 2, 1)
|
||||
#define PIN_PC22__ISC_VSYNC PINMUX_PIN(PIN_PC22, 3, 1)
|
||||
#define PIN_PC22__FLEXCOM3_IO4 PINMUX_PIN(PIN_PC22, 5, 2)
|
||||
#define PIN_PC22__A11 PINMUX_PIN(PIN_PC22, 6, 2)
|
||||
#define PIN_PC23 87
|
||||
#define PIN_PC23__GPIO PINMUX_PIN(PIN_PC23, 0, 0)
|
||||
#define PIN_PC23__LCDDAT19 PINMUX_PIN(PIN_PC23, 1, 2)
|
||||
#define PIN_PC23__GCOL PINMUX_PIN(PIN_PC23, 2, 1)
|
||||
#define PIN_PC23__ISC_HSYNC PINMUX_PIN(PIN_PC23, 3, 1)
|
||||
#define PIN_PC23__A12 PINMUX_PIN(PIN_PC23, 6, 2)
|
||||
#define PIN_PC24 88
|
||||
#define PIN_PC24__GPIO PINMUX_PIN(PIN_PC24, 0, 0)
|
||||
#define PIN_PC24__LCDDAT20 PINMUX_PIN(PIN_PC24, 1, 2)
|
||||
#define PIN_PC24__GRX2 PINMUX_PIN(PIN_PC24, 2, 1)
|
||||
#define PIN_PC24__ISC_MCK PINMUX_PIN(PIN_PC24, 3, 1)
|
||||
#define PIN_PC24__A13 PINMUX_PIN(PIN_PC24, 6, 2)
|
||||
#define PIN_PC25 89
|
||||
#define PIN_PC25__GPIO PINMUX_PIN(PIN_PC25, 0, 0)
|
||||
#define PIN_PC25__LCDDAT21 PINMUX_PIN(PIN_PC25, 1, 2)
|
||||
#define PIN_PC25__GRX3 PINMUX_PIN(PIN_PC25, 2, 1)
|
||||
#define PIN_PC25__ISC_FIELD PINMUX_PIN(PIN_PC25, 3, 1)
|
||||
#define PIN_PC25__A14 PINMUX_PIN(PIN_PC25, 6, 2)
|
||||
#define PIN_PC26 90
|
||||
#define PIN_PC26__GPIO PINMUX_PIN(PIN_PC26, 0, 0)
|
||||
#define PIN_PC26__LCDDAT22 PINMUX_PIN(PIN_PC26, 1, 2)
|
||||
#define PIN_PC26__GTX2 PINMUX_PIN(PIN_PC26, 2, 1)
|
||||
#define PIN_PC26__CANTX1 PINMUX_PIN(PIN_PC26, 4, 1)
|
||||
#define PIN_PC26__A15 PINMUX_PIN(PIN_PC26, 6, 2)
|
||||
#define PIN_PC27 91
|
||||
#define PIN_PC27__GPIO PINMUX_PIN(PIN_PC27, 0, 0)
|
||||
#define PIN_PC27__LCDDAT23 PINMUX_PIN(PIN_PC27, 1, 2)
|
||||
#define PIN_PC27__GTX3 PINMUX_PIN(PIN_PC27, 2, 1)
|
||||
#define PIN_PC27__PCK1 PINMUX_PIN(PIN_PC27, 3, 2)
|
||||
#define PIN_PC27__CANRX1 PINMUX_PIN(PIN_PC27, 4, 1)
|
||||
#define PIN_PC27__TWD0 PINMUX_PIN(PIN_PC27, 5, 2)
|
||||
#define PIN_PC27__A16 PINMUX_PIN(PIN_PC27, 6, 2)
|
||||
#define PIN_PC28 92
|
||||
#define PIN_PC28__GPIO PINMUX_PIN(PIN_PC28, 0, 0)
|
||||
#define PIN_PC28__LCDPWM PINMUX_PIN(PIN_PC28, 1, 2)
|
||||
#define PIN_PC28__FLEXCOM4_IO0 PINMUX_PIN(PIN_PC28, 2, 1)
|
||||
#define PIN_PC28__PCK2 PINMUX_PIN(PIN_PC28, 3, 2)
|
||||
#define PIN_PC28__TWCK0 PINMUX_PIN(PIN_PC28, 5, 2)
|
||||
#define PIN_PC28__A17 PINMUX_PIN(PIN_PC28, 6, 2)
|
||||
#define PIN_PC29 93
|
||||
#define PIN_PC29__GPIO PINMUX_PIN(PIN_PC29, 0, 0)
|
||||
#define PIN_PC29__LCDDISP PINMUX_PIN(PIN_PC29, 1, 2)
|
||||
#define PIN_PC29__FLEXCOM4_IO1 PINMUX_PIN(PIN_PC29, 2, 1)
|
||||
#define PIN_PC29__A18 PINMUX_PIN(PIN_PC29, 6, 2)
|
||||
#define PIN_PC30 94
|
||||
#define PIN_PC30__GPIO PINMUX_PIN(PIN_PC30, 0, 0)
|
||||
#define PIN_PC30__LCDVSYNC PINMUX_PIN(PIN_PC30, 1, 2)
|
||||
#define PIN_PC30__FLEXCOM4_IO2 PINMUX_PIN(PIN_PC30, 2, 1)
|
||||
#define PIN_PC30__A19 PINMUX_PIN(PIN_PC30, 6, 2)
|
||||
#define PIN_PC31 95
|
||||
#define PIN_PC31__GPIO PINMUX_PIN(PIN_PC31, 0, 0)
|
||||
#define PIN_PC31__LCDHSYNC PINMUX_PIN(PIN_PC31, 1, 2)
|
||||
#define PIN_PC31__FLEXCOM4_IO3 PINMUX_PIN(PIN_PC31, 2, 1)
|
||||
#define PIN_PC31__URXD3 PINMUX_PIN(PIN_PC31, 3, 2)
|
||||
#define PIN_PC31__A20 PINMUX_PIN(PIN_PC31, 6, 2)
|
||||
#define PIN_PD0 96
|
||||
#define PIN_PD0__GPIO PINMUX_PIN(PIN_PD0, 0, 0)
|
||||
#define PIN_PD0__LCDPCK PINMUX_PIN(PIN_PD0, 1, 2)
|
||||
#define PIN_PD0__FLEXCOM4_IO4 PINMUX_PIN(PIN_PD0, 2, 1)
|
||||
#define PIN_PD0__UTXD3 PINMUX_PIN(PIN_PD0, 3, 2)
|
||||
#define PIN_PD0__GTSUCOMP PINMUX_PIN(PIN_PD0, 4, 2)
|
||||
#define PIN_PD0__A23 PINMUX_PIN(PIN_PD0, 6, 2)
|
||||
#define PIN_PD1 97
|
||||
#define PIN_PD1__GPIO PINMUX_PIN(PIN_PD1, 0, 0)
|
||||
#define PIN_PD1__LCDDEN PINMUX_PIN(PIN_PD1, 1, 2)
|
||||
#define PIN_PD1__GRXCK PINMUX_PIN(PIN_PD1, 4, 2)
|
||||
#define PIN_PD1__A24 PINMUX_PIN(PIN_PD1, 6, 2)
|
||||
#define PIN_PD2 98
|
||||
#define PIN_PD2__GPIO PINMUX_PIN(PIN_PD2, 0, 0)
|
||||
#define PIN_PD2__URXD1 PINMUX_PIN(PIN_PD2, 1, 1)
|
||||
#define PIN_PD2__GTXER PINMUX_PIN(PIN_PD2, 4, 2)
|
||||
#define PIN_PD2__ISC_MCK PINMUX_PIN(PIN_PD2, 5, 2)
|
||||
#define PIN_PD2__A25 PINMUX_PIN(PIN_PD2, 6, 2)
|
||||
#define PIN_PD3 99
|
||||
#define PIN_PD3__GPIO PINMUX_PIN(PIN_PD3, 0, 0)
|
||||
#define PIN_PD3__UTXD1 PINMUX_PIN(PIN_PD3, 1, 1)
|
||||
#define PIN_PD3__FIQ PINMUX_PIN(PIN_PD3, 2, 2)
|
||||
#define PIN_PD3__GCRS PINMUX_PIN(PIN_PD3, 4, 2)
|
||||
#define PIN_PD3__ISC_D11 PINMUX_PIN(PIN_PD3, 5, 2)
|
||||
#define PIN_PD3__NWAIT PINMUX_PIN(PIN_PD3, 6, 2)
|
||||
#define PIN_PD4 100
|
||||
#define PIN_PD4__GPIO PINMUX_PIN(PIN_PD4, 0, 0)
|
||||
#define PIN_PD4__TWD1 PINMUX_PIN(PIN_PD4, 1, 2)
|
||||
#define PIN_PD4__URXD2 PINMUX_PIN(PIN_PD4, 2, 1)
|
||||
#define PIN_PD4__GCOL PINMUX_PIN(PIN_PD4, 4, 2)
|
||||
#define PIN_PD4__ISC_D10 PINMUX_PIN(PIN_PD4, 5, 2)
|
||||
#define PIN_PD4__NCS0 PINMUX_PIN(PIN_PD4, 6, 2)
|
||||
#define PIN_PD5 101
|
||||
#define PIN_PD5__GPIO PINMUX_PIN(PIN_PD5, 0, 0)
|
||||
#define PIN_PD5__TWCK1 PINMUX_PIN(PIN_PD5, 1, 2)
|
||||
#define PIN_PD5__UTXD2 PINMUX_PIN(PIN_PD5, 2, 1)
|
||||
#define PIN_PD5__GRX2 PINMUX_PIN(PIN_PD5, 4, 2)
|
||||
#define PIN_PD5__ISC_D9 PINMUX_PIN(PIN_PD5, 5, 2)
|
||||
#define PIN_PD5__NCS1 PINMUX_PIN(PIN_PD5, 6, 2)
|
||||
#define PIN_PD6 102
|
||||
#define PIN_PD6__GPIO PINMUX_PIN(PIN_PD6, 0, 0)
|
||||
#define PIN_PD6__TCK PINMUX_PIN(PIN_PD6, 1, 2)
|
||||
#define PIN_PD6__PCK1 PINMUX_PIN(PIN_PD6, 2, 1)
|
||||
#define PIN_PD6__GRX3 PINMUX_PIN(PIN_PD6, 4, 2)
|
||||
#define PIN_PD6__ISC_D8 PINMUX_PIN(PIN_PD6, 5, 2)
|
||||
#define PIN_PD6__NCS2 PINMUX_PIN(PIN_PD6, 6, 2)
|
||||
#define PIN_PD7 103
|
||||
#define PIN_PD7__GPIO PINMUX_PIN(PIN_PD7, 0, 0)
|
||||
#define PIN_PD7__TDI PINMUX_PIN(PIN_PD7, 1, 2)
|
||||
#define PIN_PD7__UTMI_RXVAL PINMUX_PIN(PIN_PD7, 3, 1)
|
||||
#define PIN_PD7__GTX2 PINMUX_PIN(PIN_PD7, 4, 2)
|
||||
#define PIN_PD7__ISC_D0 PINMUX_PIN(PIN_PD7, 5, 2)
|
||||
#define PIN_PD7__NWR1_NBS1 PINMUX_PIN(PIN_PD7, 6, 2)
|
||||
#define PIN_PD8 104
|
||||
#define PIN_PD8__GPIO PINMUX_PIN(PIN_PD8, 0, 0)
|
||||
#define PIN_PD8__TDO PINMUX_PIN(PIN_PD8, 1, 2)
|
||||
#define PIN_PD8__UTMI_RXERR PINMUX_PIN(PIN_PD8, 3, 1)
|
||||
#define PIN_PD8__GTX3 PINMUX_PIN(PIN_PD8, 4, 2)
|
||||
#define PIN_PD8__ISC_D1 PINMUX_PIN(PIN_PD8, 5, 2)
|
||||
#define PIN_PD8__NANDRDY PINMUX_PIN(PIN_PD8, 6, 2)
|
||||
#define PIN_PD9 105
|
||||
#define PIN_PD9__GPIO PINMUX_PIN(PIN_PD9, 0, 0)
|
||||
#define PIN_PD9__TMS PINMUX_PIN(PIN_PD9, 1, 2)
|
||||
#define PIN_PD9__UTMI_RXACT PINMUX_PIN(PIN_PD9, 3, 1)
|
||||
#define PIN_PD9__GTXCK PINMUX_PIN(PIN_PD9, 4, 2)
|
||||
#define PIN_PD9__ISC_D2 PINMUX_PIN(PIN_PD9, 5, 2)
|
||||
#define PIN_PD10 106
|
||||
#define PIN_PD10__GPIO PINMUX_PIN(PIN_PD10, 0, 0)
|
||||
#define PIN_PD10__NTRST PINMUX_PIN(PIN_PD10, 1, 2)
|
||||
#define PIN_PD10__UTMI_HDIS PINMUX_PIN(PIN_PD10, 3, 1)
|
||||
#define PIN_PD10__GTXEN PINMUX_PIN(PIN_PD10, 4, 2)
|
||||
#define PIN_PD10__ISC_D3 PINMUX_PIN(PIN_PD10, 5, 2)
|
||||
#define PIN_PD11 107
|
||||
#define PIN_PD11__GPIO PINMUX_PIN(PIN_PD11, 0, 0)
|
||||
#define PIN_PD11__TIOA1 PINMUX_PIN(PIN_PD11, 1, 3)
|
||||
#define PIN_PD11__PCK2 PINMUX_PIN(PIN_PD11, 2, 2)
|
||||
#define PIN_PD11__UTMI_LS0 PINMUX_PIN(PIN_PD11, 3, 1)
|
||||
#define PIN_PD11__GRXDV PINMUX_PIN(PIN_PD11, 4, 2)
|
||||
#define PIN_PD11__ISC_D4 PINMUX_PIN(PIN_PD11, 5, 2)
|
||||
#define PIN_PD11__ISC_MCK PINMUX_PIN(PIN_PD11, 7, 4)
|
||||
#define PIN_PD12 108
|
||||
#define PIN_PD12__GPIO PINMUX_PIN(PIN_PD12, 0, 0)
|
||||
#define PIN_PD12__TIOB1 PINMUX_PIN(PIN_PD12, 1, 3)
|
||||
#define PIN_PD12__FLEXCOM4_IO0 PINMUX_PIN(PIN_PD12, 2, 2)
|
||||
#define PIN_PD12__UTMI_LS1 PINMUX_PIN(PIN_PD12, 3, 1)
|
||||
#define PIN_PD12__GRXER PINMUX_PIN(PIN_PD12, 4, 2)
|
||||
#define PIN_PD12__ISC_D5 PINMUX_PIN(PIN_PD12, 5, 2)
|
||||
#define PIN_PD12__ISC_D4 PINMUX_PIN(PIN_PD12, 6, 4)
|
||||
#define PIN_PD13 109
|
||||
#define PIN_PD13__GPIO PINMUX_PIN(PIN_PD13, 0, 0)
|
||||
#define PIN_PD13__TCLK1 PINMUX_PIN(PIN_PD13, 1, 3)
|
||||
#define PIN_PD13__FLEXCOM4_IO1 PINMUX_PIN(PIN_PD13, 2, 2)
|
||||
#define PIN_PD13__UTMI_CDRPCSEL0 PINMUX_PIN(PIN_PD13, 3, 1)
|
||||
#define PIN_PD13__GRX0 PINMUX_PIN(PIN_PD13, 4, 2)
|
||||
#define PIN_PD13__ISC_D6 PINMUX_PIN(PIN_PD13, 5, 2)
|
||||
#define PIN_PD13__ISC_D5 PINMUX_PIN(PIN_PD13, 6, 4)
|
||||
#define PIN_PD14 110
|
||||
#define PIN_PD14__GPIO PINMUX_PIN(PIN_PD14, 0, 0)
|
||||
#define PIN_PD14__TCK PINMUX_PIN(PIN_PD14, 1, 1)
|
||||
#define PIN_PD14__FLEXCOM4_IO2 PINMUX_PIN(PIN_PD14, 2, 2)
|
||||
#define PIN_PD14__UTMI_CDRPCSEL1 PINMUX_PIN(PIN_PD14, 3, 1)
|
||||
#define PIN_PD14__GRX1 PINMUX_PIN(PIN_PD14, 4, 2)
|
||||
#define PIN_PD14__ISC_D7 PINMUX_PIN(PIN_PD14, 5, 2)
|
||||
#define PIN_PD14__ISC_D6 PINMUX_PIN(PIN_PD14, 6, 4)
|
||||
#define PIN_PD15 111
|
||||
#define PIN_PD15__GPIO PINMUX_PIN(PIN_PD15, 0, 0)
|
||||
#define PIN_PD15__TDI PINMUX_PIN(PIN_PD15, 1, 1)
|
||||
#define PIN_PD15__FLEXCOM4_IO3 PINMUX_PIN(PIN_PD15, 2, 2)
|
||||
#define PIN_PD15__UTMI_CDRCPDIVEN PINMUX_PIN(PIN_PD15, 3, 1)
|
||||
#define PIN_PD15__GTX0 PINMUX_PIN(PIN_PD15, 4, 2)
|
||||
#define PIN_PD15__ISC_PCK PINMUX_PIN(PIN_PD15, 5, 2)
|
||||
#define PIN_PD15__ISC_D7 PINMUX_PIN(PIN_PD15, 6, 4)
|
||||
#define PIN_PD16 112
|
||||
#define PIN_PD16__GPIO PINMUX_PIN(PIN_PD16, 0, 0)
|
||||
#define PIN_PD16__TDO PINMUX_PIN(PIN_PD16, 1, 1)
|
||||
#define PIN_PD16__FLEXCOM4_IO4 PINMUX_PIN(PIN_PD16, 2, 2)
|
||||
#define PIN_PD16__UTMI_CDRBISTEN PINMUX_PIN(PIN_PD16, 3, 1)
|
||||
#define PIN_PD16__GTX1 PINMUX_PIN(PIN_PD16, 4, 2)
|
||||
#define PIN_PD16__ISC_VSYNC PINMUX_PIN(PIN_PD16, 5, 2)
|
||||
#define PIN_PD16__ISC_D8 PINMUX_PIN(PIN_PD16, 6, 4)
|
||||
#define PIN_PD17 113
|
||||
#define PIN_PD17__GPIO PINMUX_PIN(PIN_PD17, 0, 0)
|
||||
#define PIN_PD17__TMS PINMUX_PIN(PIN_PD17, 1, 1)
|
||||
#define PIN_PD17__UTMI_CDRCPSELDIV PINMUX_PIN(PIN_PD17, 3, 1)
|
||||
#define PIN_PD17__GMDC PINMUX_PIN(PIN_PD17, 4, 2)
|
||||
#define PIN_PD17__ISC_HSYNC PINMUX_PIN(PIN_PD17, 5, 2)
|
||||
#define PIN_PD17__ISC_D9 PINMUX_PIN(PIN_PD17, 6, 4)
|
||||
#define PIN_PD18 114
|
||||
#define PIN_PD18__GPIO PINMUX_PIN(PIN_PD18, 0, 0)
|
||||
#define PIN_PD18__NTRST PINMUX_PIN(PIN_PD18, 1, 1)
|
||||
#define PIN_PD18__GMDIO PINMUX_PIN(PIN_PD18, 4, 2)
|
||||
#define PIN_PD18__ISC_FIELD PINMUX_PIN(PIN_PD18, 5, 2)
|
||||
#define PIN_PD18__ISC_D10 PINMUX_PIN(PIN_PD18, 6, 4)
|
||||
#define PIN_PD19 115
|
||||
#define PIN_PD19__GPIO PINMUX_PIN(PIN_PD19, 0, 0)
|
||||
#define PIN_PD19__PCK0 PINMUX_PIN(PIN_PD19, 1, 1)
|
||||
#define PIN_PD19__TWD1 PINMUX_PIN(PIN_PD19, 2, 3)
|
||||
#define PIN_PD19__URXD2 PINMUX_PIN(PIN_PD19, 3, 3)
|
||||
#define PIN_PD19__I2SC0_CK PINMUX_PIN(PIN_PD19, 5, 2)
|
||||
#define PIN_PD19__ISC_D11 PINMUX_PIN(PIN_PD19, 6, 4)
|
||||
#define PIN_PD20 116
|
||||
#define PIN_PD20__GPIO PINMUX_PIN(PIN_PD20, 0, 0)
|
||||
#define PIN_PD20__TIOA2 PINMUX_PIN(PIN_PD20, 1, 3)
|
||||
#define PIN_PD20__TWCK1 PINMUX_PIN(PIN_PD20, 2, 3)
|
||||
#define PIN_PD20__UTXD2 PINMUX_PIN(PIN_PD20, 3, 3)
|
||||
#define PIN_PD20__I2SC0_MCK PINMUX_PIN(PIN_PD20, 5, 2)
|
||||
#define PIN_PD20__ISC_PCK PINMUX_PIN(PIN_PD20, 6, 4)
|
||||
#define PIN_PD21 117
|
||||
#define PIN_PD21__GPIO PINMUX_PIN(PIN_PD21, 0, 0)
|
||||
#define PIN_PD21__TIOB2 PINMUX_PIN(PIN_PD21, 1, 3)
|
||||
#define PIN_PD21__TWD0 PINMUX_PIN(PIN_PD21, 2, 4)
|
||||
#define PIN_PD21__FLEXCOM4_IO0 PINMUX_PIN(PIN_PD21, 3, 3)
|
||||
#define PIN_PD21__I2SC0_WS PINMUX_PIN(PIN_PD21, 5, 2)
|
||||
#define PIN_PD21__ISC_VSYNC PINMUX_PIN(PIN_PD21, 6, 4)
|
||||
#define PIN_PD22 118
|
||||
#define PIN_PD22__GPIO PINMUX_PIN(PIN_PD22, 0, 0)
|
||||
#define PIN_PD22__TCLK2 PINMUX_PIN(PIN_PD22, 1, 3)
|
||||
#define PIN_PD22__TWCK0 PINMUX_PIN(PIN_PD22, 2, 4)
|
||||
#define PIN_PD22__FLEXCOM4_IO1 PINMUX_PIN(PIN_PD22, 3, 3)
|
||||
#define PIN_PD22__I2SC0_DI0 PINMUX_PIN(PIN_PD22, 5, 2)
|
||||
#define PIN_PD22__ISC_HSYNC PINMUX_PIN(PIN_PD22, 6, 4)
|
||||
#define PIN_PD23 119
|
||||
#define PIN_PD23__GPIO PINMUX_PIN(PIN_PD23, 0, 0)
|
||||
#define PIN_PD23__URXD2 PINMUX_PIN(PIN_PD23, 1, 2)
|
||||
#define PIN_PD23__FLEXCOM4_IO2 PINMUX_PIN(PIN_PD23, 3, 3)
|
||||
#define PIN_PD23__I2SC0_DO0 PINMUX_PIN(PIN_PD23, 5, 2)
|
||||
#define PIN_PD23__ISC_FIELD PINMUX_PIN(PIN_PD23, 6, 4)
|
||||
#define PIN_PD24 120
|
||||
#define PIN_PD24__GPIO PINMUX_PIN(PIN_PD24, 0, 0)
|
||||
#define PIN_PD24__UTXD2 PINMUX_PIN(PIN_PD23, 1, 2)
|
||||
#define PIN_PD24__FLEXCOM4_IO3 PINMUX_PIN(PIN_PD23, 3, 3)
|
||||
#define PIN_PD25 121
|
||||
#define PIN_PD25__GPIO PINMUX_PIN(PIN_PD25, 0, 0)
|
||||
#define PIN_PD25__SPI1_SPCK PINMUX_PIN(PIN_PD25, 1, 3)
|
||||
#define PIN_PD25__FLEXCOM4_IO4 PINMUX_PIN(PIN_PD25, 3, 3)
|
||||
#define PIN_PD26 122
|
||||
#define PIN_PD26__GPIO PINMUX_PIN(PIN_PD26, 0, 0)
|
||||
#define PIN_PD26__SPI1_MOSI PINMUX_PIN(PIN_PD26, 1, 3)
|
||||
#define PIN_PD26__FLEXCOM2_IO0 PINMUX_PIN(PIN_PD26, 3, 2)
|
||||
#define PIN_PD27 123
|
||||
#define PIN_PD27__GPIO PINMUX_PIN(PIN_PD27, 0, 0)
|
||||
#define PIN_PD27__SPI1_MISO PINMUX_PIN(PIN_PD27, 1, 3)
|
||||
#define PIN_PD27__TCK PINMUX_PIN(PIN_PD27, 2, 3)
|
||||
#define PIN_PD27__FLEXCOM2_IO1 PINMUX_PIN(PIN_PD27, 3, 2)
|
||||
#define PIN_PD28 124
|
||||
#define PIN_PD28__GPIO PINMUX_PIN(PIN_PD28, 0, 0)
|
||||
#define PIN_PD28__SPI1_NPCS0 PINMUX_PIN(PIN_PD28, 1, 3)
|
||||
#define PIN_PD28__TCI PINMUX_PIN(PIN_PD28, 2, 3)
|
||||
#define PIN_PD28__FLEXCOM2_IO2 PINMUX_PIN(PIN_PD28, 3, 2)
|
||||
#define PIN_PD29 125
|
||||
#define PIN_PD29__GPIO PINMUX_PIN(PIN_PD29, 0, 0)
|
||||
#define PIN_PD29__SPI1_NPCS1 PINMUX_PIN(PIN_PD29, 1, 3)
|
||||
#define PIN_PD29__TDO PINMUX_PIN(PIN_PD29, 2, 3)
|
||||
#define PIN_PD29__FLEXCOM2_IO3 PINMUX_PIN(PIN_PD29, 3, 2)
|
||||
#define PIN_PD29__TIOA3 PINMUX_PIN(PIN_PD29, 4, 3)
|
||||
#define PIN_PD29__TWD0 PINMUX_PIN(PIN_PD29, 5, 3)
|
||||
#define PIN_PD30 126
|
||||
#define PIN_PD30__GPIO PINMUX_PIN(PIN_PD30, 0, 0)
|
||||
#define PIN_PD30__SPI1_NPCS2 PINMUX_PIN(PIN_PD30, 1, 3)
|
||||
#define PIN_PD30__TMS PINMUX_PIN(PIN_PD30, 2, 3)
|
||||
#define PIN_PD30__FLEXCOM2_IO4 PINMUX_PIN(PIN_PD30, 3, 2)
|
||||
#define PIN_PD30__TIOB3 PINMUX_PIN(PIN_PD30, 4, 3)
|
||||
#define PIN_PD30__TWCK0 PINMUX_PIN(PIN_PD30, 5, 3)
|
||||
#define PIN_PD31 127
|
||||
#define PIN_PD31__GPIO PINMUX_PIN(PIN_PD31, 0, 0)
|
||||
#define PIN_PD31__ADTRG PINMUX_PIN(PIN_PD31, 1, 1)
|
||||
#define PIN_PD31__NTRST PINMUX_PIN(PIN_PD31, 2, 3)
|
||||
#define PIN_PD31__IRQ PINMUX_PIN(PIN_PD31, 3, 4)
|
||||
#define PIN_PD31__TCLK3 PINMUX_PIN(PIN_PD31, 4, 3)
|
||||
#define PIN_PD31__PCK0 PINMUX_PIN(PIN_PD31, 5, 2)
|
||||
671
arch/arm/dts/sama5d2.dtsi
Normal file
671
arch/arm/dts/sama5d2.dtsi
Normal file
@@ -0,0 +1,671 @@
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Atmel SAMA5D2 family SoC";
|
||||
compatible = "atmel,sama5d2";
|
||||
|
||||
aliases {
|
||||
spi0 = &spi0;
|
||||
spi1 = &qspi0;
|
||||
i2c0 = &i2c0;
|
||||
i2c1 = &i2c1;
|
||||
};
|
||||
|
||||
clocks {
|
||||
slow_xtal: slow_xtal {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <0>;
|
||||
};
|
||||
|
||||
main_xtal: main_xtal {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
ahb {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
usb1: ohci@00400000 {
|
||||
compatible = "atmel,at91rm9200-ohci", "usb-ohci";
|
||||
reg = <0x00400000 0x100000>;
|
||||
clocks = <&uhphs_clk>, <&uhphs_clk>, <&uhpck>;
|
||||
clock-names = "ohci_clk", "hclk", "uhpck";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb2: ehci@00500000 {
|
||||
compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
|
||||
reg = <0x00500000 0x100000>;
|
||||
clocks = <&utmi>, <&uhphs_clk>;
|
||||
clock-names = "usb_clk", "ehci_clk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdmmc0: sdio-host@a0000000 {
|
||||
compatible = "atmel,sama5d2-sdhci";
|
||||
reg = <0xa0000000 0x300>;
|
||||
clocks = <&sdmmc0_hclk>, <&sdmmc0_gclk>, <&main>;
|
||||
clock-names = "hclock", "multclk", "baseclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdmmc1: sdio-host@b0000000 {
|
||||
compatible = "atmel,sama5d2-sdhci";
|
||||
reg = <0xb0000000 0x300>;
|
||||
clocks = <&sdmmc1_hclk>, <&sdmmc1_gclk>, <&main>;
|
||||
clock-names = "hclock", "multclk", "baseclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
apb {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
pmc: pmc@f0014000 {
|
||||
compatible = "atmel,sama5d2-pmc", "syscon";
|
||||
reg = <0xf0014000 0x160>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
main: mainck {
|
||||
compatible = "atmel,at91sam9x5-clk-main";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
plla: pllack {
|
||||
compatible = "atmel,sama5d3-clk-pll";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&main>;
|
||||
reg = <0>;
|
||||
atmel,clk-input-range = <12000000 12000000>;
|
||||
#atmel,pll-clk-output-range-cells = <4>;
|
||||
atmel,pll-clk-output-ranges = <600000000 1200000000 0 0>;
|
||||
};
|
||||
|
||||
plladiv: plladivck {
|
||||
compatible = "atmel,at91sam9x5-clk-plldiv";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&plla>;
|
||||
};
|
||||
|
||||
audio_pll_frac: audiopll_fracck {
|
||||
compatible = "atmel,sama5d2-clk-audio-pll-frac";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&main>;
|
||||
};
|
||||
|
||||
audio_pll_pad: audiopll_padck {
|
||||
compatible = "atmel,sama5d2-clk-audio-pll-pad";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&audio_pll_frac>;
|
||||
};
|
||||
|
||||
audio_pll_pmc: audiopll_pmcck {
|
||||
compatible = "atmel,sama5d2-clk-audio-pll-pmc";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&audio_pll_frac>;
|
||||
};
|
||||
|
||||
utmi: utmick {
|
||||
compatible = "atmel,at91sam9x5-clk-utmi";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&main>;
|
||||
};
|
||||
|
||||
mck: masterck {
|
||||
compatible = "atmel,at91sam9x5-clk-master";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&main>, <&plladiv>, <&utmi>;
|
||||
atmel,clk-output-range = <124000000 166000000>;
|
||||
atmel,clk-divisors = <1 2 4 3>;
|
||||
};
|
||||
|
||||
h32ck: h32mxck {
|
||||
#clock-cells = <0>;
|
||||
compatible = "atmel,sama5d4-clk-h32mx";
|
||||
clocks = <&mck>;
|
||||
};
|
||||
|
||||
usb: usbck {
|
||||
compatible = "atmel,at91sam9x5-clk-usb";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&plladiv>, <&utmi>;
|
||||
};
|
||||
|
||||
prog: progck {
|
||||
compatible = "atmel,at91sam9x5-clk-programmable";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupt-parent = <&pmc>;
|
||||
clocks = <&main>, <&plladiv>, <&utmi>, <&mck>;
|
||||
|
||||
prog0: prog0 {
|
||||
#clock-cells = <0>;
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
prog1: prog1 {
|
||||
#clock-cells = <0>;
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
prog2: prog2 {
|
||||
#clock-cells = <0>;
|
||||
reg = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
systemck {
|
||||
compatible = "atmel,at91rm9200-clk-system";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ddrck: ddrck {
|
||||
#clock-cells = <0>;
|
||||
reg = <2>;
|
||||
clocks = <&mck>;
|
||||
};
|
||||
|
||||
lcdck: lcdck {
|
||||
#clock-cells = <0>;
|
||||
reg = <3>;
|
||||
clocks = <&mck>;
|
||||
};
|
||||
|
||||
uhpck: uhpck {
|
||||
#clock-cells = <0>;
|
||||
reg = <6>;
|
||||
clocks = <&usb>;
|
||||
};
|
||||
|
||||
udpck: udpck {
|
||||
#clock-cells = <0>;
|
||||
reg = <7>;
|
||||
clocks = <&usb>;
|
||||
};
|
||||
|
||||
pck0: pck0 {
|
||||
#clock-cells = <0>;
|
||||
reg = <8>;
|
||||
clocks = <&prog0>;
|
||||
};
|
||||
|
||||
pck1: pck1 {
|
||||
#clock-cells = <0>;
|
||||
reg = <9>;
|
||||
clocks = <&prog1>;
|
||||
};
|
||||
|
||||
pck2: pck2 {
|
||||
#clock-cells = <0>;
|
||||
reg = <10>;
|
||||
clocks = <&prog2>;
|
||||
};
|
||||
|
||||
iscck: iscck {
|
||||
#clock-cells = <0>;
|
||||
reg = <18>;
|
||||
clocks = <&mck>;
|
||||
};
|
||||
};
|
||||
|
||||
periph32ck {
|
||||
compatible = "atmel,at91sam9x5-clk-peripheral";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&h32ck>;
|
||||
|
||||
macb0_clk: macb0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <5>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
tdes_clk: tdes_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <11>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
matrix1_clk: matrix1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <14>;
|
||||
};
|
||||
|
||||
hsmc_clk: hsmc_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <17>;
|
||||
};
|
||||
|
||||
pioA_clk: pioA_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <18>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
flx0_clk: flx0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <19>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
flx1_clk: flx1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <20>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
flx2_clk: flx2_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <21>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
flx3_clk: flx3_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <22>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
flx4_clk: flx4_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <23>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
uart0_clk: uart0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <24>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
uart1_clk: uart1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <25>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
uart2_clk: uart2_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <26>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
uart3_clk: uart3_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <27>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
uart4_clk: uart4_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <28>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
twi0_clk: twi0_clk {
|
||||
reg = <29>;
|
||||
#clock-cells = <0>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
twi1_clk: twi1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <30>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
spi0_clk: spi0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <33>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
spi1_clk: spi1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <34>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
tcb0_clk: tcb0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <35>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
tcb1_clk: tcb1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <36>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
pwm_clk: pwm_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <38>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
adc_clk: adc_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <40>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
uhphs_clk: uhphs_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <41>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
udphs_clk: udphs_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <42>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
ssc0_clk: ssc0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <43>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
ssc1_clk: ssc1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <44>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
trng_clk: trng_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <47>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
pdmic_clk: pdmic_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <48>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
i2s0_clk: i2s0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <54>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
i2s1_clk: i2s1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <55>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
can0_clk: can0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <56>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
can1_clk: can1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <57>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
classd_clk: classd_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <59>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
};
|
||||
|
||||
periph64ck {
|
||||
compatible = "atmel,at91sam9x5-clk-peripheral";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&mck>;
|
||||
|
||||
dma0_clk: dma0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <6>;
|
||||
};
|
||||
|
||||
dma1_clk: dma1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <7>;
|
||||
};
|
||||
|
||||
aes_clk: aes_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <9>;
|
||||
};
|
||||
|
||||
aesb_clk: aesb_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <10>;
|
||||
};
|
||||
|
||||
sha_clk: sha_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <12>;
|
||||
};
|
||||
|
||||
mpddr_clk: mpddr_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <13>;
|
||||
};
|
||||
|
||||
matrix0_clk: matrix0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <15>;
|
||||
};
|
||||
|
||||
sdmmc0_hclk: sdmmc0_hclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <31>;
|
||||
};
|
||||
|
||||
sdmmc1_hclk: sdmmc1_hclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <32>;
|
||||
};
|
||||
|
||||
lcdc_clk: lcdc_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <45>;
|
||||
};
|
||||
|
||||
isc_clk: isc_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <46>;
|
||||
};
|
||||
|
||||
qspi0_clk: qspi0_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <52>;
|
||||
};
|
||||
|
||||
qspi1_clk: qspi1_clk {
|
||||
#clock-cells = <0>;
|
||||
reg = <53>;
|
||||
};
|
||||
};
|
||||
|
||||
gck {
|
||||
compatible = "atmel,sama5d2-clk-generated";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupt-parent = <&pmc>;
|
||||
clocks = <&main>, <&plla>, <&utmi>, <&mck>;
|
||||
|
||||
sdmmc0_gclk: sdmmc0_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <31>;
|
||||
};
|
||||
|
||||
sdmmc1_gclk: sdmmc1_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <32>;
|
||||
};
|
||||
|
||||
tcb0_gclk: tcb0_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <35>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
tcb1_gclk: tcb1_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <36>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
pwm_gclk: pwm_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <38>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
};
|
||||
|
||||
pdmic_gclk: pdmic_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <48>;
|
||||
};
|
||||
|
||||
i2s0_gclk: i2s0_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <54>;
|
||||
};
|
||||
|
||||
i2s1_gclk: i2s1_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <55>;
|
||||
};
|
||||
|
||||
can0_gclk: can0_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <56>;
|
||||
atmel,clk-output-range = <0 80000000>;
|
||||
};
|
||||
|
||||
can1_gclk: can1_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <57>;
|
||||
atmel,clk-output-range = <0 80000000>;
|
||||
};
|
||||
|
||||
classd_gclk: classd_gclk {
|
||||
#clock-cells = <0>;
|
||||
reg = <59>;
|
||||
atmel,clk-output-range = <0 100000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
qspi0: spi@f0020000 {
|
||||
compatible = "atmel,sama5d2-qspi";
|
||||
reg = <0xf0020000 0x100>, <0xd0000000 0x08000000>;
|
||||
reg-names = "qspi_base", "qspi_mmap";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&qspi0_clk>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi0: spi@f8000000 {
|
||||
compatible = "atmel,at91rm9200-spi";
|
||||
reg = <0xf8000000 0x100>;
|
||||
clocks = <&spi0_clk>;
|
||||
clock-names = "spi_clk";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
macb0: ethernet@f8008000 {
|
||||
compatible = "cdns,macb";
|
||||
reg = <0xf8008000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&macb0_clk>, <&macb0_clk>;
|
||||
clock-names = "hclk", "pclk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart1: serial@f8020000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xf8020000 0x100>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@f8028000 {
|
||||
compatible = "atmel,sama5d2-i2c";
|
||||
reg = <0xf8028000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&twi0_clk>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sckc@f8048050 {
|
||||
compatible = "atmel,at91sam9x5-sckc";
|
||||
reg = <0xf8048050 0x4>;
|
||||
|
||||
slow_rc_osc: slow_rc_osc {
|
||||
compatible = "atmel,at91sam9x5-clk-slow-rc-osc";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-accuracy = <250000000>;
|
||||
atmel,startup-time-usec = <75>;
|
||||
};
|
||||
|
||||
slow_osc: slow_osc {
|
||||
compatible = "atmel,at91sam9x5-clk-slow-osc";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&slow_xtal>;
|
||||
atmel,startup-time-usec = <1200000>;
|
||||
};
|
||||
|
||||
clk32k: slowck {
|
||||
compatible = "atmel,at91sam9x5-clk-slow";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&slow_rc_osc &slow_osc>;
|
||||
};
|
||||
};
|
||||
|
||||
spi1: spi@fc000000 {
|
||||
compatible = "atmel,at91rm9200-spi";
|
||||
reg = <0xfc000000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@fc028000 {
|
||||
compatible = "atmel,sama5d2-i2c";
|
||||
reg = <0xfc028000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&twi1_clk>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pioA: gpio@fc038000 {
|
||||
compatible = "atmel,sama5d2-gpio";
|
||||
reg = <0xfc038000 0x600>;
|
||||
clocks = <&pioA_clk>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
pinctrl {
|
||||
compatible = "atmel,sama5d2-pinctrl";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -94,6 +94,17 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&emac {
|
||||
phy = <&phy1>;
|
||||
phy-mode = "mii";
|
||||
allwinner,use-internal-phy;
|
||||
allwinner,leds-active-low;
|
||||
status = "okay";
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
|
||||
|
||||
87
arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts
Normal file
87
arch/arm/dts/sun8i-h3-orangepi-pc-plus.dts
Normal file
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Hans de Goede <hdegoede@redhat.com>
|
||||
*
|
||||
* This file is dual-licensed: you can use it either under the terms
|
||||
* of the GPL or the X11 license, at your option. Note that this dual
|
||||
* licensing only applies to this file, and not this project as a
|
||||
* whole.
|
||||
*
|
||||
* a) This file is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* Or, alternatively,
|
||||
*
|
||||
* b) Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* The Orange Pi PC Plus is an extended version of the regular PC */
|
||||
#include "sun8i-h3-orangepi-pc.dts"
|
||||
|
||||
/ {
|
||||
model = "Xunlong Orange Pi PC / PC Plus";
|
||||
|
||||
aliases {
|
||||
/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
|
||||
ethernet1 = &rtl8189ftv;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc1_pins_a>;
|
||||
vmmc-supply = <®_vcc3v3>;
|
||||
bus-width = <4>;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
|
||||
/*
|
||||
* Explicitly define the sdio device, so that we can add an ethernet
|
||||
* alias for it (which e.g. makes u-boot set a mac-address).
|
||||
*/
|
||||
rtl8189ftv: sdio_wifi@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc2_8bit_pins>;
|
||||
vmmc-supply = <®_vcc3v3>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
cap-mmc-hw-reset;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc2_8bit_pins {
|
||||
/* Increase drive strength for DDR modes */
|
||||
allwinner,drive = <SUN4I_PINCTRL_40_MA>;
|
||||
/* eMMC is missing pull-ups */
|
||||
allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||
};
|
||||
@@ -48,6 +48,10 @@
|
||||
/ {
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
aliases {
|
||||
ethernet0 = <&emac>;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
@@ -5,4 +5,28 @@
|
||||
/ {
|
||||
model = "NVIDIA P2771-0000 A02";
|
||||
compatible = "nvidia,p2771-0000-a02", "nvidia,p2771-0000", "nvidia,tegra186";
|
||||
|
||||
sdhci@3400000 {
|
||||
cd-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 6) GPIO_ACTIVE_LOW>;
|
||||
power-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 5) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pcie-controller@10003000 {
|
||||
status = "okay";
|
||||
|
||||
pci@1,0 {
|
||||
status = "okay";
|
||||
nvidia,num-lanes = <2>;
|
||||
};
|
||||
|
||||
pci@2,0 {
|
||||
status = "disabled";
|
||||
nvidia,num-lanes = <1>;
|
||||
};
|
||||
|
||||
pci@3,0 {
|
||||
status = "okay";
|
||||
nvidia,num-lanes = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -5,4 +5,28 @@
|
||||
/ {
|
||||
model = "NVIDIA P2771-0000 B00";
|
||||
compatible = "nvidia,p2771-0000-b00", "nvidia,p2771-0000", "nvidia,tegra186";
|
||||
|
||||
sdhci@3400000 {
|
||||
cd-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 5) GPIO_ACTIVE_LOW>;
|
||||
power-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 6) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pcie-controller@10003000 {
|
||||
status = "okay";
|
||||
|
||||
pci@1,0 {
|
||||
status = "okay";
|
||||
nvidia,num-lanes = <4>;
|
||||
};
|
||||
|
||||
pci@2,0 {
|
||||
status = "disabled";
|
||||
nvidia,num-lanes = <0>;
|
||||
};
|
||||
|
||||
pci@3,0 {
|
||||
status = "disabled";
|
||||
nvidia,num-lanes = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,14 +10,63 @@
|
||||
|
||||
aliases {
|
||||
sdhci0 = "/sdhci@3460000";
|
||||
sdhci1 = "/sdhci@3400000";
|
||||
i2c0 = "/bpmp/i2c";
|
||||
i2c1 = "/i2c@3160000";
|
||||
i2c2 = "/i2c@c240000";
|
||||
i2c3 = "/i2c@3180000";
|
||||
i2c4 = "/i2c@3190000";
|
||||
i2c5 = "/i2c@31c0000";
|
||||
i2c6 = "/i2c@c250000";
|
||||
i2c7 = "/i2c@31e0000";
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x0 0x80000000 0x0 0x60000000>;
|
||||
};
|
||||
|
||||
i2c@3160000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@3180000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@3190000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@31c0000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdhci@3400000 {
|
||||
status = "okay";
|
||||
wp-gpios = <&gpio_main TEGRA_MAIN_GPIO(P, 4) GPIO_ACTIVE_HIGH>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
sdhci@3460000 {
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
i2c@c240000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@c250000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
i2c@31e0000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
bpmp {
|
||||
i2c {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
#include "skeleton.dtsi"
|
||||
#include <dt-bindings/clock/tegra186-clock.h>
|
||||
#include <dt-bindings/gpio/tegra186-gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/mailbox/tegra-hsp.h>
|
||||
#include <dt-bindings/mailbox/tegra186-hsp.h>
|
||||
#include <dt-bindings/power/tegra186-powergate.h>
|
||||
#include <dt-bindings/reset/tegra186-reset.h>
|
||||
|
||||
/ {
|
||||
compatible = "nvidia,tegra186";
|
||||
interrupt-parent = <&gic>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
gpio@2200000 {
|
||||
gpio_main: gpio@2200000 {
|
||||
compatible = "nvidia,tegra186-gpio";
|
||||
reg-names = "security", "gpio";
|
||||
reg =
|
||||
@@ -34,26 +38,154 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gen1_i2c: i2c@3160000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0x3160000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C1>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C1>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
cam_i2c: i2c@3180000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0x3180000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C3>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C3>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
dp_aux_ch1_i2c: i2c@3190000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0x3190000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C4>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C4>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
dp_aux_ch0_i2c: i2c@31b0000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0x31b0000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C6>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C6>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gen7_i2c: i2c@31c0000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0x31c0000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C7>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C7>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gen9_i2c: i2c@31e0000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0x31e0000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C9>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C9>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@3400000 {
|
||||
compatible = "nvidia,tegra186-sdhci";
|
||||
reg = <0x0 0x03400000 0x0 0x200>;
|
||||
resets = <&bpmp TEGRA186_RESET_SDMMC1>;
|
||||
reset-names = "sdmmc";
|
||||
clocks = <&bpmp TEGRA186_CLK_SDMMC1>;
|
||||
clock-names = "sdmmc";
|
||||
interrupts = <GIC_SPI 62 0x04>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci@3460000 {
|
||||
compatible = "nvidia,tegra186-sdhci";
|
||||
reg = <0x0 0x03460000 0x0 0x200>;
|
||||
resets = <&bpmp TEGRA186_RESET_SDMMC4>;
|
||||
reset-names = "sdmmc";
|
||||
clocks = <&bpmp TEGRA186_CLK_SDMMC4>;
|
||||
clock-names = "sdmmc";
|
||||
interrupts = <GIC_SPI 31 0x04>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gic: interrupt-controller@3881000 {
|
||||
compatible = "arm,gic-400";
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-controller;
|
||||
reg = <0x0 0x3881000 0x0 0x1000>,
|
||||
<0x0 0x3882000 0x0 0x2000>,
|
||||
<0x0 0x3884000 0x0 0x2000>,
|
||||
<0x0 0x3886000 0x0 0x2000>;
|
||||
interrupts = <GIC_PPI 9
|
||||
(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
interrupt-parent = <&gic>;
|
||||
};
|
||||
|
||||
hsp: hsp@3c00000 {
|
||||
compatible = "nvidia,tegra186-hsp";
|
||||
reg = <0x0 0x03c00000 0x0 0xa0000>;
|
||||
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
||||
nvidia,num-SM = <0x8>;
|
||||
nvidia,num-AS = <0x2>;
|
||||
nvidia,num-SS = <0x2>;
|
||||
nvidia,num-DB = <0x7>;
|
||||
nvidia,num-SI = <0x8>;
|
||||
#mbox-cells = <1>;
|
||||
interrupt-names = "doorbell";
|
||||
#mbox-cells = <2>;
|
||||
};
|
||||
|
||||
gpio@c2f0000 {
|
||||
gen2_i2c: i2c@c240000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0xc240000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C2>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C2>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gen8_i2c: i2c@c250000 {
|
||||
compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
|
||||
reg = <0x0 0xc250000 0x0 0x100>;
|
||||
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&bpmp TEGRA186_CLK_I2C8>;
|
||||
clock-names = "i2c";
|
||||
resets = <&bpmp TEGRA186_RESET_I2C8>;
|
||||
reset-names = "i2c";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio_aon: gpio@c2f0000 {
|
||||
compatible = "nvidia,tegra186-gpio-aon";
|
||||
reg-names = "security", "gpio";
|
||||
reg =
|
||||
@@ -66,4 +198,124 @@
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
pcie-controller@10003000 {
|
||||
compatible = "nvidia,tegra186-pcie";
|
||||
device_type = "pci";
|
||||
reg = <0x0 0x10003000 0x0 0x00000800 /* PADS registers */
|
||||
0x0 0x10003800 0x0 0x00000800 /* AFI registers */
|
||||
0x0 0x40000000 0x0 0x10000000>; /* configuration space */
|
||||
reg-names = "pads", "afi", "cs";
|
||||
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
|
||||
<GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, /* MSI interrupt */
|
||||
<GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; /* Wake interrupt */
|
||||
interrupt-names = "intr", "msi", "wake";
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
bus-range = <0x00 0xff>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000 /* port 0 configuration space */
|
||||
0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000 /* port 1 configuration space */
|
||||
0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000 /* port 2 configuration space */
|
||||
0x81000000 0 0x0 0x0 0x50000000 0 0x00010000 /* downstream I/O (64 KiB) */
|
||||
0x82000000 0 0x50100000 0x0 0x50100000 0 0x07f00000 /* non-prefetchable memory (127 MiB) */
|
||||
0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */
|
||||
|
||||
clocks = <&bpmp TEGRA186_CLK_PCIE>,
|
||||
<&bpmp TEGRA186_CLK_AFI>;
|
||||
clock-names = "pex", "afi";
|
||||
resets = <&bpmp TEGRA186_RESET_PCIE>,
|
||||
<&bpmp TEGRA186_RESET_AFI>,
|
||||
<&bpmp TEGRA186_RESET_PCIEXCLK>;
|
||||
reset-names = "pex", "afi", "pcie_x";
|
||||
power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>;
|
||||
status = "disabled";
|
||||
|
||||
pci@1,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>;
|
||||
reg = <0x000800 0 0 0 0>;
|
||||
status = "disabled";
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
nvidia,num-lanes = <2>;
|
||||
};
|
||||
|
||||
pci@2,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>;
|
||||
reg = <0x001000 0 0 0 0>;
|
||||
status = "disabled";
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
nvidia,num-lanes = <1>;
|
||||
};
|
||||
|
||||
pci@3,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>;
|
||||
reg = <0x001800 0 0 0 0>;
|
||||
status = "disabled";
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
nvidia,num-lanes = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
sysram@30000000 {
|
||||
compatible = "nvidia,tegra186-sysram", "mmio-sram";
|
||||
reg = <0x0 0x30000000 0x0 0x50000>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0 0x0 0x0 0x30000000 0x0 0x50000>;
|
||||
|
||||
sysram_cpu_bpmp_tx: shmem@4e000 {
|
||||
compatible = "nvidia,tegra186-bpmp-shmem";
|
||||
reg = <0x0 0x4e000 0x0 0x1000>;
|
||||
};
|
||||
|
||||
sysram_cpu_bpmp_rx: shmem@4f000 {
|
||||
compatible = "nvidia,tegra186-bpmp-shmem";
|
||||
reg = <0x0 0x4f000 0x0 0x1000>;
|
||||
};
|
||||
};
|
||||
|
||||
bpmp: bpmp {
|
||||
compatible = "nvidia,tegra186-bpmp";
|
||||
mboxes = <&hsp HSP_MBOX_TYPE_DB HSP_DB_MASTER_BPMP>;
|
||||
/*
|
||||
* In theory, these references, and the configuration in the
|
||||
* node these reference point at, are board-specific, since
|
||||
* they depend on the BCT's memory carve-out setup, the
|
||||
* firmware that's actually loaded onto the BPMP, etc. However,
|
||||
* in practice, all boards are likely to use identical values.
|
||||
*/
|
||||
shmem = <&sysram_cpu_bpmp_tx &sysram_cpu_bpmp_rx>;
|
||||
#clock-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
|
||||
bpmp_i2c: i2c {
|
||||
compatible = "nvidia,tegra186-bpmp-i2c";
|
||||
nvidia,bpmp = <&bpmp>;
|
||||
nvidia,bpmp-bus-id = <5>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <100000000>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
clk125: clk125 {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <25000000>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
i2c_clk: i2c_clk {
|
||||
|
||||
@@ -149,43 +149,43 @@
|
||||
#define CONFIG_ARM_ERRATA_833471
|
||||
|
||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1
|
||||
#elif defined(CONFIG_LS1043A)
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#elif defined(CONFIG_FSL_LSCH2)
|
||||
#define CONFIG_SYS_CACHELINE_SIZE 64
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 1
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 5
|
||||
#define CONFIG_SYS_FSL_OCRAM_BASE 0x10000000 /* initial RAM */
|
||||
#define CONFIG_SYS_FSL_OCRAM_SIZE 0x00200000 /* 2M */
|
||||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0x01000000
|
||||
|
||||
#define CONFIG_SYS_FSL_CCSR_SCFG_BE
|
||||
#define CONFIG_SYS_FSL_ESDHC_BE
|
||||
#define CONFIG_SYS_FSL_WDOG_BE
|
||||
#define CONFIG_SYS_FSL_DSPI_BE
|
||||
#define CONFIG_SYS_FSL_QSPI_BE
|
||||
#define CONFIG_SYS_FSL_CCSR_GUR_BE
|
||||
#define CONFIG_SYS_FSL_PEX_LUT_BE
|
||||
#define CONFIG_SYS_FSL_SEC_BE
|
||||
|
||||
#define CONFIG_SYS_FSL_SRDS_1
|
||||
/* SoC related */
|
||||
#ifdef CONFIG_LS1043A
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FMAN_V3
|
||||
#define CONFIG_SYS_NUM_FMAN 1
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 7
|
||||
#define CONFIG_SYS_NUM_FM1_10GEC 1
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 1
|
||||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0x01000000
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 5
|
||||
#define CONFIG_SYS_FSL_OCRAM_BASE 0x10000000 /* initial RAM */
|
||||
#define CONFIG_SYS_FSL_OCRAM_SIZE 0x200000 /* 2 MiB */
|
||||
#define CONFIG_SYS_FSL_DDR_BE
|
||||
#define CONFIG_SYS_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
|
||||
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_DDR_BLOCK1_SIZE
|
||||
|
||||
#define CONFIG_SYS_FSL_CCSR_GUR_BE
|
||||
#define CONFIG_SYS_FSL_CCSR_SCFG_BE
|
||||
#define CONFIG_SYS_FSL_IFC_BE
|
||||
#define CONFIG_SYS_FSL_ESDHC_BE
|
||||
#define CONFIG_SYS_FSL_WDOG_BE
|
||||
#define CONFIG_SYS_FSL_DSPI_BE
|
||||
#define CONFIG_SYS_FSL_QSPI_BE
|
||||
#define CONFIG_SYS_FSL_PEX_LUT_BE
|
||||
|
||||
#define QE_MURAM_SIZE 0x6000UL
|
||||
#define MAX_QE_RISC 1
|
||||
#define QE_NUM_OF_SNUM 28
|
||||
|
||||
#define SRDS_MAX_LANES 4
|
||||
#define CONFIG_SYS_FSL_SRDS_1
|
||||
#define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4"
|
||||
|
||||
#define CONFIG_SYS_FSL_IFC_BE
|
||||
#define CONFIG_SYS_FSL_SFP_VER_3_2
|
||||
#define CONFIG_SYS_FSL_SEC_MON_BE
|
||||
#define CONFIG_SYS_FSL_SEC_BE
|
||||
#define CONFIG_SYS_FSL_SFP_BE
|
||||
#define CONFIG_SYS_FSL_SRK_LE
|
||||
#define CONFIG_KEY_REVOCATION
|
||||
@@ -205,32 +205,40 @@
|
||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1
|
||||
#elif defined(CONFIG_LS1012A)
|
||||
#define CONFIG_MAX_CPUS 1
|
||||
#define CONFIG_SYS_CACHELINE_SIZE 64
|
||||
#define CONFIG_NUM_DDR_CONTROLLERS 1
|
||||
#define CONFIG_SYS_CCSRBAR_DEFAULT 0x01000000
|
||||
#define CONFIG_SYS_FSL_SEC_COMPAT 5
|
||||
#undef CONFIG_SYS_FSL_DDRC_ARM_GEN3
|
||||
|
||||
#define CONFIG_SYS_FSL_OCRAM_BASE 0x10000000 /* initial RAM */
|
||||
#define CONFIG_SYS_FSL_OCRAM_SIZE 0x200000 /* 2 MiB */
|
||||
|
||||
#define GICD_BASE 0x01401000
|
||||
#define GICC_BASE 0x01402000
|
||||
#elif defined(CONFIG_LS1046A)
|
||||
#define CONFIG_MAX_CPUS 4
|
||||
#define CONFIG_SYS_FMAN_V3
|
||||
#define CONFIG_SYS_NUM_FMAN 1
|
||||
#define CONFIG_SYS_NUM_FM1_DTSEC 8
|
||||
#define CONFIG_SYS_NUM_FM1_10GEC 2
|
||||
#define CONFIG_SYS_FSL_IFC_BANK_COUNT 4
|
||||
#define CONFIG_SYS_FSL_DDR_BE
|
||||
#define CONFIG_SYS_DDR_BLOCK1_SIZE ((phys_size_t)2 << 30)
|
||||
#define CONFIG_MAX_MEM_MAPPED CONFIG_SYS_DDR_BLOCK1_SIZE
|
||||
|
||||
#define CONFIG_SYS_FSL_CCSR_GUR_BE
|
||||
#define CONFIG_SYS_FSL_CCSR_SCFG_BE
|
||||
#define CONFIG_SYS_FSL_ESDHC_BE
|
||||
#define CONFIG_SYS_FSL_WDOG_BE
|
||||
#define CONFIG_SYS_FSL_DSPI_BE
|
||||
#define CONFIG_SYS_FSL_QSPI_BE
|
||||
#define CONFIG_SYS_FSL_PEX_LUT_BE
|
||||
#define CONFIG_SYS_FSL_SRDS_2
|
||||
#define CONFIG_SYS_FSL_IFC_BE
|
||||
#define CONFIG_SYS_FSL_SFP_VER_3_2
|
||||
#define CONFIG_SYS_FSL_SNVS_LE
|
||||
#define CONFIG_SYS_FSL_SFP_BE
|
||||
#define CONFIG_SYS_FSL_SRK_LE
|
||||
#define CONFIG_KEY_REVOCATION
|
||||
|
||||
#define SRDS_MAX_LANES 4
|
||||
#define CONFIG_SYS_FSL_SRDS_1
|
||||
#define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.4"
|
||||
#define CONFIG_SYS_FSL_SEC_BE
|
||||
/* SMMU Defintions */
|
||||
#define SMMU_BASE 0x09000000
|
||||
|
||||
/* Generic Interrupt Controller Definitions */
|
||||
#define GICD_BASE 0x01410000
|
||||
#define GICC_BASE 0x01420000
|
||||
|
||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC 1
|
||||
#else
|
||||
#error SoC not defined
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_ARMV8_FSL_LAYERSCAPE_CONFIG_H_ */
|
||||
|
||||
@@ -13,6 +13,8 @@ static struct cpu_type cpu_type_list[] = {
|
||||
CPU_TYPE_ENTRY(LS2045A, LS2045A, 4),
|
||||
CPU_TYPE_ENTRY(LS1043A, LS1043A, 4),
|
||||
CPU_TYPE_ENTRY(LS1023A, LS1023A, 2),
|
||||
CPU_TYPE_ENTRY(LS1046A, LS1046A, 4),
|
||||
CPU_TYPE_ENTRY(LS1026A, LS1026A, 2),
|
||||
CPU_TYPE_ENTRY(LS2040A, LS2040A, 4),
|
||||
CPU_TYPE_ENTRY(LS1012A, LS1012A, 1),
|
||||
};
|
||||
|
||||
@@ -140,6 +140,7 @@ enum srds_prtcl {
|
||||
|
||||
enum srds {
|
||||
FSL_SRDS_1 = 0,
|
||||
FSL_SRDS_2 = 1,
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -150,7 +151,7 @@ int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
|
||||
enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
|
||||
int is_serdes_prtcl_valid(int serdes, u32 prtcl);
|
||||
|
||||
#ifdef CONFIG_LS1043A
|
||||
#ifdef CONFIG_FSL_LSCH2
|
||||
const char *serdes_clock_to_string(u32 clock);
|
||||
int get_serdes_protocol(void);
|
||||
#endif
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#define CONFIG_SYS_NS16550_COM2 (CONFIG_SYS_IMMR + 0x011c0600)
|
||||
#define CONFIG_SYS_NS16550_COM3 (CONFIG_SYS_IMMR + 0x011d0500)
|
||||
#define CONFIG_SYS_NS16550_COM4 (CONFIG_SYS_IMMR + 0x011d0600)
|
||||
#define CONFIG_SYS_LS1043A_XHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x01f00000)
|
||||
#define CONFIG_SYS_LS1043A_XHCI_USB2_ADDR (CONFIG_SYS_IMMR + 0x02000000)
|
||||
#define CONFIG_SYS_LS1043A_XHCI_USB3_ADDR (CONFIG_SYS_IMMR + 0x02100000)
|
||||
#define CONFIG_SYS_XHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x01f00000)
|
||||
#define CONFIG_SYS_XHCI_USB2_ADDR (CONFIG_SYS_IMMR + 0x02000000)
|
||||
#define CONFIG_SYS_XHCI_USB3_ADDR (CONFIG_SYS_IMMR + 0x02100000)
|
||||
#define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_IMMR + 0x2400000)
|
||||
#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_IMMR + 0x2500000)
|
||||
#define CONFIG_SYS_PCIE3_ADDR (CONFIG_SYS_IMMR + 0x2600000)
|
||||
@@ -94,6 +94,7 @@
|
||||
#define TY_ITYP_VER_A7 0x1
|
||||
#define TY_ITYP_VER_A53 0x2
|
||||
#define TY_ITYP_VER_A57 0x3
|
||||
#define TY_ITYP_VER_A72 0x4
|
||||
|
||||
#define TP_CLUSTER_EOC 0xc0000000 /* end of clusters */
|
||||
#define TP_CLUSTER_INIT_MASK 0x0000003f /* initiator mask */
|
||||
@@ -227,6 +228,8 @@ struct ccsr_gur {
|
||||
#define FSL_CHASSIS2_RCWSR0_MEM_PLL_RAT_MASK 0x3f
|
||||
#define FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_MASK 0xffff0000
|
||||
#define FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_SHIFT 16
|
||||
#define FSL_CHASSIS2_RCWSR4_SRDS2_PRTCL_MASK 0x0000ffff
|
||||
#define FSL_CHASSIS2_RCWSR4_SRDS2_PRTCL_SHIFT 0
|
||||
#define RCW_SB_EN_REG_INDEX 7
|
||||
#define RCW_SB_EN_MASK 0x00200000
|
||||
|
||||
|
||||
@@ -52,8 +52,8 @@
|
||||
#define I2C3_BASE_ADDR (CONFIG_SYS_IMMR + 0x01020000)
|
||||
#define I2C4_BASE_ADDR (CONFIG_SYS_IMMR + 0x01030000)
|
||||
|
||||
#define CONFIG_SYS_LS2080A_XHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x02100000)
|
||||
#define CONFIG_SYS_LS2080A_XHCI_USB2_ADDR (CONFIG_SYS_IMMR + 0x02110000)
|
||||
#define CONFIG_SYS_XHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x02100000)
|
||||
#define CONFIG_SYS_XHCI_USB2_ADDR (CONFIG_SYS_IMMR + 0x02110000)
|
||||
|
||||
/* TZ Address Space Controller Definitions */
|
||||
#define TZASC1_BASE 0x01100000 /* as per CCSR map. */
|
||||
@@ -156,6 +156,7 @@
|
||||
#define TY_ITYP_VER_A7 0x1
|
||||
#define TY_ITYP_VER_A53 0x2
|
||||
#define TY_ITYP_VER_A57 0x3
|
||||
#define TY_ITYP_VER_A72 0x4
|
||||
|
||||
#define TP_CLUSTER_EOC 0x80000000 /* end of clusters */
|
||||
#define TP_CLUSTER_INIT_MASK 0x0000003f /* initiator mask */
|
||||
|
||||
@@ -44,6 +44,8 @@ struct cpu_type {
|
||||
#define SVR_LS1012A 0x870400
|
||||
#define SVR_LS1043A 0x879200
|
||||
#define SVR_LS1023A 0x879208
|
||||
#define SVR_LS1046A 0x870700
|
||||
#define SVR_LS1026A 0x870708
|
||||
#define SVR_LS2045A 0x870120
|
||||
#define SVR_LS2080A 0x870110
|
||||
#define SVR_LS2085A 0x870100
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define CONFIG_SYS_CACHELINE_SIZE 64
|
||||
|
||||
#define OCRAM_BASE_ADDR 0x10000000
|
||||
#define OCRAM_SIZE 0x00020000
|
||||
#define OCRAM_SIZE 0x00010000
|
||||
#define OCRAM_BASE_S_ADDR 0x10010000
|
||||
#define OCRAM_S_SIZE 0x00010000
|
||||
|
||||
@@ -32,16 +32,15 @@
|
||||
#define CONFIG_SYS_FSL_SERDES_ADDR (CONFIG_SYS_IMMR + 0x00ea0000)
|
||||
#define CONFIG_SYS_FSL_GUTS_ADDR (CONFIG_SYS_IMMR + 0x00ee0000)
|
||||
#define CONFIG_SYS_FSL_LS1_CLK_ADDR (CONFIG_SYS_IMMR + 0x00ee1000)
|
||||
#define CONFIG_SYS_FSL_RCPM_ADDR (CONFIG_SYS_IMMR + 0x00ee2000)
|
||||
#define CONFIG_SYS_NS16550_COM1 (CONFIG_SYS_IMMR + 0x011c0500)
|
||||
#define CONFIG_SYS_NS16550_COM2 (CONFIG_SYS_IMMR + 0x011d0500)
|
||||
#define CONFIG_SYS_DCU_ADDR (CONFIG_SYS_IMMR + 0x01ce0000)
|
||||
#define CONFIG_SYS_LS102XA_XHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x02100000)
|
||||
#define CONFIG_SYS_LS102XA_USB1_ADDR \
|
||||
(CONFIG_SYS_IMMR + CONFIG_SYS_LS102XA_USB1_OFFSET)
|
||||
#define CONFIG_SYS_XHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x02100000)
|
||||
#define CONFIG_SYS_EHCI_USB1_ADDR (CONFIG_SYS_IMMR + 0x07600000)
|
||||
|
||||
#define CONFIG_SYS_FSL_SEC_OFFSET 0x00700000
|
||||
#define CONFIG_SYS_FSL_JR0_OFFSET 0x00710000
|
||||
#define CONFIG_SYS_LS102XA_USB1_OFFSET 0x07600000
|
||||
#define CONFIG_SYS_TSEC1_OFFSET 0x01d10000
|
||||
#define CONFIG_SYS_TSEC2_OFFSET 0x01d50000
|
||||
#define CONFIG_SYS_TSEC3_OFFSET 0x01d90000
|
||||
|
||||
@@ -14,9 +14,9 @@ struct i2c {
|
||||
unsigned short revnb_lo; /* 0x00 */
|
||||
unsigned short res1;
|
||||
unsigned short revnb_hi; /* 0x04 */
|
||||
unsigned short res2[13];
|
||||
unsigned short sysc; /* 0x20 */
|
||||
unsigned short res3;
|
||||
unsigned short res2[5];
|
||||
unsigned short sysc; /* 0x10 */
|
||||
unsigned short res3[9];
|
||||
unsigned short irqstatus_raw; /* 0x24 */
|
||||
unsigned short res4;
|
||||
unsigned short stat; /* 0x28 */
|
||||
|
||||
@@ -14,9 +14,9 @@ struct i2c {
|
||||
unsigned short revnb_lo; /* 0x00 */
|
||||
unsigned short res1;
|
||||
unsigned short revnb_hi; /* 0x04 */
|
||||
unsigned short res2[13];
|
||||
unsigned short sysc; /* 0x20 */
|
||||
unsigned short res3;
|
||||
unsigned short res2[5];
|
||||
unsigned short sysc; /* 0x10 */
|
||||
unsigned short res3[9];
|
||||
unsigned short irqstatus_raw; /* 0x24 */
|
||||
unsigned short res4;
|
||||
unsigned short stat; /* 0x28 */
|
||||
|
||||
@@ -65,6 +65,8 @@ void *rockchip_get_cru(void);
|
||||
struct rk3288_cru;
|
||||
struct rk3288_grf;
|
||||
|
||||
void rkclk_configure_cpu(struct rk3288_cru *cru, struct rk3288_grf *grf);
|
||||
void rk3288_clk_configure_cpu(struct rk3288_cru *cru, struct rk3288_grf *grf);
|
||||
|
||||
int rockchip_get_clk(struct udevice **devp);
|
||||
|
||||
#endif
|
||||
|
||||
93
arch/arm/include/asm/arch-rockchip/cru_rk3399.h
Normal file
93
arch/arm/include/asm/arch-rockchip/cru_rk3399.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_CRU_RK3399_H_
|
||||
#define __ASM_ARCH_CRU_RK3399_H_
|
||||
|
||||
#include <common.h>
|
||||
|
||||
struct rk3399_pmucru {
|
||||
u32 ppll_con[6];
|
||||
u32 reserved[0x1a];
|
||||
u32 pmucru_clksel[6];
|
||||
u32 pmucru_clkfrac_con[2];
|
||||
u32 reserved2[0x18];
|
||||
u32 pmucru_clkgate_con[3];
|
||||
u32 reserved3;
|
||||
u32 pmucru_softrst_con[2];
|
||||
u32 reserved4[2];
|
||||
u32 pmucru_rstnhold_con[2];
|
||||
u32 reserved5[2];
|
||||
u32 pmucru_gatedis_con[2];
|
||||
};
|
||||
check_member(rk3399_pmucru, pmucru_gatedis_con[1], 0x134);
|
||||
|
||||
struct rk3399_cru {
|
||||
u32 apll_l_con[6];
|
||||
u32 reserved[2];
|
||||
u32 apll_b_con[6];
|
||||
u32 reserved1[2];
|
||||
u32 dpll_con[6];
|
||||
u32 reserved2[2];
|
||||
u32 cpll_con[6];
|
||||
u32 reserved3[2];
|
||||
u32 gpll_con[6];
|
||||
u32 reserved4[2];
|
||||
u32 npll_con[6];
|
||||
u32 reserved5[2];
|
||||
u32 vpll_con[6];
|
||||
u32 reserved6[0x0a];
|
||||
u32 clksel_con[108];
|
||||
u32 reserved7[0x14];
|
||||
u32 clkgate_con[35];
|
||||
u32 reserved8[0x1d];
|
||||
u32 softrst_con[21];
|
||||
u32 reserved9[0x2b];
|
||||
u32 glb_srst_fst_value;
|
||||
u32 glb_srst_snd_value;
|
||||
u32 glb_cnt_th;
|
||||
u32 misc_con;
|
||||
u32 glb_rst_con;
|
||||
u32 glb_rst_st;
|
||||
u32 reserved10[0x1a];
|
||||
u32 sdmmc_con[2];
|
||||
u32 sdio0_con[2];
|
||||
u32 sdio1_con[2];
|
||||
};
|
||||
check_member(rk3399_cru, sdio1_con[1], 0x594);
|
||||
#define MHz 1000000
|
||||
#define KHz 1000
|
||||
#define OSC_HZ (24*MHz)
|
||||
#define APLL_HZ (600*MHz)
|
||||
#define GPLL_HZ (594*MHz)
|
||||
#define CPLL_HZ (384*MHz)
|
||||
#define PPLL_HZ (594*MHz)
|
||||
|
||||
#define PMU_PCLK_HZ (99*MHz)
|
||||
|
||||
#define ACLKM_CORE_HZ (300*MHz)
|
||||
#define ATCLK_CORE_HZ (300*MHz)
|
||||
#define PCLK_DBG_HZ (100*MHz)
|
||||
|
||||
#define PERIHP_ACLK_HZ (148500*KHz)
|
||||
#define PERIHP_HCLK_HZ (148500*KHz)
|
||||
#define PERIHP_PCLK_HZ (37125*KHz)
|
||||
|
||||
#define PERILP0_ACLK_HZ (99000*KHz)
|
||||
#define PERILP0_HCLK_HZ (99000*KHz)
|
||||
#define PERILP0_PCLK_HZ (49500*KHz)
|
||||
|
||||
#define PERILP1_HCLK_HZ (99000*KHz)
|
||||
#define PERILP1_PCLK_HZ (49500*KHz)
|
||||
|
||||
#define PWM_CLOCK_HZ PMU_PCLK_HZ
|
||||
|
||||
enum apll_l_frequencies {
|
||||
APLL_L_1600_MHZ,
|
||||
APLL_L_600_MHZ,
|
||||
};
|
||||
|
||||
#endif /* __ASM_ARCH_CRU_RK3399_H_ */
|
||||
1591
arch/arm/include/asm/arch-tegra/bpmp_abi.h
Normal file
1591
arch/arm/include/asm/arch-tegra/bpmp_abi.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,9 @@
|
||||
#ifndef __TEGRA_MMC_H_
|
||||
#define __TEGRA_MMC_H_
|
||||
|
||||
#include <common.h>
|
||||
#include <clk.h>
|
||||
#include <reset.h>
|
||||
#include <fdtdec.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
@@ -134,7 +137,10 @@ struct mmc_host {
|
||||
int id; /* device id/number, 0-3 */
|
||||
int enabled; /* 1 to enable, 0 to disable */
|
||||
int width; /* Bus Width, 1, 4 or 8 */
|
||||
#ifndef CONFIG_TEGRA186
|
||||
#ifdef CONFIG_TEGRA186
|
||||
struct reset_ctl reset_ctl;
|
||||
struct clk clk;
|
||||
#else
|
||||
enum periph_id mmc_id; /* Peripheral ID: PERIPH_ID_... */
|
||||
#endif
|
||||
struct gpio_desc cd_gpio; /* Change Detect GPIO */
|
||||
|
||||
@@ -30,15 +30,22 @@
|
||||
|
||||
#endif /* !CONFIG_ARM64 */
|
||||
|
||||
#if defined(__ARM_ARCH_7A__) || defined(CONFIG_ARM64)
|
||||
#if __LINUX_ARM_ARCH__ >= 7
|
||||
#define ISB asm volatile ("isb sy" : : : "memory")
|
||||
#define DSB asm volatile ("dsb sy" : : : "memory")
|
||||
#define DMB asm volatile ("dmb sy" : : : "memory")
|
||||
#else
|
||||
#elif __LINUX_ARM_ARCH__ == 6
|
||||
#define ISB CP15ISB
|
||||
#define DSB CP15DSB
|
||||
#define DMB CP15DMB
|
||||
#else
|
||||
#define ISB asm volatile ("" : : : "memory")
|
||||
#define DSB CP15DSB
|
||||
#define DMB asm volatile ("" : : : "memory")
|
||||
#endif
|
||||
|
||||
#define isb() ISB
|
||||
#define dsb() DSB
|
||||
#define dmb() DMB
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __BARRIERS_H__ */
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
#define CONFIG_PHYS_64BIT
|
||||
#define CONFIG_STATIC_RELA
|
||||
#endif
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
|
||||
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||
#define CONFIG_CMD_ESBC_VALIDATE
|
||||
#define CONFIG_CMD_BLOB
|
||||
#define CONFIG_CMD_HASH
|
||||
#define CONFIG_FSL_SEC_MON
|
||||
#define CONFIG_SHA_HW_ACCEL
|
||||
#define CONFIG_SHA_PROG_HW_ACCEL
|
||||
@@ -28,6 +26,28 @@
|
||||
#define CONFIG_FSL_CAAM
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
#define CONFIG_SPL_BOARD_INIT
|
||||
#define CONFIG_SPL_DM 1
|
||||
#define CONFIG_SPL_CRYPTO_SUPPORT
|
||||
#define CONFIG_SPL_HASH_SUPPORT
|
||||
#define CONFIG_SPL_RSA
|
||||
#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
|
||||
/*
|
||||
* Define the key hash for U-Boot here if public/private key pair used to
|
||||
* sign U-boot are different from the SRK hash put in the fuse
|
||||
* Example of defining KEY_HASH is
|
||||
* #define CONFIG_SPL_UBOOT_KEY_HASH \
|
||||
* "41066b564c6ffcef40ccbc1e0a5d0d519604000c785d97bbefd25e4d288d1c8b"
|
||||
* else leave it defined as NULL
|
||||
*/
|
||||
|
||||
#define CONFIG_SPL_UBOOT_KEY_HASH NULL
|
||||
#endif /* ifdef CONFIG_SPL_BUILD */
|
||||
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
#define CONFIG_CMD_BLOB
|
||||
#define CONFIG_CMD_HASH
|
||||
#define CONFIG_KEY_REVOCATION
|
||||
#ifndef CONFIG_SYS_RAMBOOT
|
||||
/* The key used for verification of next level images
|
||||
@@ -58,39 +78,55 @@
|
||||
"setenv hwconfig \'fsl_ddr:ctlr_intlv=null,bank_intlv=null\';"
|
||||
#else
|
||||
#define CONFIG_EXTRA_ENV \
|
||||
"setenv fdt_high 0xcfffffff;" \
|
||||
"setenv initrd_high 0xcfffffff;" \
|
||||
"setenv fdt_high 0xffffffff;" \
|
||||
"setenv initrd_high 0xffffffff;" \
|
||||
"setenv hwconfig \'fsl_ddr:ctlr_intlv=null,bank_intlv=null\';"
|
||||
#endif
|
||||
|
||||
/* Copying Bootscript and Header to DDR from NOR for LS2 and for rest, from
|
||||
* Non-XIP Memory (Nand/SD)*/
|
||||
#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_LS2080A)
|
||||
#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_LS2080A) || \
|
||||
defined(CONFIG_SD_BOOT)
|
||||
#define CONFIG_BOOTSCRIPT_COPY_RAM
|
||||
#endif
|
||||
/* The address needs to be modified according to NOR and DDR memory map */
|
||||
/* The address needs to be modified according to NOR, NAND, SD and
|
||||
* DDR memory map
|
||||
*/
|
||||
#ifdef CONFIG_LS2080A
|
||||
#define CONFIG_BS_HDR_ADDR_FLASH 0x583920000
|
||||
#define CONFIG_BS_ADDR_FLASH 0x583900000
|
||||
#define CONFIG_BS_HDR_ADDR_DEVICE 0x583920000
|
||||
#define CONFIG_BS_ADDR_DEVICE 0x583900000
|
||||
#define CONFIG_BS_HDR_ADDR_RAM 0xa3920000
|
||||
#define CONFIG_BS_ADDR_RAM 0xa3900000
|
||||
#define CONFIG_BS_HDR_SIZE 0x00002000
|
||||
#define CONFIG_BS_SIZE 0x00001000
|
||||
#else
|
||||
#define CONFIG_BS_HDR_ADDR_FLASH 0x600a0000
|
||||
#define CONFIG_BS_ADDR_FLASH 0x60060000
|
||||
#define CONFIG_BS_HDR_ADDR_RAM 0xa0060000
|
||||
#define CONFIG_BS_ADDR_RAM 0xa0060000
|
||||
#ifdef CONFIG_SD_BOOT
|
||||
/* For SD boot address and size are assigned in terms of sector
|
||||
* offset and no. of sectors respectively.
|
||||
*/
|
||||
#define CONFIG_BS_HDR_ADDR_DEVICE 0x00000800
|
||||
#define CONFIG_BS_ADDR_DEVICE 0x00000840
|
||||
#define CONFIG_BS_HDR_SIZE 0x00000010
|
||||
#define CONFIG_BS_SIZE 0x00000008
|
||||
#else
|
||||
#define CONFIG_BS_HDR_ADDR_DEVICE 0x600a0000
|
||||
#define CONFIG_BS_ADDR_DEVICE 0x60060000
|
||||
#define CONFIG_BS_HDR_SIZE 0x00002000
|
||||
#define CONFIG_BS_SIZE 0x00001000
|
||||
#endif /* #ifdef CONFIG_SD_BOOT */
|
||||
#define CONFIG_BS_HDR_ADDR_RAM 0x81000000
|
||||
#define CONFIG_BS_ADDR_RAM 0x81020000
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BOOTSCRIPT_COPY_RAM
|
||||
#define CONFIG_BOOTSCRIPT_HDR_ADDR CONFIG_BS_HDR_ADDR_RAM
|
||||
#define CONFIG_BS_HDR_SIZE 0x00002000
|
||||
#define CONFIG_BOOTSCRIPT_ADDR CONFIG_BS_ADDR_RAM
|
||||
#define CONFIG_BS_SIZE 0x00001000
|
||||
#else
|
||||
#define CONFIG_BOOTSCRIPT_HDR_ADDR CONFIG_BS_HDR_ADDR_FLASH
|
||||
/* BS_HDR_SIZE, BOOTSCRIPT_ADDR and BS_SIZE are not required */
|
||||
#define CONFIG_BOOTSCRIPT_HDR_ADDR CONFIG_BS_HDR_ADDR_DEVICE
|
||||
/* BOOTSCRIPT_ADDR is not required */
|
||||
#endif
|
||||
|
||||
#include <config_fsl_chain_trust.h>
|
||||
#endif /* #ifndef CONFIG_SPL_BUILD */
|
||||
#endif /* #ifdef CONFIG_CHAIN_OF_TRUST */
|
||||
#endif
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/memory.h>
|
||||
#include <asm/barriers.h>
|
||||
#if 0 /* XXX###XXX */
|
||||
#include <asm/arch/hardware.h>
|
||||
#endif /* XXX###XXX */
|
||||
@@ -136,8 +137,7 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
||||
* TODO: The kernel offers some more advanced versions of barriers, it might
|
||||
* have some advantages to use them instead of the simple one here.
|
||||
*/
|
||||
#define mb() asm volatile("dsb sy" : : : "memory")
|
||||
#define dmb() __asm__ __volatile__ ("" : : : "memory")
|
||||
#define mb() dsb()
|
||||
#define __iormb() dmb()
|
||||
#define __iowmb() dmb()
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
#ifndef __ARM_PSCI_H__
|
||||
#define __ARM_PSCI_H__
|
||||
|
||||
#define ARM_PSCI_VER_1_0 (0x00010000)
|
||||
#define ARM_PSCI_VER_0_2 (0x00000002)
|
||||
|
||||
/* PSCI 0.1 interface */
|
||||
#define ARM_PSCI_FN_BASE 0x95c1ba5e
|
||||
#define ARM_PSCI_FN(n) (ARM_PSCI_FN_BASE + (n))
|
||||
@@ -31,6 +34,12 @@
|
||||
#define ARM_PSCI_RET_NI (-1)
|
||||
#define ARM_PSCI_RET_INVAL (-2)
|
||||
#define ARM_PSCI_RET_DENIED (-3)
|
||||
#define ARM_PSCI_RET_ALREADY_ON (-4)
|
||||
#define ARM_PSCI_RET_ON_PENDING (-5)
|
||||
#define ARM_PSCI_RET_INTERNAL_FAILURE (-6)
|
||||
#define ARM_PSCI_RET_NOT_PRESENT (-7)
|
||||
#define ARM_PSCI_RET_DISABLED (-8)
|
||||
#define ARM_PSCI_RET_INVALID_ADDRESS (-9)
|
||||
|
||||
/* PSCI 0.2 interface */
|
||||
#define ARM_PSCI_0_2_FN_BASE 0x84000000
|
||||
@@ -47,10 +56,25 @@
|
||||
#define ARM_PSCI_0_2_FN_SYSTEM_OFF ARM_PSCI_0_2_FN(8)
|
||||
#define ARM_PSCI_0_2_FN_SYSTEM_RESET ARM_PSCI_0_2_FN(9)
|
||||
|
||||
/* PSCI 1.0 interface */
|
||||
#define ARM_PSCI_1_0_FN_PSCI_FEATURES ARM_PSCI_0_2_FN(10)
|
||||
#define ARM_PSCI_1_0_FN_CPU_FREEZE ARM_PSCI_0_2_FN(11)
|
||||
#define ARM_PSCI_1_0_FN_CPU_DEFAULT_SUSPEND ARM_PSCI_0_2_FN(12)
|
||||
#define ARM_PSCI_1_0_FN_NODE_HW_STATE ARM_PSCI_0_2_FN(13)
|
||||
#define ARM_PSCI_1_0_FN_SYSTEM_SUSPEND ARM_PSCI_0_2_FN(14)
|
||||
#define ARM_PSCI_1_0_FN_SET_SUSPEND_MODE ARM_PSCI_0_2_FN(15)
|
||||
#define ARM_PSCI_1_0_FN_STAT_RESIDENCY ARM_PSCI_0_2_FN(16)
|
||||
#define ARM_PSCI_1_0_FN_STAT_COUNT ARM_PSCI_0_2_FN(17)
|
||||
|
||||
/* 1KB stack per core */
|
||||
#define ARM_PSCI_STACK_SHIFT 10
|
||||
#define ARM_PSCI_STACK_SIZE (1 << ARM_PSCI_STACK_SHIFT)
|
||||
|
||||
/* PSCI affinity level state returned by AFFINITY_INFO */
|
||||
#define PSCI_AFFINITY_LEVEL_ON 0
|
||||
#define PSCI_AFFINITY_LEVEL_OFF 1
|
||||
#define PSCI_AFFINITY_LEVEL_ON_PENDING 2
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/types.h>
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/barriers.h>
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
|
||||
@@ -34,11 +35,6 @@ enum dcache_option {
|
||||
DCACHE_WRITEALLOC = 4 << 2,
|
||||
};
|
||||
|
||||
#define isb() \
|
||||
({asm volatile( \
|
||||
"isb" : : : "memory"); \
|
||||
})
|
||||
|
||||
#define wfi() \
|
||||
({asm volatile( \
|
||||
"wfi" : : : "memory"); \
|
||||
@@ -227,8 +223,6 @@ void __noreturn psci_system_reset(bool smc);
|
||||
*/
|
||||
void save_boot_params_ret(void);
|
||||
|
||||
#define isb() __asm__ __volatile__ ("" : : : "memory")
|
||||
|
||||
#define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t");
|
||||
|
||||
#ifdef __ARM_ARCH_7A__
|
||||
|
||||
@@ -26,8 +26,9 @@ endif
|
||||
|
||||
obj-$(CONFIG_CPU_V7M) += cmd_boot.o
|
||||
obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
|
||||
obj-$(CONFIG_CMD_BOOTI) += bootm.o
|
||||
obj-$(CONFIG_CMD_BOOTM) += bootm.o
|
||||
obj-$(CONFIG_CMD_BOOTM) += zimage.o
|
||||
obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o
|
||||
obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
|
||||
obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o
|
||||
obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
|
||||
@@ -67,11 +68,6 @@ extra-y += eabi_compat.o
|
||||
endif
|
||||
|
||||
asflags-y += -DCONFIG_ARM_ASM_UNIFIED
|
||||
ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TEGRA),yy)
|
||||
asflags-y += -D__LINUX_ARM_ARCH__=4
|
||||
else
|
||||
asflags-y += -D__LINUX_ARM_ARCH__=$(CONFIG_SYS_ARM_ARCH)
|
||||
endif
|
||||
|
||||
# some files can only build in ARM or THUMB2, not THUMB1
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifdef CONFIG_ARCH_FIXUP_FDT
|
||||
int arch_fixup_fdt(void *blob)
|
||||
{
|
||||
bd_t *bd = gd->bd;
|
||||
@@ -60,3 +61,4 @@ int arch_fixup_fdt(void *blob)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -248,15 +248,20 @@ static void boot_prep_linux(bootm_headers_t *images)
|
||||
}
|
||||
}
|
||||
|
||||
__weak bool armv7_boot_nonsec_default(void)
|
||||
{
|
||||
#ifdef CONFIG_ARMV7_BOOT_SEC_DEFAULT
|
||||
return false;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARMV7_NONSEC
|
||||
bool armv7_boot_nonsec(void)
|
||||
{
|
||||
char *s = getenv("bootm_boot_mode");
|
||||
#ifdef CONFIG_ARMV7_BOOT_SEC_DEFAULT
|
||||
bool nonsec = false;
|
||||
#else
|
||||
bool nonsec = true;
|
||||
#endif
|
||||
bool nonsec = armv7_boot_nonsec_default();
|
||||
|
||||
if (s && !strcmp(s, "sec"))
|
||||
nonsec = false;
|
||||
@@ -367,8 +372,10 @@ void boot_prep_vxworks(bootm_headers_t *images)
|
||||
if (images->ft_addr) {
|
||||
off = fdt_path_offset(images->ft_addr, "/memory");
|
||||
if (off < 0) {
|
||||
#ifdef CONFIG_ARCH_FIXUP_FDT
|
||||
if (arch_fixup_fdt(images->ft_addr))
|
||||
puts("## WARNING: fixup memory failed!\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -19,7 +19,6 @@ int fdt_psci(void *fdt)
|
||||
#if defined(CONFIG_ARMV8_PSCI) || defined(CONFIG_ARMV7_PSCI)
|
||||
int nodeoff;
|
||||
unsigned int psci_ver = 0;
|
||||
char *psci_compt;
|
||||
int tmp;
|
||||
|
||||
nodeoff = fdt_path_offset(fdt, "/cpus");
|
||||
@@ -51,27 +50,10 @@ int fdt_psci(void *fdt)
|
||||
fdt_setprop_string(fdt, tmp, "enable-method", "psci");
|
||||
}
|
||||
|
||||
/*
|
||||
* The PSCI node might be called "/psci" or might be called something
|
||||
* else but contain either of the compatible strings
|
||||
* "arm,psci"/"arm,psci-0.2"
|
||||
*/
|
||||
nodeoff = fdt_path_offset(fdt, "/psci");
|
||||
if (nodeoff >= 0)
|
||||
goto init_psci_node;
|
||||
|
||||
nodeoff = fdt_node_offset_by_compatible(fdt, -1, "arm,psci");
|
||||
if (nodeoff >= 0)
|
||||
goto init_psci_node;
|
||||
|
||||
nodeoff = fdt_node_offset_by_compatible(fdt, -1, "arm,psci-0.2");
|
||||
if (nodeoff >= 0)
|
||||
goto init_psci_node;
|
||||
|
||||
nodeoff = fdt_node_offset_by_compatible(fdt, -1, "arm,psci-1.0");
|
||||
if (nodeoff >= 0)
|
||||
goto init_psci_node;
|
||||
|
||||
nodeoff = fdt_path_offset(fdt, "/");
|
||||
if (nodeoff < 0)
|
||||
return nodeoff;
|
||||
@@ -83,41 +65,53 @@ int fdt_psci(void *fdt)
|
||||
init_psci_node:
|
||||
#ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
|
||||
psci_ver = sec_firmware_support_psci_version();
|
||||
#elif defined(CONFIG_ARMV7_PSCI_1_0)
|
||||
psci_ver = ARM_PSCI_VER_1_0;
|
||||
#endif
|
||||
switch (psci_ver) {
|
||||
case 0x00010000:
|
||||
psci_compt = "arm,psci-1.0";
|
||||
break;
|
||||
case 0x00000002:
|
||||
psci_compt = "arm,psci-0.2";
|
||||
break;
|
||||
case ARM_PSCI_VER_1_0:
|
||||
tmp = fdt_setprop_string(fdt, nodeoff,
|
||||
"compatible", "arm,psci-1.0");
|
||||
if (tmp)
|
||||
return tmp;
|
||||
case ARM_PSCI_VER_0_2:
|
||||
tmp = fdt_appendprop_string(fdt, nodeoff,
|
||||
"compatible", "arm,psci-0.2");
|
||||
if (tmp)
|
||||
return tmp;
|
||||
default:
|
||||
psci_compt = "arm,psci";
|
||||
/*
|
||||
* The Secure firmware framework isn't able to support PSCI version 0.1.
|
||||
*/
|
||||
#ifndef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
|
||||
tmp = fdt_appendprop_string(fdt, nodeoff,
|
||||
"compatible", "arm,psci");
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_suspend",
|
||||
ARM_PSCI_FN_CPU_SUSPEND);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_off",
|
||||
ARM_PSCI_FN_CPU_OFF);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_on",
|
||||
ARM_PSCI_FN_CPU_ON);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "migrate",
|
||||
ARM_PSCI_FN_MIGRATE);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
tmp = fdt_setprop_string(fdt, nodeoff, "compatible", psci_compt);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_string(fdt, nodeoff, "method", "smc");
|
||||
if (tmp)
|
||||
return tmp;
|
||||
|
||||
#ifdef CONFIG_ARMV7_PSCI
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_suspend",
|
||||
ARM_PSCI_FN_CPU_SUSPEND);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_off", ARM_PSCI_FN_CPU_OFF);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_on", ARM_PSCI_FN_CPU_ON);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
tmp = fdt_setprop_u32(fdt, nodeoff, "migrate", ARM_PSCI_FN_MIGRATE);
|
||||
if (tmp)
|
||||
return tmp;
|
||||
#endif
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user