summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Dudau <adrian.dudau@enea.com>2017-11-28 10:51:28 +0100
committerMartin Borg <martin.borg@enea.com>2017-11-28 11:51:54 +0100
commit13c865cfd032aaae9d615c21ae4571894b9b284a (patch)
tree4463814ff73103ae69738345be4c5487a0c221b5
parent7e2de939bf139467709164b9425221cbfed27b53 (diff)
downloadmeta-enea-bsp-arm-13c865cfd032aaae9d615c21ae4571894b9b284a.tar.gz
Drop unsupported machines and kernels
The cn8304 and ls1021aiot machines and their associated kernels are not supported anymore. Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> Signed-off-by: Martin Borg <martin.borg@enea.com>
-rw-r--r--conf/machine/cn8304.conf10
-rw-r--r--conf/machine/ls1021aiot.conf19
-rw-r--r--recipes-kernel/linux/linux-cavium-dev_4.9.bb9
-rw-r--r--recipes-kernel/linux/linux-cavium-guest_4.9.bb1
-rw-r--r--recipes-kernel/linux/linux-cavium/0001-openvswitch-fixed-kernel-crash.patch241
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2016-10154.patch100
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2016-10208.patch74
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-1000364.patch939
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-11176.patch52
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-5551.patch53
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-5577.patch38
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-5669.patch81
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-5970.patch54
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-5986.patch46
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-6214.patch52
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-6345.patch65
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-6348.patch94
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-6353.patch73
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-7487.patch39
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-7618.patch238
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-7645.patch109
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8062.patch440
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8063.patch70
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8064.patch65
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8066.patch138
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8067.patch58
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8068.patch101
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8069.patch73
-rw-r--r--recipes-kernel/linux/linux-cavium/CVE-2017-8831.patch75
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/asim-cn81xx-linux.dts541
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/asim-cn83xx-linux.dts490
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/cn81xx-linux.dtsi499
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/cn83xx-linux.dtsi800
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/ebb8004-linux.dts485
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/ebb8104-linux.dts620
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/ebb8304-linux.dts989
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/ebb8604-linux.dts49
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/ebb8604-phy.dtsi123
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/ebb8800-phy.dtsi123
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/generic-linux.dts54
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/generic-linux.dtsi2721
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/nas8104-linux.dts156
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/rbd8030-linux.dts190
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/sff8104-linux.dts317
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/sff8304-linux.dts241
-rw-r--r--recipes-kernel/linux/linux-cavium/dts/xpliant-cn83xx-linux.dts138
-rw-r--r--recipes-kernel/linux/linux-cavium_4.9.bb1
-rw-r--r--recipes-kernel/linux/linux-cavium_4.9.inc62
-rw-r--r--recipes-kernel/linux/linux-ls1-common.inc28
-rw-r--r--recipes-kernel/linux/linux-ls1/0001-fsnotify-fix-oops-in-fsnotify_clear_marks_by_group_f.patch80
-rw-r--r--recipes-kernel/linux/linux-ls1/0002-watchdog-fix-errata-err004346.patch35
-rw-r--r--recipes-kernel/linux/linux-ls1/ls1021aiot.dts1102
-rw-r--r--recipes-kernel/linux/linux-ls1_3.12.bbappend40
53 files changed, 0 insertions, 13291 deletions
diff --git a/conf/machine/cn8304.conf b/conf/machine/cn8304.conf
deleted file mode 100644
index be5687d..0000000
--- a/conf/machine/cn8304.conf
+++ /dev/null
@@ -1,10 +0,0 @@
1#@TYPE: Machine
2#@NAME: Cavium CN8304 machine
3#@DESCRIPTION: Cavium CN8304 processor based on OCTEON TX, ARMv8.1 architecture
4
5require conf/machine/include/arm/arch-armv8.inc
6
7PREFERRED_PROVIDER_virtual/kernel ?= "linux-cavium"
8
9SERIAL_CONSOLES = "115200;ttyAMA0"
10KERNEL_IMAGETYPE = "Image"
diff --git a/conf/machine/ls1021aiot.conf b/conf/machine/ls1021aiot.conf
deleted file mode 100644
index a802a4a..0000000
--- a/conf/machine/ls1021aiot.conf
+++ /dev/null
@@ -1,19 +0,0 @@
1#@TYPE: Machine
2#@NAME: Freescale LS1021A-IoT board
3#@SOC: ls102xa
4#@DESCRIPTION: Machine configuration for running LS1021A-IoT in 32-bit mode
5
6require conf/machine/include/qoriq-arm.inc
7require conf/machine/include/tune-cortexa7.inc
8
9MACHINEOVERRIDES =. "ls102xa:"
10
11QE_UCODE="iram_Type_A_LS1021a_r1.0.bin"
12
13KERNEL_DEVICETREE ?= "ls1021aiot.dtb"
14
15IMAGE_FSTYPES += "tar.gz"
16
17SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyEHV0 115200;ttyLP0 115200;ttyAMA0"
18SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
19USE_VT ?= "0"
diff --git a/recipes-kernel/linux/linux-cavium-dev_4.9.bb b/recipes-kernel/linux/linux-cavium-dev_4.9.bb
deleted file mode 100644
index c5b6075..0000000
--- a/recipes-kernel/linux/linux-cavium-dev_4.9.bb
+++ /dev/null
@@ -1,9 +0,0 @@
1require linux-cavium_4.9.inc
2
3# Debug tools support
4KERNEL_FEATURES_append = " features/debug/debug_kernel_y.scc"
5KERNEL_FEATURES_append = " features/kgdb/kgdb_y.scc"
6KERNEL_FEATURES_append = " features/lttng/lttng_y.scc"
7KERNEL_FEATURES_append = " features/latencytop/latencytop_y.scc"
8KERNEL_FEATURES_append = " features/perf/perf_y.scc"
9KERNEL_FEATURES_append = " features/systemtap/systemtap_y.scc"
diff --git a/recipes-kernel/linux/linux-cavium-guest_4.9.bb b/recipes-kernel/linux/linux-cavium-guest_4.9.bb
deleted file mode 100644
index 2851845..0000000
--- a/recipes-kernel/linux/linux-cavium-guest_4.9.bb
+++ /dev/null
@@ -1 +0,0 @@
1require linux-cavium_4.9.inc
diff --git a/recipes-kernel/linux/linux-cavium/0001-openvswitch-fixed-kernel-crash.patch b/recipes-kernel/linux/linux-cavium/0001-openvswitch-fixed-kernel-crash.patch
deleted file mode 100644
index ba631ea..0000000
--- a/recipes-kernel/linux/linux-cavium/0001-openvswitch-fixed-kernel-crash.patch
+++ /dev/null
@@ -1,241 +0,0 @@
1From 65693212754e9f97d29504219327ce4807780c48 Mon Sep 17 00:00:00 2001
2From: Dragos Motrea <Dragos.Motrea@enea.com>
3Date: Tue, 24 Oct 2017 13:10:10 +0200
4Subject: [meta-enea-bsp-arm][cavium-4.9][LXCR-8050][PATCHv1 1/1] openvswitch:
5 fixed kernel crash
6
7Inserting the openvswitch.ko is causing a kernel crash in
8__percpu_counter_sum function. Applying this patch will replace the percpu
9counter API with the atomic operations for fragmentation mem accounting.
10The atomic operations should be used on architecture with many CPUs.
11
12The revert is made in kernel upstream by the commit:
13fb452a1aa3fd4034d7999e309c5466ff2d7005aa
14
15Upstream-Status: Backport
16
17Signed-off-by: Dragos Motrea <Dragos.Motrea@enea.com>
18---
19 include/net/inet_frag.h | 40 ++++++++-------------------------
20 net/ieee802154/6lowpan/reassembly.c | 12 +++-------
21 net/ipv4/inet_fragment.c | 4 +---
22 net/ipv4/ip_fragment.c | 15 ++++---------
23 net/ipv6/netfilter/nf_conntrack_reasm.c | 12 +++-------
24 net/ipv6/reassembly.c | 12 +++-------
25 6 files changed, 23 insertions(+), 72 deletions(-)
26
27diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h
28index 909972a..38beec0 100644
29--- a/include/net/inet_frag.h
30+++ b/include/net/inet_frag.h
31@@ -1,14 +1,9 @@
32 #ifndef __NET_FRAG_H__
33 #define __NET_FRAG_H__
34
35-#include <linux/percpu_counter.h>
36-
37 struct netns_frags {
38- /* The percpu_counter "mem" need to be cacheline aligned.
39- * mem.count must not share cacheline with other writers
40- */
41- struct percpu_counter mem ____cacheline_aligned_in_smp;
42-
43+ /* Keep atomic mem on separate cachelines in structs that include it */
44+ atomic_t mem ____cacheline_aligned_in_smp;
45 /* sysctls */
46 int timeout;
47 int high_thresh;
48@@ -108,13 +103,9 @@ struct inet_frags {
49 int inet_frags_init(struct inet_frags *);
50 void inet_frags_fini(struct inet_frags *);
51
52-static inline int inet_frags_init_net(struct netns_frags *nf)
53-{
54- return percpu_counter_init(&nf->mem, 0, GFP_KERNEL);
55-}
56-static inline void inet_frags_uninit_net(struct netns_frags *nf)
57+static inline void inet_frags_init_net(struct netns_frags *nf)
58 {
59- percpu_counter_destroy(&nf->mem);
60+ atomic_set(&nf->mem, 0);
61 }
62
63 void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f);
64@@ -140,37 +131,24 @@ static inline bool inet_frag_evicting(struct inet_frag_queue *q)
65
66 /* Memory Tracking Functions. */
67
68-/* The default percpu_counter batch size is not big enough to scale to
69- * fragmentation mem acct sizes.
70- * The mem size of a 64K fragment is approx:
71- * (44 fragments * 2944 truesize) + frag_queue struct(200) = 129736 bytes
72- */
73-static unsigned int frag_percpu_counter_batch = 130000;
74-
75 static inline int frag_mem_limit(struct netns_frags *nf)
76 {
77- return percpu_counter_read(&nf->mem);
78+ return atomic_read(&nf->mem);
79 }
80
81 static inline void sub_frag_mem_limit(struct netns_frags *nf, int i)
82 {
83- __percpu_counter_add(&nf->mem, -i, frag_percpu_counter_batch);
84+ atomic_sub(i, &nf->mem);
85 }
86
87 static inline void add_frag_mem_limit(struct netns_frags *nf, int i)
88 {
89- __percpu_counter_add(&nf->mem, i, frag_percpu_counter_batch);
90+ atomic_add(i, &nf->mem);
91 }
92
93-static inline unsigned int sum_frag_mem_limit(struct netns_frags *nf)
94+static inline int sum_frag_mem_limit(struct netns_frags *nf)
95 {
96- unsigned int res;
97-
98- local_bh_disable();
99- res = percpu_counter_sum_positive(&nf->mem);
100- local_bh_enable();
101-
102- return res;
103+ return atomic_read(&nf->mem);
104 }
105
106 /* RFC 3168 support :
107diff --git a/net/ieee802154/6lowpan/reassembly.c b/net/ieee802154/6lowpan/reassembly.c
108index 30d875d..fb28a06 100644
109--- a/net/ieee802154/6lowpan/reassembly.c
110+++ b/net/ieee802154/6lowpan/reassembly.c
111@@ -580,21 +580,15 @@ static int __net_init lowpan_frags_init_net(struct net *net)
112 {
113 struct netns_ieee802154_lowpan *ieee802154_lowpan =
114 net_ieee802154_lowpan(net);
115- int res;
116
117 ieee802154_lowpan->frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
118 ieee802154_lowpan->frags.low_thresh = IPV6_FRAG_LOW_THRESH;
119 ieee802154_lowpan->frags.timeout = IPV6_FRAG_TIMEOUT;
120
121- res = inet_frags_init_net(&ieee802154_lowpan->frags);
122- if (res)
123- return res;
124- res = lowpan_frags_ns_sysctl_register(net);
125- if (res)
126- inet_frags_uninit_net(&ieee802154_lowpan->frags);
127- return res;
128-}
129+ inet_frags_init_net(&ieee802154_lowpan->frags);
130
131+ return lowpan_frags_ns_sysctl_register(net);
132+}
133 static void __net_exit lowpan_frags_exit_net(struct net *net)
134 {
135 struct netns_ieee802154_lowpan *ieee802154_lowpan =
136diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c
137index b5e9317..631c0d0 100644
138--- a/net/ipv4/inet_fragment.c
139+++ b/net/ipv4/inet_fragment.c
140@@ -234,10 +234,8 @@ evict_again:
141 cond_resched();
142
143 if (read_seqretry(&f->rnd_seqlock, seq) ||
144- percpu_counter_sum(&nf->mem))
145+ sum_frag_mem_limit(nf))
146 goto evict_again;
147-
148- percpu_counter_destroy(&nf->mem);
149 }
150 EXPORT_SYMBOL(inet_frags_exit_net);
151
152diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
153index bbe7f72..0f0d89e 100644
154--- a/net/ipv4/ip_fragment.c
155+++ b/net/ipv4/ip_fragment.c
156@@ -835,8 +835,6 @@ static void __init ip4_frags_ctl_register(void)
157
158 static int __net_init ipv4_frags_init_net(struct net *net)
159 {
160- int res;
161-
162 /* Fragment cache limits.
163 *
164 * The fragment memory accounting code, (tries to) account for
165@@ -861,16 +859,11 @@ static int __net_init ipv4_frags_init_net(struct net *net)
166 net->ipv4.frags.timeout = IP_FRAG_TIME;
167
168 net->ipv4.frags.max_dist = 64;
169-
170- res = inet_frags_init_net(&net->ipv4.frags);
171- if (res)
172- return res;
173- res = ip4_frags_ns_ctl_register(net);
174- if (res)
175- inet_frags_uninit_net(&net->ipv4.frags);
176- return res;
177+
178+ inet_frags_init_net(&net->ipv4.frags);
179+
180+ return ip4_frags_ns_ctl_register(net);
181 }
182-
183 static void __net_exit ipv4_frags_exit_net(struct net *net)
184 {
185 ip4_frags_ns_ctl_unregister(net);
186diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
187index 9948b5c..8734e2c 100644
188--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
189+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
190@@ -621,18 +621,12 @@ EXPORT_SYMBOL_GPL(nf_ct_frag6_gather);
191
192 static int nf_ct_net_init(struct net *net)
193 {
194- int res;
195-
196 net->nf_frag.frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
197 net->nf_frag.frags.low_thresh = IPV6_FRAG_LOW_THRESH;
198 net->nf_frag.frags.timeout = IPV6_FRAG_TIMEOUT;
199- res = inet_frags_init_net(&net->nf_frag.frags);
200- if (res)
201- return res;
202- res = nf_ct_frag6_sysctl_register(net);
203- if (res)
204- inet_frags_uninit_net(&net->nf_frag.frags);
205- return res;
206+
207+ inet_frags_init_net(&net->nf_frag.frags);
208+ return nf_ct_frag6_sysctl_register(net);
209 }
210
211 static void nf_ct_net_exit(struct net *net)
212diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
213index 3815e85..fe67cf4 100644
214--- a/net/ipv6/reassembly.c
215+++ b/net/ipv6/reassembly.c
216@@ -709,19 +709,13 @@ static void ip6_frags_sysctl_unregister(void)
217
218 static int __net_init ipv6_frags_init_net(struct net *net)
219 {
220- int res;
221-
222 net->ipv6.frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
223 net->ipv6.frags.low_thresh = IPV6_FRAG_LOW_THRESH;
224 net->ipv6.frags.timeout = IPV6_FRAG_TIMEOUT;
225
226- res = inet_frags_init_net(&net->ipv6.frags);
227- if (res)
228- return res;
229- res = ip6_frags_ns_sysctl_register(net);
230- if (res)
231- inet_frags_uninit_net(&net->ipv6.frags);
232- return res;
233+ inet_frags_init_net(&net->ipv6.frags);
234+
235+ return ip6_frags_ns_sysctl_register(net);
236 }
237
238 static void __net_exit ipv6_frags_exit_net(struct net *net)
239--
2402.7.4
241
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2016-10154.patch b/recipes-kernel/linux/linux-cavium/CVE-2016-10154.patch
deleted file mode 100644
index ddbeb77..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2016-10154.patch
+++ /dev/null
@@ -1,100 +0,0 @@
1From 7aa58e7ad53bd9536aa49a18ccd0778c728bf57d Mon Sep 17 00:00:00 2001
2From: Andy Lutomirski <luto@kernel.org>
3Date: Mon, 12 Dec 2016 12:54:37 -0800
4Subject: [PATCH] cifs: Fix smbencrypt() to stop pointing a scatterlist at the
5 stack
6
7commit 06deeec77a5a689cc94b21a8a91a76e42176685d upstream.
8
9smbencrypt() points a scatterlist to the stack, which is breaks if
10CONFIG_VMAP_STACK=y.
11
12Fix it by switching to crypto_cipher_encrypt_one(). The new code
13should be considerably faster as an added benefit.
14
15This code is nearly identical to some code that Eric Biggers
16suggested.
17
18CVE: CVE-2016-10154
19Upstream-Status: Backport [from kernel.org longterm 4.9.52]
20
21Reported-by: Eric Biggers <ebiggers3@gmail.com>
22Signed-off-by: Andy Lutomirski <luto@kernel.org>
23Acked-by: Jeff Layton <jlayton@redhat.com>
24Signed-off-by: Steve French <smfrench@gmail.com>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
27---
28 fs/cifs/smbencrypt.c | 40 ++++++++--------------------------------
29 1 file changed, 8 insertions(+), 32 deletions(-)
30
31diff --git a/fs/cifs/smbencrypt.c b/fs/cifs/smbencrypt.c
32index 699b786..c12bffe 100644
33--- a/fs/cifs/smbencrypt.c
34+++ b/fs/cifs/smbencrypt.c
35@@ -23,7 +23,7 @@
36 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
37 */
38
39-#include <crypto/skcipher.h>
40+#include <linux/crypto.h>
41 #include <linux/module.h>
42 #include <linux/slab.h>
43 #include <linux/fs.h>
44@@ -69,46 +69,22 @@
45 static int
46 smbhash(unsigned char *out, const unsigned char *in, unsigned char *key)
47 {
48- int rc;
49 unsigned char key2[8];
50- struct crypto_skcipher *tfm_des;
51- struct scatterlist sgin, sgout;
52- struct skcipher_request *req;
53+ struct crypto_cipher *tfm_des;
54
55 str_to_key(key, key2);
56
57- tfm_des = crypto_alloc_skcipher("ecb(des)", 0, CRYPTO_ALG_ASYNC);
58+ tfm_des = crypto_alloc_cipher("des", 0, 0);
59 if (IS_ERR(tfm_des)) {
60- rc = PTR_ERR(tfm_des);
61- cifs_dbg(VFS, "could not allocate des crypto API\n");
62- goto smbhash_err;
63- }
64-
65- req = skcipher_request_alloc(tfm_des, GFP_KERNEL);
66- if (!req) {
67- rc = -ENOMEM;
68 cifs_dbg(VFS, "could not allocate des crypto API\n");
69- goto smbhash_free_skcipher;
70+ return PTR_ERR(tfm_des);
71 }
72
73- crypto_skcipher_setkey(tfm_des, key2, 8);
74-
75- sg_init_one(&sgin, in, 8);
76- sg_init_one(&sgout, out, 8);
77+ crypto_cipher_setkey(tfm_des, key2, 8);
78+ crypto_cipher_encrypt_one(tfm_des, out, in);
79+ crypto_free_cipher(tfm_des);
80
81- skcipher_request_set_callback(req, 0, NULL, NULL);
82- skcipher_request_set_crypt(req, &sgin, &sgout, 8, NULL);
83-
84- rc = crypto_skcipher_encrypt(req);
85- if (rc)
86- cifs_dbg(VFS, "could not encrypt crypt key rc: %d\n", rc);
87-
88- skcipher_request_free(req);
89-
90-smbhash_free_skcipher:
91- crypto_free_skcipher(tfm_des);
92-smbhash_err:
93- return rc;
94+ return 0;
95 }
96
97 static int
98--
991.9.1
100
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2016-10208.patch b/recipes-kernel/linux/linux-cavium/CVE-2016-10208.patch
deleted file mode 100644
index c3ab284..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2016-10208.patch
+++ /dev/null
@@ -1,74 +0,0 @@
1From 13e6ef99d23b05807e7f8a72f45e3d8260b61570 Mon Sep 17 00:00:00 2001
2From: Eryu Guan <guaneryu@gmail.com>
3Date: Thu, 1 Dec 2016 15:08:37 -0500
4Subject: [PATCH] ext4: validate s_first_meta_bg at mount time
5
6commit 3a4b77cd47bb837b8557595ec7425f281f2ca1fe upstream.
7
8Ralf Spenneberg reported that he hit a kernel crash when mounting a
9modified ext4 image. And it turns out that kernel crashed when
10calculating fs overhead (ext4_calculate_overhead()), this is because
11the image has very large s_first_meta_bg (debug code shows it's
12842150400), and ext4 overruns the memory in count_overhead() when
13setting bitmap buffer, which is PAGE_SIZE.
14
15ext4_calculate_overhead():
16 buf = get_zeroed_page(GFP_NOFS); <=== PAGE_SIZE buffer
17 blks = count_overhead(sb, i, buf);
18
19count_overhead():
20 for (j = ext4_bg_num_gdb(sb, grp); j > 0; j--) { <=== j = 842150400
21 ext4_set_bit(EXT4_B2C(sbi, s++), buf); <=== buffer overrun
22 count++;
23 }
24
25This can be reproduced easily for me by this script:
26
27 #!/bin/bash
28 rm -f fs.img
29 mkdir -p /mnt/ext4
30 fallocate -l 16M fs.img
31 mke2fs -t ext4 -O bigalloc,meta_bg,^resize_inode -F fs.img
32 debugfs -w -R "ssv first_meta_bg 842150400" fs.img
33 mount -o loop fs.img /mnt/ext4
34
35Fix it by validating s_first_meta_bg first at mount time, and
36refusing to mount if its value exceeds the largest possible meta_bg
37number.
38
39CVE: CVE-2016-10208
40Upstream-Status: Backport [from kernel.org longterm 4.9.52]
41
42Reported-by: Ralf Spenneberg <ralf@os-t.de>
43Signed-off-by: Eryu Guan <guaneryu@gmail.com>
44Signed-off-by: Theodore Ts'o <tytso@mit.edu>
45Reviewed-by: Andreas Dilger <adilger@dilger.ca>
46Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
47Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
48---
49 fs/ext4/super.c | 9 +++++++++
50 1 file changed, 9 insertions(+)
51
52diff --git a/fs/ext4/super.c b/fs/ext4/super.c
53index 478630a..bbc316d 100644
54--- a/fs/ext4/super.c
55+++ b/fs/ext4/super.c
56@@ -3827,6 +3827,15 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
57 (EXT4_MAX_BLOCK_FILE_PHYS / EXT4_BLOCKS_PER_GROUP(sb)));
58 db_count = (sbi->s_groups_count + EXT4_DESC_PER_BLOCK(sb) - 1) /
59 EXT4_DESC_PER_BLOCK(sb);
60+ if (ext4_has_feature_meta_bg(sb)) {
61+ if (le32_to_cpu(es->s_first_meta_bg) >= db_count) {
62+ ext4_msg(sb, KERN_WARNING,
63+ "first meta block group too large: %u "
64+ "(group descriptor block count %u)",
65+ le32_to_cpu(es->s_first_meta_bg), db_count);
66+ goto failed_mount;
67+ }
68+ }
69 sbi->s_group_desc = ext4_kvmalloc(db_count *
70 sizeof(struct buffer_head *),
71 GFP_KERNEL);
72--
731.9.1
74
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-1000364.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-1000364.patch
deleted file mode 100644
index a25dd45..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-1000364.patch
+++ /dev/null
@@ -1,939 +0,0 @@
1From cfc0eb403816c5c4f9667d959de5e22789b5421e Mon Sep 17 00:00:00 2001
2From: Hugh Dickins <hughd@google.com>
3Date: Mon, 19 Jun 2017 04:03:24 -0700
4Subject: [PATCH] mm: larger stack guard gap, between vmas
5
6commit 1be7107fbe18eed3e319a6c3e83c78254b693acb upstream.
7
8Stack guard page is a useful feature to reduce a risk of stack smashing
9into a different mapping. We have been using a single page gap which
10is sufficient to prevent having stack adjacent to a different mapping.
11But this seems to be insufficient in the light of the stack usage in
12userspace. E.g. glibc uses as large as 64kB alloca() in many commonly
13used functions. Others use constructs liks gid_t buffer[NGROUPS_MAX]
14which is 256kB or stack strings with MAX_ARG_STRLEN.
15
16This will become especially dangerous for suid binaries and the default
17no limit for the stack size limit because those applications can be
18tricked to consume a large portion of the stack and a single glibc call
19could jump over the guard page. These attacks are not theoretical,
20unfortunatelly.
21
22Make those attacks less probable by increasing the stack guard gap
23to 1MB (on systems with 4k pages; but make it depend on the page size
24because systems with larger base pages might cap stack allocations in
25the PAGE_SIZE units) which should cover larger alloca() and VLA stack
26allocations. It is obviously not a full fix because the problem is
27somehow inherent, but it should reduce attack space a lot.
28
29One could argue that the gap size should be configurable from userspace,
30but that can be done later when somebody finds that the new 1MB is wrong
31for some special case applications. For now, add a kernel command line
32option (stack_guard_gap) to specify the stack gap size (in page units).
33
34Implementation wise, first delete all the old code for stack guard page:
35because although we could get away with accounting one extra page in a
36stack vma, accounting a larger gap can break userspace - case in point,
37a program run with "ulimit -S -v 20000" failed when the 1MB gap was
38counted for RLIMIT_AS; similar problems could come with RLIMIT_MLOCK
39and strict non-overcommit mode.
40
41Instead of keeping gap inside the stack vma, maintain the stack guard
42gap as a gap between vmas: using vm_start_gap() in place of vm_start
43(or vm_end_gap() in place of vm_end if VM_GROWSUP) in just those few
44places which need to respect the gap - mainly arch_get_unmapped_area(),
45and and the vma tree's subtree_gap support for that.
46
47CVE: CVE-2017-1000364
48Upstream-Status: Backport [backport from https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.50&id=cfc0eb403816c5c4f9667d959de5e22789b5421e]
49
50Original-patch-by: Oleg Nesterov <oleg@redhat.com>
51Original-patch-by: Michal Hocko <mhocko@suse.com>
52Signed-off-by: Hugh Dickins <hughd@google.com>
53Acked-by: Michal Hocko <mhocko@suse.com>
54Tested-by: Helge Deller <deller@gmx.de> # parisc
55Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
56[wt: backport to 4.11: adjust context]
57[wt: backport to 4.9: adjust context ; kernel doc was not in admin-guide]
58Signed-off-by: Willy Tarreau <w@1wt.eu>
59Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
60Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
61---
62 Documentation/kernel-parameters.txt | 7 ++
63 arch/arc/mm/mmap.c | 2 +-
64 arch/arm/mm/mmap.c | 4 +-
65 arch/frv/mm/elf-fdpic.c | 2 +-
66 arch/mips/mm/mmap.c | 2 +-
67 arch/parisc/kernel/sys_parisc.c | 15 ++--
68 arch/powerpc/mm/hugetlbpage-radix.c | 2 +-
69 arch/powerpc/mm/mmap.c | 4 +-
70 arch/powerpc/mm/slice.c | 2 +-
71 arch/s390/mm/mmap.c | 4 +-
72 arch/sh/mm/mmap.c | 4 +-
73 arch/sparc/kernel/sys_sparc_64.c | 4 +-
74 arch/sparc/mm/hugetlbpage.c | 2 +-
75 arch/tile/mm/hugetlbpage.c | 2 +-
76 arch/x86/kernel/sys_x86_64.c | 4 +-
77 arch/x86/mm/hugetlbpage.c | 2 +-
78 arch/xtensa/kernel/syscall.c | 2 +-
79 fs/hugetlbfs/inode.c | 2 +-
80 fs/proc/task_mmu.c | 4 -
81 include/linux/mm.h | 53 ++++++-------
82 mm/gup.c | 5 --
83 mm/memory.c | 38 ---------
84 mm/mmap.c | 149 +++++++++++++++++++++---------------
85 23 files changed, 152 insertions(+), 163 deletions(-)
86
87diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
88index a6fadef..86a6746 100644
89--- a/Documentation/kernel-parameters.txt
90+++ b/Documentation/kernel-parameters.txt
91@@ -3932,6 +3932,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
92 spia_pedr=
93 spia_peddr=
94
95+ stack_guard_gap= [MM]
96+ override the default stack gap protection. The value
97+ is in page units and it defines how many pages prior
98+ to (for stacks growing down) resp. after (for stacks
99+ growing up) the main stack are reserved for no other
100+ mapping. Default value is 256 pages.
101+
102 stacktrace [FTRACE]
103 Enabled the stack tracer on boot up.
104
105diff --git a/arch/arc/mm/mmap.c b/arch/arc/mm/mmap.c
106index 2e06d56..cf4ae69 100644
107--- a/arch/arc/mm/mmap.c
108+++ b/arch/arc/mm/mmap.c
109@@ -64,7 +64,7 @@
110
111 vma = find_vma(mm, addr);
112 if (TASK_SIZE - len >= addr &&
113- (!vma || addr + len <= vma->vm_start))
114+ (!vma || addr + len <= vm_start_gap(vma)))
115 return addr;
116 }
117
118diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
119index 66353ca..641334e 100644
120--- a/arch/arm/mm/mmap.c
121+++ b/arch/arm/mm/mmap.c
122@@ -89,7 +89,7 @@ static unsigned long mmap_base(unsigned long rnd)
123
124 vma = find_vma(mm, addr);
125 if (TASK_SIZE - len >= addr &&
126- (!vma || addr + len <= vma->vm_start))
127+ (!vma || addr + len <= vm_start_gap(vma)))
128 return addr;
129 }
130
131@@ -140,7 +140,7 @@ static unsigned long mmap_base(unsigned long rnd)
132 addr = PAGE_ALIGN(addr);
133 vma = find_vma(mm, addr);
134 if (TASK_SIZE - len >= addr &&
135- (!vma || addr + len <= vma->vm_start))
136+ (!vma || addr + len <= vm_start_gap(vma)))
137 return addr;
138 }
139
140diff --git a/arch/frv/mm/elf-fdpic.c b/arch/frv/mm/elf-fdpic.c
141index 836f1470..efa59f1 100644
142--- a/arch/frv/mm/elf-fdpic.c
143+++ b/arch/frv/mm/elf-fdpic.c
144@@ -74,7 +74,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
145 addr = PAGE_ALIGN(addr);
146 vma = find_vma(current->mm, addr);
147 if (TASK_SIZE - len >= addr &&
148- (!vma || addr + len <= vma->vm_start))
149+ (!vma || addr + len <= vm_start_gap(vma)))
150 goto success;
151 }
152
153diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
154index d08ea3f..a44052c 100644
155--- a/arch/mips/mm/mmap.c
156+++ b/arch/mips/mm/mmap.c
157@@ -92,7 +92,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
158
159 vma = find_vma(mm, addr);
160 if (TASK_SIZE - len >= addr &&
161- (!vma || addr + len <= vma->vm_start))
162+ (!vma || addr + len <= vm_start_gap(vma)))
163 return addr;
164 }
165
166diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
167index 0a393a0..1d7691f 100644
168--- a/arch/parisc/kernel/sys_parisc.c
169+++ b/arch/parisc/kernel/sys_parisc.c
170@@ -88,7 +88,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
171 unsigned long len, unsigned long pgoff, unsigned long flags)
172 {
173 struct mm_struct *mm = current->mm;
174- struct vm_area_struct *vma;
175+ struct vm_area_struct *vma, *prev;
176 unsigned long task_size = TASK_SIZE;
177 int do_color_align, last_mmap;
178 struct vm_unmapped_area_info info;
179@@ -115,9 +115,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
180 else
181 addr = PAGE_ALIGN(addr);
182
183- vma = find_vma(mm, addr);
184+ vma = find_vma_prev(mm, addr, &prev);
185 if (task_size - len >= addr &&
186- (!vma || addr + len <= vma->vm_start))
187+ (!vma || addr + len <= vm_start_gap(vma)) &&
188+ (!prev || addr >= vm_end_gap(prev)))
189 goto found_addr;
190 }
191
192@@ -141,7 +142,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
193 const unsigned long len, const unsigned long pgoff,
194 const unsigned long flags)
195 {
196- struct vm_area_struct *vma;
197+ struct vm_area_struct *vma, *prev;
198 struct mm_struct *mm = current->mm;
199 unsigned long addr = addr0;
200 int do_color_align, last_mmap;
201@@ -175,9 +176,11 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
202 addr = COLOR_ALIGN(addr, last_mmap, pgoff);
203 else
204 addr = PAGE_ALIGN(addr);
205- vma = find_vma(mm, addr);
206+
207+ vma = find_vma_prev(mm, addr, &prev);
208 if (TASK_SIZE - len >= addr &&
209- (!vma || addr + len <= vma->vm_start))
210+ (!vma || addr + len <= vm_start_gap(vma)) &&
211+ (!prev || addr >= vm_end_gap(prev)))
212 goto found_addr;
213 }
214
215diff --git a/arch/powerpc/mm/hugetlbpage-radix.c b/arch/powerpc/mm/hugetlbpage-radix.c
216index 35254a6..a2b2d97 100644
217--- a/arch/powerpc/mm/hugetlbpage-radix.c
218+++ b/arch/powerpc/mm/hugetlbpage-radix.c
219@@ -65,7 +65,7 @@ void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, unsigned long st
220 addr = ALIGN(addr, huge_page_size(h));
221 vma = find_vma(mm, addr);
222 if (TASK_SIZE - len >= addr &&
223- (!vma || addr + len <= vma->vm_start))
224+ (!vma || addr + len <= vm_start_gap(vma)))
225 return addr;
226 }
227 /*
228diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c
229index 2f1e443..5bc2845 100644
230--- a/arch/powerpc/mm/mmap.c
231+++ b/arch/powerpc/mm/mmap.c
232@@ -106,7 +106,7 @@ static inline unsigned long mmap_base(unsigned long rnd)
233 addr = PAGE_ALIGN(addr);
234 vma = find_vma(mm, addr);
235 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
236- (!vma || addr + len <= vma->vm_start))
237+ (!vma || addr + len <= vm_start_gap(vma)))
238 return addr;
239 }
240
241@@ -142,7 +142,7 @@ static inline unsigned long mmap_base(unsigned long rnd)
242 addr = PAGE_ALIGN(addr);
243 vma = find_vma(mm, addr);
244 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
245- (!vma || addr + len <= vma->vm_start))
246+ (!vma || addr + len <= vm_start_gap(vma)))
247 return addr;
248 }
249
250diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
251index 2b27458..c4d5c9c 100644
252--- a/arch/powerpc/mm/slice.c
253+++ b/arch/powerpc/mm/slice.c
254@@ -105,7 +105,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
255 if ((mm->task_size - len) < addr)
256 return 0;
257 vma = find_vma(mm, addr);
258- return (!vma || (addr + len) <= vma->vm_start);
259+ return (!vma || (addr + len) <= vm_start_gap(vma));
260 }
261
262 static int slice_low_has_vma(struct mm_struct *mm, unsigned long slice)
263diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
264index eb9df28..812368f 100644
265--- a/arch/s390/mm/mmap.c
266+++ b/arch/s390/mm/mmap.c
267@@ -98,7 +98,7 @@ static inline unsigned long mmap_base(unsigned long rnd)
268 addr = PAGE_ALIGN(addr);
269 vma = find_vma(mm, addr);
270 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
271- (!vma || addr + len <= vma->vm_start))
272+ (!vma || addr + len <= vm_start_gap(vma)))
273 return addr;
274 }
275
276@@ -136,7 +136,7 @@ static inline unsigned long mmap_base(unsigned long rnd)
277 addr = PAGE_ALIGN(addr);
278 vma = find_vma(mm, addr);
279 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
280- (!vma || addr + len <= vma->vm_start))
281+ (!vma || addr + len <= vm_start_gap(vma)))
282 return addr;
283 }
284
285diff --git a/arch/sh/mm/mmap.c b/arch/sh/mm/mmap.c
286index 6777177..7df7d59 100644
287--- a/arch/sh/mm/mmap.c
288+++ b/arch/sh/mm/mmap.c
289@@ -63,7 +63,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
290
291 vma = find_vma(mm, addr);
292 if (TASK_SIZE - len >= addr &&
293- (!vma || addr + len <= vma->vm_start))
294+ (!vma || addr + len <= vm_start_gap(vma)))
295 return addr;
296 }
297
298@@ -113,7 +113,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
299
300 vma = find_vma(mm, addr);
301 if (TASK_SIZE - len >= addr &&
302- (!vma || addr + len <= vma->vm_start))
303+ (!vma || addr + len <= vm_start_gap(vma)))
304 return addr;
305 }
306
307diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
308index fe8b8ee..02e05e2 100644
309--- a/arch/sparc/kernel/sys_sparc_64.c
310+++ b/arch/sparc/kernel/sys_sparc_64.c
311@@ -118,7 +118,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
312
313 vma = find_vma(mm, addr);
314 if (task_size - len >= addr &&
315- (!vma || addr + len <= vma->vm_start))
316+ (!vma || addr + len <= vm_start_gap(vma)))
317 return addr;
318 }
319
320@@ -181,7 +181,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
321
322 vma = find_vma(mm, addr);
323 if (task_size - len >= addr &&
324- (!vma || addr + len <= vma->vm_start))
325+ (!vma || addr + len <= vm_start_gap(vma)))
326 return addr;
327 }
328
329diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
330index 988acc8b..58cde8d 100644
331--- a/arch/sparc/mm/hugetlbpage.c
332+++ b/arch/sparc/mm/hugetlbpage.c
333@@ -116,7 +116,7 @@ static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *filp,
334 addr = ALIGN(addr, HPAGE_SIZE);
335 vma = find_vma(mm, addr);
336 if (task_size - len >= addr &&
337- (!vma || addr + len <= vma->vm_start))
338+ (!vma || addr + len <= vm_start_gap(vma)))
339 return addr;
340 }
341 if (mm->get_unmapped_area == arch_get_unmapped_area)
342diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c
343index 77ceaa3..67508b2 100644
344--- a/arch/tile/mm/hugetlbpage.c
345+++ b/arch/tile/mm/hugetlbpage.c
346@@ -232,7 +232,7 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
347 addr = ALIGN(addr, huge_page_size(h));
348 vma = find_vma(mm, addr);
349 if (TASK_SIZE - len >= addr &&
350- (!vma || addr + len <= vma->vm_start))
351+ (!vma || addr + len <= vm_start_gap(vma)))
352 return addr;
353 }
354 if (current->mm->get_unmapped_area == arch_get_unmapped_area)
355diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
356index a55ed63..1119414 100644
357--- a/arch/x86/kernel/sys_x86_64.c
358+++ b/arch/x86/kernel/sys_x86_64.c
359@@ -140,7 +140,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin,
360 addr = PAGE_ALIGN(addr);
361 vma = find_vma(mm, addr);
362 if (end - len >= addr &&
363- (!vma || addr + len <= vma->vm_start))
364+ (!vma || addr + len <= vm_start_gap(vma)))
365 return addr;
366 }
367
368@@ -183,7 +183,7 @@ static void find_start_end(unsigned long flags, unsigned long *begin,
369 addr = PAGE_ALIGN(addr);
370 vma = find_vma(mm, addr);
371 if (TASK_SIZE - len >= addr &&
372- (!vma || addr + len <= vma->vm_start))
373+ (!vma || addr + len <= vm_start_gap(vma)))
374 return addr;
375 }
376
377diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c
378index 2ae8584..fe342e8 100644
379--- a/arch/x86/mm/hugetlbpage.c
380+++ b/arch/x86/mm/hugetlbpage.c
381@@ -144,7 +144,7 @@ static unsigned long hugetlb_get_unmapped_area_topdown(struct file *file,
382 addr = ALIGN(addr, huge_page_size(h));
383 vma = find_vma(mm, addr);
384 if (TASK_SIZE - len >= addr &&
385- (!vma || addr + len <= vma->vm_start))
386+ (!vma || addr + len <= vm_start_gap(vma)))
387 return addr;
388 }
389 if (mm->get_unmapped_area == arch_get_unmapped_area)
390diff --git a/arch/xtensa/kernel/syscall.c b/arch/xtensa/kernel/syscall.c
391index 83cf496..3aaaae1 100644
392--- a/arch/xtensa/kernel/syscall.c
393+++ b/arch/xtensa/kernel/syscall.c
394@@ -87,7 +87,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
395 /* At this point: (!vmm || addr < vmm->vm_end). */
396 if (TASK_SIZE - len < addr)
397 return -ENOMEM;
398- if (!vmm || addr + len <= vmm->vm_start)
399+ if (!vmm || addr + len <= vm_start_gap(vmm))
400 return addr;
401 addr = vmm->vm_end;
402 if (flags & MAP_SHARED)
403diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
404index 4fb7b10..704fa0b 100644
405--- a/fs/hugetlbfs/inode.c
406+++ b/fs/hugetlbfs/inode.c
407@@ -191,7 +191,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)
408 addr = ALIGN(addr, huge_page_size(h));
409 vma = find_vma(mm, addr);
410 if (TASK_SIZE - len >= addr &&
411- (!vma || addr + len <= vma->vm_start))
412+ (!vma || addr + len <= vm_start_gap(vma)))
413 return addr;
414 }
415
416diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
417index b1517b6..5138e78 100644
418--- a/fs/proc/task_mmu.c
419+++ b/fs/proc/task_mmu.c
420@@ -299,11 +299,7 @@ static int is_stack(struct proc_maps_private *priv,
421
422 /* We don't show the stack guard page in /proc/maps */
423 start = vma->vm_start;
424- if (stack_guard_page_start(vma, start))
425- start += PAGE_SIZE;
426 end = vma->vm_end;
427- if (stack_guard_page_end(vma, end))
428- end -= PAGE_SIZE;
429
430 seq_setwidth(m, 25 + sizeof(void *) * 6 - 1);
431 seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ",
432diff --git a/include/linux/mm.h b/include/linux/mm.h
433index 0b5b2e4..6c9e1ad 100644
434--- a/include/linux/mm.h
435+++ b/include/linux/mm.h
436@@ -1356,39 +1356,11 @@ void account_page_cleaned(struct page *page, struct address_space *mapping,
437
438 int get_cmdline(struct task_struct *task, char *buffer, int buflen);
439
440-/* Is the vma a continuation of the stack vma above it? */
441-static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr)
442-{
443- return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN);
444-}
445-
446 static inline bool vma_is_anonymous(struct vm_area_struct *vma)
447 {
448 return !vma->vm_ops;
449 }
450
451-static inline int stack_guard_page_start(struct vm_area_struct *vma,
452- unsigned long addr)
453-{
454- return (vma->vm_flags & VM_GROWSDOWN) &&
455- (vma->vm_start == addr) &&
456- !vma_growsdown(vma->vm_prev, addr);
457-}
458-
459-/* Is the vma a continuation of the stack vma below it? */
460-static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr)
461-{
462- return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP);
463-}
464-
465-static inline int stack_guard_page_end(struct vm_area_struct *vma,
466- unsigned long addr)
467-{
468- return (vma->vm_flags & VM_GROWSUP) &&
469- (vma->vm_end == addr) &&
470- !vma_growsup(vma->vm_next, addr);
471-}
472-
473 int vma_is_stack_for_current(struct vm_area_struct *vma);
474
475 extern unsigned long move_page_tables(struct vm_area_struct *vma,
476@@ -2127,6 +2099,7 @@ void page_cache_async_readahead(struct address_space *mapping,
477 pgoff_t offset,
478 unsigned long size);
479
480+extern unsigned long stack_guard_gap;
481 /* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */
482 extern int expand_stack(struct vm_area_struct *vma, unsigned long address);
483
484@@ -2155,6 +2128,30 @@ static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * m
485 return vma;
486 }
487
488+static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
489+{
490+ unsigned long vm_start = vma->vm_start;
491+
492+ if (vma->vm_flags & VM_GROWSDOWN) {
493+ vm_start -= stack_guard_gap;
494+ if (vm_start > vma->vm_start)
495+ vm_start = 0;
496+ }
497+ return vm_start;
498+}
499+
500+static inline unsigned long vm_end_gap(struct vm_area_struct *vma)
501+{
502+ unsigned long vm_end = vma->vm_end;
503+
504+ if (vma->vm_flags & VM_GROWSUP) {
505+ vm_end += stack_guard_gap;
506+ if (vm_end < vma->vm_end)
507+ vm_end = -PAGE_SIZE;
508+ }
509+ return vm_end;
510+}
511+
512 static inline unsigned long vma_pages(struct vm_area_struct *vma)
513 {
514 return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
515diff --git a/mm/gup.c b/mm/gup.c
516index ec4f827..c63a034 100644
517--- a/mm/gup.c
518+++ b/mm/gup.c
519@@ -370,11 +370,6 @@ static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma,
520 /* mlock all present pages, but do not fault in new pages */
521 if ((*flags & (FOLL_POPULATE | FOLL_MLOCK)) == FOLL_MLOCK)
522 return -ENOENT;
523- /* For mm_populate(), just skip the stack guard page. */
524- if ((*flags & FOLL_POPULATE) &&
525- (stack_guard_page_start(vma, address) ||
526- stack_guard_page_end(vma, address + PAGE_SIZE)))
527- return -ENOENT;
528 if (*flags & FOLL_WRITE)
529 fault_flags |= FAULT_FLAG_WRITE;
530 if (*flags & FOLL_REMOTE)
531diff --git a/mm/memory.c b/mm/memory.c
532index cbb1e5e..e6a5a1f 100644
533--- a/mm/memory.c
534+++ b/mm/memory.c
535@@ -2699,40 +2699,6 @@ int do_swap_page(struct fault_env *fe, pte_t orig_pte)
536 }
537
538 /*
539- * This is like a special single-page "expand_{down|up}wards()",
540- * except we must first make sure that 'address{-|+}PAGE_SIZE'
541- * doesn't hit another vma.
542- */
543-static inline int check_stack_guard_page(struct vm_area_struct *vma, unsigned long address)
544-{
545- address &= PAGE_MASK;
546- if ((vma->vm_flags & VM_GROWSDOWN) && address == vma->vm_start) {
547- struct vm_area_struct *prev = vma->vm_prev;
548-
549- /*
550- * Is there a mapping abutting this one below?
551- *
552- * That's only ok if it's the same stack mapping
553- * that has gotten split..
554- */
555- if (prev && prev->vm_end == address)
556- return prev->vm_flags & VM_GROWSDOWN ? 0 : -ENOMEM;
557-
558- return expand_downwards(vma, address - PAGE_SIZE);
559- }
560- if ((vma->vm_flags & VM_GROWSUP) && address + PAGE_SIZE == vma->vm_end) {
561- struct vm_area_struct *next = vma->vm_next;
562-
563- /* As VM_GROWSDOWN but s/below/above/ */
564- if (next && next->vm_start == address + PAGE_SIZE)
565- return next->vm_flags & VM_GROWSUP ? 0 : -ENOMEM;
566-
567- return expand_upwards(vma, address + PAGE_SIZE);
568- }
569- return 0;
570-}
571-
572-/*
573 * We enter with non-exclusive mmap_sem (to exclude vma changes,
574 * but allow concurrent faults), and pte mapped but not yet locked.
575 * We return with mmap_sem still held, but pte unmapped and unlocked.
576@@ -2748,10 +2714,6 @@ static int do_anonymous_page(struct fault_env *fe)
577 if (vma->vm_flags & VM_SHARED)
578 return VM_FAULT_SIGBUS;
579
580- /* Check if we need to add a guard page to the stack */
581- if (check_stack_guard_page(vma, fe->address) < 0)
582- return VM_FAULT_SIGSEGV;
583-
584 /*
585 * Use pte_alloc() instead of pte_alloc_map(). We can't run
586 * pte_offset_map() on pmds where a huge pmd might be created
587diff --git a/mm/mmap.c b/mm/mmap.c
588index 1af87c1..26542b3 100644
589--- a/mm/mmap.c
590+++ b/mm/mmap.c
591@@ -183,6 +183,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
592 unsigned long retval;
593 unsigned long newbrk, oldbrk;
594 struct mm_struct *mm = current->mm;
595+ struct vm_area_struct *next;
596 unsigned long min_brk;
597 bool populate;
598
599@@ -228,7 +229,8 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
600 }
601
602 /* Check against existing mmap mappings. */
603- if (find_vma_intersection(mm, oldbrk, newbrk+PAGE_SIZE))
604+ next = find_vma(mm, oldbrk);
605+ if (next && newbrk + PAGE_SIZE > vm_start_gap(next))
606 goto out;
607
608 /* Ok, looks good - let it rip. */
609@@ -251,10 +253,22 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
610
611 static long vma_compute_subtree_gap(struct vm_area_struct *vma)
612 {
613- unsigned long max, subtree_gap;
614- max = vma->vm_start;
615- if (vma->vm_prev)
616- max -= vma->vm_prev->vm_end;
617+ unsigned long max, prev_end, subtree_gap;
618+
619+ /*
620+ * Note: in the rare case of a VM_GROWSDOWN above a VM_GROWSUP, we
621+ * allow two stack_guard_gaps between them here, and when choosing
622+ * an unmapped area; whereas when expanding we only require one.
623+ * That's a little inconsistent, but keeps the code here simpler.
624+ */
625+ max = vm_start_gap(vma);
626+ if (vma->vm_prev) {
627+ prev_end = vm_end_gap(vma->vm_prev);
628+ if (max > prev_end)
629+ max -= prev_end;
630+ else
631+ max = 0;
632+ }
633 if (vma->vm_rb.rb_left) {
634 subtree_gap = rb_entry(vma->vm_rb.rb_left,
635 struct vm_area_struct, vm_rb)->rb_subtree_gap;
636@@ -350,7 +364,7 @@ static void validate_mm(struct mm_struct *mm)
637 anon_vma_unlock_read(anon_vma);
638 }
639
640- highest_address = vma->vm_end;
641+ highest_address = vm_end_gap(vma);
642 vma = vma->vm_next;
643 i++;
644 }
645@@ -539,7 +553,7 @@ void __vma_link_rb(struct mm_struct *mm, struct vm_area_struct *vma,
646 if (vma->vm_next)
647 vma_gap_update(vma->vm_next);
648 else
649- mm->highest_vm_end = vma->vm_end;
650+ mm->highest_vm_end = vm_end_gap(vma);
651
652 /*
653 * vma->vm_prev wasn't known when we followed the rbtree to find the
654@@ -854,7 +868,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
655 vma_gap_update(vma);
656 if (end_changed) {
657 if (!next)
658- mm->highest_vm_end = end;
659+ mm->highest_vm_end = vm_end_gap(vma);
660 else if (!adjust_next)
661 vma_gap_update(next);
662 }
663@@ -939,7 +953,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
664 * mm->highest_vm_end doesn't need any update
665 * in remove_next == 1 case.
666 */
667- VM_WARN_ON(mm->highest_vm_end != end);
668+ VM_WARN_ON(mm->highest_vm_end != vm_end_gap(vma));
669 }
670 }
671 if (insert && file)
672@@ -1783,7 +1797,7 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
673
674 while (true) {
675 /* Visit left subtree if it looks promising */
676- gap_end = vma->vm_start;
677+ gap_end = vm_start_gap(vma);
678 if (gap_end >= low_limit && vma->vm_rb.rb_left) {
679 struct vm_area_struct *left =
680 rb_entry(vma->vm_rb.rb_left,
681@@ -1794,7 +1808,7 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
682 }
683 }
684
685- gap_start = vma->vm_prev ? vma->vm_prev->vm_end : 0;
686+ gap_start = vma->vm_prev ? vm_end_gap(vma->vm_prev) : 0;
687 check_current:
688 /* Check if current node has a suitable gap */
689 if (gap_start > high_limit)
690@@ -1821,8 +1835,8 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
691 vma = rb_entry(rb_parent(prev),
692 struct vm_area_struct, vm_rb);
693 if (prev == vma->vm_rb.rb_left) {
694- gap_start = vma->vm_prev->vm_end;
695- gap_end = vma->vm_start;
696+ gap_start = vm_end_gap(vma->vm_prev);
697+ gap_end = vm_start_gap(vma);
698 goto check_current;
699 }
700 }
701@@ -1886,7 +1900,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
702
703 while (true) {
704 /* Visit right subtree if it looks promising */
705- gap_start = vma->vm_prev ? vma->vm_prev->vm_end : 0;
706+ gap_start = vma->vm_prev ? vm_end_gap(vma->vm_prev) : 0;
707 if (gap_start <= high_limit && vma->vm_rb.rb_right) {
708 struct vm_area_struct *right =
709 rb_entry(vma->vm_rb.rb_right,
710@@ -1899,7 +1913,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
711
712 check_current:
713 /* Check if current node has a suitable gap */
714- gap_end = vma->vm_start;
715+ gap_end = vm_start_gap(vma);
716 if (gap_end < low_limit)
717 return -ENOMEM;
718 if (gap_start <= high_limit && gap_end - gap_start >= length)
719@@ -1925,7 +1939,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
720 struct vm_area_struct, vm_rb);
721 if (prev == vma->vm_rb.rb_right) {
722 gap_start = vma->vm_prev ?
723- vma->vm_prev->vm_end : 0;
724+ vm_end_gap(vma->vm_prev) : 0;
725 goto check_current;
726 }
727 }
728@@ -1963,7 +1977,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
729 unsigned long len, unsigned long pgoff, unsigned long flags)
730 {
731 struct mm_struct *mm = current->mm;
732- struct vm_area_struct *vma;
733+ struct vm_area_struct *vma, *prev;
734 struct vm_unmapped_area_info info;
735
736 if (len > TASK_SIZE - mmap_min_addr)
737@@ -1974,9 +1988,10 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
738
739 if (addr) {
740 addr = PAGE_ALIGN(addr);
741- vma = find_vma(mm, addr);
742+ vma = find_vma_prev(mm, addr, &prev);
743 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
744- (!vma || addr + len <= vma->vm_start))
745+ (!vma || addr + len <= vm_start_gap(vma)) &&
746+ (!prev || addr >= vm_end_gap(prev)))
747 return addr;
748 }
749
750@@ -1999,7 +2014,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
751 const unsigned long len, const unsigned long pgoff,
752 const unsigned long flags)
753 {
754- struct vm_area_struct *vma;
755+ struct vm_area_struct *vma, *prev;
756 struct mm_struct *mm = current->mm;
757 unsigned long addr = addr0;
758 struct vm_unmapped_area_info info;
759@@ -2014,9 +2029,10 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
760 /* requesting a specific address */
761 if (addr) {
762 addr = PAGE_ALIGN(addr);
763- vma = find_vma(mm, addr);
764+ vma = find_vma_prev(mm, addr, &prev);
765 if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
766- (!vma || addr + len <= vma->vm_start))
767+ (!vma || addr + len <= vm_start_gap(vma)) &&
768+ (!prev || addr >= vm_end_gap(prev)))
769 return addr;
770 }
771
772@@ -2151,21 +2167,19 @@ struct vm_area_struct *
773 * update accounting. This is shared with both the
774 * grow-up and grow-down cases.
775 */
776-static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, unsigned long grow)
777+static int acct_stack_growth(struct vm_area_struct *vma,
778+ unsigned long size, unsigned long grow)
779 {
780 struct mm_struct *mm = vma->vm_mm;
781 struct rlimit *rlim = current->signal->rlim;
782- unsigned long new_start, actual_size;
783+ unsigned long new_start;
784
785 /* address space limit tests */
786 if (!may_expand_vm(mm, vma->vm_flags, grow))
787 return -ENOMEM;
788
789 /* Stack limit test */
790- actual_size = size;
791- if (size && (vma->vm_flags & (VM_GROWSUP | VM_GROWSDOWN)))
792- actual_size -= PAGE_SIZE;
793- if (actual_size > READ_ONCE(rlim[RLIMIT_STACK].rlim_cur))
794+ if (size > READ_ONCE(rlim[RLIMIT_STACK].rlim_cur))
795 return -ENOMEM;
796
797 /* mlock limit tests */
798@@ -2203,17 +2217,30 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
799 int expand_upwards(struct vm_area_struct *vma, unsigned long address)
800 {
801 struct mm_struct *mm = vma->vm_mm;
802+ struct vm_area_struct *next;
803+ unsigned long gap_addr;
804 int error = 0;
805
806 if (!(vma->vm_flags & VM_GROWSUP))
807 return -EFAULT;
808
809 /* Guard against wrapping around to address 0. */
810- if (address < PAGE_ALIGN(address+4))
811- address = PAGE_ALIGN(address+4);
812- else
813+ address &= PAGE_MASK;
814+ address += PAGE_SIZE;
815+ if (!address)
816 return -ENOMEM;
817
818+ /* Enforce stack_guard_gap */
819+ gap_addr = address + stack_guard_gap;
820+ if (gap_addr < address)
821+ return -ENOMEM;
822+ next = vma->vm_next;
823+ if (next && next->vm_start < gap_addr) {
824+ if (!(next->vm_flags & VM_GROWSUP))
825+ return -ENOMEM;
826+ /* Check that both stack segments have the same anon_vma? */
827+ }
828+
829 /* We must make sure the anon_vma is allocated. */
830 if (unlikely(anon_vma_prepare(vma)))
831 return -ENOMEM;
832@@ -2257,7 +2284,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
833 if (vma->vm_next)
834 vma_gap_update(vma->vm_next);
835 else
836- mm->highest_vm_end = address;
837+ mm->highest_vm_end = vm_end_gap(vma);
838 spin_unlock(&mm->page_table_lock);
839
840 perf_event_mmap(vma);
841@@ -2278,6 +2305,8 @@ int expand_downwards(struct vm_area_struct *vma,
842 unsigned long address)
843 {
844 struct mm_struct *mm = vma->vm_mm;
845+ struct vm_area_struct *prev;
846+ unsigned long gap_addr;
847 int error;
848
849 address &= PAGE_MASK;
850@@ -2285,6 +2314,17 @@ int expand_downwards(struct vm_area_struct *vma,
851 if (error)
852 return error;
853
854+ /* Enforce stack_guard_gap */
855+ gap_addr = address - stack_guard_gap;
856+ if (gap_addr > address)
857+ return -ENOMEM;
858+ prev = vma->vm_prev;
859+ if (prev && prev->vm_end > gap_addr) {
860+ if (!(prev->vm_flags & VM_GROWSDOWN))
861+ return -ENOMEM;
862+ /* Check that both stack segments have the same anon_vma? */
863+ }
864+
865 /* We must make sure the anon_vma is allocated. */
866 if (unlikely(anon_vma_prepare(vma)))
867 return -ENOMEM;
868@@ -2339,28 +2379,25 @@ int expand_downwards(struct vm_area_struct *vma,
869 return error;
870 }
871
872-/*
873- * Note how expand_stack() refuses to expand the stack all the way to
874- * abut the next virtual mapping, *unless* that mapping itself is also
875- * a stack mapping. We want to leave room for a guard page, after all
876- * (the guard page itself is not added here, that is done by the
877- * actual page faulting logic)
878- *
879- * This matches the behavior of the guard page logic (see mm/memory.c:
880- * check_stack_guard_page()), which only allows the guard page to be
881- * removed under these circumstances.
882- */
883+/* enforced gap between the expanding stack and other mappings. */
884+unsigned long stack_guard_gap = 256UL<<PAGE_SHIFT;
885+
886+static int __init cmdline_parse_stack_guard_gap(char *p)
887+{
888+ unsigned long val;
889+ char *endptr;
890+
891+ val = simple_strtoul(p, &endptr, 10);
892+ if (!*endptr)
893+ stack_guard_gap = val << PAGE_SHIFT;
894+
895+ return 0;
896+}
897+__setup("stack_guard_gap=", cmdline_parse_stack_guard_gap);
898+
899 #ifdef CONFIG_STACK_GROWSUP
900 int expand_stack(struct vm_area_struct *vma, unsigned long address)
901 {
902- struct vm_area_struct *next;
903-
904- address &= PAGE_MASK;
905- next = vma->vm_next;
906- if (next && next->vm_start == address + PAGE_SIZE) {
907- if (!(next->vm_flags & VM_GROWSUP))
908- return -ENOMEM;
909- }
910 return expand_upwards(vma, address);
911 }
912
913@@ -2382,14 +2419,6 @@ struct vm_area_struct *
914 #else
915 int expand_stack(struct vm_area_struct *vma, unsigned long address)
916 {
917- struct vm_area_struct *prev;
918-
919- address &= PAGE_MASK;
920- prev = vma->vm_prev;
921- if (prev && prev->vm_end == address) {
922- if (!(prev->vm_flags & VM_GROWSDOWN))
923- return -ENOMEM;
924- }
925 return expand_downwards(vma, address);
926 }
927
928@@ -2487,7 +2516,7 @@ static void unmap_region(struct mm_struct *mm,
929 vma->vm_prev = prev;
930 vma_gap_update(vma);
931 } else
932- mm->highest_vm_end = prev ? prev->vm_end : 0;
933+ mm->highest_vm_end = prev ? vm_end_gap(prev) : 0;
934 tail_vma->vm_next = NULL;
935
936 /* Kill the cache */
937--
9381.9.1
939
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-11176.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-11176.patch
deleted file mode 100644
index a6bc539..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-11176.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From f991af3daabaecff34684fd51fac80319d1baad1 Mon Sep 17 00:00:00 2001
2From: Cong Wang <xiyou.wangcong@gmail.com>
3Date: Sun, 9 Jul 2017 13:19:55 -0700
4Subject: mqueue: fix a use-after-free in sys_mq_notify()
5
6The retry logic for netlink_attachskb() inside sys_mq_notify()
7is nasty and vulnerable:
8
91) The sock refcnt is already released when retry is needed
102) The fd is controllable by user-space because we already
11 release the file refcnt
12
13so we when retry but the fd has been just closed by user-space
14during this small window, we end up calling netlink_detachskb()
15on the error path which releases the sock again, later when
16the user-space closes this socket a use-after-free could be
17triggered.
18
19Setting 'sock' to NULL here should be sufficient to fix it.
20CVE: CVE-2017-11176
21Upstream-Status: Backport [from: https://git.kernel.org/linus/f991af3daabaecff34684fd51fac80319d1baad1]
22
23Reported-by: GeneBlue <geneblue.mail@gmail.com>
24Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
25Cc: Andrew Morton <akpm@linux-foundation.org>
26Cc: Manfred Spraul <manfred@colorfullife.com>
27Cc: stable@kernel.org
28Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
29Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
30---
31 ipc/mqueue.c | 4 +++-
32 1 file changed, 3 insertions(+), 1 deletion(-)
33
34diff --git a/ipc/mqueue.c b/ipc/mqueue.c
35index c9ff943..eb1391b 100644
36--- a/ipc/mqueue.c
37+++ b/ipc/mqueue.c
38@@ -1270,8 +1270,10 @@ retry:
39
40 timeo = MAX_SCHEDULE_TIMEOUT;
41 ret = netlink_attachskb(sock, nc, &timeo, NULL);
42- if (ret == 1)
43+ if (ret == 1) {
44+ sock = NULL;
45 goto retry;
46+ }
47 if (ret) {
48 sock = NULL;
49 nc = NULL;
50--
51cgit v1.1
52
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-5551.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-5551.patch
deleted file mode 100644
index 3865b5a..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-5551.patch
+++ /dev/null
@@ -1,53 +0,0 @@
1From 782b361c93062f083bbc9a78928498218f950399 Mon Sep 17 00:00:00 2001
2From: Gu Zheng <guzheng1@huawei.com>
3Date: Mon, 9 Jan 2017 09:34:48 +0800
4Subject: [PATCH] tmpfs: clear S_ISGID when setting posix ACLs
5
6commit 497de07d89c1410d76a15bec2bb41f24a2a89f31 upstream.
7
8This change was missed the tmpfs modification in In CVE-2016-7097
9commit 073931017b49 ("posix_acl: Clear SGID bit when setting
10file permissions")
11It can test by xfstest generic/375, which failed to clear
12setgid bit in the following test case on tmpfs:
13
14 touch $testfile
15 chown 100:100 $testfile
16 chmod 2755 $testfile
17 _runas -u 100 -g 101 -- setfacl -m u::rwx,g::rwx,o::rwx $testfile
18
19CVE: CVE-2017-5551
20Upstream-Status: Backport [from kernel.org longterm 4.9.52]
21
22Signed-off-by: Gu Zheng <guzheng1@huawei.com>
23Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
24Cc: Brad Spengler <spender@grsecurity.net>
25Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
26Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
27---
28 fs/posix_acl.c | 9 ++++-----
29 1 file changed, 4 insertions(+), 5 deletions(-)
30
31diff --git a/fs/posix_acl.c b/fs/posix_acl.c
32index 5955220..c9d48dc 100644
33--- a/fs/posix_acl.c
34+++ b/fs/posix_acl.c
35@@ -922,11 +922,10 @@ int simple_set_acl(struct inode *inode, struct posix_acl *acl, int type)
36 int error;
37
38 if (type == ACL_TYPE_ACCESS) {
39- error = posix_acl_equiv_mode(acl, &inode->i_mode);
40- if (error < 0)
41- return 0;
42- if (error == 0)
43- acl = NULL;
44+ error = posix_acl_update_mode(inode,
45+ &inode->i_mode, &acl);
46+ if (error)
47+ return error;
48 }
49
50 inode->i_ctime = current_time(inode);
51--
521.9.1
53
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-5577.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-5577.patch
deleted file mode 100644
index e50e108..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-5577.patch
+++ /dev/null
@@ -1,38 +0,0 @@
1From cfba2a001d0e36905016bb4f87fc47245c944c36 Mon Sep 17 00:00:00 2001
2From: Eric Anholt <eric@anholt.net>
3Date: Tue, 17 Jan 2017 21:58:06 +1100
4Subject: [PATCH] drm/vc4: Return -EINVAL on the overflow checks failing.
5
6commit 6b8ac63847bc2f958dd93c09edc941a0118992d9 upstream.
7
8By failing to set the errno, we'd continue on to trying to set up the
9RCL, and then oops on trying to dereference the tile_bo that binning
10validation should have set up.
11
12CVE: CVE-2017-5577
13Upstream-Status: Backport [from kernel.org longterm 4.9.52]
14
15Reported-by: Ingo Molnar <mingo@kernel.org>
16Signed-off-by: Eric Anholt <eric@anholt.net>
17Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.")
18Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
20---
21 drivers/gpu/drm/vc4/vc4_gem.c | 1 +
22 1 file changed, 1 insertion(+)
23
24diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
25index 39ef674..18e3717 100644
26--- a/drivers/gpu/drm/vc4/vc4_gem.c
27+++ b/drivers/gpu/drm/vc4/vc4_gem.c
28@@ -601,6 +601,7 @@ struct vc4_hang_state {
29 sizeof(struct vc4_shader_state)) ||
30 temp_size < exec_size) {
31 DRM_ERROR("overflow in exec arguments\n");
32+ ret = -EINVAL;
33 goto fail;
34 }
35
36--
371.9.1
38
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-5669.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-5669.patch
deleted file mode 100644
index 7dcd09a..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-5669.patch
+++ /dev/null
@@ -1,81 +0,0 @@
1From 270e84a1e6effd6c0c6e9b13b196b5fdaa392954 Mon Sep 17 00:00:00 2001
2From: Davidlohr Bueso <dave@stgolabs.net>
3Date: Mon, 27 Feb 2017 14:28:24 -0800
4Subject: [PATCH] ipc/shm: Fix shmat mmap nil-page protection
5
6commit 95e91b831f87ac8e1f8ed50c14d709089b4e01b8 upstream.
7
8The issue is described here, with a nice testcase:
9
10 https://bugzilla.kernel.org/show_bug.cgi?id=192931
11
12The problem is that shmat() calls do_mmap_pgoff() with MAP_FIXED, and
13the address rounded down to 0. For the regular mmap case, the
14protection mentioned above is that the kernel gets to generate the
15address -- arch_get_unmapped_area() will always check for MAP_FIXED and
16return that address. So by the time we do security_mmap_addr(0) things
17get funky for shmat().
18
19The testcase itself shows that while a regular user crashes, root will
20not have a problem attaching a nil-page. There are two possible fixes
21to this. The first, and which this patch does, is to simply allow root
22to crash as well -- this is also regular mmap behavior, ie when hacking
23up the testcase and adding mmap(... |MAP_FIXED). While this approach
24is the safer option, the second alternative is to ignore SHM_RND if the
25rounded address is 0, thus only having MAP_SHARED flags. This makes the
26behavior of shmat() identical to the mmap() case. The downside of this
27is obviously user visible, but does make sense in that it maintains
28semantics after the round-down wrt 0 address and mmap.
29
30Passes shm related ltp tests.
31
32CVE: CVE-2017-5669
33Upstream-Status: Backport [from kernel.org longterm 4.9.52]
34
35Link: http://lkml.kernel.org/r/1486050195-18629-1-git-send-email-dave@stgolabs.net
36Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
37Reported-by: Gareth Evans <gareth.evans@contextis.co.uk>
38Cc: Manfred Spraul <manfred@colorfullife.com>
39Cc: Michael Kerrisk <mtk.manpages@googlemail.com>
40Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
41Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
42Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
43Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
44---
45 ipc/shm.c | 13 +++++++++----
46 1 file changed, 9 insertions(+), 4 deletions(-)
47
48diff --git a/ipc/shm.c b/ipc/shm.c
49index dbac886..e2072ae 100644
50--- a/ipc/shm.c
51+++ b/ipc/shm.c
52@@ -1085,8 +1085,8 @@ static int shmctl_nolock(struct ipc_namespace *ns, int shmid,
53 * "raddr" thing points to kernel space, and there has to be a wrapper around
54 * this.
55 */
56-long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
57- unsigned long shmlba)
58+long do_shmat(int shmid, char __user *shmaddr, int shmflg,
59+ ulong *raddr, unsigned long shmlba)
60 {
61 struct shmid_kernel *shp;
62 unsigned long addr;
63@@ -1107,8 +1107,13 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
64 goto out;
65 else if ((addr = (ulong)shmaddr)) {
66 if (addr & (shmlba - 1)) {
67- if (shmflg & SHM_RND)
68- addr &= ~(shmlba - 1); /* round down */
69+ /*
70+ * Round down to the nearest multiple of shmlba.
71+ * For sane do_mmap_pgoff() parameters, avoid
72+ * round downs that trigger nil-page and MAP_FIXED.
73+ */
74+ if ((shmflg & SHM_RND) && addr >= shmlba)
75+ addr &= ~(shmlba - 1);
76 else
77 #ifndef __ARCH_FORCE_SHMLBA
78 if (addr & ~PAGE_MASK)
79--
801.9.1
81
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-5970.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-5970.patch
deleted file mode 100644
index ddfcca1..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-5970.patch
+++ /dev/null
@@ -1,54 +0,0 @@
1From f5b54446630a973e1f27b68599366bbd0ac53066 Mon Sep 17 00:00:00 2001
2From: Eric Dumazet <edumazet@google.com>
3Date: Sat, 4 Feb 2017 11:16:52 -0800
4Subject: [PATCH] ipv4: keep skb->dst around in presence of IP options
5
6[ Upstream commit 34b2cef20f19c87999fff3da4071e66937db9644 ]
7
8Andrey Konovalov got crashes in __ip_options_echo() when a NULL skb->dst
9is accessed.
10
11ipv4_pktinfo_prepare() should not drop the dst if (evil) IP options
12are present.
13
14We could refine the test to the presence of ts_needtime or srr,
15but IP options are not often used, so let's be conservative.
16
17Thanks to syzkaller team for finding this bug.
18
19CVE: CVE-2017-5970
20Upstream-Status: Backport [from kernel.org longterm 4.9.52]
21
22Fixes: d826eb14ecef ("ipv4: PKTINFO doesnt need dst reference")
23Signed-off-by: Eric Dumazet <edumazet@google.com>
24Reported-by: Andrey Konovalov <andreyknvl@google.com>
25Signed-off-by: David S. Miller <davem@davemloft.net>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
28---
29 net/ipv4/ip_sockglue.c | 9 ++++++++-
30 1 file changed, 8 insertions(+), 1 deletion(-)
31
32diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
33index f226f408..65336f3 100644
34--- a/net/ipv4/ip_sockglue.c
35+++ b/net/ipv4/ip_sockglue.c
36@@ -1215,7 +1215,14 @@ void ipv4_pktinfo_prepare(const struct sock *sk, struct sk_buff *skb)
37 pktinfo->ipi_ifindex = 0;
38 pktinfo->ipi_spec_dst.s_addr = 0;
39 }
40- skb_dst_drop(skb);
41+ /* We need to keep the dst for __ip_options_echo()
42+ * We could restrict the test to opt.ts_needtime || opt.srr,
43+ * but the following is good enough as IP options are not often used.
44+ */
45+ if (unlikely(IPCB(skb)->opt.optlen))
46+ skb_dst_force(skb);
47+ else
48+ skb_dst_drop(skb);
49 }
50
51 int ip_setsockopt(struct sock *sk, int level,
52--
531.9.1
54
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-5986.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-5986.patch
deleted file mode 100644
index 6750cd5..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-5986.patch
+++ /dev/null
@@ -1,46 +0,0 @@
1From 00eff2ebbd229758e90659907724c14dd5a18339 Mon Sep 17 00:00:00 2001
2From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
3Date: Mon, 6 Feb 2017 18:10:31 -0200
4Subject: [PATCH] sctp: avoid BUG_ON on sctp_wait_for_sndbuf
5
6[ Upstream commit 2dcab598484185dea7ec22219c76dcdd59e3cb90 ]
7
8Alexander Popov reported that an application may trigger a BUG_ON in
9sctp_wait_for_sndbuf if the socket tx buffer is full, a thread is
10waiting on it to queue more data and meanwhile another thread peels off
11the association being used by the first thread.
12
13This patch replaces the BUG_ON call with a proper error handling. It
14will return -EPIPE to the original sendmsg call, similarly to what would
15have been done if the association wasn't found in the first place.
16
17CVE: CVE-2017-5986
18Upstream-Status: Backport [from kernel.org longterm 4.9.52]
19
20Acked-by: Alexander Popov <alex.popov@linux.com>
21Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
22Reviewed-by: Xin Long <lucien.xin@gmail.com>
23Signed-off-by: David S. Miller <davem@davemloft.net>
24Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
25Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
26---
27 net/sctp/socket.c | 3 ++-
28 1 file changed, 2 insertions(+), 1 deletion(-)
29
30diff --git a/net/sctp/socket.c b/net/sctp/socket.c
31index ca12aa3..6cbe5bd 100644
32--- a/net/sctp/socket.c
33+++ b/net/sctp/socket.c
34@@ -7427,7 +7427,8 @@ static int sctp_wait_for_sndbuf(struct sctp_association *asoc, long *timeo_p,
35 */
36 release_sock(sk);
37 current_timeo = schedule_timeout(current_timeo);
38- BUG_ON(sk != asoc->base.sk);
39+ if (sk != asoc->base.sk)
40+ goto do_error;
41 lock_sock(sk);
42
43 *timeo_p = current_timeo;
44--
451.9.1
46
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-6214.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-6214.patch
deleted file mode 100644
index 640ed5c..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-6214.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From 0f895f51a831d73ce24158534784aba5b2a72a9e Mon Sep 17 00:00:00 2001
2From: Eric Dumazet <edumazet@google.com>
3Date: Fri, 3 Feb 2017 14:59:38 -0800
4Subject: [PATCH] tcp: avoid infinite loop in tcp_splice_read()
5
6[ Upstream commit ccf7abb93af09ad0868ae9033d1ca8108bdaec82 ]
7
8Splicing from TCP socket is vulnerable when a packet with URG flag is
9received and stored into receive queue.
10
11__tcp_splice_read() returns 0, and sk_wait_data() immediately
12returns since there is the problematic skb in queue.
13
14This is a nice way to burn cpu (aka infinite loop) and trigger
15soft lockups.
16
17Again, this gem was found by syzkaller tool.
18
19CVE: CVE-2017-6214
20Upstream-Status: Backport [from kernel.org longterm 4.9.52]
21
22Fixes: 9c55e01c0cc8 ("[TCP]: Splice receive support.")
23Signed-off-by: Eric Dumazet <edumazet@google.com>
24Reported-by: Dmitry Vyukov <dvyukov@google.com>
25Cc: Willy Tarreau <w@1wt.eu>
26Signed-off-by: David S. Miller <davem@davemloft.net>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
29---
30 net/ipv4/tcp.c | 6 ++++++
31 1 file changed, 6 insertions(+)
32
33diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
34index 814af89..6a90a0e 100644
35--- a/net/ipv4/tcp.c
36+++ b/net/ipv4/tcp.c
37@@ -772,6 +772,12 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
38 ret = -EAGAIN;
39 break;
40 }
41+ /* if __tcp_splice_read() got nothing while we have
42+ * an skb in receive queue, we do not want to loop.
43+ * This might happen with URG data.
44+ */
45+ if (!skb_queue_empty(&sk->sk_receive_queue))
46+ break;
47 sk_wait_data(sk, &timeo, NULL);
48 if (signal_pending(current)) {
49 ret = sock_intr_errno(timeo);
50--
511.9.1
52
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-6345.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-6345.patch
deleted file mode 100644
index b0ac548..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-6345.patch
+++ /dev/null
@@ -1,65 +0,0 @@
1From 42b52783a59cc706c71cdc7096edce4a6f086fd3 Mon Sep 17 00:00:00 2001
2From: Eric Dumazet <edumazet@google.com>
3Date: Sun, 12 Feb 2017 14:03:52 -0800
4Subject: [PATCH] net/llc: avoid BUG_ON() in skb_orphan()
5
6[ Upstream commit 8b74d439e1697110c5e5c600643e823eb1dd0762 ]
7
8It seems nobody used LLC since linux-3.12.
9
10Fortunately fuzzers like syzkaller still know how to run this code,
11otherwise it would be no fun.
12
13Setting skb->sk without skb->destructor leads to all kinds of
14bugs, we now prefer to be very strict about it.
15
16Ideally here we would use skb_set_owner() but this helper does not exist yet,
17only CAN seems to have a private helper for that.
18
19CVE: CVE-2017-6345
20Upstream-Status: Backport [from kernel.org longterm 4.9.52]
21
22Fixes: 376c7311bdb6 ("net: add a temporary sanity check in skb_orphan()")
23Signed-off-by: Eric Dumazet <edumazet@google.com>
24Reported-by: Andrey Konovalov <andreyknvl@google.com>
25Signed-off-by: David S. Miller <davem@davemloft.net>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
28---
29 net/llc/llc_conn.c | 3 +++
30 net/llc/llc_sap.c | 3 +++
31 2 files changed, 6 insertions(+)
32
33diff --git a/net/llc/llc_conn.c b/net/llc/llc_conn.c
34index 3e821da..8bc5a1b 100644
35--- a/net/llc/llc_conn.c
36+++ b/net/llc/llc_conn.c
37@@ -821,7 +821,10 @@ void llc_conn_handler(struct llc_sap *sap, struct sk_buff *skb)
38 * another trick required to cope with how the PROCOM state
39 * machine works. -acme
40 */
41+ skb_orphan(skb);
42+ sock_hold(sk);
43 skb->sk = sk;
44+ skb->destructor = sock_efree;
45 }
46 if (!sock_owned_by_user(sk))
47 llc_conn_rcv(sk, skb);
48diff --git a/net/llc/llc_sap.c b/net/llc/llc_sap.c
49index d0e1e80..5404d0d 100644
50--- a/net/llc/llc_sap.c
51+++ b/net/llc/llc_sap.c
52@@ -290,7 +290,10 @@ static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb,
53
54 ev->type = LLC_SAP_EV_TYPE_PDU;
55 ev->reason = 0;
56+ skb_orphan(skb);
57+ sock_hold(sk);
58 skb->sk = sk;
59+ skb->destructor = sock_efree;
60 llc_sap_state_process(sap, skb);
61 }
62
63--
641.9.1
65
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-6348.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-6348.patch
deleted file mode 100644
index 5e355ae..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-6348.patch
+++ /dev/null
@@ -1,94 +0,0 @@
1From c2219da51664451149350e47321aa0fcf72a8b8f Mon Sep 17 00:00:00 2001
2From: "David S. Miller" <davem@davemloft.net>
3Date: Fri, 17 Feb 2017 16:19:39 -0500
4Subject: [PATCH] irda: Fix lockdep annotations in hashbin_delete().
5
6[ Upstream commit 4c03b862b12f980456f9de92db6d508a4999b788 ]
7
8A nested lock depth was added to the hasbin_delete() code but it
9doesn't actually work some well and results in tons of lockdep splats.
10
11Fix the code instead to properly drop the lock around the operation
12and just keep peeking the head of the hashbin queue.
13
14CVE: CVE-2017-6348
15Upstream-Status: Backport [from kernel.org longterm 4.9.52]
16
17Reported-by: Dmitry Vyukov <dvyukov@google.com>
18Tested-by: Dmitry Vyukov <dvyukov@google.com>
19Signed-off-by: David S. Miller <davem@davemloft.net>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
22---
23 net/irda/irqueue.c | 34 ++++++++++++++++------------------
24 1 file changed, 16 insertions(+), 18 deletions(-)
25
26diff --git a/net/irda/irqueue.c b/net/irda/irqueue.c
27index acbe61c..160dc89 100644
28--- a/net/irda/irqueue.c
29+++ b/net/irda/irqueue.c
30@@ -383,9 +383,6 @@ hashbin_t *hashbin_new(int type)
31 * for deallocating this structure if it's complex. If not the user can
32 * just supply kfree, which should take care of the job.
33 */
34-#ifdef CONFIG_LOCKDEP
35-static int hashbin_lock_depth = 0;
36-#endif
37 int hashbin_delete( hashbin_t* hashbin, FREE_FUNC free_func)
38 {
39 irda_queue_t* queue;
40@@ -396,22 +393,27 @@ int hashbin_delete( hashbin_t* hashbin, FREE_FUNC free_func)
41 IRDA_ASSERT(hashbin->magic == HB_MAGIC, return -1;);
42
43 /* Synchronize */
44- if ( hashbin->hb_type & HB_LOCK ) {
45- spin_lock_irqsave_nested(&hashbin->hb_spinlock, flags,
46- hashbin_lock_depth++);
47- }
48+ if (hashbin->hb_type & HB_LOCK)
49+ spin_lock_irqsave(&hashbin->hb_spinlock, flags);
50
51 /*
52 * Free the entries in the hashbin, TODO: use hashbin_clear when
53 * it has been shown to work
54 */
55 for (i = 0; i < HASHBIN_SIZE; i ++ ) {
56- queue = dequeue_first((irda_queue_t**) &hashbin->hb_queue[i]);
57- while (queue ) {
58- if (free_func)
59- (*free_func)(queue);
60- queue = dequeue_first(
61- (irda_queue_t**) &hashbin->hb_queue[i]);
62+ while (1) {
63+ queue = dequeue_first((irda_queue_t**) &hashbin->hb_queue[i]);
64+
65+ if (!queue)
66+ break;
67+
68+ if (free_func) {
69+ if (hashbin->hb_type & HB_LOCK)
70+ spin_unlock_irqrestore(&hashbin->hb_spinlock, flags);
71+ free_func(queue);
72+ if (hashbin->hb_type & HB_LOCK)
73+ spin_lock_irqsave(&hashbin->hb_spinlock, flags);
74+ }
75 }
76 }
77
78@@ -420,12 +422,8 @@ int hashbin_delete( hashbin_t* hashbin, FREE_FUNC free_func)
79 hashbin->magic = ~HB_MAGIC;
80
81 /* Release lock */
82- if ( hashbin->hb_type & HB_LOCK) {
83+ if (hashbin->hb_type & HB_LOCK)
84 spin_unlock_irqrestore(&hashbin->hb_spinlock, flags);
85-#ifdef CONFIG_LOCKDEP
86- hashbin_lock_depth--;
87-#endif
88- }
89
90 /*
91 * Free the hashbin structure
92--
931.9.1
94
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-6353.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-6353.patch
deleted file mode 100644
index 3ff4dc7..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-6353.patch
+++ /dev/null
@@ -1,73 +0,0 @@
1From 35b9d61ea910c1ebd4652b32cc7d713f6689b4f4 Mon Sep 17 00:00:00 2001
2From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
3Date: Thu, 23 Feb 2017 09:31:18 -0300
4Subject: [PATCH] sctp: deny peeloff operation on asocs with threads sleeping
5 on it
6
7commit dfcb9f4f99f1e9a49e43398a7bfbf56927544af1 upstream.
8
9commit 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf")
10attempted to avoid a BUG_ON call when the association being used for a
11sendmsg() is blocked waiting for more sndbuf and another thread did a
12peeloff operation on such asoc, moving it to another socket.
13
14As Ben Hutchings noticed, then in such case it would return without
15locking back the socket and would cause two unlocks in a row.
16
17Further analysis also revealed that it could allow a double free if the
18application managed to peeloff the asoc that is created during the
19sendmsg call, because then sctp_sendmsg() would try to free the asoc
20that was created only for that call.
21
22This patch takes another approach. It will deny the peeloff operation
23if there is a thread sleeping on the asoc, so this situation doesn't
24exist anymore. This avoids the issues described above and also honors
25the syscalls that are already being handled (it can be multiple sendmsg
26calls).
27
28Joint work with Xin Long.
29
30CVE: CVE-2017-6353
31Upstream-Status: Backport [from kernel.org longterm 4.9.52]
32
33Fixes: 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf")
34Cc: Alexander Popov <alex.popov@linux.com>
35Cc: Ben Hutchings <ben@decadent.org.uk>
36Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
37Signed-off-by: Xin Long <lucien.xin@gmail.com>
38Signed-off-by: David S. Miller <davem@davemloft.net>
39Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
40Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
41---
42 net/sctp/socket.c | 8 ++++++--
43 1 file changed, 6 insertions(+), 2 deletions(-)
44
45diff --git a/net/sctp/socket.c b/net/sctp/socket.c
46index 6cbe5bd..6734420 100644
47--- a/net/sctp/socket.c
48+++ b/net/sctp/socket.c
49@@ -4735,6 +4735,12 @@ int sctp_do_peeloff(struct sock *sk, sctp_assoc_t id, struct socket **sockp)
50 if (!asoc)
51 return -EINVAL;
52
53+ /* If there is a thread waiting on more sndbuf space for
54+ * sending on this asoc, it cannot be peeled.
55+ */
56+ if (waitqueue_active(&asoc->wait))
57+ return -EBUSY;
58+
59 /* An association cannot be branched off from an already peeled-off
60 * socket, nor is this supported for tcp style sockets.
61 */
62@@ -7427,8 +7433,6 @@ static int sctp_wait_for_sndbuf(struct sctp_association *asoc, long *timeo_p,
63 */
64 release_sock(sk);
65 current_timeo = schedule_timeout(current_timeo);
66- if (sk != asoc->base.sk)
67- goto do_error;
68 lock_sock(sk);
69
70 *timeo_p = current_timeo;
71--
721.9.1
73
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-7487.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-7487.patch
deleted file mode 100644
index 41849fe..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-7487.patch
+++ /dev/null
@@ -1,39 +0,0 @@
1From ee0d8d8482345ff97a75a7d747efc309f13b0d80 Mon Sep 17 00:00:00 2001
2From: Dan Carpenter <dan.carpenter@oracle.com>
3Date: Tue, 2 May 2017 13:58:53 +0300
4Subject: [PATCH] ipx: call ipxitf_put() in ioctl error path
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9We should call ipxitf_put() if the copy_to_user() fails.
10
11CVE: CVE-2017-7487
12Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.50&id=820adccd0e3be9bdd2384ca8fc4712108cfdf28b]
13
14Reported-by: 李强 <liqiang6-s@360.cn>
15Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
16Signed-off-by: David S. Miller <davem@davemloft.net>
17Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
18---
19 net/ipx/af_ipx.c | 5 ++---
20 1 file changed, 2 insertions(+), 3 deletions(-)
21
22diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
23index 8a9219ff2e77e..fa31ef29e3fa0 100644
24--- a/net/ipx/af_ipx.c
25+++ b/net/ipx/af_ipx.c
26@@ -1168,11 +1168,10 @@ static int ipxitf_ioctl(unsigned int cmd, void __user *arg)
27 sipx->sipx_network = ipxif->if_netnum;
28 memcpy(sipx->sipx_node, ipxif->if_node,
29 sizeof(sipx->sipx_node));
30- rc = -EFAULT;
31+ rc = 0;
32 if (copy_to_user(arg, &ifr, sizeof(ifr)))
33- break;
34+ rc = -EFAULT;
35 ipxitf_put(ipxif);
36- rc = 0;
37 break;
38 }
39 case SIOCAIPXITFCRT:
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-7618.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-7618.patch
deleted file mode 100644
index 14198be..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-7618.patch
+++ /dev/null
@@ -1,238 +0,0 @@
1From c10479591869177ae7ac0570b54ace6fbdeb57c2 Mon Sep 17 00:00:00 2001
2From: Herbert Xu <herbert@gondor.apana.org.au>
3Date: Mon, 10 Apr 2017 17:27:57 +0800
4Subject: [PATCH] crypto: ahash - Fix EINPROGRESS notification callback
5
6commit ef0579b64e93188710d48667cb5e014926af9f1b upstream.
7
8The ahash API modifies the request's callback function in order
9to clean up after itself in some corner cases (unaligned final
10and missing finup).
11
12When the request is complete ahash will restore the original
13callback and everything is fine. However, when the request gets
14an EBUSY on a full queue, an EINPROGRESS callback is made while
15the request is still ongoing.
16
17In this case the ahash API will incorrectly call its own callback.
18
19This patch fixes the problem by creating a temporary request
20object on the stack which is used to relay EINPROGRESS back to
21the original completion function.
22
23This patch also adds code to preserve the original flags value.
24
25CVE: CVE-2017-7618
26Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=c10479591869177ae7ac0570b54ace6fbdeb57c2]
27
28Fixes: ab6bf4e5e5e4 ("crypto: hash - Fix the pointer voodoo in...")
29Reported-by: Sabrina Dubroca <sd@queasysnail.net>
30Tested-by: Sabrina Dubroca <sd@queasysnail.net>
31Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
32Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
33Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
34---
35 crypto/ahash.c | 79 ++++++++++++++++++++++++++----------------
36 include/crypto/internal/hash.h | 10 ++++++
37 2 files changed, 60 insertions(+), 29 deletions(-)
38
39diff --git a/crypto/ahash.c b/crypto/ahash.c
40index 2ce8bcb..cce0268 100644
41--- a/crypto/ahash.c
42+++ b/crypto/ahash.c
43@@ -31,6 +31,7 @@ struct ahash_request_priv {
44 crypto_completion_t complete;
45 void *data;
46 u8 *result;
47+ u32 flags;
48 void *ubuf[] CRYPTO_MINALIGN_ATTR;
49 };
50
51@@ -252,6 +253,8 @@ static int ahash_save_req(struct ahash_request *req, crypto_completion_t cplt)
52 priv->result = req->result;
53 priv->complete = req->base.complete;
54 priv->data = req->base.data;
55+ priv->flags = req->base.flags;
56+
57 /*
58 * WARNING: We do not backup req->priv here! The req->priv
59 * is for internal use of the Crypto API and the
60@@ -266,38 +269,44 @@ static int ahash_save_req(struct ahash_request *req, crypto_completion_t cplt)
61 return 0;
62 }
63
64-static void ahash_restore_req(struct ahash_request *req)
65+static void ahash_restore_req(struct ahash_request *req, int err)
66 {
67 struct ahash_request_priv *priv = req->priv;
68
69+ if (!err)
70+ memcpy(priv->result, req->result,
71+ crypto_ahash_digestsize(crypto_ahash_reqtfm(req)));
72+
73 /* Restore the original crypto request. */
74 req->result = priv->result;
75- req->base.complete = priv->complete;
76- req->base.data = priv->data;
77+
78+ ahash_request_set_callback(req, priv->flags,
79+ priv->complete, priv->data);
80 req->priv = NULL;
81
82 /* Free the req->priv.priv from the ADJUSTED request. */
83 kzfree(priv);
84 }
85
86-static void ahash_op_unaligned_finish(struct ahash_request *req, int err)
87+static void ahash_notify_einprogress(struct ahash_request *req)
88 {
89 struct ahash_request_priv *priv = req->priv;
90+ struct crypto_async_request oreq;
91
92- if (err == -EINPROGRESS)
93- return;
94-
95- if (!err)
96- memcpy(priv->result, req->result,
97- crypto_ahash_digestsize(crypto_ahash_reqtfm(req)));
98+ oreq.data = priv->data;
99
100- ahash_restore_req(req);
101+ priv->complete(&oreq, -EINPROGRESS);
102 }
103
104 static void ahash_op_unaligned_done(struct crypto_async_request *req, int err)
105 {
106 struct ahash_request *areq = req->data;
107
108+ if (err == -EINPROGRESS) {
109+ ahash_notify_einprogress(areq);
110+ return;
111+ }
112+
113 /*
114 * Restore the original request, see ahash_op_unaligned() for what
115 * goes where.
116@@ -308,7 +317,7 @@ static void ahash_op_unaligned_done(struct crypto_async_request *req, int err)
117 */
118
119 /* First copy req->result into req->priv.result */
120- ahash_op_unaligned_finish(areq, err);
121+ ahash_restore_req(areq, err);
122
123 /* Complete the ORIGINAL request. */
124 areq->base.complete(&areq->base, err);
125@@ -324,7 +333,12 @@ static int ahash_op_unaligned(struct ahash_request *req,
126 return err;
127
128 err = op(req);
129- ahash_op_unaligned_finish(req, err);
130+ if (err == -EINPROGRESS ||
131+ (err == -EBUSY && (ahash_request_flags(req) &
132+ CRYPTO_TFM_REQ_MAY_BACKLOG)))
133+ return err;
134+
135+ ahash_restore_req(req, err);
136
137 return err;
138 }
139@@ -359,25 +373,14 @@ int crypto_ahash_digest(struct ahash_request *req)
140 }
141 EXPORT_SYMBOL_GPL(crypto_ahash_digest);
142
143-static void ahash_def_finup_finish2(struct ahash_request *req, int err)
144+static void ahash_def_finup_done2(struct crypto_async_request *req, int err)
145 {
146- struct ahash_request_priv *priv = req->priv;
147+ struct ahash_request *areq = req->data;
148
149 if (err == -EINPROGRESS)
150 return;
151
152- if (!err)
153- memcpy(priv->result, req->result,
154- crypto_ahash_digestsize(crypto_ahash_reqtfm(req)));
155-
156- ahash_restore_req(req);
157-}
158-
159-static void ahash_def_finup_done2(struct crypto_async_request *req, int err)
160-{
161- struct ahash_request *areq = req->data;
162-
163- ahash_def_finup_finish2(areq, err);
164+ ahash_restore_req(areq, err);
165
166 areq->base.complete(&areq->base, err);
167 }
168@@ -388,11 +391,15 @@ static int ahash_def_finup_finish1(struct ahash_request *req, int err)
169 goto out;
170
171 req->base.complete = ahash_def_finup_done2;
172- req->base.flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
173+
174 err = crypto_ahash_reqtfm(req)->final(req);
175+ if (err == -EINPROGRESS ||
176+ (err == -EBUSY && (ahash_request_flags(req) &
177+ CRYPTO_TFM_REQ_MAY_BACKLOG)))
178+ return err;
179
180 out:
181- ahash_def_finup_finish2(req, err);
182+ ahash_restore_req(req, err);
183 return err;
184 }
185
186@@ -400,7 +407,16 @@ static void ahash_def_finup_done1(struct crypto_async_request *req, int err)
187 {
188 struct ahash_request *areq = req->data;
189
190+ if (err == -EINPROGRESS) {
191+ ahash_notify_einprogress(areq);
192+ return;
193+ }
194+
195+ areq->base.flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
196+
197 err = ahash_def_finup_finish1(areq, err);
198+ if (areq->priv)
199+ return;
200
201 areq->base.complete(&areq->base, err);
202 }
203@@ -415,6 +431,11 @@ static int ahash_def_finup(struct ahash_request *req)
204 return err;
205
206 err = tfm->update(req);
207+ if (err == -EINPROGRESS ||
208+ (err == -EBUSY && (ahash_request_flags(req) &
209+ CRYPTO_TFM_REQ_MAY_BACKLOG)))
210+ return err;
211+
212 return ahash_def_finup_finish1(req, err);
213 }
214
215diff --git a/include/crypto/internal/hash.h b/include/crypto/internal/hash.h
216index 1d4f365..f6d9af3e 100644
217--- a/include/crypto/internal/hash.h
218+++ b/include/crypto/internal/hash.h
219@@ -166,6 +166,16 @@ static inline struct ahash_instance *ahash_alloc_instance(
220 return crypto_alloc_instance2(name, alg, ahash_instance_headroom());
221 }
222
223+static inline void ahash_request_complete(struct ahash_request *req, int err)
224+{
225+ req->base.complete(&req->base, err);
226+}
227+
228+static inline u32 ahash_request_flags(struct ahash_request *req)
229+{
230+ return req->base.flags;
231+}
232+
233 static inline struct crypto_ahash *crypto_spawn_ahash(
234 struct crypto_ahash_spawn *spawn)
235 {
236--
2371.9.1
238
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-7645.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-7645.patch
deleted file mode 100644
index 2852f41..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-7645.patch
+++ /dev/null
@@ -1,109 +0,0 @@
1From fc6445df466f37291a70937642068bda78802a5b Mon Sep 17 00:00:00 2001
2From: "J. Bruce Fields" <bfields@redhat.com>
3Date: Fri, 21 Apr 2017 16:10:18 -0400
4Subject: [PATCH] nfsd: check for oversized NFSv2/v3 arguments
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit e6838a29ecb484c97e4efef9429643b9851fba6e upstream.
10
11A client can append random data to the end of an NFSv2 or NFSv3 RPC call
12without our complaining; we'll just stop parsing at the end of the
13expected data and ignore the rest.
14
15Encoded arguments and replies are stored together in an array of pages,
16and if a call is too large it could leave inadequate space for the
17reply. This is normally OK because NFS RPC's typically have either
18short arguments and long replies (like READ) or long arguments and short
19replies (like WRITE). But a client that sends an incorrectly long reply
20can violate those assumptions. This was observed to cause crashes.
21
22Also, several operations increment rq_next_page in the decode routine
23before checking the argument size, which can leave rq_next_page pointing
24well past the end of the page array, causing trouble later in
25svc_free_pages.
26
27So, following a suggestion from Neil Brown, add a central check to
28enforce our expectation that no NFSv2/v3 call has both a large call and
29a large reply.
30
31As followup we may also want to rewrite the encoding routines to check
32more carefully that they aren't running off the end of the page array.
33
34We may also consider rejecting calls that have any extra garbage
35appended. That would be safer, and within our rights by spec, but given
36the age of our server and the NFS protocol, and the fact that we've
37never enforced this before, we may need to balance that against the
38possibility of breaking some oddball client.
39
40CVE: CVE-2017-7645
41Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=fc6445df466f37291a70937642068bda78802a5b]
42
43Reported-by: Tuomas Haanpää <thaan@synopsys.com>
44Reported-by: Ari Kauppi <ari@synopsys.com>
45Reviewed-by: NeilBrown <neilb@suse.com>
46Signed-off-by: J. Bruce Fields <bfields@redhat.com>
47Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
48Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
49---
50 fs/nfsd/nfssvc.c | 36 ++++++++++++++++++++++++++++++++++++
51 1 file changed, 36 insertions(+)
52
53diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
54index a2b65fc..1645b97 100644
55--- a/fs/nfsd/nfssvc.c
56+++ b/fs/nfsd/nfssvc.c
57@@ -733,6 +733,37 @@ static __be32 map_new_errors(u32 vers, __be32 nfserr)
58 return nfserr;
59 }
60
61+/*
62+ * A write procedure can have a large argument, and a read procedure can
63+ * have a large reply, but no NFSv2 or NFSv3 procedure has argument and
64+ * reply that can both be larger than a page. The xdr code has taken
65+ * advantage of this assumption to be a sloppy about bounds checking in
66+ * some cases. Pending a rewrite of the NFSv2/v3 xdr code to fix that
67+ * problem, we enforce these assumptions here:
68+ */
69+static bool nfs_request_too_big(struct svc_rqst *rqstp,
70+ struct svc_procedure *proc)
71+{
72+ /*
73+ * The ACL code has more careful bounds-checking and is not
74+ * susceptible to this problem:
75+ */
76+ if (rqstp->rq_prog != NFS_PROGRAM)
77+ return false;
78+ /*
79+ * Ditto NFSv4 (which can in theory have argument and reply both
80+ * more than a page):
81+ */
82+ if (rqstp->rq_vers >= 4)
83+ return false;
84+ /* The reply will be small, we're OK: */
85+ if (proc->pc_xdrressize > 0 &&
86+ proc->pc_xdrressize < XDR_QUADLEN(PAGE_SIZE))
87+ return false;
88+
89+ return rqstp->rq_arg.len > PAGE_SIZE;
90+}
91+
92 int
93 nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp)
94 {
95@@ -745,6 +776,11 @@ static __be32 map_new_errors(u32 vers, __be32 nfserr)
96 rqstp->rq_vers, rqstp->rq_proc);
97 proc = rqstp->rq_procinfo;
98
99+ if (nfs_request_too_big(rqstp, proc)) {
100+ dprintk("nfsd: NFSv%d argument too large\n", rqstp->rq_vers);
101+ *statp = rpc_garbage_args;
102+ return 1;
103+ }
104 /*
105 * Give the xdr decoder a chance to change this if it wants
106 * (necessary in the NFSv4.0 compound case)
107--
1081.9.1
109
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8062.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8062.patch
deleted file mode 100644
index eab23f2..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8062.patch
+++ /dev/null
@@ -1,440 +0,0 @@
1From 06996254a605913cd7c1927d0e8a89b5138e110d Mon Sep 17 00:00:00 2001
2From: Jonathan McDowell <noodles@earth.li>
3Date: Wed, 15 Feb 2017 18:29:15 -0200
4Subject: [PATCH] dw2102: don't do DMA on stack
5
6commit 606142af57dad981b78707234cfbd15f9f7b7125 upstream.
7
8On Kernel 4.9, WARNINGs about doing DMA on stack are hit at
9the dw2102 driver: one in su3000_power_ctrl() and the other in tt_s2_4600_frontend_attach().
10
11Both were due to the use of buffers on the stack as parameters to
12dvb_usb_generic_rw() and the resulting attempt to do DMA with them.
13
14The device was non-functional as a result.
15
16So, switch this driver over to use a buffer within the device state
17structure, as has been done with other DVB-USB drivers.
18
19Tested with TechnoTrend TT-connect S2-4600.
20
21CVE: CVE-2017-8062
22Upstream-Status: Backport [from kernel.org longterm 4.9.52]
23
24[mchehab@osg.samsung.com: fixed a warning at su3000_i2c_transfer() that
25 state var were dereferenced before check 'd']
26Signed-off-by: Jonathan McDowell <noodles@earth.li>
27Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
28Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
30---
31 drivers/media/usb/dvb-usb/dw2102.c | 244 ++++++++++++++++++++++---------------
32 1 file changed, 145 insertions(+), 99 deletions(-)
33
34diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
35index 2c720cb..c3e6734 100644
36--- a/drivers/media/usb/dvb-usb/dw2102.c
37+++ b/drivers/media/usb/dvb-usb/dw2102.c
38@@ -68,6 +68,7 @@
39 struct dw2102_state {
40 u8 initialized;
41 u8 last_lock;
42+ u8 data[MAX_XFER_SIZE + 4];
43 struct i2c_client *i2c_client_demod;
44 struct i2c_client *i2c_client_tuner;
45
46@@ -662,62 +663,72 @@ static int su3000_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],
47 int num)
48 {
49 struct dvb_usb_device *d = i2c_get_adapdata(adap);
50- u8 obuf[0x40], ibuf[0x40];
51+ struct dw2102_state *state;
52
53 if (!d)
54 return -ENODEV;
55+
56+ state = d->priv;
57+
58 if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
59 return -EAGAIN;
60+ if (mutex_lock_interruptible(&d->data_mutex) < 0) {
61+ mutex_unlock(&d->i2c_mutex);
62+ return -EAGAIN;
63+ }
64
65 switch (num) {
66 case 1:
67 switch (msg[0].addr) {
68 case SU3000_STREAM_CTRL:
69- obuf[0] = msg[0].buf[0] + 0x36;
70- obuf[1] = 3;
71- obuf[2] = 0;
72- if (dvb_usb_generic_rw(d, obuf, 3, ibuf, 0, 0) < 0)
73+ state->data[0] = msg[0].buf[0] + 0x36;
74+ state->data[1] = 3;
75+ state->data[2] = 0;
76+ if (dvb_usb_generic_rw(d, state->data, 3,
77+ state->data, 0, 0) < 0)
78 err("i2c transfer failed.");
79 break;
80 case DW2102_RC_QUERY:
81- obuf[0] = 0x10;
82- if (dvb_usb_generic_rw(d, obuf, 1, ibuf, 2, 0) < 0)
83+ state->data[0] = 0x10;
84+ if (dvb_usb_generic_rw(d, state->data, 1,
85+ state->data, 2, 0) < 0)
86 err("i2c transfer failed.");
87- msg[0].buf[1] = ibuf[0];
88- msg[0].buf[0] = ibuf[1];
89+ msg[0].buf[1] = state->data[0];
90+ msg[0].buf[0] = state->data[1];
91 break;
92 default:
93 /* always i2c write*/
94- obuf[0] = 0x08;
95- obuf[1] = msg[0].addr;
96- obuf[2] = msg[0].len;
97+ state->data[0] = 0x08;
98+ state->data[1] = msg[0].addr;
99+ state->data[2] = msg[0].len;
100
101- memcpy(&obuf[3], msg[0].buf, msg[0].len);
102+ memcpy(&state->data[3], msg[0].buf, msg[0].len);
103
104- if (dvb_usb_generic_rw(d, obuf, msg[0].len + 3,
105- ibuf, 1, 0) < 0)
106+ if (dvb_usb_generic_rw(d, state->data, msg[0].len + 3,
107+ state->data, 1, 0) < 0)
108 err("i2c transfer failed.");
109
110 }
111 break;
112 case 2:
113 /* always i2c read */
114- obuf[0] = 0x09;
115- obuf[1] = msg[0].len;
116- obuf[2] = msg[1].len;
117- obuf[3] = msg[0].addr;
118- memcpy(&obuf[4], msg[0].buf, msg[0].len);
119-
120- if (dvb_usb_generic_rw(d, obuf, msg[0].len + 4,
121- ibuf, msg[1].len + 1, 0) < 0)
122+ state->data[0] = 0x09;
123+ state->data[1] = msg[0].len;
124+ state->data[2] = msg[1].len;
125+ state->data[3] = msg[0].addr;
126+ memcpy(&state->data[4], msg[0].buf, msg[0].len);
127+
128+ if (dvb_usb_generic_rw(d, state->data, msg[0].len + 4,
129+ state->data, msg[1].len + 1, 0) < 0)
130 err("i2c transfer failed.");
131
132- memcpy(msg[1].buf, &ibuf[1], msg[1].len);
133+ memcpy(msg[1].buf, &state->data[1], msg[1].len);
134 break;
135 default:
136 warn("more than 2 i2c messages at a time is not handled yet.");
137 break;
138 }
139+ mutex_unlock(&d->data_mutex);
140 mutex_unlock(&d->i2c_mutex);
141 return num;
142 }
143@@ -845,17 +856,23 @@ static int su3000_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
144 static int su3000_power_ctrl(struct dvb_usb_device *d, int i)
145 {
146 struct dw2102_state *state = (struct dw2102_state *)d->priv;
147- u8 obuf[] = {0xde, 0};
148+ int ret = 0;
149
150 info("%s: %d, initialized %d", __func__, i, state->initialized);
151
152 if (i && !state->initialized) {
153+ mutex_lock(&d->data_mutex);
154+
155+ state->data[0] = 0xde;
156+ state->data[1] = 0;
157+
158 state->initialized = 1;
159 /* reset board */
160- return dvb_usb_generic_rw(d, obuf, 2, NULL, 0, 0);
161+ ret = dvb_usb_generic_rw(d, state->data, 2, NULL, 0, 0);
162+ mutex_unlock(&d->data_mutex);
163 }
164
165- return 0;
166+ return ret;
167 }
168
169 static int su3000_read_mac_address(struct dvb_usb_device *d, u8 mac[6])
170@@ -1310,49 +1327,57 @@ static int prof_7500_frontend_attach(struct dvb_usb_adapter *d)
171 return 0;
172 }
173
174-static int su3000_frontend_attach(struct dvb_usb_adapter *d)
175+static int su3000_frontend_attach(struct dvb_usb_adapter *adap)
176 {
177- u8 obuf[3] = { 0xe, 0x80, 0 };
178- u8 ibuf[] = { 0 };
179+ struct dvb_usb_device *d = adap->dev;
180+ struct dw2102_state *state = d->priv;
181+
182+ mutex_lock(&d->data_mutex);
183+
184+ state->data[0] = 0xe;
185+ state->data[1] = 0x80;
186+ state->data[2] = 0;
187
188- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
189+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
190 err("command 0x0e transfer failed.");
191
192- obuf[0] = 0xe;
193- obuf[1] = 0x02;
194- obuf[2] = 1;
195+ state->data[0] = 0xe;
196+ state->data[1] = 0x02;
197+ state->data[2] = 1;
198
199- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
200+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
201 err("command 0x0e transfer failed.");
202 msleep(300);
203
204- obuf[0] = 0xe;
205- obuf[1] = 0x83;
206- obuf[2] = 0;
207+ state->data[0] = 0xe;
208+ state->data[1] = 0x83;
209+ state->data[2] = 0;
210
211- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
212+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
213 err("command 0x0e transfer failed.");
214
215- obuf[0] = 0xe;
216- obuf[1] = 0x83;
217- obuf[2] = 1;
218+ state->data[0] = 0xe;
219+ state->data[1] = 0x83;
220+ state->data[2] = 1;
221
222- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
223+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
224 err("command 0x0e transfer failed.");
225
226- obuf[0] = 0x51;
227+ state->data[0] = 0x51;
228
229- if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0)
230+ if (dvb_usb_generic_rw(d, state->data, 1, state->data, 1, 0) < 0)
231 err("command 0x51 transfer failed.");
232
233- d->fe_adap[0].fe = dvb_attach(ds3000_attach, &su3000_ds3000_config,
234- &d->dev->i2c_adap);
235- if (d->fe_adap[0].fe == NULL)
236+ mutex_unlock(&d->data_mutex);
237+
238+ adap->fe_adap[0].fe = dvb_attach(ds3000_attach, &su3000_ds3000_config,
239+ &d->i2c_adap);
240+ if (adap->fe_adap[0].fe == NULL)
241 return -EIO;
242
243- if (dvb_attach(ts2020_attach, d->fe_adap[0].fe,
244+ if (dvb_attach(ts2020_attach, adap->fe_adap[0].fe,
245 &dw2104_ts2020_config,
246- &d->dev->i2c_adap)) {
247+ &d->i2c_adap)) {
248 info("Attached DS3000/TS2020!");
249 return 0;
250 }
251@@ -1361,47 +1386,55 @@ static int su3000_frontend_attach(struct dvb_usb_adapter *d)
252 return -EIO;
253 }
254
255-static int t220_frontend_attach(struct dvb_usb_adapter *d)
256+static int t220_frontend_attach(struct dvb_usb_adapter *adap)
257 {
258- u8 obuf[3] = { 0xe, 0x87, 0 };
259- u8 ibuf[] = { 0 };
260+ struct dvb_usb_device *d = adap->dev;
261+ struct dw2102_state *state = d->priv;
262+
263+ mutex_lock(&d->data_mutex);
264
265- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
266+ state->data[0] = 0xe;
267+ state->data[1] = 0x87;
268+ state->data[2] = 0x0;
269+
270+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
271 err("command 0x0e transfer failed.");
272
273- obuf[0] = 0xe;
274- obuf[1] = 0x86;
275- obuf[2] = 1;
276+ state->data[0] = 0xe;
277+ state->data[1] = 0x86;
278+ state->data[2] = 1;
279
280- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
281+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
282 err("command 0x0e transfer failed.");
283
284- obuf[0] = 0xe;
285- obuf[1] = 0x80;
286- obuf[2] = 0;
287+ state->data[0] = 0xe;
288+ state->data[1] = 0x80;
289+ state->data[2] = 0;
290
291- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
292+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
293 err("command 0x0e transfer failed.");
294
295 msleep(50);
296
297- obuf[0] = 0xe;
298- obuf[1] = 0x80;
299- obuf[2] = 1;
300+ state->data[0] = 0xe;
301+ state->data[1] = 0x80;
302+ state->data[2] = 1;
303
304- if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
305+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
306 err("command 0x0e transfer failed.");
307
308- obuf[0] = 0x51;
309+ state->data[0] = 0x51;
310
311- if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0)
312+ if (dvb_usb_generic_rw(d, state->data, 1, state->data, 1, 0) < 0)
313 err("command 0x51 transfer failed.");
314
315- d->fe_adap[0].fe = dvb_attach(cxd2820r_attach, &cxd2820r_config,
316- &d->dev->i2c_adap, NULL);
317- if (d->fe_adap[0].fe != NULL) {
318- if (dvb_attach(tda18271_attach, d->fe_adap[0].fe, 0x60,
319- &d->dev->i2c_adap, &tda18271_config)) {
320+ mutex_unlock(&d->data_mutex);
321+
322+ adap->fe_adap[0].fe = dvb_attach(cxd2820r_attach, &cxd2820r_config,
323+ &d->i2c_adap, NULL);
324+ if (adap->fe_adap[0].fe != NULL) {
325+ if (dvb_attach(tda18271_attach, adap->fe_adap[0].fe, 0x60,
326+ &d->i2c_adap, &tda18271_config)) {
327 info("Attached TDA18271HD/CXD2820R!");
328 return 0;
329 }
330@@ -1411,23 +1444,30 @@ static int t220_frontend_attach(struct dvb_usb_adapter *d)
331 return -EIO;
332 }
333
334-static int m88rs2000_frontend_attach(struct dvb_usb_adapter *d)
335+static int m88rs2000_frontend_attach(struct dvb_usb_adapter *adap)
336 {
337- u8 obuf[] = { 0x51 };
338- u8 ibuf[] = { 0 };
339+ struct dvb_usb_device *d = adap->dev;
340+ struct dw2102_state *state = d->priv;
341+
342+ mutex_lock(&d->data_mutex);
343
344- if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0)
345+ state->data[0] = 0x51;
346+
347+ if (dvb_usb_generic_rw(d, state->data, 1, state->data, 1, 0) < 0)
348 err("command 0x51 transfer failed.");
349
350- d->fe_adap[0].fe = dvb_attach(m88rs2000_attach, &s421_m88rs2000_config,
351- &d->dev->i2c_adap);
352+ mutex_unlock(&d->data_mutex);
353
354- if (d->fe_adap[0].fe == NULL)
355+ adap->fe_adap[0].fe = dvb_attach(m88rs2000_attach,
356+ &s421_m88rs2000_config,
357+ &d->i2c_adap);
358+
359+ if (adap->fe_adap[0].fe == NULL)
360 return -EIO;
361
362- if (dvb_attach(ts2020_attach, d->fe_adap[0].fe,
363+ if (dvb_attach(ts2020_attach, adap->fe_adap[0].fe,
364 &dw2104_ts2020_config,
365- &d->dev->i2c_adap)) {
366+ &d->i2c_adap)) {
367 info("Attached RS2000/TS2020!");
368 return 0;
369 }
370@@ -1440,44 +1480,50 @@ static int tt_s2_4600_frontend_attach(struct dvb_usb_adapter *adap)
371 {
372 struct dvb_usb_device *d = adap->dev;
373 struct dw2102_state *state = d->priv;
374- u8 obuf[3] = { 0xe, 0x80, 0 };
375- u8 ibuf[] = { 0 };
376 struct i2c_adapter *i2c_adapter;
377 struct i2c_client *client;
378 struct i2c_board_info board_info;
379 struct m88ds3103_platform_data m88ds3103_pdata = {};
380 struct ts2020_config ts2020_config = {};
381
382- if (dvb_usb_generic_rw(d, obuf, 3, ibuf, 1, 0) < 0)
383+ mutex_lock(&d->data_mutex);
384+
385+ state->data[0] = 0xe;
386+ state->data[1] = 0x80;
387+ state->data[2] = 0x0;
388+
389+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
390 err("command 0x0e transfer failed.");
391
392- obuf[0] = 0xe;
393- obuf[1] = 0x02;
394- obuf[2] = 1;
395+ state->data[0] = 0xe;
396+ state->data[1] = 0x02;
397+ state->data[2] = 1;
398
399- if (dvb_usb_generic_rw(d, obuf, 3, ibuf, 1, 0) < 0)
400+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
401 err("command 0x0e transfer failed.");
402 msleep(300);
403
404- obuf[0] = 0xe;
405- obuf[1] = 0x83;
406- obuf[2] = 0;
407+ state->data[0] = 0xe;
408+ state->data[1] = 0x83;
409+ state->data[2] = 0;
410
411- if (dvb_usb_generic_rw(d, obuf, 3, ibuf, 1, 0) < 0)
412+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
413 err("command 0x0e transfer failed.");
414
415- obuf[0] = 0xe;
416- obuf[1] = 0x83;
417- obuf[2] = 1;
418+ state->data[0] = 0xe;
419+ state->data[1] = 0x83;
420+ state->data[2] = 1;
421
422- if (dvb_usb_generic_rw(d, obuf, 3, ibuf, 1, 0) < 0)
423+ if (dvb_usb_generic_rw(d, state->data, 3, state->data, 1, 0) < 0)
424 err("command 0x0e transfer failed.");
425
426- obuf[0] = 0x51;
427+ state->data[0] = 0x51;
428
429- if (dvb_usb_generic_rw(d, obuf, 1, ibuf, 1, 0) < 0)
430+ if (dvb_usb_generic_rw(d, state->data, 1, state->data, 1, 0) < 0)
431 err("command 0x51 transfer failed.");
432
433+ mutex_unlock(&d->data_mutex);
434+
435 /* attach demod */
436 m88ds3103_pdata.clk = 27000000;
437 m88ds3103_pdata.i2c_wr_max = 33;
438--
4391.9.1
440
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8063.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8063.patch
deleted file mode 100644
index 13a1ef0..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8063.patch
+++ /dev/null
@@ -1,70 +0,0 @@
1From fb00319317c152bf3528df13a54c28bf8c5daa55 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
3Date: Sun, 5 Feb 2017 12:57:59 -0200
4Subject: [PATCH] cxusb: Use a dma capable buffer also for reading
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit 3f190e3aec212fc8c61e202c51400afa7384d4bc upstream.
10
11Commit 17ce039b4e54 ("[media] cxusb: don't do DMA on stack")
12added a kmalloc'ed bounce buffer for writes, but missed to do the same
13for reads. As the read only happens after the write is finished, we can
14reuse the same buffer.
15
16As dvb_usb_generic_rw handles a read length of 0 by itself, avoid calling
17it using the dvb_usb_generic_read wrapper function.
18
19CVE: CVE-2017-8063
20Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=fb00319317c152bf3528df13a54c28bf8c5daa55]
21
22Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
23Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
24Cc: Ben Hutchings <ben@decadent.org.uk>
25Cc: Brad Spengler <spender@grsecurity.net>
26Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
27Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
28---
29 drivers/media/usb/dvb-usb/cxusb.c | 15 ++++++++-------
30 1 file changed, 8 insertions(+), 7 deletions(-)
31
32diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
33index 2434030..9fd43a3 100644
34--- a/drivers/media/usb/dvb-usb/cxusb.c
35+++ b/drivers/media/usb/dvb-usb/cxusb.c
36@@ -59,23 +59,24 @@ static int cxusb_ctrl_msg(struct dvb_usb_device *d,
37 u8 cmd, u8 *wbuf, int wlen, u8 *rbuf, int rlen)
38 {
39 struct cxusb_state *st = d->priv;
40- int ret, wo;
41+ int ret;
42
43 if (1 + wlen > MAX_XFER_SIZE) {
44 warn("i2c wr: len=%d is too big!\n", wlen);
45 return -EOPNOTSUPP;
46 }
47
48- wo = (rbuf == NULL || rlen == 0); /* write-only */
49+ if (rlen > MAX_XFER_SIZE) {
50+ warn("i2c rd: len=%d is too big!\n", rlen);
51+ return -EOPNOTSUPP;
52+ }
53
54 mutex_lock(&d->data_mutex);
55 st->data[0] = cmd;
56 memcpy(&st->data[1], wbuf, wlen);
57- if (wo)
58- ret = dvb_usb_generic_write(d, st->data, 1 + wlen);
59- else
60- ret = dvb_usb_generic_rw(d, st->data, 1 + wlen,
61- rbuf, rlen, 0);
62+ ret = dvb_usb_generic_rw(d, st->data, 1 + wlen, st->data, rlen, 0);
63+ if (!ret && rbuf && rlen)
64+ memcpy(rbuf, st->data, rlen);
65
66 mutex_unlock(&d->data_mutex);
67 return ret;
68--
691.9.1
70
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8064.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8064.patch
deleted file mode 100644
index 05cf7a4..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8064.patch
+++ /dev/null
@@ -1,65 +0,0 @@
1From 1992564156b5dc4ac73418e5b95e1a43f12f3cb1 Mon Sep 17 00:00:00 2001
2From: Arnd Bergmann <arnd@arndb.de>
3Date: Thu, 2 Feb 2017 12:36:01 -0200
4Subject: [PATCH] dvb-usb-v2: avoid use-after-free
5
6commit 005145378c9ad7575a01b6ce1ba118fb427f583a upstream.
7
8I ran into a stack frame size warning because of the on-stack copy of
9the USB device structure:
10
11drivers/media/usb/dvb-usb-v2/dvb_usb_core.c: In function 'dvb_usbv2_disconnect':
12drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:1029:1: error: the frame size of 1104 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
13
14Copying a device structure like this is wrong for a number of other reasons
15too aside from the possible stack overflow. One of them is that the
16dev_info() call will print the name of the device later, but AFAICT
17we have only copied a pointer to the name earlier and the actual name
18has been freed by the time it gets printed.
19
20This removes the on-stack copy of the device and instead copies the
21device name using kstrdup(). I'm ignoring the possible failure here
22as both printk() and kfree() are able to deal with NULL pointers.
23
24CVE: CVE-2017-8064
25Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=1992564156b5dc4ac73418e5b95e1a43f12f3cb1]
26
27Signed-off-by: Arnd Bergmann <arnd@arndb.de>
28Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
29Cc: Ben Hutchings <ben@decadent.org.uk>
30Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
31Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
32---
33 drivers/media/usb/dvb-usb-v2/dvb_usb_core.c | 9 +++++----
34 1 file changed, 5 insertions(+), 4 deletions(-)
35
36diff --git a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
37index a8e6624..a9bb2dd 100644
38--- a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
39+++ b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
40@@ -1013,8 +1013,8 @@ int dvb_usbv2_probe(struct usb_interface *intf,
41 void dvb_usbv2_disconnect(struct usb_interface *intf)
42 {
43 struct dvb_usb_device *d = usb_get_intfdata(intf);
44- const char *name = d->name;
45- struct device dev = d->udev->dev;
46+ const char *devname = kstrdup(dev_name(&d->udev->dev), GFP_KERNEL);
47+ const char *drvname = d->name;
48
49 dev_dbg(&d->udev->dev, "%s: bInterfaceNumber=%d\n", __func__,
50 intf->cur_altsetting->desc.bInterfaceNumber);
51@@ -1024,8 +1024,9 @@ void dvb_usbv2_disconnect(struct usb_interface *intf)
52
53 dvb_usbv2_exit(d);
54
55- dev_info(&dev, "%s: '%s' successfully deinitialized and disconnected\n",
56- KBUILD_MODNAME, name);
57+ pr_info("%s: '%s:%s' successfully deinitialized and disconnected\n",
58+ KBUILD_MODNAME, drvname, devname);
59+ kfree(devname);
60 }
61 EXPORT_SYMBOL(dvb_usbv2_disconnect);
62
63--
641.9.1
65
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8066.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8066.patch
deleted file mode 100644
index 82178b8..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8066.patch
+++ /dev/null
@@ -1,138 +0,0 @@
1From cec7abd27e878e3c83dc9af41ee87a2e9d483ac0 Mon Sep 17 00:00:00 2001
2From: Ethan Zonca <e@ethanzonca.com>
3Date: Fri, 24 Feb 2017 11:27:36 -0500
4Subject: [PATCH] can: gs_usb: Don't use stack memory for USB transfers
5
6commit c919a3069c775c1c876bec55e00b2305d5125caa upstream.
7
8Fixes: 05ca5270005c can: gs_usb: add ethtool set_phys_id callback to locate physical device
9
10The gs_usb driver is performing USB transfers using buffers allocated on
11the stack. This causes the driver to not function with vmapped stacks.
12Instead, allocate memory for the transfer buffers.
13
14CVE: CVE-2017-8066
15Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=cec7abd27e878e3c83dc9af41ee87a2e9d483ac0]
16
17Signed-off-by: Ethan Zonca <e@ethanzonca.com>
18Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
21---
22 drivers/net/can/usb/gs_usb.c | 40 +++++++++++++++++++++++++++++-----------
23 1 file changed, 29 insertions(+), 11 deletions(-)
24
25diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
26index 77e3cc0..a0dabd4 100644
27--- a/drivers/net/can/usb/gs_usb.c
28+++ b/drivers/net/can/usb/gs_usb.c
29@@ -908,10 +908,14 @@ static int gs_usb_probe(struct usb_interface *intf,
30 struct gs_usb *dev;
31 int rc = -ENOMEM;
32 unsigned int icount, i;
33- struct gs_host_config hconf = {
34- .byte_order = 0x0000beef,
35- };
36- struct gs_device_config dconf;
37+ struct gs_host_config *hconf;
38+ struct gs_device_config *dconf;
39+
40+ hconf = kmalloc(sizeof(*hconf), GFP_KERNEL);
41+ if (!hconf)
42+ return -ENOMEM;
43+
44+ hconf->byte_order = 0x0000beef;
45
46 /* send host config */
47 rc = usb_control_msg(interface_to_usbdev(intf),
48@@ -920,16 +924,22 @@ static int gs_usb_probe(struct usb_interface *intf,
49 USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
50 1,
51 intf->altsetting[0].desc.bInterfaceNumber,
52- &hconf,
53- sizeof(hconf),
54+ hconf,
55+ sizeof(*hconf),
56 1000);
57
58+ kfree(hconf);
59+
60 if (rc < 0) {
61 dev_err(&intf->dev, "Couldn't send data format (err=%d)\n",
62 rc);
63 return rc;
64 }
65
66+ dconf = kmalloc(sizeof(*dconf), GFP_KERNEL);
67+ if (!dconf)
68+ return -ENOMEM;
69+
70 /* read device config */
71 rc = usb_control_msg(interface_to_usbdev(intf),
72 usb_rcvctrlpipe(interface_to_usbdev(intf), 0),
73@@ -937,28 +947,33 @@ static int gs_usb_probe(struct usb_interface *intf,
74 USB_DIR_IN|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
75 1,
76 intf->altsetting[0].desc.bInterfaceNumber,
77- &dconf,
78- sizeof(dconf),
79+ dconf,
80+ sizeof(*dconf),
81 1000);
82 if (rc < 0) {
83 dev_err(&intf->dev, "Couldn't get device config: (err=%d)\n",
84 rc);
85+ kfree(dconf);
86 return rc;
87 }
88
89- icount = dconf.icount + 1;
90+ icount = dconf->icount + 1;
91 dev_info(&intf->dev, "Configuring for %d interfaces\n", icount);
92
93 if (icount > GS_MAX_INTF) {
94 dev_err(&intf->dev,
95 "Driver cannot handle more that %d CAN interfaces\n",
96 GS_MAX_INTF);
97+ kfree(dconf);
98 return -EINVAL;
99 }
100
101 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
102- if (!dev)
103+ if (!dev) {
104+ kfree(dconf);
105 return -ENOMEM;
106+ }
107+
108 init_usb_anchor(&dev->rx_submitted);
109
110 atomic_set(&dev->active_channels, 0);
111@@ -967,7 +982,7 @@ static int gs_usb_probe(struct usb_interface *intf,
112 dev->udev = interface_to_usbdev(intf);
113
114 for (i = 0; i < icount; i++) {
115- dev->canch[i] = gs_make_candev(i, intf, &dconf);
116+ dev->canch[i] = gs_make_candev(i, intf, dconf);
117 if (IS_ERR_OR_NULL(dev->canch[i])) {
118 /* save error code to return later */
119 rc = PTR_ERR(dev->canch[i]);
120@@ -978,12 +993,15 @@ static int gs_usb_probe(struct usb_interface *intf,
121 gs_destroy_candev(dev->canch[i]);
122
123 usb_kill_anchored_urbs(&dev->rx_submitted);
124+ kfree(dconf);
125 kfree(dev);
126 return rc;
127 }
128 dev->canch[i]->parent = dev;
129 }
130
131+ kfree(dconf);
132+
133 return 0;
134 }
135
136--
1371.9.1
138
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8067.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8067.patch
deleted file mode 100644
index 457bd89..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8067.patch
+++ /dev/null
@@ -1,58 +0,0 @@
1From 86c6667f6a5f6bdb392d8ffbe58fbcbcf6db2704 Mon Sep 17 00:00:00 2001
2From: Omar Sandoval <osandov@fb.com>
3Date: Wed, 1 Feb 2017 00:02:27 -0800
4Subject: [PATCH] virtio-console: avoid DMA from stack
5
6commit c4baad50297d84bde1a7ad45e50c73adae4a2192 upstream.
7
8put_chars() stuffs the buffer it gets into an sg, but that buffer may be
9on the stack. This breaks with CONFIG_VMAP_STACK=y (for me, it
10manifested as printks getting turned into NUL bytes).
11
12CVE: CVE-2017-8067
13Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=86c6667f6a5f6bdb392d8ffbe58fbcbcf6db2704]
14
15Signed-off-by: Omar Sandoval <osandov@fb.com>
16Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
17Reviewed-by: Amit Shah <amit.shah@redhat.com>
18Cc: Ben Hutchings <ben@decadent.org.uk>
19Cc: Brad Spengler <spender@grsecurity.net>
20Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
22---
23 drivers/char/virtio_console.c | 12 ++++++++++--
24 1 file changed, 10 insertions(+), 2 deletions(-)
25
26diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
27index 5649234..471a301 100644
28--- a/drivers/char/virtio_console.c
29+++ b/drivers/char/virtio_console.c
30@@ -1136,6 +1136,8 @@ static int put_chars(u32 vtermno, const char *buf, int count)
31 {
32 struct port *port;
33 struct scatterlist sg[1];
34+ void *data;
35+ int ret;
36
37 if (unlikely(early_put_chars))
38 return early_put_chars(vtermno, buf, count);
39@@ -1144,8 +1146,14 @@ static int put_chars(u32 vtermno, const char *buf, int count)
40 if (!port)
41 return -EPIPE;
42
43- sg_init_one(sg, buf, count);
44- return __send_to_port(port, sg, 1, count, (void *)buf, false);
45+ data = kmemdup(buf, count, GFP_ATOMIC);
46+ if (!data)
47+ return -ENOMEM;
48+
49+ sg_init_one(sg, data, count);
50+ ret = __send_to_port(port, sg, 1, count, data, false);
51+ kfree(data);
52+ return ret;
53 }
54
55 /*
56--
571.9.1
58
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8068.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8068.patch
deleted file mode 100644
index 3529b21..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8068.patch
+++ /dev/null
@@ -1,101 +0,0 @@
1From 878b015bcc726560b13be2d906caf6923428f05d Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Sat, 4 Feb 2017 16:56:03 +0000
4Subject: [PATCH] pegasus: Use heap buffers for all register access
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9[ Upstream commit 5593523f968bc86d42a035c6df47d5e0979b5ace ]
10
11Allocating USB buffers on the stack is not portable, and no longer
12works on x86_64 (with VMAP_STACK enabled as per default).
13
14CVE: CVE-2017-8068
15Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=878b015bcc726560b13be2d906caf6923428f05d]
16
17Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
18References: https://bugs.debian.org/852556
19Reported-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
20Tested-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
21Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
22Signed-off-by: David S. Miller <davem@davemloft.net>
23Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
25---
26 drivers/net/usb/pegasus.c | 29 +++++++++++++++++++++++++----
27 1 file changed, 25 insertions(+), 4 deletions(-)
28
29diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
30index 1434e5d..ee40ac2 100644
31--- a/drivers/net/usb/pegasus.c
32+++ b/drivers/net/usb/pegasus.c
33@@ -126,40 +126,61 @@ static void async_ctrl_callback(struct urb *urb)
34
35 static int get_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
36 {
37+ u8 *buf;
38 int ret;
39
40+ buf = kmalloc(size, GFP_NOIO);
41+ if (!buf)
42+ return -ENOMEM;
43+
44 ret = usb_control_msg(pegasus->usb, usb_rcvctrlpipe(pegasus->usb, 0),
45 PEGASUS_REQ_GET_REGS, PEGASUS_REQT_READ, 0,
46- indx, data, size, 1000);
47+ indx, buf, size, 1000);
48 if (ret < 0)
49 netif_dbg(pegasus, drv, pegasus->net,
50 "%s returned %d\n", __func__, ret);
51+ else if (ret <= size)
52+ memcpy(data, buf, ret);
53+ kfree(buf);
54 return ret;
55 }
56
57-static int set_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
58+static int set_registers(pegasus_t *pegasus, __u16 indx, __u16 size,
59+ const void *data)
60 {
61+ u8 *buf;
62 int ret;
63
64+ buf = kmemdup(data, size, GFP_NOIO);
65+ if (!buf)
66+ return -ENOMEM;
67+
68 ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0),
69 PEGASUS_REQ_SET_REGS, PEGASUS_REQT_WRITE, 0,
70- indx, data, size, 100);
71+ indx, buf, size, 100);
72 if (ret < 0)
73 netif_dbg(pegasus, drv, pegasus->net,
74 "%s returned %d\n", __func__, ret);
75+ kfree(buf);
76 return ret;
77 }
78
79 static int set_register(pegasus_t *pegasus, __u16 indx, __u8 data)
80 {
81+ u8 *buf;
82 int ret;
83
84+ buf = kmemdup(&data, 1, GFP_NOIO);
85+ if (!buf)
86+ return -ENOMEM;
87+
88 ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0),
89 PEGASUS_REQ_SET_REG, PEGASUS_REQT_WRITE, data,
90- indx, &data, 1, 1000);
91+ indx, buf, 1, 1000);
92 if (ret < 0)
93 netif_dbg(pegasus, drv, pegasus->net,
94 "%s returned %d\n", __func__, ret);
95+ kfree(buf);
96 return ret;
97 }
98
99--
1001.9.1
101
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8069.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8069.patch
deleted file mode 100644
index 11a3ee2..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8069.patch
+++ /dev/null
@@ -1,73 +0,0 @@
1From e898f6f008aa91c154c9c8fb7be3fb9ec4d333ec Mon Sep 17 00:00:00 2001
2From: Ben Hutchings <ben@decadent.org.uk>
3Date: Sat, 4 Feb 2017 16:56:32 +0000
4Subject: [PATCH] rtl8150: Use heap buffers for all register access
5
6[ Upstream commit 7926aff5c57b577ab0f43364ff0c59d968f6a414 ]
7
8Allocating USB buffers on the stack is not portable, and no longer
9works on x86_64 (with VMAP_STACK enabled as per default).
10
11CVE: CVE-2017-8069
12Upstream-Status: Backport [backport from: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?h=v4.9.51&id=e898f6f008aa91c154c9c8fb7be3fb9ec4d333ec]
13
14Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16Signed-off-by: David S. Miller <davem@davemloft.net>
17Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
19---
20 drivers/net/usb/rtl8150.c | 34 +++++++++++++++++++++++++++-------
21 1 file changed, 27 insertions(+), 7 deletions(-)
22
23diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
24index 7c72bfa..dc4f7ea 100644
25--- a/drivers/net/usb/rtl8150.c
26+++ b/drivers/net/usb/rtl8150.c
27@@ -155,16 +155,36 @@ struct async_req {
28 */
29 static int get_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
30 {
31- return usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0),
32- RTL8150_REQ_GET_REGS, RTL8150_REQT_READ,
33- indx, 0, data, size, 500);
34+ void *buf;
35+ int ret;
36+
37+ buf = kmalloc(size, GFP_NOIO);
38+ if (!buf)
39+ return -ENOMEM;
40+
41+ ret = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0),
42+ RTL8150_REQ_GET_REGS, RTL8150_REQT_READ,
43+ indx, 0, buf, size, 500);
44+ if (ret > 0 && ret <= size)
45+ memcpy(data, buf, ret);
46+ kfree(buf);
47+ return ret;
48 }
49
50-static int set_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
51+static int set_registers(rtl8150_t * dev, u16 indx, u16 size, const void *data)
52 {
53- return usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0),
54- RTL8150_REQ_SET_REGS, RTL8150_REQT_WRITE,
55- indx, 0, data, size, 500);
56+ void *buf;
57+ int ret;
58+
59+ buf = kmemdup(data, size, GFP_NOIO);
60+ if (!buf)
61+ return -ENOMEM;
62+
63+ ret = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0),
64+ RTL8150_REQ_SET_REGS, RTL8150_REQT_WRITE,
65+ indx, 0, buf, size, 500);
66+ kfree(buf);
67+ return ret;
68 }
69
70 static void async_set_reg_cb(struct urb *urb)
71--
721.9.1
73
diff --git a/recipes-kernel/linux/linux-cavium/CVE-2017-8831.patch b/recipes-kernel/linux/linux-cavium/CVE-2017-8831.patch
deleted file mode 100644
index cfa533a..0000000
--- a/recipes-kernel/linux/linux-cavium/CVE-2017-8831.patch
+++ /dev/null
@@ -1,75 +0,0 @@
1From 354dd3924a2e43806774953de536257548b5002c Mon Sep 17 00:00:00 2001
2From: Steven Toth <stoth@kernellabs.com>
3Date: Tue, 6 Jun 2017 08:30:27 -0400
4Subject: [PATCH] [PATCH] saa7164: Bug - Double fetch PCIe access condition
5
6Avoid a double fetch by reusing the values from the prior transfer.
7
8Originally reported via https://bugzilla.kernel.org/show_bug.cgi?id=195559
9
10Thanks to Pengfei Wang <wpengfeinudt@gmail.com> for reporting.
11
12CVE: CVE-2017-8831
13Upstream-Status: Backport [backport from ...
14
15Signed-off-by: Steven Toth <stoth@kernellabs.com>
16Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
17---
18 drivers/media/pci/saa7164/saa7164-bus.c | 13 +------------
19 1 file changed, 1 insertion(+), 12 deletions(-)
20
21diff --git a/drivers/media/pci/saa7164/saa7164-bus.c b/drivers/media/pci/saa7164/saa7164-bus.c
22index b2ff82fa7116..ecfeac5cdbed 100644
23--- a/drivers/media/pci/saa7164/saa7164-bus.c
24+++ b/drivers/media/pci/saa7164/saa7164-bus.c
25@@ -389,11 +389,11 @@ int saa7164_bus_get(struct saa7164_dev *dev, struct tmComResInfo* msg,
26 msg_tmp.size = le16_to_cpu((__force __le16)msg_tmp.size);
27 msg_tmp.command = le32_to_cpu((__force __le32)msg_tmp.command);
28 msg_tmp.controlselector = le16_to_cpu((__force __le16)msg_tmp.controlselector);
29+ memcpy(msg, &msg_tmp, sizeof(*msg));
30
31 /* No need to update the read positions, because this was a peek */
32 /* If the caller specifically want to peek, return */
33 if (peekonly) {
34- memcpy(msg, &msg_tmp, sizeof(*msg));
35 goto peekout;
36 }
37
38@@ -438,21 +438,15 @@ int saa7164_bus_get(struct saa7164_dev *dev, struct tmComResInfo* msg,
39 space_rem = bus->m_dwSizeGetRing - curr_grp;
40
41 if (space_rem < sizeof(*msg)) {
42- /* msg wraps around the ring */
43- memcpy_fromio(msg, bus->m_pdwGetRing + curr_grp, space_rem);
44- memcpy_fromio((u8 *)msg + space_rem, bus->m_pdwGetRing,
45- sizeof(*msg) - space_rem);
46 if (buf)
47 memcpy_fromio(buf, bus->m_pdwGetRing + sizeof(*msg) -
48 space_rem, buf_size);
49
50 } else if (space_rem == sizeof(*msg)) {
51- memcpy_fromio(msg, bus->m_pdwGetRing + curr_grp, sizeof(*msg));
52 if (buf)
53 memcpy_fromio(buf, bus->m_pdwGetRing, buf_size);
54 } else {
55 /* Additional data wraps around the ring */
56- memcpy_fromio(msg, bus->m_pdwGetRing + curr_grp, sizeof(*msg));
57 if (buf) {
58 memcpy_fromio(buf, bus->m_pdwGetRing + curr_grp +
59 sizeof(*msg), space_rem - sizeof(*msg));
60@@ -465,15 +459,10 @@ int saa7164_bus_get(struct saa7164_dev *dev, struct tmComResInfo* msg,
61
62 } else {
63 /* No wrapping */
64- memcpy_fromio(msg, bus->m_pdwGetRing + curr_grp, sizeof(*msg));
65 if (buf)
66 memcpy_fromio(buf, bus->m_pdwGetRing + curr_grp + sizeof(*msg),
67 buf_size);
68 }
69- /* Convert from little endian to CPU */
70- msg->size = le16_to_cpu((__force __le16)msg->size);
71- msg->command = le32_to_cpu((__force __le32)msg->command);
72- msg->controlselector = le16_to_cpu((__force __le16)msg->controlselector);
73
74 /* Update the read positions, adjusting the ring */
75 saa7164_writel(bus->m_dwGetReadPos, new_grp);
diff --git a/recipes-kernel/linux/linux-cavium/dts/asim-cn81xx-linux.dts b/recipes-kernel/linux/linux-cavium/dts/asim-cn81xx-linux.dts
deleted file mode 100644
index 006e00e..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/asim-cn81xx-linux.dts
+++ /dev/null
@@ -1,541 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn81xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 rgmii00: rgmii00 {
58 reg = <3> ;
59 compatible = "micrel,ksz9031", "ethernet-phy-ieee802.3-c22";
60 };
61 };
62
63 mdio1@87e005003880 {
64 sgmii00: sgmii00 {
65 qlm-mode = "0x000,sgmii";
66 reg = <0> ;
67 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
68 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
69 marvell,reg-init = <3 0x10 0 0x8665>,
70 <3 0x11 0 0x00aa>,
71 <3 0x12 0 0x4105>,
72 <3 0x13 0 0x8a08>;
73 };
74 sgmii01: sgmii01 {
75 qlm-mode = "0x001,sgmii";
76 reg = <1> ;
77 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
78 marvell,reg-init = <3 0x10 0 0x8665>,
79 <3 0x11 0 0x00aa>,
80 <3 0x12 0 0x4105>,
81 <3 0x13 0 0x8a08>;
82 };
83 sgmii02: sgmii02 {
84 qlm-mode = "0x002,sgmii";
85 reg = <2> ;
86 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
87 marvell,reg-init = <3 0x10 0 0x8665>,
88 <3 0x11 0 0x00aa>,
89 <3 0x12 0 0x4105>,
90 <3 0x13 0 0x8a08>;
91 };
92 sgmii03: sgmii03 {
93 qlm-mode = "0x003,sgmii";
94 reg = <3> ;
95 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
96 marvell,reg-init = <3 0x10 0 0x8665>,
97 <3 0x11 0 0x00aa>,
98 <3 0x12 0 0x4105>,
99 <3 0x13 0 0x8a08>;
100 };
101 xfi00: xfi00 {
102 qlm-mode = "0x000,xfi","0x000,xfi-10g-kr";
103 reg = <0> ;
104 compatible = "cortina,cs4223-slice";
105 };
106 xfi01: xfi01 {
107 qlm-mode = "0x001,xfi","0x001,xfi-10g-kr";
108 reg = <1> ;
109 compatible = "cortina,cs4223-slice";
110 };
111 xfi02: xfi02 {
112 qlm-mode = "0x002,xfi","0x002,xfi-10g-kr";
113 reg = <2> ;
114 compatible = "cortina,cs4223-slice";
115 };
116 xfi03: xfi03 {
117 qlm-mode = "0x003,xfi","0x003,xfi-10g-kr";
118 reg = <3> ;
119 compatible = "cortina,cs4223-slice";
120 };
121 xlaui00: xlaui00 {
122 qlm-mode = "0x000,xlaui","0x000,xlaui-40g-kr";
123 reg = <0> ;
124 compatible = "cortina,cs4223-slice";
125 };
126 xaui00: xaui00 {
127 qlm-mode = "0x000,xaui";
128 reg = <0> ;
129 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
130 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
131 };
132 rxaui00: rxaui00 {
133 qlm-mode = "0x000,rxaui";
134 reg = <0> ;
135 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
136 };
137 rxaui01: rxaui01 {
138 qlm-mode = "0x001,rxaui";
139 reg = <2> ;
140 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
141 };
142 qsgmii00: qsgmii00 {
143 qlm-mode = "0x000,qsgmii";
144 reg = <0> ;
145 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
146 };
147 qsgmii01: qsgmii01 {
148 qlm-mode = "0x001,qsgmii";
149 reg = <1> ;
150 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
151 };
152 qsgmii02: qsgmii02 {
153 qlm-mode = "0x002,qsgmii";
154 reg = <2> ;
155 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
156 };
157 qsgmii03: qsgmii03 {
158 qlm-mode = "0x003,qsgmii";
159 reg = <3> ;
160 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
161 };
162
163 sgmii10: sgmii10 {
164 qlm-mode = "0x010,sgmii";
165 reg = <8> ;
166 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
167 marvell,reg-init = <3 0x10 0 0x8665>,
168 <3 0x11 0 0x00aa>,
169 <3 0x12 0 0x4105>,
170 <3 0x13 0 0x8a08>;
171 };
172 sgmii11: sgmii11 {
173 qlm-mode = "0x011,sgmii";
174 reg = <9> ;
175 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
176 marvell,reg-init = <3 0x10 0 0x8665>,
177 <3 0x11 0 0x00aa>,
178 <3 0x12 0 0x4105>,
179 <3 0x13 0 0x8a08>;
180 };
181 sgmii12: sgmii12 {
182 qlm-mode = "0x012,sgmii";
183 reg = <10> ;
184 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
185 marvell,reg-init = <3 0x10 0 0x8665>,
186 <3 0x11 0 0x00aa>,
187 <3 0x12 0 0x4105>,
188 <3 0x13 0 0x8a08>;
189 };
190 sgmii13: sgmii13 {
191 qlm-mode = "0x013,sgmii";
192 reg = <11> ;
193 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
194 marvell,reg-init = <3 0x10 0 0x8665>,
195 <3 0x11 0 0x00aa>,
196 <3 0x12 0 0x4105>,
197 <3 0x13 0 0x8a08>;
198 };
199 xfi10: xfi10 {
200 qlm-mode = "0x010,xfi","0x010,xfi-10g-kr";
201 reg = <8> ;
202 compatible = "cortina,cs4223-slice";
203 };
204 xfi11: xfi11 {
205 qlm-mode = "0x011,xfi","0x011,xfi-10g-kr";
206 reg = <9> ;
207 compatible = "cortina,cs4223-slice";
208 };
209 xfi12: xfi12 {
210 qlm-mode = "0x012,xfi","0x012,xfi-10g-kr";
211 reg = <10> ;
212 compatible = "cortina,cs4223-slice";
213 };
214 xfi13: xfi13 {
215 qlm-mode = "0x013,xfi","0x013,xfi-10g-kr";
216 reg = <11> ;
217 compatible = "cortina,cs4223-slice";
218 };
219 xlaui10: xlaui10 {
220 qlm-mode = "0x010,xlaui","0x010,xlaui-40g-kr";
221 reg = <8> ;
222 compatible = "cortina,cs4223-slice";
223 };
224 xaui10: xaui10 {
225 qlm-mode = "0x010,xaui";
226 reg = <8> ;
227 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
228 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
229 };
230 rxaui10: rxaui10 {
231 qlm-mode = "0x010,rxaui";
232 reg = <8> ;
233 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
234 };
235 rxaui11: rxaui11 {
236 qlm-mode = "0x011,rxaui";
237 reg = <10> ;
238 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
239 };
240 qsgmii10: qsgmii10 {
241 qlm-mode = "0x010,qsgmii";
242 reg = <8> ;
243 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
244 };
245 qsgmii11: qsgmii11 {
246 qlm-mode = "0x011,qsgmii";
247 reg = <9> ;
248 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
249 };
250 qsgmii12: qsgmii12 {
251 qlm-mode = "0x012,qsgmii";
252 reg = <10> ;
253 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
254 };
255 qsgmii13: qsgmii13 {
256 qlm-mode = "0x013,qsgmii";
257 reg = <11> ;
258 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
259 };
260 };
261 };
262
263 rgx0 {
264 rgmii00 {
265 reg = <3>;
266 local-mac-address = [00 00 00 00 00 00];
267 phy-handle = <&rgmii00>;
268 };
269 };
270
271 bgx0 {
272 /* typename+qlm+typenumber eg :
273 sgmii+bgx0+sgmmi0
274 */
275 // SGMII
276 sgmii00 {
277 reg = <0>;
278 qlm-mode = "0x000,sgmii";
279 local-mac-address = [00 00 00 00 00 00];
280 phy-handle = <&sgmii00>;
281 };
282 sgmii01 {
283 reg = <1>;
284 qlm-mode = "0x001,sgmii";
285 local-mac-address = [00 00 00 00 00 00];
286 phy-handle = <&sgmii01>;
287 };
288 sgmii02 {
289 reg = <2>;
290 qlm-mode = "0x002,sgmii";
291 local-mac-address = [00 00 00 00 00 00];
292 phy-handle = <&sgmii02>;
293 };
294 sgmii03 {
295 reg = <3>;
296 qlm-mode = "0x003,sgmii";
297 local-mac-address = [00 00 00 00 00 00];
298 phy-handle = <&sgmii03>;
299 };
300 xfi00 {
301 reg = <0>;
302 qlm-mode = "0x000,xfi";
303 local-mac-address = [00 00 00 00 00 00];
304 phy-handle = <&xfi00>;
305 };
306 xfi01 {
307 reg = <1>;
308 qlm-mode = "0x001,xfi";
309 local-mac-address = [00 00 00 00 00 00];
310 phy-handle = <&xfi01>;
311 };
312 xfi02 {
313 reg = <2>;
314 qlm-mode = "0x002,xfi";
315 local-mac-address = [00 00 00 00 00 00];
316 phy-handle = <&xfi02>;
317 };
318 xfi03 {
319 reg = <3>;
320 qlm-mode = "0x003,xfi";
321 local-mac-address = [00 00 00 00 00 00];
322 phy-handle = <&xfi03>;
323 };
324 // 10g-kr
325 xfi-10g-kr00 {
326 reg = <0>;
327 qlm-mode = "0x000,xfi-10g-kr";
328 local-mac-address = [00 00 00 00 00 00];
329 phy-handle = <&xfi00>;
330 };
331 xfi-10g-kr01 {
332 reg = <1>;
333 qlm-mode = "0x001,xfi-10g-kr";
334 local-mac-address = [00 00 00 00 00 00];
335 phy-handle = <&xfi01>;
336 };
337 xfi-10g-kr02 {
338 reg = <2>;
339 qlm-mode = "0x002,xfi-10g-kr";
340 local-mac-address = [00 00 00 00 00 00];
341 phy-handle = <&xfi02>;
342 };
343 xfi-10g-kr03 {
344 reg = <3>;
345 qlm-mode = "0x003,xfi-10g-kr";
346 local-mac-address = [00 00 00 00 00 00];
347 phy-handle = <&xfi03>;
348 };
349 xlaui00 {
350 reg = <0>;
351 qlm-mode = "0x000,xlaui";
352 local-mac-address = [00 00 00 00 00 00];
353 phy-handle = <&xlaui00>;
354 };
355 xlaui-40g-kr00 {
356 reg = <0>;
357 qlm-mode = "0x000,xlaui-40g-kr";
358 local-mac-address = [00 00 00 00 00 00];
359 phy-handle = <&xlaui00>;
360 };
361 xaui00 {
362 reg = <0>;
363 qlm-mode = "0x000,xaui";
364 local-mac-address = [00 00 00 00 00 00];
365 phy-handle = <&xaui00>;
366 };
367 rxaui00 {
368 reg = <0>;
369 qlm-mode = "0x000,rxaui";
370 local-mac-address = [00 00 00 00 00 00];
371 phy-handle = <&rxaui00>;
372 };
373 rxaui01 {
374 reg = <1>;
375 qlm-mode = "0x001,rxaui";
376 local-mac-address = [00 00 00 00 00 00];
377 phy-handle = <&rxaui01>;
378 };
379 qsgmii00 {
380 reg = <0>;
381 qlm-mode = "0x000,qsgmii";
382 local-mac-address = [00 00 00 00 00 00];
383 phy-handle = <&qsgmii00>;
384 };
385 qsgmii01 {
386 reg = <1>;
387 qlm-mode = "0x001,qsgmii";
388 local-mac-address = [00 00 00 00 00 00];
389 phy-handle = <&qsgmii01>;
390 };
391 qsgmii02 {
392 reg = <2>;
393 qlm-mode = "0x002,qsgmii";
394 local-mac-address = [00 00 00 00 00 00];
395 phy-handle = <&qsgmii02>;
396 };
397 qsgmii03 {
398 reg = <3>;
399 qlm-mode = "0x003,qsgmii";
400 local-mac-address = [00 00 00 00 00 00];
401 phy-handle = <&qsgmii03>;
402 };
403 };
404 bgx1 {
405 sgmii10 {
406 reg = <0>;
407 qlm-mode = "0x010,sgmii";
408 local-mac-address = [00 00 00 00 00 00];
409 phy-handle = <&sgmii10>; /*"sgmmi"+bgx+no */
410 };
411 sgmii11 {
412 reg = <1>;
413 qlm-mode = "0x011,sgmii";
414 local-mac-address = [00 00 00 00 00 00];
415 phy-handle = <&sgmii11>;
416 };
417 sgmii12 {
418 reg = <2>;
419 qlm-mode = "0x012,sgmii";
420 local-mac-address = [00 00 00 00 00 00];
421 phy-handle = <&sgmii12>;
422 };
423 sgmii13 {
424 reg = <3>;
425 qlm-mode = "0x013,sgmii";
426 local-mac-address = [00 00 00 00 00 00];
427 phy-handle = <&sgmii13>;
428 };
429 xfi10 {
430 reg = <0>;
431 qlm-mode = "0x010,xfi";
432 local-mac-address = [00 00 00 00 00 00];
433 phy-handle = <&xfi10>;
434 };
435 xfi11 {
436 reg = <1>;
437 qlm-mode = "0x011,xfi";
438 local-mac-address = [00 00 00 00 00 00];
439 phy-handle = <&xfi11>;
440 };
441 xfi12 {
442 reg = <2>;
443 qlm-mode = "0x012,xfi";
444 local-mac-address = [00 00 00 00 00 00];
445 phy-handle = <&xfi12>;
446 };
447 xfi13 {
448 reg = <3>;
449 qlm-mode = "0x013,xfi";
450 local-mac-address = [00 00 00 00 00 00];
451 phy-handle = <&xfi13>;
452 };
453 // 10g_kr
454 xfi-10g-kr10 {
455 reg = <0>;
456 qlm-mode = "0x010,xfi-10g-kr";
457 local-mac-address = [00 00 00 00 00 00];
458 phy-handle = <&xfi10>;
459 };
460 xfi-10g-kr11 {
461 reg = <1>;
462 qlm-mode = "0x011,xfi-10g-kr";
463 local-mac-address = [00 00 00 00 00 00];
464 phy-handle = <&xfi11>;
465 };
466 xfi-10g-kr12 {
467 reg = <2>;
468 qlm-mode = "0x012,xfi-10g-kr";
469 local-mac-address = [00 00 00 00 00 00];
470 phy-handle = <&xfi12>;
471 };
472 xfi-10g-kr13 {
473 reg = <3>;
474 qlm-mode = "0x013,xfi-10g-kr";
475 local-mac-address = [00 00 00 00 00 00];
476 phy-handle = <&xfi13>;
477 };
478 xlaui10 {
479 reg = <0>;
480 qlm-mode = "0x010,xlaui";
481 local-mac-address = [00 00 00 00 00 00];
482 phy-handle = <&xlaui10>;
483 };
484 xlaui-40g-kr-10 {
485 reg = <0>;
486 qlm-mode = "0x010,xlaui-40g-kr";
487 local-mac-address = [00 00 00 00 00 00];
488 phy-handle = <&xlaui10>;
489 };
490 xaui10 {
491 reg = <0>;
492 qlm-mode = "0x010,xaui";
493 local-mac-address = [00 00 00 00 00 00];
494 phy-handle = <&xaui10>;
495 };
496 rxaui10 {
497 reg = <8>;
498 qlm-mode = "0x010,rxaui";
499 local-mac-address = [00 00 00 00 00 00];
500 phy-handle = <&rxaui10>;
501 };
502 rxaui11 {
503 reg = <9>;
504 qlm-mode = "0x011,rxaui";
505 local-mac-address = [00 00 00 00 00 00];
506 phy-handle = <&rxaui11>;
507 };
508 qsgmii10 {
509 reg = <0>;
510 qlm-mode = "0x010,qsgmii";
511 local-mac-address = [00 00 00 00 00 00];
512 phy-handle = <&qsgmii10>;
513 };
514 qsgmii11 {
515 reg = <1>;
516 qlm-mode = "0x011,qsgmii";
517 local-mac-address = [00 00 00 00 00 00];
518 phy-handle = <&qsgmii11>;
519 };
520 qsgmii12 {
521 reg = <2>;
522 qlm-mode = "0x012,qsgmii";
523 local-mac-address = [00 00 00 00 00 00];
524 phy-handle = <&qsgmii12>;
525 };
526 qsgmii13 {
527 reg = <3>;
528 qlm-mode = "0x013,qsgmii";
529 local-mac-address = [00 00 00 00 00 00];
530 phy-handle = <&qsgmii13>;
531 };
532 };
533};
534
535&i2c_9_0 {
536 rtc@68 {
537 compatible = "dallas,ds1337";
538 reg = <0x68>;
539 };
540};
541
diff --git a/recipes-kernel/linux/linux-cavium/dts/asim-cn83xx-linux.dts b/recipes-kernel/linux/linux-cavium/dts/asim-cn83xx-linux.dts
deleted file mode 100644
index e1c90f7..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/asim-cn83xx-linux.dts
+++ /dev/null
@@ -1,490 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn83xx-linux.dtsi"
53
54/ {
55 soc@0 {
56 uaa0: serial@87e028000000 {
57 compatible = "arm,pl011", "arm,primecell";
58 reg = <0x87e0 0x28000000 0x0 0x1000>;
59 interrupts = <0 5 4>;
60 clocks = <&refclkuaa>;
61 clock-names = "apb_pclk";
62 uboot,skip-init;
63 };
64
65 uaa1: serial@87e029000000 {
66 compatible = "arm,pl011", "arm,primecell";
67 reg = <0x87e0 0x29000000 0x0 0x1000>;
68 interrupts = <0 6 4>;
69 clocks = <&refclkuaa>;
70 clock-names = "apb_pclk";
71 uboot,skip-init;
72 };
73
74 uaa2: serial@87e02a000000 {
75 compatible = "arm,pl011", "arm,primecell";
76 reg = <0x87e0 0x2a000000 0x0 0x1000>;
77 interrupts = <0 7 4>;
78 clocks = <&refclkuaa>;
79 clock-names = "apb_pclk";
80 uboot,skip-init;
81 };
82
83 uaa3: serial@87e02b000000 {
84 compatible = "arm,pl011", "arm,primecell";
85 reg = <0x87e0 0x2b000000 0x0 0x1000>;
86 interrupts = <0 8 4>;
87 clocks = <&refclkuaa>;
88 clock-names = "apb_pclk";
89 uboot,skip-init;
90 };
91
92 pci@848000000000 {
93 mrml-bridge0@1,0 {
94 mdio-nexus@1,3 {
95 mdio0@87e005003800 {
96 compatible = "cavium,thunder-8890-mdio";
97 #address-cells = <1>;
98 #size-cells = <0>;
99 reg = <0x87e0 0x05003800 0x0 0x30>;
100
101 sgmii00: sgmii00 {
102 qlm-mode = "0x000,sgmii";
103 reg = <0> ;
104 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
105 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
106 marvell,reg-init = <3 0x10 0 0x8665>,
107 <3 0x11 0 0x00aa>,
108 <3 0x12 0 0x4105>,
109 <3 0x13 0 0x8a08>;
110
111 };
112 sgmii01: sgmii01 {
113 qlm-mode = "0x001,sgmii";
114 reg = <1> ;
115 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
116 marvell,reg-init = <3 0x10 0 0x8665>,
117 <3 0x11 0 0x00aa>,
118 <3 0x12 0 0x4105>,
119 <3 0x13 0 0x8a08>;
120 };
121 sgmii02: sgmii02 {
122 qlm-mode = "0x002,sgmii";
123 reg = <2> ;
124 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
125 marvell,reg-init = <3 0x10 0 0x8665>,
126 <3 0x11 0 0x00aa>,
127 <3 0x12 0 0x4105>,
128 <3 0x13 0 0x8a08>;
129 };
130 sgmii03: sgmii03 {
131 qlm-mode = "0x003,sgmii";
132 reg = <3> ;
133 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
134 marvell,reg-init = <3 0x10 0 0x8665>,
135 <3 0x11 0 0x00aa>,
136 <3 0x12 0 0x4105>,
137 <3 0x13 0 0x8a08>;
138 };
139 xfi00: xfi00 {
140 qlm-mode = "0x000,xfi","0x000,xfi-10g-kr";
141 reg = <0> ;
142 compatible = "cortina,cs4223-slice";
143 };
144 xfi01: xfi01 {
145 qlm-mode = "0x001,xfi","0x001,xfi-10g-kr";
146 reg = <1> ;
147 compatible = "cortina,cs4223-slice";
148 };
149 xfi02: xfi02 {
150 qlm-mode = "0x002,xfi","0x002,xfi-10g-kr";
151 reg = <2> ;
152 compatible = "cortina,cs4223-slice";
153 };
154 xfi03: xfi03 {
155 qlm-mode = "0x003,xfi","0x003,xfi-10g-kr";
156 reg = <3> ;
157 compatible = "cortina,cs4223-slice";
158 };
159 xlaui00: xlaui00 {
160 qlm-mode = "0x000,xlaui","0x000,xlaui-40g-kr";
161 reg = <0> ;
162 compatible = "cortina,cs4223-slice";
163 };
164 xaui00: xaui00 {
165 qlm-mode = "0x000,xaui";
166 reg = <0> ;
167 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
168 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
169 };
170 rxaui00: rxaui00 {
171 qlm-mode = "0x000,rxaui";
172 reg = <0> ;
173 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
174 };
175 rxaui01: rxaui01 {
176 qlm-mode = "0x001,rxaui";
177 reg = <1> ;
178 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
179 };
180 qsgmii00: qsgmii00 {
181 qlm-mode = "0x000,qsgmii";
182 reg = <0> ;
183 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
184 };
185 qsgmii01: qsgmii01 {
186 qlm-mode = "0x001,qsgmii";
187 reg = <1> ;
188 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
189 };
190 qsgmii02: qsgmii02 {
191 qlm-mode = "0x002,qsgmii";
192 reg = <2> ;
193 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
194 };
195 qsgmii03: qsgmii03 {
196 qlm-mode = "0x003,qsgmii";
197 reg = <3> ;
198 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
199 };
200
201 sgmii10: sgmii10 {
202 qlm-mode = "0x010,sgmii";
203 reg = <8> ;
204 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
205 marvell,reg-init = <3 0x10 0 0x8665>,
206 <3 0x11 0 0x00aa>,
207 <3 0x12 0 0x4105>,
208 <3 0x13 0 0x8a08>;
209 };
210 sgmii11: sgmii11 {
211 qlm-mode = "0x011,sgmii";
212 reg = <9> ;
213 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
214 marvell,reg-init = <3 0x10 0 0x8665>,
215 <3 0x11 0 0x00aa>,
216 <3 0x12 0 0x4105>,
217 <3 0x13 0 0x8a08>;
218 };
219 sgmii12: sgmii12 {
220 qlm-mode = "0x012,sgmii";
221 reg = <2> ;
222 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
223 marvell,reg-init = <3 0x10 0 0x8665>,
224 <3 0x11 0 0x00aa>,
225 <3 0x12 0 0x4105>,
226 <3 0x13 0 0x8a08>;
227 };
228 sgmii13: sgmii13 {
229 qlm-mode = "0x013,sgmii";
230 reg = <3> ;
231 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
232 marvell,reg-init = <3 0x10 0 0x8665>,
233 <3 0x11 0 0x00aa>,
234 <3 0x12 0 0x4105>,
235 <3 0x13 0 0x8a08>;
236 };
237 xfi10: xfi10 {
238 qlm-mode = "0x010,xfi","0x010,xfi-10g-kr";
239 reg = <8> ;
240 compatible = "cortina,cs4223-slice";
241 };
242 xfi11: xfi11 {
243 qlm-mode = "0x011,xfi","0x011,xfi-10g-kr";
244 reg = <9> ;
245 compatible = "cortina,cs4223-slice";
246 };
247 xfi12: xfi12 {
248 qlm-mode = "0x012,xfi","0x012,xfi-10g-kr";
249 reg = <10> ;
250 compatible = "cortina,cs4223-slice";
251 };
252 xfi13: xfi13 {
253 qlm-mode = "0x013,xfi","0x013,xfi-10g-kr";
254 reg = <11> ;
255 compatible = "cortina,cs4223-slice";
256 };
257 xlaui10: xlaui10 {
258 qlm-mode = "0x010,xlaui","0x010,xlaui-40g-kr";
259 reg = <8> ;
260 compatible = "cortina,cs4223-slice";
261 };
262 xaui10: xaui10 {
263 qlm-mode = "0x010,xaui";
264 reg = <8> ;
265 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
266 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
267 };
268 rxaui10: rxaui10 {
269 qlm-mode = "0x010,rxaui";
270 reg = <8> ;
271 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
272 };
273 rxaui11: rxaui11 {
274 qlm-mode = "0x011,rxaui";
275 reg = <9> ;
276 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
277 };
278 qsgmii10: qsgmii10 {
279 qlm-mode = "0x010,qsgmii";
280 reg = <8> ;
281 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
282 };
283 qsgmii11: qsgmii11 {
284 qlm-mode = "0x011,qsgmii";
285 reg = <9> ;
286 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
287 };
288 qsgmii12: qsgmii12 {
289 qlm-mode = "0x012,qsgmii";
290 reg = <10> ;
291 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
292 };
293 qsgmii13: qsgmii13 {
294 qlm-mode = "0x013,qsgmii";
295 reg = <11> ;
296 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
297 };
298 };
299
300 mdio1@87e005003880 {
301 compatible = "cavium,thunder-8890-mdio";
302 #address-cells = <1>;
303 #size-cells = <0>;
304 reg = <0x87e0 0x05003880 0x0 0x30>;
305
306 sgmii20: sgmii20 {
307 qlm-mode = "0x020,sgmii";
308 reg = <0> ;
309 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
310 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
311 marvell,reg-init = <3 0x10 0 0x8665>,
312 <3 0x11 0 0x00aa>,
313 <3 0x12 0 0x4105>,
314 <3 0x13 0 0x8a08>;
315
316 };
317 sgmii21: sgmii21 {
318 qlm-mode = "0x021,sgmii";
319 reg = <1> ;
320 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
321 marvell,reg-init = <3 0x10 0 0x8665>,
322 <3 0x11 0 0x00aa>,
323 <3 0x12 0 0x4105>,
324 <3 0x13 0 0x8a08>;
325 };
326 sgmii22: sgmii22 {
327 qlm-mode = "0x022,sgmii";
328 reg = <2> ;
329 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
330 marvell,reg-init = <3 0x10 0 0x8665>,
331 <3 0x11 0 0x00aa>,
332 <3 0x12 0 0x4105>,
333 <3 0x13 0 0x8a08>;
334 };
335 sgmii23: sgmii23 {
336 qlm-mode = "0x023,sgmii";
337 reg = <3> ;
338 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
339 marvell,reg-init = <3 0x10 0 0x8665>,
340 <3 0x11 0 0x00aa>,
341 <3 0x12 0 0x4105>,
342 <3 0x13 0 0x8a08>;
343 };
344 xfi20: xfi20 {
345 qlm-mode = "0x020,xfi","0x020,xfi-10g-kr";
346 reg = <0> ;
347 compatible = "cortina,cs4223-slice";
348 };
349 xfi21: xfi21 {
350 qlm-mode = "0x021,xfi","0x021,xfi-10g-kr";
351 reg = <1> ;
352 compatible = "cortina,cs4223-slice";
353 };
354 xfi22: xfi22 {
355 qlm-mode = "0x022,xfi","0x022,xfi-10g-kr";
356 reg = <2> ;
357 compatible = "cortina,cs4223-slice";
358 };
359 xfi23: xfi23 {
360 qlm-mode = "0x023,xfi","0x023,xfi-10g-kr";
361 reg = <3> ;
362 compatible = "cortina,cs4223-slice";
363 };
364 xlaui20: xlaui20 {
365 qlm-mode = "0x020,xlaui","0x020,xlaui-40g-kr";
366 reg = <0> ;
367 compatible = "cortina,cs4223-slice";
368 };
369 xaui20: xaui20 {
370 qlm-mode = "0x020,xaui";
371 reg = <0> ;
372 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
373 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
374 };
375 rxaui20: rxaui20 {
376 qlm-mode = "0x020,rxaui";
377 reg = <0> ;
378 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
379 };
380 rxaui21: rxaui21 {
381 qlm-mode = "0x021,rxaui";
382 reg = <1> ;
383 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
384 };
385 qsgmii20: qsgmii20 {
386 qlm-mode = "0x020,qsgmii";
387 reg = <0> ;
388 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
389 };
390 qsgmii21: qsgmii21 {
391 qlm-mode = "0x021,qsgmii";
392 reg = <1> ;
393 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
394 };
395 qsgmii22: qsgmii22 {
396 qlm-mode = "0x022,qsgmii";
397 reg = <2> ;
398 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
399 };
400 qsgmii23: qsgmii23 {
401 qlm-mode = "0x023,qsgmii";
402 reg = <3> ;
403 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
404 };
405
406 sgmii30: sgmii30 {
407 qlm-mode = "0x030,sgmii";
408 reg = <8> ;
409 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
410 marvell,reg-init = <3 0x10 0 0x8665>,
411 <3 0x11 0 0x00aa>,
412 <3 0x12 0 0x4105>,
413 <3 0x13 0 0x8a08>;
414 };
415 sgmii31: sgmii31 {
416 qlm-mode = "0x011,sgmii";
417 reg = <9> ;
418 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
419 marvell,reg-init = <3 0x10 0 0x8665>,
420 <3 0x11 0 0x00aa>,
421 <3 0x12 0 0x4105>,
422 <3 0x13 0 0x8a08>;
423 };
424 xfi30: xfi30 {
425 qlm-mode = "0x030,xfi","0x030,xfi-10g-kr";
426 reg = <8> ;
427 compatible = "cortina,cs4223-slice";
428 };
429 xfi31: xfi31 {
430 qlm-mode = "0x031,xfi","0x031,xfi-10g-kr";
431 reg = <9> ;
432 compatible = "cortina,cs4223-slice";
433 };
434 xfi32: xfi32 {
435 qlm-mode = "0x032,xfi","0x032,xfi-10g-kr";
436 reg = <10> ;
437 compatible = "cortina,cs4223-slice";
438 };
439 xfi33: xfi33 {
440 qlm-mode = "0x033,xfi","0x033,xfi-10g-kr";
441 reg = <11> ;
442 compatible = "cortina,cs4223-slice";
443 };
444 xlaui30: xlaui30 {
445 qlm-mode = "0x030,xlaui","0x030,xlaui-40g-kr";
446 reg = <8> ;
447 compatible = "cortina,cs4223-slice";
448 };
449 xaui30: xaui30 {
450 qlm-mode = "0x030,xaui";
451 reg = <8> ;
452 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
453 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
454 };
455 rxaui30: rxaui30 {
456 qlm-mode = "0x030,rxaui";
457 reg = <8> ;
458 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
459 };
460 rxaui31: rxaui31 {
461 qlm-mode = "0x031,rxaui";
462 reg = <9> ;
463 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
464 };
465 qsgmii30: qsgmii30 {
466 qlm-mode = "0x030,qsgmii";
467 reg = <8> ;
468 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
469 };
470 qsgmii31: qsgmii31 {
471 qlm-mode = "0x031,qsgmii";
472 reg = <9> ;
473 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
474 };
475 qsgmii32: qsgmii32 {
476 qlm-mode = "0x032,qsgmii";
477 reg = <10> ;
478 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
479 };
480 qsgmii33: qsgmii33 {
481 qlm-mode = "0x033,qsgmii";
482 reg = <11> ;
483 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
484 };
485 };
486 };
487 };
488 };
489 };
490};
diff --git a/recipes-kernel/linux/linux-cavium/dts/cn81xx-linux.dtsi b/recipes-kernel/linux/linux-cavium/dts/cn81xx-linux.dtsi
deleted file mode 100644
index b76f096..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/cn81xx-linux.dtsi
+++ /dev/null
@@ -1,499 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder SoC description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/ {
51 model = "Cavium ThunderX CN81XX board";
52 compatible = "cavium,thunder-81xx";
53 interrupt-parent = <&gic0>;
54 #address-cells = <2>;
55 #size-cells = <2>;
56
57 psci {
58 compatible = "arm,psci-0.2";
59 method = "smc";
60 };
61
62 cpus {
63 #address-cells = <2>;
64 #size-cells = <0>;
65
66 cpu-map {
67 cluster0 {
68 core0 {
69 cpu = <&CPU0>;
70 };
71 core1 {
72 cpu = <&CPU1>;
73 };
74 core2 {
75 cpu = <&CPU2>;
76 };
77 core3 {
78 cpu = <&CPU3>;
79 };
80 };
81 };
82
83 CPU0: cpu@0 {
84 device_type = "cpu";
85 compatible = "cavium,thunder", "arm,armv8";
86 reg = <0x0 0x000>;
87 enable-method = "psci";
88 /* socket 0 */
89 numa-node-id = <0>;
90 next-level-cache = <&thunderx_L2_0>;
91 };
92 CPU1: cpu@1 {
93 device_type = "cpu";
94 compatible = "cavium,thunder", "arm,armv8";
95 reg = <0x0 0x001>;
96 enable-method = "psci";
97 numa-node-id = <0>;
98 next-level-cache = <&thunderx_L2_0>;
99 };
100 CPU2: cpu@2 {
101 device_type = "cpu";
102 compatible = "cavium,thunder", "arm,armv8";
103 reg = <0x0 0x002>;
104 enable-method = "psci";
105 numa-node-id = <0>;
106 next-level-cache = <&thunderx_L2_0>;
107 };
108 CPU3: cpu@3 {
109 device_type = "cpu";
110 compatible = "cavium,thunder", "arm,armv8";
111 reg = <0x0 0x003>;
112 enable-method = "psci";
113 numa-node-id = <0>;
114 next-level-cache = <&thunderx_L2_0>;
115 };
116 };
117
118 thunderx_L2_0: l2-cache0 {
119 compatible = "cache";
120 numa-node-id = <0>;
121 };
122
123 timer {
124 compatible = "arm,armv8-timer";
125 interrupts = <1 13 4>,
126 <1 14 4>,
127 <1 11 4>,
128 <1 10 4>;
129 };
130
131 pmu {
132 compatible = "cavium,thunder-pmu", "arm,armv8-pmuv3";
133 interrupts = <1 7 4>;
134 };
135
136 mmc_supply_3v3: mmc_supply_3v3 {
137 compatible = "regulator-fixed";
138 regulator-name = "mmc_supply_3v3";
139 regulator-min-microvolt = <3300000>;
140 regulator-max-microvolt = <3300000>;
141
142 gpio = <&gpio_6_0 8 0>;
143 enable-active-high;
144 };
145
146 gic0: interrupt-controller@801000000000 {
147 compatible = "arm,gic-v3";
148 #interrupt-cells = <3>;
149 #address-cells = <2>;
150 #size-cells = <2>;
151 #redistributor-regions = <1>;
152 ranges;
153 interrupt-controller;
154 reg = <0x8010 0x00000000 0x0 0x010000>, /* GICD */
155 <0x8010 0x80000000 0x0 0x600000>; /* GICR */
156 interrupts = <1 9 4>;
157
158 its: gic-its@801000020000 {
159 compatible = "arm,gic-v3-its";
160 reg = <0x8010 0x20000 0x0 0x200000>;
161 msi-controller;
162 numa-node-id = <0>;
163 };
164 };
165
166 soc@0 {
167 compatible = "simple-bus";
168 #address-cells = <2>;
169 #size-cells = <2>;
170 ranges;
171 numa-node-id = <0>;
172
173 refclkuaa: refclkuaa {
174 compatible = "fixed-clock";
175 #clock-cells = <0>;
176 clock-frequency = <116640000>;
177 clock-output-names = "refclkuaa";
178 };
179
180 sclk: sclk {
181 compatible = "fixed-clock";
182 #clock-cells = <0>;
183 clock-frequency = <800000000>;
184 clock-output-names = "sclk";
185 };
186
187 uaa0: serial@87e028000000 {
188 compatible = "arm,pl011", "arm,primecell";
189 reg = <0x87e0 0x28000000 0x0 0x1000>;
190 interrupts = <0 5 4>;
191 clocks = <&refclkuaa>;
192 clock-names = "apb_pclk";
193 uboot,skip-init;
194 };
195
196 uaa1: serial@87e029000000 {
197 compatible = "arm,pl011", "arm,primecell";
198 reg = <0x87e0 0x29000000 0x0 0x1000>;
199 interrupts = <0 6 4>;
200 clocks = <&refclkuaa>;
201 clock-names = "apb_pclk";
202 uboot,skip-init;
203 };
204
205 uaa2: serial@87e02a000000 {
206 compatible = "arm,pl011", "arm,primecell";
207 reg = <0x87e0 0x2a000000 0x0 0x1000>;
208 interrupts = <0 7 4>;
209 clocks = <&refclkuaa>;
210 clock-names = "apb_pclk";
211 uboot,skip-init;
212 };
213
214 uaa3: serial@87e02b000000 {
215 compatible = "arm,pl011", "arm,primecell";
216 reg = <0x87e0 0x2b000000 0x0 0x1000>;
217 interrupts = <0 8 4>;
218 clocks = <&refclkuaa>;
219 clock-names = "apb_pclk";
220 uboot,skip-init;
221 };
222
223 watch-dog@8440000a0000 {
224 compatible = "arm,sbsa-gwdt";
225 reg = <0x8440 0xa0000 0x0 0x1000>, <0x8440 0xb0000 0x0 0x1000>;
226 interrupts = <0 9 4>;
227 };
228
229 pbus0: nor@0 {
230 compatible = "cfi-flash";
231 reg = <0x8000 0x0 0x0 0x800000>;
232 device-width = <1>;
233 bank-width = <1>;
234 clocks = <&sclk>;
235 };
236
237 smmu0@830000000000 {
238 compatible = "cavium,smmu-v2";
239 reg = <0x8300 0x0 0x0 0x2000000>;
240 #global-interrupts = <1>;
241 interrupts = <0 68 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
242 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
243 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
244 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
245 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
246 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
247 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
248 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
249 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
250 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
251 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>;
252
253 mmu-masters = <&ecam0 0x100>,
254 <&pem0 0x200>,
255 <&pem1 0x300>,
256 <&pem2 0x400>;
257
258 };
259
260 ecam0: pci@848000000000 {
261 compatible = "pci-host-ecam-generic";
262 device_type = "pci";
263 msi-parent = <&its>;
264 msi-map = <0 &its 0 0x10000>;
265 bus-range = <0 31>;
266 #size-cells = <2>;
267 #address-cells = <3>;
268 #stream-id-cells = <1>;
269 u-boot,dm-pre-reloc;
270 dma-coherent;
271 reg = <0x8480 0x00000000 0 0x02000000>; /* Configuration space */
272 ranges = <0x03000000 0x8010 0x00000000 0x8010 0x00000000 0x080 0x00000000>, /* mem ranges */
273 <0x03000000 0x8100 0x00000000 0x8100 0x00000000 0x80 0x00000000>, /* SATA */
274 <0x03000000 0x8680 0x00000000 0x8680 0x00000000 0x160 0x28000000>, /* UARTs */
275 <0x03000000 0x87e0 0x2c000000 0x87e0 0x2c000000 0x000 0x94000000>, /* PEMs */
276 <0x03000000 0x8400 0x00000000 0x8400 0x00000000 0x010 0x00000000>, /* RNM */
277 <0x03000000 0x8430 0x00000000 0x8430 0x00000000 0x02 0x00000000>, /* NIC0*/
278 <0x03000000 0x87e0 0xc6000000 0x87e0 0xc6000000 0x01f 0x3a000000>;
279
280 mrml_bridge: mrml-bridge0@1,0 {
281 compatible = "pci-bridge", "cavium,thunder-8890-mrml-bridge";
282 #size-cells = <2>;
283 #address-cells = <3>;
284 ranges = <0x03000000 0x87e0 0x00000000 0x03000000 0x87e0 0x00000000 0x10 0x00000000>;
285 reg = <0x0800 0 0 0 0>; /* DEVFN = 0x08 (1:0) */
286 device_type = "pci";
287 u-boot,dm-pre-reloc;
288
289 mdio-nexus@1,3 {
290 compatible = "cavium,thunder-8890-mdio-nexus";
291 #address-cells = <2>;
292 #size-cells = <2>;
293 reg = <0x0b00 0 0 0 0>; /* DEVFN = 0x0b (1:3) */
294 assigned-addresses = <0x03000000 0x87e0 0x05000000 0x0 0x800000>;
295 ranges = <0x87e0 0x05000000 0x03000000 0x87e0 0x05000000 0x0 0x800000>;
296 mdio0@87e005003800 {
297 compatible = "cavium,thunder-8890-mdio";
298 #address-cells = <1>;
299 #size-cells = <0>;
300 reg = <0x87e0 0x05003800 0x0 0x30>;
301 };
302 mdio1@87e005003880 {
303 compatible = "cavium,thunder-8890-mdio";
304 #address-cells = <1>;
305 #size-cells = <0>;
306 reg = <0x87e0 0x05003880 0x0 0x30>;
307 };
308 };
309
310 mmc_1_4: mmc@1,4 {
311 compatible = "cavium,thunder-8890-mmc";
312 reg = <0x0c00 0 0 0 0>; /* DEVFN = 0x0c (1:4) */
313 #address-cells = <1>;
314 #size-cells = <0>;
315 clocks = <&sclk>;
316 };
317
318 i2c_9_0: i2c@9,0 {
319 #address-cells = <1>;
320 #size-cells = <0>;
321 compatible = "cavium,thunder-8890-twsi", "cavium,thunderx-i2c";
322 reg = <0x4800 0 0 0 0>; /* DEVFN = 0x48 (9:0) */
323 clock-frequency = <100000>;
324 clocks = <&sclk>;
325 u-boot,dm-pre-reloc;
326 };
327
328 i2c_9_1: i2c@9,1 {
329 #address-cells = <1>;
330 #size-cells = <0>;
331 compatible = "cavium,thunder-8890-twsi", "cavium,thunderx-i2c";
332 reg = <0x4900 0 0 0 0>; /* DEVFN = 0x49 (9:1) */
333 clock-frequency = <100000>;
334 clocks = <&sclk>;
335 u-boot,dm-pre-reloc;
336 };
337
338 rgx0 {
339 #address-cells = <1>;
340 #size-cells = <0>;
341 reg = <0x9000 0 0 0 0>; /* DEVFN = 0x90 (16:1) */
342 };
343 bgx0 {
344 #address-cells = <1>;
345 #size-cells = <0>;
346 reg = <0x8000 0 0 0 0>; /* DEVFN = 0x80 (16:0) */
347 };
348 bgx1 {
349 #address-cells = <1>;
350 #size-cells = <0>;
351 reg = <0x8100 0 0 0 0>; /* DEVFN = 0x81 (16:1) */
352 };
353 };
354
355 spi_7_0: spi@7,0 {
356 compatible = "cavium,thunder-8190-spi", "cavium,thunderx-spi";
357 reg = <0x3800 0x0 0x0 0x0 0x0>; /* DEVFN = 0x38 (7:0) */
358 #address-cells = <1>;
359 #size-cells = <0>;
360 clocks = <&sclk>;
361 };
362
363 gpio_6_0: gpio0@6,0 {
364 #gpio-cells = <2>;
365 compatible = "cavium,thunder-8890-gpio";
366 gpio-controller;
367 reg = <0x3000 0 0 0 0>; /* DEVFN = 0x30 (6:0) */
368 u-boot,dm-pre-reloc;
369 };
370
371 nfc: nand@b,0 {
372 #address-cells = <1>;
373 #size-cells = <0>;
374 compatible = "cavium,cn8130-nand";
375 reg = <0x5800 0 0 0 0>; /* DEVFN = 0x58 (b:0) */
376 clocks = <&sclk>;
377 };
378 };
379
380 pem0: pci@87e0c0000000 {
381
382 /* "cavium,pci-host-thunder-pem" implies that
383 the first bus in bus-range has config access
384 via the "PEM space", subsequent buses have
385 config assess via the "Configuration space".
386 The "mem64 PEM" range is used to map the PEM
387 BAR0, which is used by the AER and PME MSI-X
388 sources. UEFI and Linux must assign the same
389 bus number to each device, otherwise Linux
390 enumeration gets confused. Because UEFI
391 skips the PEM bus and its PCIe-RC bridge it
392 uses a numbering that starts 1 bus higher.
393 */
394
395 compatible = "cavium,pci-host-thunder-pem";
396 device_type = "pci";
397 msi-parent = <&its>;
398 msi-map = <0 &its 0 0x10000>;
399 bus-range = <0x1f 0x57>;
400 #size-cells = <2>;
401 #address-cells = <3>;
402 #stream-id-cells = <1>;
403 dma-coherent;
404 reg = <0x8800 0x1f000000 0x0 0x39000000>, /* Configuration space */
405 <0x87e0 0xc0000000 0x0 0x01000000>; /* PEM space */
406 ranges = <0x01000000 0x00 0x00000000 0x8830 0x00000000 0x00 0x00010000>, /* I/O */
407 <0x03000000 0x00 0x10000000 0x8810 0x10000000 0x0f 0xf0000000>, /* mem64 */
408 <0x43000000 0x10 0x00000000 0x8820 0x00000000 0x10 0x00000000>, /* mem64-pref */
409 <0x03000000 0x87e0 0xc0000000 0x87e0 0xc0000000 0x00 0x01000000>; /* mem64 PEM */
410
411 #interrupt-cells = <1>;
412 interrupt-map-mask = <0 0 0 7>;
413 interrupt-map = <0 0 0 1 &gic0 0 0 0 16 4>, /* INTA */
414 <0 0 0 2 &gic0 0 0 0 17 4>, /* INTB */
415 <0 0 0 3 &gic0 0 0 0 18 4>, /* INTC */
416 <0 0 0 4 &gic0 0 0 0 19 4>; /* INTD */
417 };
418
419 pem1: pci@87e0c1000000 {
420 compatible = "cavium,pci-host-thunder-pem";
421 device_type = "pci";
422 msi-parent = <&its>;
423 msi-map = <0 &its 0 0x10000>;
424 bus-range = <0x57 0x8f>;
425 #size-cells = <2>;
426 #address-cells = <3>;
427 #stream-id-cells = <1>;
428 dma-coherent;
429 reg = <0x8840 0x57000000 0x0 0x39000000>, /* Configuration space */
430 <0x87e0 0xc1000000 0x0 0x01000000>; /* PEM space */
431 ranges = <0x01000000 0x00 0x00010000 0x8870 0x00010000 0x00 0x00010000>, /* I/O */
432 <0x03000000 0x00 0x10000000 0x8850 0x10000000 0x0f 0xf0000000>, /* mem64 */
433 <0x43000000 0x10 0x00000000 0x8860 0x00000000 0x10 0x00000000>, /* mem64-pref */
434 <0x03000000 0x87e0 0xc1000000 0x87e0 0xc1000000 0x00 0x01000000>; /* mem64 PEM */
435
436 #interrupt-cells = <1>;
437 interrupt-map-mask = <0 0 0 7>;
438 interrupt-map = <0 0 0 1 &gic0 0 0 0 20 4>, /* INTA */
439 <0 0 0 2 &gic0 0 0 0 21 4>, /* INTB */
440 <0 0 0 3 &gic0 0 0 0 22 4>, /* INTC */
441 <0 0 0 4 &gic0 0 0 0 23 4>; /* INTD */
442 };
443
444 pem2: pci@87e0c2000000 {
445 compatible = "cavium,pci-host-thunder-pem";
446 device_type = "pci";
447 msi-parent = <&its>;
448 msi-map = <0 &its 0 0x10000>;
449 bus-range = <0x8f 0xc7>;
450 #size-cells = <2>;
451 #address-cells = <3>;
452 #stream-id-cells = <1>;
453 dma-coherent;
454 reg = <0x8880 0x8f000000 0x0 0x39000000>, /* Configuration space */
455 <0x87e0 0xc2000000 0x0 0x01000000>; /* PEM space */
456 ranges = <0x01000000 0x00 0x00020000 0x88b0 0x00020000 0x00 0x00010000>, /* I/O */
457 <0x03000000 0x00 0x10000000 0x8890 0x10000000 0x0f 0xf0000000>, /* mem64 */
458 <0x43000000 0x10 0x00000000 0x88a0 0x00000000 0x10 0x00000000>, /* mem64-pref */
459 <0x03000000 0x87e0 0xc2000000 0x87e0 0xc2000000 0x00 0x01000000>; /* mem64 PEM */
460
461 #interrupt-cells = <1>;
462 interrupt-map-mask = <0 0 0 7>;
463 interrupt-map = <0 0 0 1 &gic0 0 0 0 24 4>, /* INTA */
464 <0 0 0 2 &gic0 0 0 0 25 4>, /* INTB */
465 <0 0 0 3 &gic0 0 0 0 26 4>, /* INTC */
466 <0 0 0 4 &gic0 0 0 0 27 4>; /* INTD */
467 };
468
469 tdm: tdm@d,0 {
470 #address-cells = <1>;
471 #size-cells = <0>;
472 compatible = "cavium,thunder-8190-tdm";
473 reg = <0x6800 0 0 0>; /* DEVFN = 0x68 (d:0) */
474 clocks = <&sclk>;
475 };
476 };
477
478 aliases {
479 serial0 = &uaa0;
480 serial1 = &uaa1;
481 serial2 = &uaa2;
482 serial3 = &uaa3;
483 i2c0 = &i2c_9_0;
484 i2c1 = &i2c_9_1;
485 spi0 = &spi_7_0;
486 };
487
488 chosen {
489 stdout-path = "serial0:115200n8";
490 };
491
492
493 memory@0 {
494 device_type = "memory";
495 reg = <0x0 0x01400000 0x0 0x7EC00000>;
496 /* socket 0 */
497 numa-node-id = <0>;
498 };
499};
diff --git a/recipes-kernel/linux/linux-cavium/dts/cn83xx-linux.dtsi b/recipes-kernel/linux/linux-cavium/dts/cn83xx-linux.dtsi
deleted file mode 100644
index a523ea6..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/cn83xx-linux.dtsi
+++ /dev/null
@@ -1,800 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder SoC description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/ {
51 model = "Cavium ThunderX CN83XX board";
52 compatible = "cavium,thunder-83xx";
53 interrupt-parent = <&gic0>;
54 #address-cells = <2>;
55 #size-cells = <2>;
56
57 psci {
58 compatible = "arm,psci-0.2";
59 method = "smc";
60 };
61
62 cpus {
63 #address-cells = <2>;
64 #size-cells = <0>;
65
66 cpu-map {
67 cluster0 {
68 core0 {
69 cpu = <&CPU0>;
70 };
71 core1 {
72 cpu = <&CPU1>;
73 };
74 core2 {
75 cpu = <&CPU2>;
76 };
77 core3 {
78 cpu = <&CPU3>;
79 };
80 core4 {
81 cpu = <&CPU4>;
82 };
83 core5 {
84 cpu = <&CPU5>;
85 };
86 core6 {
87 cpu = <&CPU6>;
88 };
89 core7 {
90 cpu = <&CPU7>;
91 };
92 core8 {
93 cpu = <&CPU8>;
94 };
95 core9 {
96 cpu = <&CPU9>;
97 };
98 core10 {
99 cpu = <&CPU10>;
100 };
101 core11 {
102 cpu = <&CPU11>;
103 };
104 core12 {
105 cpu = <&CPU12>;
106 };
107 core13 {
108 cpu = <&CPU13>;
109 };
110 core14 {
111 cpu = <&CPU14>;
112 };
113 core15 {
114 cpu = <&CPU15>;
115 };
116 core16 {
117 cpu = <&CPU16>;
118 };
119 core17 {
120 cpu = <&CPU17>;
121 };
122 core18 {
123 cpu = <&CPU18>;
124 };
125 core19 {
126 cpu = <&CPU19>;
127 };
128 core20 {
129 cpu = <&CPU20>;
130 };
131 core21 {
132 cpu = <&CPU21>;
133 };
134 core22 {
135 cpu = <&CPU22>;
136 };
137 core23 {
138 cpu = <&CPU23>;
139 };
140 };
141 };
142
143 CPU0: cpu@0 {
144 device_type = "cpu";
145 compatible = "cavium,thunder", "arm,armv8";
146 reg = <0x0 0x000>;
147 enable-method = "psci";
148 /* socket 0 */
149 numa-node-id = <0>;
150 next-level-cache = <&thunderx_L2_0>;
151 };
152 CPU1: cpu@1 {
153 device_type = "cpu";
154 compatible = "cavium,thunder", "arm,armv8";
155 reg = <0x0 0x001>;
156 enable-method = "psci";
157 numa-node-id = <0>;
158 next-level-cache = <&thunderx_L2_0>;
159 };
160 CPU2: cpu@2 {
161 device_type = "cpu";
162 compatible = "cavium,thunder", "arm,armv8";
163 reg = <0x0 0x002>;
164 enable-method = "psci";
165 numa-node-id = <0>;
166 next-level-cache = <&thunderx_L2_0>;
167 };
168 CPU3: cpu@3 {
169 device_type = "cpu";
170 compatible = "cavium,thunder", "arm,armv8";
171 reg = <0x0 0x003>;
172 enable-method = "psci";
173 numa-node-id = <0>;
174 next-level-cache = <&thunderx_L2_0>;
175 };
176 CPU4: cpu@4 {
177 device_type = "cpu";
178 compatible = "cavium,thunder", "arm,armv8";
179 reg = <0x0 0x004>;
180 enable-method = "psci";
181 numa-node-id = <0>;
182 next-level-cache = <&thunderx_L2_0>;
183 };
184 CPU5: cpu@5 {
185 device_type = "cpu";
186 compatible = "cavium,thunder", "arm,armv8";
187 reg = <0x0 0x005>;
188 enable-method = "psci";
189 numa-node-id = <0>;
190 next-level-cache = <&thunderx_L2_0>;
191 };
192 CPU6: cpu@6 {
193 device_type = "cpu";
194 compatible = "cavium,thunder", "arm,armv8";
195 reg = <0x0 0x006>;
196 enable-method = "psci";
197 numa-node-id = <0>;
198 next-level-cache = <&thunderx_L2_0>;
199 };
200 CPU7: cpu@7 {
201 device_type = "cpu";
202 compatible = "cavium,thunder", "arm,armv8";
203 reg = <0x0 0x007>;
204 enable-method = "psci";
205 numa-node-id = <0>;
206 next-level-cache = <&thunderx_L2_0>;
207 };
208 CPU8: cpu@8 {
209 device_type = "cpu";
210 compatible = "cavium,thunder", "arm,armv8";
211 reg = <0x0 0x008>;
212 enable-method = "psci";
213 numa-node-id = <0>;
214 next-level-cache = <&thunderx_L2_0>;
215 };
216 CPU9: cpu@9 {
217 device_type = "cpu";
218 compatible = "cavium,thunder", "arm,armv8";
219 reg = <0x0 0x009>;
220 enable-method = "psci";
221 numa-node-id = <0>;
222 next-level-cache = <&thunderx_L2_0>;
223 };
224 CPU10: cpu@a {
225 device_type = "cpu";
226 compatible = "cavium,thunder", "arm,armv8";
227 reg = <0x0 0x00a>;
228 enable-method = "psci";
229 numa-node-id = <0>;
230 next-level-cache = <&thunderx_L2_0>;
231 };
232 CPU11: cpu@b {
233 device_type = "cpu";
234 compatible = "cavium,thunder", "arm,armv8";
235 reg = <0x0 0x00b>;
236 enable-method = "psci";
237 numa-node-id = <0>;
238 next-level-cache = <&thunderx_L2_0>;
239 };
240 CPU12: cpu@c {
241 device_type = "cpu";
242 compatible = "cavium,thunder", "arm,armv8";
243 reg = <0x0 0x00c>;
244 enable-method = "psci";
245 numa-node-id = <0>;
246 next-level-cache = <&thunderx_L2_0>;
247 };
248 CPU13: cpu@d {
249 device_type = "cpu";
250 compatible = "cavium,thunder", "arm,armv8";
251 reg = <0x0 0x00d>;
252 enable-method = "psci";
253 numa-node-id = <0>;
254 next-level-cache = <&thunderx_L2_0>;
255 };
256 CPU14: cpu@e {
257 device_type = "cpu";
258 compatible = "cavium,thunder", "arm,armv8";
259 reg = <0x0 0x00e>;
260 enable-method = "psci";
261 numa-node-id = <0>;
262 next-level-cache = <&thunderx_L2_0>;
263 };
264 CPU15: cpu@f {
265 device_type = "cpu";
266 compatible = "cavium,thunder", "arm,armv8";
267 reg = <0x0 0x00f>;
268 enable-method = "psci";
269 numa-node-id = <0>;
270 next-level-cache = <&thunderx_L2_0>;
271 };
272 CPU16: cpu@100 {
273 device_type = "cpu";
274 compatible = "cavium,thunder", "arm,armv8";
275 reg = <0x0 0x100>;
276 enable-method = "psci";
277 numa-node-id = <0>;
278 next-level-cache = <&thunderx_L2_0>;
279 };
280 CPU17: cpu@101 {
281 device_type = "cpu";
282 compatible = "cavium,thunder", "arm,armv8";
283 reg = <0x0 0x101>;
284 enable-method = "psci";
285 numa-node-id = <0>;
286 next-level-cache = <&thunderx_L2_0>;
287 };
288 CPU18: cpu@102 {
289 device_type = "cpu";
290 compatible = "cavium,thunder", "arm,armv8";
291 reg = <0x0 0x102>;
292 enable-method = "psci";
293 numa-node-id = <0>;
294 next-level-cache = <&thunderx_L2_0>;
295 };
296 CPU19: cpu@103 {
297 device_type = "cpu";
298 compatible = "cavium,thunder", "arm,armv8";
299 reg = <0x0 0x103>;
300 enable-method = "psci";
301 numa-node-id = <0>;
302 next-level-cache = <&thunderx_L2_0>;
303 };
304 CPU20: cpu@104 {
305 device_type = "cpu";
306 compatible = "cavium,thunder", "arm,armv8";
307 reg = <0x0 0x104>;
308 enable-method = "psci";
309 numa-node-id = <0>;
310 next-level-cache = <&thunderx_L2_0>;
311 };
312 CPU21: cpu@105 {
313 device_type = "cpu";
314 compatible = "cavium,thunder", "arm,armv8";
315 reg = <0x0 0x105>;
316 enable-method = "psci";
317 numa-node-id = <0>;
318 next-level-cache = <&thunderx_L2_0>;
319 };
320 CPU22: cpu@106 {
321 device_type = "cpu";
322 compatible = "cavium,thunder", "arm,armv8";
323 reg = <0x0 0x106>;
324 enable-method = "psci";
325 numa-node-id = <0>;
326 next-level-cache = <&thunderx_L2_0>;
327 };
328 CPU23: cpu@107 {
329 device_type = "cpu";
330 compatible = "cavium,thunder", "arm,armv8";
331 reg = <0x0 0x107>;
332 enable-method = "psci";
333 numa-node-id = <0>;
334 next-level-cache = <&thunderx_L2_0>;
335 };
336 };
337
338 thunderx_L2_0: l2-cache0 {
339 compatible = "cache";
340 numa-node-id = <0>;
341 };
342
343 timer {
344 compatible = "arm,armv8-timer";
345 interrupts = <1 13 4>,
346 <1 14 4>,
347 <1 11 4>,
348 <1 10 4>;
349 };
350
351 pmu {
352 compatible = "cavium,thunder-pmu", "arm,armv8-pmuv3";
353 interrupts = <1 7 4>;
354 };
355
356 mmc_supply_3v3: mmc_supply_3v3 {
357 compatible = "regulator-fixed";
358 regulator-name = "mmc_supply_3v3";
359 regulator-min-microvolt = <3300000>;
360 regulator-max-microvolt = <3300000>;
361
362 gpio = <&gpio_6_0 8 0>;
363 enable-active-high;
364 };
365
366 gic0: interrupt-controller@801000000000 {
367 compatible = "arm,gic-v3";
368 #interrupt-cells = <3>;
369 #address-cells = <2>;
370 #size-cells = <2>;
371 #redistributor-regions = <1>;
372 ranges;
373 interrupt-controller;
374 reg = <0x8010 0x00000000 0x0 0x010000>, /* GICD */
375 <0x8010 0x80000000 0x0 0x600000>; /* GICR */
376 interrupts = <1 9 4>;
377
378 its: gic-its@801000020000 {
379 compatible = "arm,gic-v3-its";
380 reg = <0x8010 0x20000 0x0 0x200000>;
381 msi-controller;
382 numa-node-id = <0>;
383 };
384 };
385
386 soc@0 {
387 compatible = "simple-bus";
388 #address-cells = <2>;
389 #size-cells = <2>;
390 ranges;
391 numa-node-id = <0>;
392
393 refclkuaa: refclkuaa {
394 compatible = "fixed-clock";
395 #clock-cells = <0>;
396 clock-frequency = <116640000>;
397 clock-output-names = "refclkuaa";
398 };
399
400 sclk: sclk {
401 compatible = "fixed-clock";
402 #clock-cells = <0>;
403 clock-frequency = <800000000>;
404 clock-output-names = "sclk";
405 };
406
407 uaa0: serial@87e028000000 {
408 compatible = "arm,pl011", "arm,primecell";
409 reg = <0x87e0 0x28000000 0x0 0x1000>;
410 interrupts = <0 5 4>;
411 clocks = <&refclkuaa>;
412 clock-names = "apb_pclk";
413 uboot,skip-init;
414 };
415
416 uaa1: serial@87e029000000 {
417 compatible = "arm,pl011", "arm,primecell";
418 reg = <0x87e0 0x29000000 0x0 0x1000>;
419 interrupts = <0 6 4>;
420 clocks = <&refclkuaa>;
421 clock-names = "apb_pclk";
422 uboot,skip-init;
423 };
424
425 uaa2: serial@87e02a000000 {
426 compatible = "arm,pl011", "arm,primecell";
427 reg = <0x87e0 0x2a000000 0x0 0x1000>;
428 interrupts = <0 7 4>;
429 clocks = <&refclkuaa>;
430 clock-names = "apb_pclk";
431 uboot,skip-init;
432 };
433
434 uaa3: serial@87e02b000000 {
435 compatible = "arm,pl011", "arm,primecell";
436 reg = <0x87e0 0x2b000000 0x0 0x1000>;
437 interrupts = <0 8 4>;
438 clocks = <&refclkuaa>;
439 clock-names = "apb_pclk";
440 uboot,skip-init;
441 };
442
443 watch-dog@8440000a0000 {
444 compatible = "arm,sbsa-gwdt";
445 reg = <0x8440 0xa0000 0x0 0x1000>, <0x8440 0xb0000 0x0 0x1000>;
446 interrupts = <0 9 4>;
447 };
448
449 pbus0: nor@0 {
450 compatible = "cfi-flash";
451 reg = <0x8000 0x0 0x0 0x800000>;
452 device-width = <1>;
453 bank-width = <1>;
454 clocks = <&sclk>;
455 };
456
457 smmu0@830000000000 {
458 compatible = "cavium,smmu-v2";
459 reg = <0x8300 0x0 0x0 0x2000000>;
460 #global-interrupts = <1>;
461 interrupts = <0 68 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
462 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
463 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
464 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
465 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
466 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
467 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
468 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
469 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
470 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
471 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
472 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
473 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
474 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
475 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
476 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
477 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
478 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
479 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
480 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
481 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
482 <0 69 4>, <0 69 4>, <0 69 4>;
483
484 mmu-masters = <&ecam0 0x100>,
485 <&pem0 0x200>,
486 <&pem1 0x300>,
487 <&pem2 0x400>,
488 <&pem3 0x500>;
489
490 };
491
492 smmu1@831000000000 {
493 compatible = "cavium,smmu-v2";
494 reg = <0x8310 0x0 0x0 0x2000000>;
495 #global-interrupts = <1>;
496 interrupts = <0 70 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
497 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
498 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
499 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
500 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
501 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
502 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
503 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
504 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
505 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
506 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
507 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
508 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
509 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
510 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
511 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
512 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
513 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
514 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
515 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
516 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
517 <0 71 4>, <0 71 4>, <0 71 4>;
518
519 mmu-masters = <&ecam1 0x100>;
520 };
521
522
523 ecam0: pci@848000000000 {
524 compatible = "cavium,pci-host-octeontx-ecam";
525 device_type = "pci";
526 msi-parent = <&its>;
527 msi-map = <0 &its 0 0x10000>;
528 bus-range = <0x0 0xff>;
529 #size-cells = <2>;
530 #address-cells = <3>;
531 #stream-id-cells = <1>;
532 dma-coherent;
533 reg = <0x8480 0x00000000 0 0x10000000>; /* Configuration space */
534 ranges = <0x03000000 0x8030 0x00000000 0x8030 0x00000000 0x050 0x00100000>, /* mem ranges */
535 <0x03000000 0x8280 0x00000000 0x8280 0x00000000 0x007 0x02000000>,
536 <0x03000000 0x8400 0x00800000 0x8400 0x00800000 0x00f 0xfc040000>,
537 <0x03000000 0x8580 0x00000000 0x8580 0x00000000 0x0a8 0x04000000>,
538 <0x03000000 0x86e0 0x00000000 0x86e0 0x00000000 0x100 0x28000000>,
539 <0x03000000 0x87e0 0x40000000 0x87e0 0x40000000 0x000 0x6c800000>,
540 <0x03000000 0x87e0 0xd0000000 0x87e0 0xd0000000 0x010 0xaf100000>,
541 <0x03000000 0x0000 0x01400000 0x0000 0x01400000 0x000 0x00A00000>; /* SSO mailbox */
542
543
544 mrml_bridge: mrml-bridge0@1,0 {
545 compatible = "pci-bridge", "cavium,thunder-8890-mrml-bridge";
546 #size-cells = <2>;
547 #address-cells = <3>;
548 ranges = <0x03000000 0x87e0 0x00000000 0x03000000 0x87e0 0x00000000 0x10 0x00000000>;
549 reg = <0x0800 0 0 0 0>; /* DEVFN = 0x08 (1:0) */
550 device_type = "pci";
551 u-boot,dm-pre-reloc;
552
553 mdio-nexus@1,3 {
554 compatible = "cavium,thunder-8890-mdio-nexus";
555 #address-cells = <2>;
556 #size-cells = <2>;
557 reg = <0x0b00 0 0 0 0>; /* DEVFN = 0x0b (1:3) */
558 assigned-addresses = <0x03000000 0x87e0 0x05000000 0x0 0x800000>;
559 ranges = <0x87e0 0x05000000 0x03000000 0x87e0 0x05000000 0x0 0x800000>;
560
561 mdio0@87e005003800 {
562 compatible = "cavium,thunder-8890-mdio";
563 #address-cells = <1>;
564 #size-cells = <0>;
565 reg = <0x87e0 0x05003800 0x0 0x30>;
566
567 };
568
569 mdio1@87e005003880 {
570 compatible = "cavium,thunder-8890-mdio";
571 #address-cells = <1>;
572 #size-cells = <0>;
573 reg = <0x87e0 0x05003880 0x0 0x30>;
574
575
576 };
577 };
578
579 mmc_1_4: mmc@1,4 {
580 compatible = "cavium,thunder-8890-mmc";
581 reg = <0x0c00 0 0 0 0>; /* DEVFN = 0x0c (1:4) */
582 #address-cells = <1>;
583 #size-cells = <0>;
584 clocks = <&sclk>;
585 };
586
587 i2c_9_0: i2c@9,0 {
588 #address-cells = <1>;
589 #size-cells = <0>;
590 compatible = "cavium,thunder-8890-twsi", "cavium,thunderx-i2c";
591 reg = <0x4800 0 0 0 0>; /* DEVFN = 0x48 (9:0) */
592 clock-frequency = <100000>;
593 clocks = <&sclk>;
594 u-boot,dm-pre-reloc;
595 };
596
597 i2c_9_1: i2c@9,1 {
598 #address-cells = <1>;
599 #size-cells = <0>;
600 compatible = "cavium,thunder-8890-twsi", "cavium,thunderx-i2c";
601 reg = <0x4900 0 0 0 0>; /* DEVFN = 0x49 (9:1) */
602 clock-frequency = <100000>;
603 clocks = <&sclk>;
604 u-boot,dm-pre-reloc;
605 };
606
607 bgx0 {
608 #address-cells = <1>;
609 #size-cells = <0>;
610 reg = <0x8000 0 0 0 0>; /* DEVFN = 0x80 (16:0) */
611 };
612 bgx1 {
613 #address-cells = <1>;
614 #size-cells = <0>;
615 reg = <0x8100 0 0 0 0>; /* DEVFN = 0x81 (16:1) */
616 };
617
618 bgx2 {
619 #address-cells = <1>;
620 #size-cells = <0>;
621 reg = <0x8200 0 0 0 0>; /* DEVFN = 0x82 (16:0) */
622 };
623
624 bgx3 {
625 #address-cells = <1>;
626 #size-cells = <0>;
627 reg = <0x8300 0 0 0 0>; /* DEVFN = 0x83 (16:0) */
628 };
629 };
630
631 spi_7_0: spi@7,0 {
632 compatible = "cavium,thunder-8190-spi", "cavium,thunderx-spi";
633 reg = <0x3800 0x0 0x0 0x0 0x0>; /* DEVFN = 0x38 (7:0) */
634 #address-cells = <1>;
635 #size-cells = <0>;
636 clocks = <&sclk>;
637 };
638
639 gpio_6_0: gpio0@6,0 {
640 #gpio-cells = <2>;
641 compatible = "cavium,thunder-8890-gpio";
642 gpio-controller;
643 reg = <0x3000 0 0 0 0>; /* DEVFN = 0x30 (6:0) */
644 u-boot,dm-pre-reloc;
645 };
646 };
647
648 ecam1: pci@849000000000 {
649 compatible = "cavium,pci-host-octeontx-ecam";
650 device_type = "pci";
651 msi-parent = <&its>;
652 msi-map = <0 &its 0x10000 0x10000>;
653 bus-range = <0x0 0xff>;
654 #size-cells = <2>;
655 #address-cells = <3>;
656 #stream-id-cells = <1>;
657 dma-coherent;
658 reg = <0x8490 0x00000000 0 0x10000000>; /* Configuration space */
659 ranges = <0x03000000 0x8090 0x00000000 0x8090 0x00000000 0x0c0 0x00300000>, /* mem ranges */
660 <0x03000000 0x8380 0x00000000 0x8380 0x00000000 0x000 0x30800000>,
661 <0x03000000 0x8430 0x00000000 0x8430 0x00000000 0x000 0xf0000000>,
662 <0x03000000 0x8540 0x00000000 0x8540 0x00000000 0x004 0x02000000>,
663 <0x03000000 0x8680 0x00000000 0x8680 0x00000000 0x040 0x02000000>,
664 <0x03000000 0x87f1 0x80000000 0x87f1 0x80000000 0x000 0x80000000>, /* LMTLINE */
665 <0x03000000 0x0000 0x01E00000 0x0000 0x01E00000 0x000 0x00A00000>; /* PKI emulated VF space */
666 };
667
668 pem0: pci@87e0c0000000 {
669
670 /* "cavium,pci-host-thunder-pem" implies that
671 the first bus in bus-range has config access
672 via the "PEM space", subsequent buses have
673 config assess via the "Configuration space".
674 The "mem64 PEM" range is used to map the PEM
675 BAR0, which is used by the AER and PME MSI-X
676 sources. UEFI and Linux must assign the same
677 bus number to each device, otherwise Linux
678 enumeration gets confused. Because UEFI
679 skips the PEM bus and its PCIe-RC bridge it
680 uses a numbering that starts 1 bus higher.
681 */
682
683 compatible = "cavium,pci-host-thunder-pem";
684 device_type = "pci";
685 msi-parent = <&its>;
686 msi-map = <0 &its 0 0x10000>;
687 bus-range = <0x1f 0x57>;
688 #size-cells = <2>;
689 #address-cells = <3>;
690 #stream-id-cells = <1>;
691 dma-coherent;
692 reg = <0x8800 0x1f000000 0x0 0x39000000>, /* Configuration space */
693 <0x87e0 0xc0000000 0x0 0x01000000>; /* PEM space */
694 ranges = <0x01000000 0x00 0x00000000 0x8830 0x00000000 0x00 0x00010000>, /* I/O */
695 <0x03000000 0x00 0x10000000 0x8810 0x10000000 0x0f 0xf0000000>, /* mem64 */
696 <0x43000000 0x10 0x00000000 0x8820 0x00000000 0x10 0x00000000>, /* mem64-pref */
697 <0x03000000 0x87e0 0xc0000000 0x87e0 0xc0000000 0x00 0x01000000>; /* mem64 PEM */
698
699 #interrupt-cells = <1>;
700 interrupt-map-mask = <0 0 0 7>;
701 interrupt-map = <0 0 0 1 &gic0 0 0 0 16 4>, /* INTA */
702 <0 0 0 2 &gic0 0 0 0 17 4>, /* INTB */
703 <0 0 0 3 &gic0 0 0 0 18 4>, /* INTC */
704 <0 0 0 4 &gic0 0 0 0 19 4>; /* INTD */
705 };
706
707 pem1: pci@87e0c1000000 {
708 compatible = "cavium,pci-host-thunder-pem";
709 device_type = "pci";
710 msi-parent = <&its>;
711 msi-map = <0 &its 0 0x10000>;
712 bus-range = <0x57 0x8f>;
713 #size-cells = <2>;
714 #address-cells = <3>;
715 #stream-id-cells = <1>;
716 dma-coherent;
717 reg = <0x8840 0x57000000 0x0 0x39000000>, /* Configuration space */
718 <0x87e0 0xc1000000 0x0 0x01000000>; /* PEM space */
719 ranges = <0x01000000 0x00 0x00010000 0x8870 0x00010000 0x00 0x00010000>, /* I/O */
720 <0x03000000 0x00 0x10000000 0x8850 0x10000000 0x0f 0xf0000000>, /* mem64 */
721 <0x43000000 0x10 0x00000000 0x8860 0x00000000 0x10 0x00000000>, /* mem64-pref */
722 <0x03000000 0x87e0 0xc1000000 0x87e0 0xc1000000 0x00 0x01000000>; /* mem64 PEM */
723
724 #interrupt-cells = <1>;
725 interrupt-map-mask = <0 0 0 7>;
726 interrupt-map = <0 0 0 1 &gic0 0 0 0 20 4>, /* INTA */
727 <0 0 0 2 &gic0 0 0 0 21 4>, /* INTB */
728 <0 0 0 3 &gic0 0 0 0 22 4>, /* INTC */
729 <0 0 0 4 &gic0 0 0 0 23 4>; /* INTD */
730 };
731
732 pem2: pci@87e0c2000000 {
733 compatible = "cavium,pci-host-thunder-pem";
734 device_type = "pci";
735 msi-parent = <&its>;
736 msi-map = <0 &its 0 0x10000>;
737 bus-range = <0x8f 0xc7>;
738 #size-cells = <2>;
739 #address-cells = <3>;
740 #stream-id-cells = <1>;
741 dma-coherent;
742 reg = <0x8880 0x8f000000 0x0 0x39000000>, /* Configuration space */
743 <0x87e0 0xc2000000 0x0 0x01000000>; /* PEM space */
744 ranges = <0x01000000 0x00 0x00020000 0x88b0 0x00020000 0x00 0x00010000>, /* I/O */
745 <0x03000000 0x00 0x10000000 0x8890 0x10000000 0x0f 0xf0000000>, /* mem64 */
746 <0x43000000 0x10 0x00000000 0x88a0 0x00000000 0x10 0x00000000>, /* mem64-pref */
747 <0x03000000 0x87e0 0xc2000000 0x87e0 0xc2000000 0x00 0x01000000>; /* mem64 PEM */
748
749 #interrupt-cells = <1>;
750 interrupt-map-mask = <0 0 0 7>;
751 interrupt-map = <0 0 0 1 &gic0 0 0 0 24 4>, /* INTA */
752 <0 0 0 2 &gic0 0 0 0 25 4>, /* INTB */
753 <0 0 0 3 &gic0 0 0 0 26 4>, /* INTC */
754 <0 0 0 4 &gic0 0 0 0 27 4>; /* INTD */
755 };
756
757 pem3: pci@87e0c3000000 {
758 compatible = "cavium,pci-host-thunder-pem";
759 device_type = "pci";
760 msi-parent = <&its>;
761 msi-map = <0 &its 0 0x10000>;
762 bus-range = <0xc7 0xff>;
763 #size-cells = <2>;
764 #address-cells = <3>;
765 #stream-id-cells = <1>;
766 dma-coherent;
767 reg = <0x88c0 0xc7000000 0x0 0x39000000>, /* Configuration space */
768 <0x87e0 0xc3000000 0x0 0x01000000>; /* PEM space */
769 ranges = <0x01000000 0x00 0x00030000 0x88f0 0x00030000 0x00 0x00010000>, /* I/O */
770 <0x03000000 0x00 0x10000000 0x88d0 0x10000000 0x0f 0xf0000000>, /* mem64 */
771 <0x43000000 0x10 0x00000000 0x88e0 0x00000000 0x10 0x00000000>, /* mem64-pref */
772 <0x03000000 0x87e0 0xc3000000 0x87e0 0xc3000000 0x00 0x01000000>; /* mem64 PEM */
773
774 #interrupt-cells = <1>;
775 interrupt-map-mask = <0 0 0 7>;
776 interrupt-map = <0 0 0 1 &gic0 0 0 0 28 4>, /* INTA */
777 <0 0 0 2 &gic0 0 0 0 29 4>, /* INTB */
778 <0 0 0 3 &gic0 0 0 0 30 4>, /* INTC */
779 <0 0 0 4 &gic0 0 0 0 31 4>; /* INTD */
780 };
781 };
782
783 aliases {
784 serial0 = &uaa0;
785 serial1 = &uaa1;
786 serial2 = &uaa2;
787 serial3 = &uaa3;
788 };
789
790 chosen {
791 stdout-path = &uaa0;
792 };
793
794 memory@0 {
795 device_type = "memory";
796 reg = <0x0 0x02800000 0x0 0x7EC00000>;
797 /* socket 0 */
798 numa-node-id = <0>;
799 };
800};
diff --git a/recipes-kernel/linux/linux-cavium/dts/ebb8004-linux.dts b/recipes-kernel/linux/linux-cavium/dts/ebb8004-linux.dts
deleted file mode 100644
index 94f5e88..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/ebb8004-linux.dts
+++ /dev/null
@@ -1,485 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn81xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 rgmii00: rgmii00 {
58 reg = <3> ;
59 compatible = "micrel,ksz9031", "ethernet-phy-ieee802.3-c22";
60 };
61 };
62
63 mdio1@87e005003880 {
64 sgmii00: sgmii00 {
65 qlm-mode = "0x000,sgmii";
66 reg = <0> ;
67 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
68 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
69 marvell,reg-init = <3 0x10 0 0x8665>,
70 <3 0x11 0 0x00aa>,
71 <3 0x12 0 0x4105>,
72 <3 0x13 0 0x8a08>;
73 };
74 sgmii01: sgmii01 {
75 qlm-mode = "0x001,sgmii";
76 reg = <2> ;
77 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
78 marvell,reg-init = <3 0x10 0 0x8665>,
79 <3 0x11 0 0x00aa>,
80 <3 0x12 0 0x4105>,
81 <3 0x13 0 0x8a08>;
82 };
83 xfi00: xfi00 {
84 qlm-mode = "0x000,xfi","0x000,xfi-10g-kr";
85 reg = <0> ;
86 compatible = "cortina,cs4223-slice";
87 };
88 xfi01: xfi01 {
89 qlm-mode = "0x001,xfi","0x001,xfi-10g-kr";
90 reg = <2> ;
91 compatible = "cortina,cs4223-slice";
92 };
93 qsgmii00: qsgmii00 {
94 qlm-mode = "0x000,qsgmii";
95 reg = <0> ;
96 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
97 };
98 qsgmii01: qsgmii01 {
99 qlm-mode = "0x001,qsgmii";
100 reg = <1> ;
101 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
102 };
103 qsgmii02: qsgmii02 {
104 qlm-mode = "0x002,qsgmii";
105 reg = <2> ;
106 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
107 };
108 qsgmii03: qsgmii03 {
109 qlm-mode = "0x003,qsgmii";
110 reg = <3> ;
111 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
112 };
113
114 sgmii10: sgmii10 {
115 qlm-mode = "0x010,sgmii";
116 reg = <8> ;
117 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
118 marvell,reg-init = <3 0x10 0 0x8665>,
119 <3 0x11 0 0x00aa>,
120 <3 0x12 0 0x4105>,
121 <3 0x13 0 0x8a08>;
122 };
123 sgmii11: sgmii11 {
124 qlm-mode = "0x011,sgmii";
125 reg = <9> ;
126 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
127 marvell,reg-init = <3 0x10 0 0x8665>,
128 <3 0x11 0 0x00aa>,
129 <3 0x12 0 0x4105>,
130 <3 0x13 0 0x8a08>;
131 };
132 sgmii12: sgmii12 {
133 qlm-mode = "0x012,sgmii";
134 reg = <10> ;
135 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
136 marvell,reg-init = <3 0x10 0 0x8665>,
137 <3 0x11 0 0x00aa>,
138 <3 0x12 0 0x4105>,
139 <3 0x13 0 0x8a08>;
140 };
141 sgmii13: sgmii13 {
142 qlm-mode = "0x013,sgmii";
143 reg = <11> ;
144 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
145 marvell,reg-init = <3 0x10 0 0x8665>,
146 <3 0x11 0 0x00aa>,
147 <3 0x12 0 0x4105>,
148 <3 0x13 0 0x8a08>;
149 };
150 xfi10: xfi10 {
151 qlm-mode = "0x010,xfi","0x010,xfi-10g-kr";
152 reg = <8> ;
153 compatible = "cortina,cs4223-slice";
154 };
155 xfi11: xfi11 {
156 qlm-mode = "0x011,xfi","0x011,xfi-10g-kr";
157 reg = <9> ;
158 compatible = "cortina,cs4223-slice";
159 };
160 xfi12: xfi12 {
161 qlm-mode = "0x012,xfi","0x012,xfi-10g-kr";
162 reg = <10> ;
163 compatible = "cortina,cs4223-slice";
164 };
165 xfi13: xfi13 {
166 qlm-mode = "0x013,xfi","0x013,xfi-10g-kr";
167 reg = <11> ;
168 compatible = "cortina,cs4223-slice";
169 };
170 xlaui10: xlaui10 {
171 qlm-mode = "0x010,xlaui","0x010,xlaui-40g-kr";
172 reg = <8> ;
173 compatible = "cortina,cs4223-slice";
174 };
175 xaui10: xaui10 {
176 qlm-mode = "0x010,xaui";
177 reg = <8> ;
178 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
179 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
180 };
181 rxaui10: rxaui10 {
182 qlm-mode = "0x010,rxaui";
183 reg = <8> ;
184 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
185 };
186 rxaui11: rxaui11 {
187 qlm-mode = "0x011,rxaui";
188 reg = <10> ;
189 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
190 };
191 qsgmii10: qsgmii10 {
192 qlm-mode = "0x010,qsgmii";
193 reg = <8> ;
194 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
195 };
196 qsgmii11: qsgmii11 {
197 qlm-mode = "0x011,qsgmii";
198 reg = <9> ;
199 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
200 };
201 qsgmii12: qsgmii12 {
202 qlm-mode = "0x012,qsgmii";
203 reg = <10> ;
204 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
205 };
206 qsgmii13: qsgmii13 {
207 qlm-mode = "0x013,qsgmii";
208 reg = <11> ;
209 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
210 };
211 };
212 };
213
214 rgx0 {
215 rgmii00 {
216 reg = <3>;
217 local-mac-address = [00 00 00 00 00 00];
218 phy-handle = <&rgmii00>;
219 };
220 };
221
222 bgx0 {
223 /* typename+qlm+typenumber eg :
224 sgmii+bgx0+sgmmi0
225 */
226 // SGMII
227 sgmii00 {
228 reg = <0>;
229 qlm-mode = "0x000,sgmii";
230 local-mac-address = [00 00 00 00 00 00];
231 phy-handle = <&sgmii00>;
232 };
233 sgmii01 {
234 reg = <1>;
235 qlm-mode = "0x001,sgmii";
236 local-mac-address = [00 00 00 00 00 00];
237 phy-handle = <&sgmii01>;
238 };
239 xfi00 {
240 reg = <0>;
241 qlm-mode = "0x000,xfi";
242 local-mac-address = [00 00 00 00 00 00];
243 phy-handle = <&xfi00>;
244 };
245 xfi01 {
246 reg = <1>;
247 qlm-mode = "0x001,xfi";
248 local-mac-address = [00 00 00 00 00 00];
249 phy-handle = <&xfi01>;
250 };
251 // 10g-kr
252 xfi-10g-kr00 {
253 reg = <0>;
254 qlm-mode = "0x000,xfi-10g-kr";
255 local-mac-address = [00 00 00 00 00 00];
256 phy-handle = <&xfi00>;
257 };
258 xfi-10g-kr01 {
259 reg = <1>;
260 qlm-mode = "0x001,xfi-10g-kr";
261 local-mac-address = [00 00 00 00 00 00];
262 phy-handle = <&xfi01>;
263 };
264 qsgmii00 {
265 reg = <0>;
266 qlm-mode = "0x000,qsgmii";
267 local-mac-address = [00 00 00 00 00 00];
268 phy-handle = <&qsgmii00>;
269 };
270 qsgmii01 {
271 reg = <1>;
272 qlm-mode = "0x001,qsgmii";
273 local-mac-address = [00 00 00 00 00 00];
274 phy-handle = <&qsgmii01>;
275 };
276 qsgmii02 {
277 reg = <2>;
278 qlm-mode = "0x002,qsgmii";
279 local-mac-address = [00 00 00 00 00 00];
280 phy-handle = <&qsgmii02>;
281 };
282 qsgmii03 {
283 reg = <3>;
284 qlm-mode = "0x003,qsgmii";
285 local-mac-address = [00 00 00 00 00 00];
286 phy-handle = <&qsgmii03>;
287 };
288 };
289 bgx1 {
290 sgmii10 {
291 reg = <0>;
292 qlm-mode = "0x010,sgmii";
293 local-mac-address = [00 00 00 00 00 00];
294 phy-handle = <&sgmii10>; /*"sgmmi"+bgx+no */
295 };
296 sgmii11 {
297 reg = <1>;
298 qlm-mode = "0x011,sgmii";
299 local-mac-address = [00 00 00 00 00 00];
300 phy-handle = <&sgmii11>;
301 };
302 sgmii12 {
303 reg = <2>;
304 qlm-mode = "0x012,sgmii";
305 local-mac-address = [00 00 00 00 00 00];
306 phy-handle = <&sgmii12>;
307 };
308 sgmii13 {
309 reg = <3>;
310 qlm-mode = "0x013,sgmii";
311 local-mac-address = [00 00 00 00 00 00];
312 phy-handle = <&sgmii13>;
313 };
314 xfi10 {
315 reg = <0>;
316 qlm-mode = "0x010,xfi";
317 local-mac-address = [00 00 00 00 00 00];
318 phy-handle = <&xfi10>;
319 };
320 xfi11 {
321 reg = <1>;
322 qlm-mode = "0x011,xfi";
323 local-mac-address = [00 00 00 00 00 00];
324 phy-handle = <&xfi11>;
325 };
326 xfi12 {
327 reg = <2>;
328 qlm-mode = "0x012,xfi";
329 local-mac-address = [00 00 00 00 00 00];
330 phy-handle = <&xfi12>;
331 };
332 xfi13 {
333 reg = <3>;
334 qlm-mode = "0x013,xfi";
335 local-mac-address = [00 00 00 00 00 00];
336 phy-handle = <&xfi13>;
337 };
338 // 10g_kr
339 xfi-10g-kr10 {
340 reg = <0>;
341 qlm-mode = "0x010,xfi-10g-kr";
342 local-mac-address = [00 00 00 00 00 00];
343 phy-handle = <&xfi10>;
344 };
345 xfi-10g-kr11 {
346 reg = <1>;
347 qlm-mode = "0x011,xfi-10g-kr";
348 local-mac-address = [00 00 00 00 00 00];
349 phy-handle = <&xfi11>;
350 };
351 xfi-10g-kr12 {
352 reg = <2>;
353 qlm-mode = "0x012,xfi-10g-kr";
354 local-mac-address = [00 00 00 00 00 00];
355 phy-handle = <&xfi12>;
356 };
357 xfi-10g-kr13 {
358 reg = <3>;
359 qlm-mode = "0x013,xfi-10g-kr";
360 local-mac-address = [00 00 00 00 00 00];
361 phy-handle = <&xfi13>;
362 };
363 xlaui10 {
364 reg = <0>;
365 qlm-mode = "0x010,xlaui";
366 local-mac-address = [00 00 00 00 00 00];
367 phy-handle = <&xlaui10>;
368 };
369 xlaui-40g-kr-10 {
370 reg = <0>;
371 qlm-mode = "0x010,xlaui-40g-kr";
372 local-mac-address = [00 00 00 00 00 00];
373 phy-handle = <&xlaui10>;
374 };
375 xaui10 {
376 reg = <0>;
377 qlm-mode = "0x010,xaui";
378 local-mac-address = [00 00 00 00 00 00];
379 phy-handle = <&xaui10>;
380 };
381 rxaui10 {
382 reg = <8>;
383 qlm-mode = "0x010,rxaui";
384 local-mac-address = [00 00 00 00 00 00];
385 phy-handle = <&rxaui10>;
386 };
387 rxaui11 {
388 reg = <9>;
389 qlm-mode = "0x011,rxaui";
390 local-mac-address = [00 00 00 00 00 00];
391 phy-handle = <&rxaui11>;
392 };
393 qsgmii10 {
394 reg = <0>;
395 qlm-mode = "0x010,qsgmii";
396 local-mac-address = [00 00 00 00 00 00];
397 phy-handle = <&qsgmii10>;
398 };
399 qsgmii11 {
400 reg = <1>;
401 qlm-mode = "0x011,qsgmii";
402 local-mac-address = [00 00 00 00 00 00];
403 phy-handle = <&qsgmii11>;
404 };
405 qsgmii12 {
406 reg = <2>;
407 qlm-mode = "0x012,qsgmii";
408 local-mac-address = [00 00 00 00 00 00];
409 phy-handle = <&qsgmii12>;
410 };
411 qsgmii13 {
412 reg = <3>;
413 qlm-mode = "0x013,qsgmii";
414 local-mac-address = [00 00 00 00 00 00];
415 phy-handle = <&qsgmii13>;
416 };
417 };
418};
419
420&mmc_1_4 {
421 mmc-slot@0 {
422 compatible = "mmc-slot";
423 reg = <0>;
424 vmmc-supply = <&mmc_supply_3v3>;
425 max-frequency = <26000000>;
426 mmc-ddr-3_3v;
427 /* 1.8v is not supported */
428 no-1-8-v;
429 /* Bus width is only 8 bits maximum */
430 bus-width = <8>;
431 /* Write-protect */
432 wp-gpios = <&gpio_6_0 26 0>;
433 /* Card detect */
434 cd-gpios = <&gpio_6_0 27 1>;
435
436 /* SD UHS SDR25 is supported */
437 sd-uhs-sdr25;
438 /* High-speed mode is supported */
439 cap-sd-highspeed;
440 cap-mmc-highspeed;
441 };
442 mmc-slot@1 {
443 compatible = "mmc-slot";
444 reg = <1>;
445 vmmc-supply = <&mmc_supply_3v3>;
446 max-frequency = <26000000>;
447 mmc-ddr-3_3v;
448 /* 1.8v is not supported */
449 no-1-8-v;
450 /* Bus width is only 8 bits maximum */
451 bus-width = <8>;
452 /* Write-protect */
453 wp-gpios = <&gpio_6_0 24 0>;
454 /* Card detect */
455 cd-gpios = <&gpio_6_0 25 1>;
456 /* SD UHS SDR25 is supported */
457 sd-uhs-sdr25;
458 /* High-speed mode is supported */
459 cap-sd-highspeed;
460 cap-mmc-highspeed;
461 };
462};
463
464&i2c_9_0 {
465 rtc@68 {
466 compatible = "dallas,ds1337";
467 reg = <0x68>;
468 };
469 gpio1: cpld@6c {
470 compatible = "gpio-i2c", "cavium,cpld8104";
471 reg = <0x6c>;
472 gpio_base = <48>;
473 #gpio-cells = <160>; // 8bits for each reg 0..0x13
474 };
475};
476
477&spi_7_0 {
478 flash@0 {
479 compatible = "jedec,spi-nor";
480 reg = <0x0>;
481 spi-max-frequency = <16000000>;
482 #address-cells = <1>;
483 #size-cells = <1>;
484 };
485};
diff --git a/recipes-kernel/linux/linux-cavium/dts/ebb8104-linux.dts b/recipes-kernel/linux/linux-cavium/dts/ebb8104-linux.dts
deleted file mode 100644
index 84922d1..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/ebb8104-linux.dts
+++ /dev/null
@@ -1,620 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn81xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 rgmii00: rgmii00 {
58 reg = <3> ;
59 compatible = "micrel,ksz9031", "ethernet-phy-ieee802.3-c22";
60 };
61 };
62
63 mdio1@87e005003880 {
64 sgmii00: sgmii00 {
65 qlm-mode = "0x000,sgmii";
66 reg = <0> ;
67 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
68 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
69 marvell,reg-init = <3 0x10 0 0x8665>,
70 <3 0x11 0 0x00aa>,
71 <3 0x12 0 0x4105>,
72 <3 0x13 0 0x8a08>;
73 };
74 sgmii01: sgmii01 {
75 qlm-mode = "0x001,sgmii";
76 reg = <1> ;
77 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
78 marvell,reg-init = <3 0x10 0 0x8665>,
79 <3 0x11 0 0x00aa>,
80 <3 0x12 0 0x4105>,
81 <3 0x13 0 0x8a08>;
82 };
83 sgmii02: sgmii02 {
84 qlm-mode = "0x002,sgmii";
85 reg = <2> ;
86 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
87 marvell,reg-init = <3 0x10 0 0x8665>,
88 <3 0x11 0 0x00aa>,
89 <3 0x12 0 0x4105>,
90 <3 0x13 0 0x8a08>;
91 };
92 sgmii03: sgmii03 {
93 qlm-mode = "0x003,sgmii";
94 reg = <3> ;
95 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
96 marvell,reg-init = <3 0x10 0 0x8665>,
97 <3 0x11 0 0x00aa>,
98 <3 0x12 0 0x4105>,
99 <3 0x13 0 0x8a08>;
100 };
101 xfi00: xfi00 {
102 qlm-mode = "0x000,xfi","0x000,xfi-10g-kr";
103 reg = <0> ;
104 compatible = "cortina,cs4223-slice";
105 };
106 xfi01: xfi01 {
107 qlm-mode = "0x001,xfi","0x001,xfi-10g-kr";
108 reg = <1> ;
109 compatible = "cortina,cs4223-slice";
110 };
111 xfi02: xfi02 {
112 qlm-mode = "0x002,xfi","0x002,xfi-10g-kr";
113 reg = <2> ;
114 compatible = "cortina,cs4223-slice";
115 };
116 xfi03: xfi03 {
117 qlm-mode = "0x003,xfi","0x003,xfi-10g-kr";
118 reg = <3> ;
119 compatible = "cortina,cs4223-slice";
120 };
121 xlaui00: xlaui00 {
122 qlm-mode = "0x000,xlaui","0x000,xlaui-40g-kr";
123 reg = <0> ;
124 compatible = "cortina,cs4223-slice";
125 };
126 xaui00: xaui00 {
127 qlm-mode = "0x000,xaui";
128 reg = <0> ;
129 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
130 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
131 };
132 rxaui00: rxaui00 {
133 qlm-mode = "0x000,rxaui";
134 reg = <0> ;
135 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
136 };
137 rxaui01: rxaui01 {
138 qlm-mode = "0x001,rxaui";
139 reg = <1> ;
140 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
141 };
142 qsgmii00: qsgmii00 {
143 qlm-mode = "0x000,qsgmii";
144 reg = <0> ;
145 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
146 };
147 qsgmii01: qsgmii01 {
148 qlm-mode = "0x001,qsgmii";
149 reg = <1> ;
150 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
151 };
152 qsgmii02: qsgmii02 {
153 qlm-mode = "0x002,qsgmii";
154 reg = <2> ;
155 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
156 };
157 qsgmii03: qsgmii03 {
158 qlm-mode = "0x003,qsgmii";
159 reg = <3> ;
160 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
161 };
162
163 sgmii10: sgmii10 {
164 qlm-mode = "0x010,sgmii";
165 reg = <8> ;
166 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
167 marvell,reg-init = <3 0x10 0 0x8665>,
168 <3 0x11 0 0x00aa>,
169 <3 0x12 0 0x4105>,
170 <3 0x13 0 0x8a08>;
171 };
172 sgmii11: sgmii11 {
173 qlm-mode = "0x011,sgmii";
174 reg = <9> ;
175 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
176 marvell,reg-init = <3 0x10 0 0x8665>,
177 <3 0x11 0 0x00aa>,
178 <3 0x12 0 0x4105>,
179 <3 0x13 0 0x8a08>;
180 };
181 sgmii12: sgmii12 {
182 qlm-mode = "0x012,sgmii";
183 reg = <10> ;
184 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
185 marvell,reg-init = <3 0x10 0 0x8665>,
186 <3 0x11 0 0x00aa>,
187 <3 0x12 0 0x4105>,
188 <3 0x13 0 0x8a08>;
189 };
190 sgmii13: sgmii13 {
191 qlm-mode = "0x013,sgmii";
192 reg = <11> ;
193 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
194 marvell,reg-init = <3 0x10 0 0x8665>,
195 <3 0x11 0 0x00aa>,
196 <3 0x12 0 0x4105>,
197 <3 0x13 0 0x8a08>;
198 };
199 xfi10: xfi10 {
200 qlm-mode = "0x010,xfi","0x010,xfi-10g-kr";
201 reg = <8> ;
202 compatible = "cortina,cs4223-slice";
203 };
204 xfi11: xfi11 {
205 qlm-mode = "0x011,xfi","0x011,xfi-10g-kr";
206 reg = <9> ;
207 compatible = "cortina,cs4223-slice";
208 };
209 xfi12: xfi12 {
210 qlm-mode = "0x012,xfi","0x012,xfi-10g-kr";
211 reg = <10> ;
212 compatible = "cortina,cs4223-slice";
213 };
214 xfi13: xfi13 {
215 qlm-mode = "0x013,xfi","0x013,xfi-10g-kr";
216 reg = <11> ;
217 compatible = "cortina,cs4223-slice";
218 };
219 xlaui10: xlaui10 {
220 qlm-mode = "0x010,xlaui","0x010,xlaui-40g-kr";
221 reg = <8> ;
222 compatible = "cortina,cs4223-slice";
223 };
224 xaui10: xaui10 {
225 qlm-mode = "0x010,xaui";
226 reg = <8> ;
227 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
228 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
229 };
230 rxaui10: rxaui10 {
231 qlm-mode = "0x010,rxaui";
232 reg = <8> ;
233 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
234 };
235 rxaui11: rxaui11 {
236 qlm-mode = "0x011,rxaui";
237 reg = <9> ;
238 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
239 };
240 qsgmii10: qsgmii10 {
241 qlm-mode = "0x010,qsgmii";
242 reg = <8> ;
243 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
244 };
245 qsgmii11: qsgmii11 {
246 qlm-mode = "0x011,qsgmii";
247 reg = <9> ;
248 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
249 };
250 qsgmii12: qsgmii12 {
251 qlm-mode = "0x012,qsgmii";
252 reg = <10> ;
253 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
254 };
255 qsgmii13: qsgmii13 {
256 qlm-mode = "0x013,qsgmii";
257 reg = <11> ;
258 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
259 };
260 };
261 };
262
263 rgx0 {
264 rgmii00 {
265 reg = <3>;
266 local-mac-address = [00 00 00 00 00 00];
267 phy-handle = <&rgmii00>;
268 };
269 };
270
271 bgx0 {
272 /* typename+qlm+typenumber eg :
273 sgmii+bgx0+sgmmi0
274 */
275 // SGMII
276 sgmii00 {
277 reg = <0>;
278 qlm-mode = "0x000,sgmii";
279 local-mac-address = [00 00 00 00 00 00];
280 phy-handle = <&sgmii00>;
281 };
282 sgmii01 {
283 reg = <1>;
284 qlm-mode = "0x001,sgmii";
285 local-mac-address = [00 00 00 00 00 00];
286 phy-handle = <&sgmii01>;
287 };
288 sgmii02 {
289 reg = <2>;
290 qlm-mode = "0x002,sgmii";
291 local-mac-address = [00 00 00 00 00 00];
292 phy-handle = <&sgmii02>;
293 };
294 sgmii03 {
295 reg = <3>;
296 qlm-mode = "0x003,sgmii";
297 local-mac-address = [00 00 00 00 00 00];
298 phy-handle = <&sgmii03>;
299 };
300 xfi00 {
301 reg = <0>;
302 qlm-mode = "0x000,xfi";
303 local-mac-address = [00 00 00 00 00 00];
304 phy-handle = <&xfi00>;
305 };
306 xfi01 {
307 reg = <1>;
308 qlm-mode = "0x001,xfi";
309 local-mac-address = [00 00 00 00 00 00];
310 phy-handle = <&xfi01>;
311 };
312 xfi02 {
313 reg = <2>;
314 qlm-mode = "0x002,xfi";
315 local-mac-address = [00 00 00 00 00 00];
316 phy-handle = <&xfi02>;
317 };
318 xfi03 {
319 reg = <3>;
320 qlm-mode = "0x003,xfi";
321 local-mac-address = [00 00 00 00 00 00];
322 phy-handle = <&xfi03>;
323 };
324 // 10g-kr
325 xfi-10g-kr00 {
326 reg = <0>;
327 qlm-mode = "0x000,xfi-10g-kr";
328 local-mac-address = [00 00 00 00 00 00];
329 phy-handle = <&xfi00>;
330 };
331 xfi-10g-kr01 {
332 reg = <1>;
333 qlm-mode = "0x001,xfi-10g-kr";
334 local-mac-address = [00 00 00 00 00 00];
335 phy-handle = <&xfi01>;
336 };
337 xfi-10g-kr02 {
338 reg = <2>;
339 qlm-mode = "0x002,xfi-10g-kr";
340 local-mac-address = [00 00 00 00 00 00];
341 phy-handle = <&xfi02>;
342 };
343 xfi-10g-kr03 {
344 reg = <3>;
345 qlm-mode = "0x003,xfi-10g-kr";
346 local-mac-address = [00 00 00 00 00 00];
347 phy-handle = <&xfi03>;
348 };
349 xlaui00 {
350 reg = <0>;
351 qlm-mode = "0x000,xlaui";
352 local-mac-address = [00 00 00 00 00 00];
353 phy-handle = <&xlaui00>;
354 };
355 xlaui-40g-kr00 {
356 reg = <0>;
357 qlm-mode = "0x000,xlaui-40g-kr";
358 local-mac-address = [00 00 00 00 00 00];
359 phy-handle = <&xlaui00>;
360 };
361 xaui00 {
362 reg = <0>;
363 qlm-mode = "0x000,xaui";
364 local-mac-address = [00 00 00 00 00 00];
365 phy-handle = <&xaui00>;
366 };
367 rxaui00 {
368 reg = <0>;
369 qlm-mode = "0x000,rxaui";
370 local-mac-address = [00 00 00 00 00 00];
371 phy-handle = <&rxaui00>;
372 };
373 rxaui01 {
374 reg = <1>;
375 qlm-mode = "0x001,rxaui";
376 local-mac-address = [00 00 00 00 00 00];
377 phy-handle = <&rxaui01>;
378 };
379 qsgmii00 {
380 reg = <0>;
381 qlm-mode = "0x000,qsgmii";
382 local-mac-address = [00 00 00 00 00 00];
383 phy-handle = <&qsgmii00>;
384 };
385 qsgmii01 {
386 reg = <1>;
387 qlm-mode = "0x001,qsgmii";
388 local-mac-address = [00 00 00 00 00 00];
389 phy-handle = <&qsgmii01>;
390 };
391 qsgmii02 {
392 reg = <2>;
393 qlm-mode = "0x002,qsgmii";
394 local-mac-address = [00 00 00 00 00 00];
395 phy-handle = <&qsgmii02>;
396 };
397 qsgmii03 {
398 reg = <3>;
399 qlm-mode = "0x003,qsgmii";
400 local-mac-address = [00 00 00 00 00 00];
401 phy-handle = <&qsgmii03>;
402 };
403 };
404 bgx1 {
405 sgmii10 {
406 reg = <0>;
407 qlm-mode = "0x010,sgmii";
408 local-mac-address = [00 00 00 00 00 00];
409 phy-handle = <&sgmii10>; /*"sgmmi"+bgx+no */
410 };
411 sgmii11 {
412 reg = <1>;
413 qlm-mode = "0x011,sgmii";
414 local-mac-address = [00 00 00 00 00 00];
415 phy-handle = <&sgmii11>;
416 };
417 sgmii12 {
418 reg = <2>;
419 qlm-mode = "0x012,sgmii";
420 local-mac-address = [00 00 00 00 00 00];
421 phy-handle = <&sgmii12>;
422 };
423 sgmii13 {
424 reg = <3>;
425 qlm-mode = "0x013,sgmii";
426 local-mac-address = [00 00 00 00 00 00];
427 phy-handle = <&sgmii13>;
428 };
429 xfi10 {
430 reg = <0>;
431 qlm-mode = "0x010,xfi";
432 local-mac-address = [00 00 00 00 00 00];
433 phy-handle = <&xfi10>;
434 };
435 xfi11 {
436 reg = <1>;
437 qlm-mode = "0x011,xfi";
438 local-mac-address = [00 00 00 00 00 00];
439 phy-handle = <&xfi11>;
440 };
441 xfi12 {
442 reg = <2>;
443 qlm-mode = "0x012,xfi";
444 local-mac-address = [00 00 00 00 00 00];
445 phy-handle = <&xfi12>;
446 };
447 xfi13 {
448 reg = <3>;
449 qlm-mode = "0x013,xfi";
450 local-mac-address = [00 00 00 00 00 00];
451 phy-handle = <&xfi13>;
452 };
453 // 10g_kr
454 xfi-10g-kr10 {
455 reg = <0>;
456 qlm-mode = "0x010,xfi-10g-kr";
457 local-mac-address = [00 00 00 00 00 00];
458 phy-handle = <&xfi10>;
459 };
460 xfi-10g-kr11 {
461 reg = <1>;
462 qlm-mode = "0x011,xfi-10g-kr";
463 local-mac-address = [00 00 00 00 00 00];
464 phy-handle = <&xfi11>;
465 };
466 xfi-10g-kr12 {
467 reg = <2>;
468 qlm-mode = "0x012,xfi-10g-kr";
469 local-mac-address = [00 00 00 00 00 00];
470 phy-handle = <&xfi12>;
471 };
472 xfi-10g-kr13 {
473 reg = <3>;
474 qlm-mode = "0x013,xfi-10g-kr";
475 local-mac-address = [00 00 00 00 00 00];
476 phy-handle = <&xfi13>;
477 };
478 xlaui10 {
479 reg = <0>;
480 qlm-mode = "0x010,xlaui";
481 local-mac-address = [00 00 00 00 00 00];
482 phy-handle = <&xlaui10>;
483 };
484 xlaui-40g-kr-10 {
485 reg = <0>;
486 qlm-mode = "0x010,xlaui-40g-kr";
487 local-mac-address = [00 00 00 00 00 00];
488 phy-handle = <&xlaui10>;
489 };
490 xaui10 {
491 reg = <0>;
492 qlm-mode = "0x010,xaui";
493 local-mac-address = [00 00 00 00 00 00];
494 phy-handle = <&xaui10>;
495 };
496 rxaui10 {
497 reg = <8>;
498 qlm-mode = "0x010,rxaui";
499 local-mac-address = [00 00 00 00 00 00];
500 phy-handle = <&rxaui10>;
501 };
502 rxaui11 {
503 reg = <9>;
504 qlm-mode = "0x011,rxaui";
505 local-mac-address = [00 00 00 00 00 00];
506 phy-handle = <&rxaui11>;
507 };
508 qsgmii10 {
509 reg = <0>;
510 qlm-mode = "0x010,qsgmii";
511 local-mac-address = [00 00 00 00 00 00];
512 phy-handle = <&qsgmii10>;
513 };
514 qsgmii11 {
515 reg = <1>;
516 qlm-mode = "0x011,qsgmii";
517 local-mac-address = [00 00 00 00 00 00];
518 phy-handle = <&qsgmii11>;
519 };
520 qsgmii12 {
521 reg = <2>;
522 qlm-mode = "0x012,qsgmii";
523 local-mac-address = [00 00 00 00 00 00];
524 phy-handle = <&qsgmii12>;
525 };
526 qsgmii13 {
527 reg = <3>;
528 qlm-mode = "0x013,qsgmii";
529 local-mac-address = [00 00 00 00 00 00];
530 phy-handle = <&qsgmii13>;
531 };
532 };
533};
534
535&mmc_1_4 {
536 mmc-slot@0 {
537 compatible = "mmc-slot";
538 reg = <0>;
539 vmmc-supply = <&mmc_supply_3v3>;
540 max-frequency = <26000000>;
541 mmc-ddr-3_3v;
542 /* 1.8v is not supported */
543 no-1-8-v;
544 /* Bus width is only 8 bits maximum */
545 bus-width = <8>;
546 /* Write-protect */
547 wp-gpios = <&gpio_6_0 26 0>;
548 /* Card detect */
549 cd-gpios = <&gpio_6_0 27 1>;
550
551 /* SD UHS SDR25 is supported */
552 sd-uhs-sdr25;
553 /* High-speed mode is supported */
554 cap-sd-highspeed;
555 cap-mmc-highspeed;
556 };
557 mmc-slot@1 {
558 compatible = "mmc-slot";
559 reg = <1>;
560 vmmc-supply = <&mmc_supply_3v3>;
561 max-frequency = <26000000>;
562 mmc-ddr-3_3v;
563 /* 1.8v is not supported */
564 no-1-8-v;
565 /* Bus width is only 8 bits maximum */
566 bus-width = <8>;
567 /* Write-protect */
568 wp-gpios = <&gpio_6_0 24 0>;
569 /* Card detect */
570 cd-gpios = <&gpio_6_0 25 1>;
571 /* SD UHS SDR25 is supported */
572 sd-uhs-sdr25;
573 /* High-speed mode is supported */
574 cap-sd-highspeed;
575 cap-mmc-highspeed;
576 };
577};
578
579&i2c_9_0 {
580 rtc@68 {
581 compatible = "dallas,ds1337";
582 reg = <0x68>;
583 rtcmodel = <1>;
584 };
585 gpio1: cpld@6c {
586 compatible = "gpio-i2c", "cavium,cpld8104";
587 gpio-controller;
588 reg = <0x6c>;
589 ngpios = <160>; // 8bits for each reg 0..0x13
590 #gpio-cells = <2>;
591 };
592};
593
594&spi_7_0 {
595 flash@0 {
596 compatible = "jedec,spi-nor", "spi-flash";
597 reg = <0x0>;
598 spi-max-frequency = <16000000>;
599 #address-cells = <1>;
600 #size-cells = <1>;
601 };
602 slic0@2 {
603 compatible = "silabs,si32260", "linux,spidev";
604 reg = <2>;
605 spi-max-frequency = <2500000>;
606 reset-gpios = <&gpio1 74 1>;
607 irq-gpios = <&gpio_6_0 3>;
608 tx = <&tdm 0>;
609 rx = <&tdm 1>;
610 };
611 slic1@3 {
612 compatible = "silabs,si32260", "linux,spidev";
613 reg = <3>;
614 spi-max-frequency = <2500000>;
615 reset-gpios = <&gpio1 75 1>;
616 irq-gpios = <&gpio_6_0 5>;
617 tx = <&tdm 2>;
618 rx = <&tdm 3>;
619 };
620};
diff --git a/recipes-kernel/linux/linux-cavium/dts/ebb8304-linux.dts b/recipes-kernel/linux/linux-cavium/dts/ebb8304-linux.dts
deleted file mode 100644
index 3570620..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/ebb8304-linux.dts
+++ /dev/null
@@ -1,989 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn83xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 sgmii20: sgmii20 {
58 qlm-mode = "0x020,sgmii";
59 reg = <0x14>;
60 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
61 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
62 marvell,reg-init = <3 0x10 0 0x8665>,
63 <3 0x11 0 0x00aa>,
64 <3 0x12 0 0x4105>,
65 <3 0x13 0 0x8a08>;
66 };
67 sgmii21: sgmii21 {
68 qlm-mode = "0x021,sgmii";
69 reg = <0x15>;
70 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
71 marvell,reg-init = <3 0x10 0 0x8665>,
72 <3 0x11 0 0x00aa>,
73 <3 0x12 0 0x4105>,
74 <3 0x13 0 0x8a08>;
75 };
76 sgmii22: sgmii22 {
77 qlm-mode = "0x022,sgmii";
78 reg = <0x16>;
79 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
80 marvell,reg-init = <3 0x10 0 0x8665>,
81 <3 0x11 0 0x00aa>,
82 <3 0x12 0 0x4105>,
83 <3 0x13 0 0x8a08>;
84 };
85 sgmii23: sgmii23 {
86 qlm-mode = "0x023,sgmii";
87 reg = <0x17>;
88 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
89 marvell,reg-init = <3 0x10 0 0x8665>,
90 <3 0x11 0 0x00aa>,
91 <3 0x12 0 0x4105>,
92 <3 0x13 0 0x8a08>;
93 };
94 xfi20: xfi20 {
95 qlm-mode = "0x020,xfi","0x020,xfi-10g-kr";
96 reg = <0x14> ;
97 compatible = "cortina,cs4223-slice";
98 };
99 xfi21: xfi21 {
100 qlm-mode = "0x021,xfi","0x021,xfi-10g-kr";
101 reg = <0x15> ;
102 compatible = "cortina,cs4223-slice";
103 };
104 xfi22: xfi22 {
105 qlm-mode = "0x022,xfi","0x022,xfi-10g-kr";
106 reg = <0x16> ;
107 compatible = "cortina,cs4223-slice";
108 };
109 xfi23: xfi23 {
110 qlm-mode = "0x023,xfi","0x023,xfi-10g-kr";
111 reg = <0x17> ;
112 compatible = "cortina,cs4223-slice";
113 };
114 xlaui20: xlaui20 {
115 qlm-mode = "0x020,xlaui","0x020,xlaui-40g-kr";
116 reg = <0x14> ;
117 compatible = "cortina,cs4223-slice";
118 };
119 xaui20: xaui20 {
120 qlm-mode = "0x020,xaui";
121 reg = <0x14> ;
122 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
123 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
124 };
125 rxaui20: rxaui20 {
126 qlm-mode = "0x020,rxaui";
127 reg = <0x14> ;
128 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
129 };
130 rxaui21: rxaui21 {
131 qlm-mode = "0x021,rxaui";
132 reg = <0x15> ;
133 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
134 };
135 qsgmii20: qsgmii20 {
136 qlm-mode = "0x020,qsgmii";
137 reg = <0x14> ;
138 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
139 };
140 qsgmii21: qsgmii21 {
141 qlm-mode = "0x021,qsgmii";
142 reg = <0x15> ;
143 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
144 };
145 qsgmii22: qsgmii22 {
146 qlm-mode = "0x022,qsgmii";
147 reg = <0x16> ;
148 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
149 };
150 qsgmii23: qsgmii23 {
151 qlm-mode = "0x023,qsgmii";
152 reg = <0x17> ;
153 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
154 };
155 sgmii30: sgmii30 {
156 qlm-mode = "0x030,sgmii";
157 reg = <0x10>;
158 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
159 marvell,reg-init = <3 0x10 0 0x8665>,
160 <3 0x11 0 0x00aa>,
161 <3 0x12 0 0x4105>,
162 <3 0x13 0 0x8a08>;
163 };
164 sgmii31: sgmii31 {
165 qlm-mode = "0x031,sgmii";
166 reg = <0x11>;
167 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
168 marvell,reg-init = <3 0x10 0 0x8665>,
169 <3 0x11 0 0x00aa>,
170 <3 0x12 0 0x4105>,
171 <3 0x13 0 0x8a08>;
172 };
173 sgmii32: sgmii32 {
174 qlm-mode = "0x032,sgmii";
175 reg = <0x12>;
176 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
177 marvell,reg-init = <3 0x10 0 0x8665>,
178 <3 0x11 0 0x00aa>,
179 <3 0x12 0 0x4105>,
180 <3 0x13 0 0x8a08>;
181 };
182 sgmii33: sgmii33 {
183 qlm-mode = "0x033,sgmii";
184 reg = <0x13>;
185 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
186 marvell,reg-init = <3 0x10 0 0x8665>,
187 <3 0x11 0 0x00aa>,
188 <3 0x12 0 0x4105>,
189 <3 0x13 0 0x8a08>;
190 };
191 xfi30: xfi30 {
192 qlm-mode = "0x030,xfi","0x030,xfi-10g-kr";
193 reg = <0x10> ;
194 compatible = "cortina,cs4223-slice";
195 };
196 xfi31: xfi31 {
197 qlm-mode = "0x031,xfi","0x031,xfi-10g-kr";
198 reg = <0x11> ;
199 compatible = "cortina,cs4223-slice";
200 };
201 xfi32: xfi32 {
202 qlm-mode = "0x032,xfi","0x032,xfi-10g-kr";
203 reg = <0x12> ;
204 compatible = "cortina,cs4223-slice";
205 };
206 xfi33: xfi33 {
207 qlm-mode = "0x033,xfi","0x033,xfi-10g-kr";
208 reg = <0x13> ;
209 compatible = "cortina,cs4223-slice";
210 };
211 xlaui30: xlaui30 {
212 qlm-mode = "0x030,xlaui","0x030,xlaui-40g-kr";
213 reg = <0x10> ;
214 compatible = "cortina,cs4223-slice";
215 };
216 xaui30: xaui30 {
217 qlm-mode = "0x030,xaui";
218 reg = <0x10> ;
219 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
220 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
221 };
222 rxaui30: rxaui30 {
223 qlm-mode = "0x030,rxaui";
224 reg = <0x10> ;
225 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
226 };
227 rxaui31: rxaui31 {
228 qlm-mode = "0x031,rxaui";
229 reg = <0x11> ;
230 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
231 };
232 qsgmii30: qsgmii30 {
233 qlm-mode = "0x030,qsgmii";
234 reg = <0x10> ;
235 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
236 };
237 qsgmii31: qsgmii31 {
238 qlm-mode = "0x031,qsgmii";
239 reg = <0x11> ;
240 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
241 };
242 qsgmii32: qsgmii32 {
243 qlm-mode = "0x032,qsgmii";
244 reg = <0x12> ;
245 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
246 };
247 qsgmii33: qsgmii33 {
248 qlm-mode = "0x033,qsgmii";
249 reg = <0x13> ;
250 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
251 };
252 };
253
254 mdio1@87e005003880 {
255 compatible = "cavium,thunder-8890-mdio";
256 #address-cells = <1>;
257 #size-cells = <0>;
258 reg = <0x87e0 0x05003880 0x0 0x30>;
259
260 sgmii00: sgmii00 {
261 qlm-mode = "0x000,sgmii";
262 reg = <0x8> ;
263 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
264 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
265 marvell,reg-init = <3 0x10 0 0x8665>,
266 <3 0x11 0 0x00aa>,
267 <3 0x12 0 0x4105>,
268 <3 0x13 0 0x8a08>;
269 };
270 sgmii01: sgmii01 {
271 qlm-mode = "0x001,sgmii";
272 reg = <0x9> ;
273 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
274 marvell,reg-init = <3 0x10 0 0x8665>,
275 <3 0x11 0 0x00aa>,
276 <3 0x12 0 0x4105>,
277 <3 0x13 0 0x8a08>;
278 };
279 sgmii02: sgmii02 {
280 qlm-mode = "0x002,sgmii";
281 reg = <0xa> ;
282 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
283 marvell,reg-init = <3 0x10 0 0x8665>,
284 <3 0x11 0 0x00aa>,
285 <3 0x12 0 0x4105>,
286 <3 0x13 0 0x8a08>;
287 };
288 sgmii03: sgmii03 {
289 qlm-mode = "0x003,sgmii";
290 reg = <0xb> ;
291 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
292 marvell,reg-init = <3 0x10 0 0x8665>,
293 <3 0x11 0 0x00aa>,
294 <3 0x12 0 0x4105>,
295 <3 0x13 0 0x8a08>;
296 };
297 xfi00: xfi00 {
298 qlm-mode = "0x000,xfi","0x000,xfi-10g-kr";
299 reg = <0x8> ;
300 compatible = "cortina,cs4223-slice";
301 };
302 xfi01: xfi01 {
303 qlm-mode = "0x001,xfi","0x001,xfi-10g-kr";
304 reg = <0x9> ;
305 compatible = "cortina,cs4223-slice";
306 };
307 xfi02: xfi02 {
308 qlm-mode = "0x002,xfi","0x002,xfi-10g-kr";
309 reg = <0xa> ;
310 compatible = "cortina,cs4223-slice";
311 };
312 xfi03: xfi03 {
313 qlm-mode = "0x003,xfi","0x003,xfi-10g-kr";
314 reg = <0xb> ;
315 compatible = "cortina,cs4223-slice";
316 };
317 xlaui00: xlaui00 {
318 qlm-mode = "0x000,xlaui","0x000,xlaui-40g-kr";
319 reg = <0x8> ;
320 compatible = "cortina,cs4223-slice";
321 };
322 xaui00: xaui00 {
323 qlm-mode = "0x000,xaui";
324 reg = <0x8> ;
325 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
326 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
327 };
328 rxaui00: rxaui00 {
329 qlm-mode = "0x000,rxaui";
330 reg = <0x8> ;
331 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
332 };
333 rxaui01: rxaui01 {
334 qlm-mode = "0x001,rxaui";
335 reg = <0x9> ;
336 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
337 };
338 qsgmii00: qsgmii00 {
339 qlm-mode = "0x000,qsgmii";
340 reg = <0x8> ;
341 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
342 };
343 qsgmii01: qsgmii01 {
344 qlm-mode = "0x001,qsgmii";
345 reg = <0x9> ;
346 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
347 };
348 qsgmii02: qsgmii02 {
349 qlm-mode = "0x002,qsgmii";
350 reg = <0xa> ;
351 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
352 };
353 qsgmii03: qsgmii03 {
354 qlm-mode = "0x003,qsgmii";
355 reg = <0xb> ;
356 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
357 };
358 sgmii10: sgmii10 {
359 qlm-mode = "0x010,sgmii";
360 reg = <0xc>;
361 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
362 marvell,reg-init = <3 0x10 0 0x8665>,
363 <3 0x11 0 0x00aa>,
364 <3 0x12 0 0x4105>,
365 <3 0x13 0 0x8a08>;
366 };
367 sgmii11: sgmii11 {
368 qlm-mode = "0x011,sgmii";
369 reg = <0xd>;
370 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
371 marvell,reg-init = <3 0x10 0 0x8665>,
372 <3 0x11 0 0x00aa>,
373 <3 0x12 0 0x4105>,
374 <3 0x13 0 0x8a08>;
375 };
376 sgmii12: sgmii12 {
377 qlm-mode = "0x012,sgmii";
378 reg = <0xe>;
379 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
380 marvell,reg-init = <3 0x10 0 0x8665>,
381 <3 0x11 0 0x00aa>,
382 <3 0x12 0 0x4105>,
383 <3 0x13 0 0x8a08>;
384 };
385 sgmii13: sgmii13 {
386 qlm-mode = "0x013,sgmii";
387 reg = <0xf>;
388 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
389 marvell,reg-init = <3 0x10 0 0x8665>,
390 <3 0x11 0 0x00aa>,
391 <3 0x12 0 0x4105>,
392 <3 0x13 0 0x8a08>;
393 };
394 xfi10: xfi10 {
395 qlm-mode = "0x010,xfi","0x010,xfi-10g-kr";
396 reg = <0xc> ;
397 compatible = "cortina,cs4223-slice";
398 };
399 xfi11: xfi11 {
400 qlm-mode = "0x011,xfi","0x011,xfi-10g-kr";
401 reg = <0xd> ;
402 compatible = "cortina,cs4223-slice";
403 };
404 xfi12: xfi12 {
405 qlm-mode = "0x012,xfi","0x012,xfi-10g-kr";
406 reg = <0xe> ;
407 compatible = "cortina,cs4223-slice";
408 };
409 xfi13: xfi13 {
410 qlm-mode = "0x013,xfi","0x013,xfi-10g-kr";
411 reg = <0xf> ;
412 compatible = "cortina,cs4223-slice";
413 };
414 xlaui10: xlaui10 {
415 qlm-mode = "0x010,xlaui","0x010,xlaui-40g-kr";
416 reg = <0xc> ;
417 compatible = "cortina,cs4223-slice";
418 };
419 xaui10: xaui10 {
420 qlm-mode = "0x010,xaui";
421 reg = <0xc> ;
422 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
423 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
424 };
425 rxaui10: rxaui10 {
426 qlm-mode = "0x010,rxaui";
427 reg = <0xc> ;
428 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
429 };
430 rxaui11: rxaui11 {
431 qlm-mode = "0x011,rxaui";
432 reg = <0xd> ;
433 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
434 };
435 qsgmii10: qsgmii10 {
436 qlm-mode = "0x010,qsgmii";
437 reg = <0xc> ;
438 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
439 };
440 qsgmii11: qsgmii11 {
441 qlm-mode = "0x011,qsgmii";
442 reg = <0xd> ;
443 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
444 };
445 qsgmii12: qsgmii12 {
446 qlm-mode = "0x012,qsgmii";
447 reg = <0xe> ;
448 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
449 };
450 qsgmii13: qsgmii13 {
451 qlm-mode = "0x013,qsgmii";
452 reg = <0xf> ;
453 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
454 };
455 };
456 };
457
458 bgx0 {
459 /* typename+qlm+typenumber eg :
460 sgmii+bgx0+sgmmi0
461 */
462 sgmii00 {
463 reg = <0>;
464 qlm-mode = "0x000,sgmii";
465 local-mac-address = [00 00 00 00 00 00];
466 phy-handle = <&sgmii00>;
467 };
468 sgmii01 {
469 reg = <1>;
470 qlm-mode = "0x001,sgmii";
471 local-mac-address = [00 00 00 00 00 00];
472 phy-handle = <&sgmii01>;
473 };
474 sgmii02 {
475 reg = <2>;
476 qlm-mode = "0x002,sgmii";
477 local-mac-address = [00 00 00 00 00 00];
478 phy-handle = <&sgmii02>;
479 };
480 sgmii03 {
481 reg = <3>;
482 qlm-mode = "0x003,sgmii";
483 local-mac-address = [00 00 00 00 00 00];
484 phy-handle = <&sgmii03>;
485 };
486 xfi00 {
487 reg = <0>;
488 qlm-mode = "0x000,xfi";
489 local-mac-address = [00 00 00 00 00 00];
490 phy-handle = <&xfi00>;
491 };
492 xfi01 {
493 reg = <1>;
494 qlm-mode = "0x001,xfi";
495 local-mac-address = [00 00 00 00 00 00];
496 phy-handle = <&xfi01>;
497 };
498 xfi02 {
499 reg = <2>;
500 qlm-mode = "0x002,xfi";
501 local-mac-address = [00 00 00 00 00 00];
502 phy-handle = <&xfi02>;
503 };
504 xfi03 {
505 reg = <3>;
506 qlm-mode = "0x003,xfi";
507 local-mac-address = [00 00 00 00 00 00];
508 phy-handle = <&xfi03>;
509 };
510 xfi-10g-kr00 {
511 reg = <0>;
512 qlm-mode = "0x000,xfi-10g-kr";
513 local-mac-address = [00 00 00 00 00 00];
514 phy-handle = <&xfi00>;
515 };
516 xfi-10g-kr01 {
517 reg = <1>;
518 qlm-mode = "0x001,xfi-10g-kr";
519 local-mac-address = [00 00 00 00 00 00];
520 phy-handle = <&xfi01>;
521 };
522 xfi-10g-kr02 {
523 reg = <2>;
524 qlm-mode = "0x002,xfi-10g-kr";
525 local-mac-address = [00 00 00 00 00 00];
526 phy-handle = <&xfi02>;
527 };
528 xfi-10g-kr03 {
529 reg = <3>;
530 qlm-mode = "0x003,xfi-10g-kr";
531 local-mac-address = [00 00 00 00 00 00];
532 phy-handle = <&xfi03>;
533 };
534 xlaui00 {
535 reg = <0>;
536 qlm-mode = "0x000,xlaui";
537 local-mac-address = [00 00 00 00 00 00];
538 phy-handle = <&xlaui00>;
539 };
540 xlaui-40g-kr00 {
541 reg = <0>;
542 qlm-mode = "0x000,xlaui-40g-kr";
543 local-mac-address = [00 00 00 00 00 00];
544 phy-handle = <&xlaui00>;
545 };
546 xaui00 {
547 reg = <0>;
548 qlm-mode = "0x000,xaui";
549 local-mac-address = [00 00 00 00 00 00];
550 phy-handle = <&xaui00>;
551 };
552 rxaui00 {
553 reg = <0>;
554 qlm-mode = "0x000,rxaui";
555 local-mac-address = [00 00 00 00 00 00];
556 phy-handle = <&rxaui00>;
557 };
558 rxaui01 {
559 reg = <1>;
560 qlm-mode = "0x001,rxaui";
561 local-mac-address = [00 00 00 00 00 00];
562 phy-handle = <&rxaui01>;
563 };
564 qsgmii00 {
565 reg = <0>;
566 qlm-mode = "0x000,qsgmii";
567 local-mac-address = [00 00 00 00 00 00];
568 phy-handle = <&qsgmii00>;
569 };
570 qsgmii01 {
571 reg = <1>;
572 qlm-mode = "0x001,qsgmii";
573 local-mac-address = [00 00 00 00 00 00];
574 phy-handle = <&qsgmii01>;
575 };
576 qsgmii02 {
577 reg = <2>;
578 qlm-mode = "0x002,qsgmii";
579 local-mac-address = [00 00 00 00 00 00];
580 phy-handle = <&qsgmii02>;
581 };
582 qsgmii03 {
583 reg = <3>;
584 qlm-mode = "0x003,qsgmii";
585 local-mac-address = [00 00 00 00 00 00];
586 phy-handle = <&qsgmii03>;
587 };
588 };
589 bgx1 {
590 sgmii10 {
591 reg = <0>;
592 qlm-mode = "0x010,sgmii";
593 local-mac-address = [00 00 00 00 00 00];
594 phy-handle = <&sgmii10>; /*"sgmmi"+bgx+no */
595 };
596 sgmii11 {
597 reg = <1>;
598 qlm-mode = "0x011,sgmii";
599 local-mac-address = [00 00 00 00 00 00];
600 phy-handle = <&sgmii11>;
601 };
602 sgmii12 {
603 reg = <2>;
604 qlm-mode = "0x012,sgmii";
605 local-mac-address = [00 00 00 00 00 00];
606 phy-handle = <&sgmii12>;
607 };
608 sgmii13 {
609 reg = <3>;
610 qlm-mode = "0x013,sgmii";
611 local-mac-address = [00 00 00 00 00 00];
612 phy-handle = <&sgmii13>;
613 };
614 xfi10 {
615 reg = <0>;
616 qlm-mode = "0x010,xfi";
617 local-mac-address = [00 00 00 00 00 00];
618 phy-handle = <&xfi10>;
619 };
620 xfi11 {
621 reg = <1>;
622 qlm-mode = "0x011,xfi";
623 local-mac-address = [00 00 00 00 00 00];
624 phy-handle = <&xfi11>;
625 };
626 xfi12 {
627 reg = <2>;
628 qlm-mode = "0x012,xfi";
629 local-mac-address = [00 00 00 00 00 00];
630 phy-handle = <&xfi12>;
631 };
632 xfi13 {
633 reg = <3>;
634 qlm-mode = "0x013,xfi";
635 local-mac-address = [00 00 00 00 00 00];
636 phy-handle = <&xfi13>;
637 };
638 xfi-10g-kr10 {
639 reg = <0>;
640 qlm-mode = "0x010,xfi-10g-kr";
641 local-mac-address = [00 00 00 00 00 00];
642 phy-handle = <&xfi10>;
643 };
644 xfi-10g-kr11 {
645 reg = <1>;
646 qlm-mode = "0x011,xfi-10g-kr";
647 local-mac-address = [00 00 00 00 00 00];
648 phy-handle = <&xfi11>;
649 };
650 xfi-10g-kr12 {
651 reg = <2>;
652 qlm-mode = "0x012,xfi-10g-kr";
653 local-mac-address = [00 00 00 00 00 00];
654 phy-handle = <&xfi12>;
655 };
656 xfi-10g-kr13 {
657 reg = <3>;
658 qlm-mode = "0x013,xfi-10g-kr";
659 local-mac-address = [00 00 00 00 00 00];
660 phy-handle = <&xfi13>;
661 };
662 xlaui10 {
663 reg = <0>;
664 qlm-mode = "0x010,xlaui";
665 local-mac-address = [00 00 00 00 00 00];
666 phy-handle = <&xlaui10>;
667 };
668 xlaui-40g-kr-10 {
669 reg = <0>;
670 qlm-mode = "0x010,xlaui-40g-kr";
671 local-mac-address = [00 00 00 00 00 00];
672 phy-handle = <&xlaui10>;
673 };
674 xaui10 {
675 reg = <0>;
676 qlm-mode = "0x010,xaui";
677 local-mac-address = [00 00 00 00 00 00];
678 phy-handle = <&xaui10>;
679 };
680 rxaui10 {
681 reg = <8>;
682 qlm-mode = "0x010,rxaui";
683 local-mac-address = [00 00 00 00 00 00];
684 phy-handle = <&rxaui10>;
685 };
686 rxaui11 {
687 reg = <9>;
688 qlm-mode = "0x011,rxaui";
689 local-mac-address = [00 00 00 00 00 00];
690 phy-handle = <&rxaui11>;
691 };
692 qsgmii10 {
693 reg = <0>;
694 qlm-mode = "0x010,qsgmii";
695 local-mac-address = [00 00 00 00 00 00];
696 phy-handle = <&qsgmii10>;
697 };
698 qsgmii11 {
699 reg = <1>;
700 qlm-mode = "0x011,qsgmii";
701 local-mac-address = [00 00 00 00 00 00];
702 phy-handle = <&qsgmii11>;
703 };
704 qsgmii12 {
705 reg = <2>;
706 qlm-mode = "0x012,qsgmii";
707 local-mac-address = [00 00 00 00 00 00];
708 phy-handle = <&qsgmii12>;
709 };
710 qsgmii13 {
711 reg = <3>;
712 qlm-mode = "0x013,qsgmii";
713 local-mac-address = [00 00 00 00 00 00];
714 phy-handle = <&qsgmii13>;
715 };
716 };
717
718 bgx2 {
719 sgmii20 {
720 reg = <0>;
721 qlm-mode = "0x020,sgmii";
722 local-mac-address = [00 00 00 00 00 00];
723 phy-handle = <&sgmii20>;
724 };
725 sgmii21 {
726 reg = <1>;
727 qlm-mode = "0x021,sgmii";
728 local-mac-address = [00 00 00 00 00 00];
729 phy-handle = <&sgmii21>;
730 };
731 sgmii22 {
732 reg = <2>;
733 qlm-mode = "0x022,sgmii";
734 local-mac-address = [00 00 00 00 00 00];
735 phy-handle = <&sgmii22>;
736 };
737 sgmii23 {
738 reg = <3>;
739 qlm-mode = "0x023,sgmii";
740 local-mac-address = [00 00 00 00 00 00];
741 phy-handle = <&sgmii23>;
742 };
743 xfi20 {
744 reg = <0>;
745 qlm-mode = "0x020,xfi";
746 local-mac-address = [00 00 00 00 00 00];
747 phy-handle = <&xfi20>;
748 };
749 xfi21 {
750 reg = <1>;
751 qlm-mode = "0x021,xfi";
752 local-mac-address = [00 00 00 00 00 00];
753 phy-handle = <&xfi21>;
754 };
755 xfi22 {
756 reg = <2>;
757 qlm-mode = "0x022,xfi";
758 local-mac-address = [00 00 00 00 00 00];
759 phy-handle = <&xfi22>;
760 };
761 xfi23 {
762 reg = <3>;
763 qlm-mode = "0x023,xfi";
764 local-mac-address = [00 00 00 00 00 00];
765 phy-handle = <&xfi23>;
766 };
767 xfi-10g-kr20 {
768 reg = <0>;
769 qlm-mode = "0x020,xfi-10g-kr";
770 local-mac-address = [00 00 00 00 00 00];
771 phy-handle = <&xfi20>;
772 };
773 xfi-10g-kr21 {
774 reg = <1>;
775 qlm-mode = "0x021,xfi-10g-kr";
776 local-mac-address = [00 00 00 00 00 00];
777 phy-handle = <&xfi21>;
778 };
779 xfi-10g-kr22 {
780 reg = <2>;
781 qlm-mode = "0x022,xfi-10g-kr";
782 local-mac-address = [00 00 00 00 00 00];
783 phy-handle = <&xfi22>;
784 };
785 xfi-10g-kr23 {
786 reg = <3>;
787 qlm-mode = "0x023,xfi-10g-kr";
788 local-mac-address = [00 00 00 00 00 00];
789 phy-handle = <&xfi23>;
790 };
791 xlaui20 {
792 reg = <0>;
793 qlm-mode = "0x020,xlaui";
794 local-mac-address = [00 00 00 00 00 00];
795 phy-handle = <&xlaui20>;
796 };
797 xlaui-40g-kr20 {
798 reg = <0>;
799 qlm-mode = "0x020,xlaui-40g-kr";
800 local-mac-address = [00 00 00 00 00 00];
801 phy-handle = <&xlaui20>;
802 };
803 xaui20 {
804 reg = <0>;
805 qlm-mode = "0x020,xaui";
806 local-mac-address = [00 00 00 00 00 00];
807 phy-handle = <&xaui20>;
808 };
809 rxaui20 {
810 reg = <0>;
811 qlm-mode = "0x020,rxaui";
812 local-mac-address = [00 00 00 00 00 00];
813 phy-handle = <&rxaui20>;
814 };
815 rxaui21 {
816 reg = <1>;
817 qlm-mode = "0x021,rxaui";
818 local-mac-address = [00 00 00 00 00 00];
819 phy-handle = <&rxaui21>;
820 };
821 qsgmii20 {
822 reg = <0>;
823 qlm-mode = "0x020,qsgmii";
824 local-mac-address = [00 00 00 00 00 00];
825 phy-handle = <&qsgmii20>;
826 };
827 qsgmii21 {
828 reg = <1>;
829 qlm-mode = "0x021,qsgmii";
830 local-mac-address = [00 00 00 00 00 00];
831 phy-handle = <&qsgmii21>;
832 };
833 qsgmii22 {
834 reg = <2>;
835 qlm-mode = "0x022,qsgmii";
836 local-mac-address = [00 00 00 00 00 00];
837 phy-handle = <&qsgmii22>;
838 };
839 qsgmii23 {
840 reg = <3>;
841 qlm-mode = "0x023,qsgmii";
842 local-mac-address = [00 00 00 00 00 00];
843 phy-handle = <&qsgmii23>;
844 };
845 };
846
847 bgx3 {
848 sgmii30 {
849 reg = <0>;
850 qlm-mode = "0x030,sgmii";
851 local-mac-address = [00 00 00 00 00 00];
852 phy-handle = <&sgmii30>;
853 };
854 sgmii31 {
855 reg = <1>;
856 qlm-mode = "0x031,sgmii";
857 local-mac-address = [00 00 00 00 00 00];
858 phy-handle = <&sgmii31>;
859 };
860 xfi30 {
861 reg = <0>;
862 qlm-mode = "0x030,xfi";
863 local-mac-address = [00 00 00 00 00 00];
864 phy-handle = <&xfi30>;
865 };
866 xfi31 {
867 reg = <1>;
868 qlm-mode = "0x031,xfi";
869 local-mac-address = [00 00 00 00 00 00];
870 phy-handle = <&xfi31>;
871 };
872 xfi-10g-kr30 {
873 reg = <0>;
874 qlm-mode = "0x030,xfi-10g-kr";
875 local-mac-address = [00 00 00 00 00 00];
876 phy-handle = <&xfi30>;
877 };
878 xfi-10g-kr31 {
879 reg = <1>;
880 qlm-mode = "0x031,xfi-10g-kr";
881 local-mac-address = [00 00 00 00 00 00];
882 phy-handle = <&xfi31>;
883 };
884 xaui30 {
885 reg = <0>;
886 qlm-mode = "0x030,xaui";
887 local-mac-address = [00 00 00 00 00 00];
888 phy-handle = <&xaui30>;
889 };
890 rxaui30 {
891 reg = <0>;
892 qlm-mode = "0x030,rxaui";
893 local-mac-address = [00 00 00 00 00 00];
894 phy-handle = <&rxaui30>;
895 };
896 rxaui31 {
897 reg = <1>;
898 qlm-mode = "0x031,rxaui";
899 local-mac-address = [00 00 00 00 00 00];
900 phy-handle = <&rxaui31>;
901 };
902 qsgmii30 {
903 reg = <0>;
904 qlm-mode = "0x030,qsgmii";
905 local-mac-address = [00 00 00 00 00 00];
906 phy-handle = <&qsgmii30>;
907 };
908 qsgmii31 {
909 reg = <1>;
910 qlm-mode = "0x031,qsgmii";
911 local-mac-address = [00 00 00 00 00 00];
912 phy-handle = <&qsgmii31>;
913 };
914 qsgmii32 {
915 reg = <2>;
916 qlm-mode = "0x032,qsgmii";
917 local-mac-address = [00 00 00 00 00 00];
918 phy-handle = <&qsgmii32>;
919 };
920 qsgmii33 {
921 reg = <3>;
922 qlm-mode = "0x033,qsgmii";
923 local-mac-address = [00 00 00 00 00 00];
924 phy-handle = <&qsgmii33>;
925 };
926 };
927};
928
929&mmc_1_4 {
930 mmc-slot@0 {
931 compatible = "mmc-slot";
932 reg = <0>;
933 vmmc-supply = <&mmc_supply_3v3>;
934 max-frequency = <26000000>;
935 mmc-ddr-3_3v;
936 /* 1.8v is not supported */
937 no-1-8-v;
938 /* Bus width is only 8 bits maximum */
939 bus-width = <8>;
940 /* Write-protect */
941 wp-gpios = <&gpio_6_0 22 0>;
942 /* Card detect */
943 cd-gpios = <&gpio_6_0 23 1>;
944
945 /* SD UHS SDR25 is supported */
946 sd-uhs-sdr25;
947 /* High-speed mode is supported */
948 cap-sd-highspeed;
949 cap-mmc-highspeed;
950 };
951 mmc-slot@1 {
952 compatible = "mmc-slot";
953 reg = <1>;
954 vmmc-supply = <&mmc_supply_3v3>;
955 max-frequency = <26000000>;
956 mmc-ddr-3_3v;
957 /* 1.8v is not supported */
958 no-1-8-v;
959 /* Bus width is only 8 bits maximum */
960 bus-width = <8>;
961 /* Write-protect */
962 wp-gpios = <&gpio_6_0 24 0>;
963 /* Card detect */
964 cd-gpios = <&gpio_6_0 25 1>;
965 /* SD UHS SDR25 is supported */
966 sd-uhs-sdr25;
967 /* High-speed mode is supported */
968 cap-sd-highspeed;
969 cap-mmc-highspeed;
970 };
971};
972
973&i2c_9_0 {
974 rtc@68 {
975 compatible = "dallas,ds1337";
976 reg = <0x68>;
977 rtcmodel = <1>;
978 };
979};
980
981&spi_7_0 {
982 flash@0 {
983 compatible = "micron,n25q128a13", "jedec,spi-nor", "spi-flash";
984 reg = <0x0>;
985 spi-max-frequency = <16000000>;
986 #address-cells = <1>;
987 #size-cells = <1>;
988 };
989};
diff --git a/recipes-kernel/linux/linux-cavium/dts/ebb8604-linux.dts b/recipes-kernel/linux/linux-cavium/dts/ebb8604-linux.dts
deleted file mode 100644
index 6a4037d..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/ebb8604-linux.dts
+++ /dev/null
@@ -1,49 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2014, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * Or, alternatively,
22 *
23 * b) Permission is hereby granted, free of charge, to any person
24 * obtaining a copy of this software and associated documentation
25 * files (the "Software"), to deal in the Software without
26 * restriction, including without limitation the rights to use,
27 * copy, modify, merge, publish, distribute, sublicense, and/or
28 * sell copies of the Software, and to permit persons to whom the
29 * Software is furnished to do so, subject to the following
30 * conditions:
31 *
32 * The above copyright notice and this permission notice shall be
33 * included in all copies or substantial portions of the Software.
34 *
35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42 * OTHER DEALINGS IN THE SOFTWARE.
43 */
44
45/dts-v1/;
46
47/include/ "generic-linux.dtsi"
48
49/include/ "ebb8604-phy.dtsi" \ No newline at end of file
diff --git a/recipes-kernel/linux/linux-cavium/dts/ebb8604-phy.dtsi b/recipes-kernel/linux/linux-cavium/dts/ebb8604-phy.dtsi
deleted file mode 100644
index 7cbc016..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/ebb8604-phy.dtsi
+++ /dev/null
@@ -1,123 +0,0 @@
1
2
3/ {
4 soc@0 {
5 pci@848000000000 {
6 mrml-bridge@1,0 {
7 mdio-nexus@1,3 {
8 mdio@87e005003880 {
9 sgmii00: sgmii@8 {
10 qlm-mode = "0x000,sgmii";
11 reg = <8> ;
12 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
13 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
14 marvell,reg-init = <3 0x10 0 0x8665>,
15 <3 0x11 0 0x00aa>,
16 <3 0x12 0 0x4105>,
17 <3 0x13 0 0x8a08>;
18
19 };
20 sgmii01: sgmii@9 {
21 qlm-mode = "0x001,sgmii";
22 reg = <9> ;
23 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
24 marvell,reg-init = <3 0x10 0 0x8665>,
25 <3 0x11 0 0x00aa>,
26 <3 0x12 0 0x4105>,
27 <3 0x13 0 0x8a08>;
28 };
29 sgmii02: sgmii@a {
30 qlm-mode = "0x002,sgmii";
31 reg = <0xa> ;
32 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
33 marvell,reg-init = <3 0x10 0 0x8665>,
34 <3 0x11 0 0x00aa>,
35 <3 0x12 0 0x4105>,
36 <3 0x13 0 0x8a08>;
37 };
38 sgmii03: sgmii@b {
39 qlm-mode = "0x003,sgmii";
40 reg = <0xb> ;
41 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
42 marvell,reg-init = <3 0x10 0 0x8665>,
43 <3 0x11 0 0x00aa>,
44 <3 0x12 0 0x4105>,
45 <3 0x13 0 0x8a08>;
46 };
47 xaui00: xaui@8 {
48 qlm-mode = "0x000,xaui";
49 reg = <8> ;
50 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
51 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
52 };
53 rxaui00: rxaui@8 {
54 qlm-mode = "0x000,rxaui";
55 reg = <8> ;
56 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
57 };
58 rxaui02: rxaui@9 {
59 qlm-mode = "0x002,rxaui";
60 reg = <9> ;
61 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
62 };
63
64
65 sgmii10: sgmii@c {
66 qlm-mode = "0x010,sgmii";
67 reg = <0xc> ;
68 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
69 marvell,reg-init = <3 0x10 0 0x8665>,
70 <3 0x11 0 0x00aa>,
71 <3 0x12 0 0x4105>,
72 <3 0x13 0 0x8a08>;
73 };
74 sgmii11: sgmii@d {
75 qlm-mode = "0x011,sgmii";
76 reg = <0xd> ;
77 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
78 marvell,reg-init = <3 0x10 0 0x8665>,
79 <3 0x11 0 0x00aa>,
80 <3 0x12 0 0x4105>,
81 <3 0x13 0 0x8a08>;
82 };
83 sgmii12: sgmii@e {
84 qlm-mode = "0x012,sgmii";
85 reg = <0xe> ;
86 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
87 marvell,reg-init = <3 0x10 0 0x8665>,
88 <3 0x11 0 0x00aa>,
89 <3 0x12 0 0x4105>,
90 <3 0x13 0 0x8a08>;
91 };
92 sgmii13: sgmii@f {
93 qlm-mode = "0x013,sgmii";
94 reg = <0xf> ;
95 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
96 marvell,reg-init = <3 0x10 0 0x8665>,
97 <3 0x11 0 0x00aa>,
98 <3 0x12 0 0x4105>,
99 <3 0x13 0 0x8a08>;
100 };
101 xaui10: xaui@c {
102 qlm-mode = "0x010,xaui";
103 reg = <0xc> ;
104 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
105 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
106 };
107 rxaui10: rxaui@c {
108 qlm-mode = "0x010,rxaui";
109 reg = <0xc> ;
110 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
111 };
112 rxaui12: rxaui@d {
113 qlm-mode = "0x012,rxaui";
114 reg = <0xd> ;
115 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
116 };
117 };
118 };
119 };
120 };
121 };
122
123};
diff --git a/recipes-kernel/linux/linux-cavium/dts/ebb8800-phy.dtsi b/recipes-kernel/linux/linux-cavium/dts/ebb8800-phy.dtsi
deleted file mode 100644
index 410ac4b..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/ebb8800-phy.dtsi
+++ /dev/null
@@ -1,123 +0,0 @@
1
2
3/ {
4 soc@0 {
5 pci@848000000000 {
6 mrml-bridge@1,0 {
7 mdio-nexus@1,3 {
8 mdio@87e005003800 {
9 sgmii00: sgmii@0 {
10 qlm-mode = "0x000,sgmii";
11 reg = <0> ;
12 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
13 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
14 marvell,reg-init = <3 0x10 0 0x8665>,
15 <3 0x11 0 0x00aa>,
16 <3 0x12 0 0x4105>,
17 <3 0x13 0 0x8a08>;
18
19 };
20 sgmii01: sgmii@1 {
21 qlm-mode = "0x001,sgmii";
22 reg = <1> ;
23 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
24 marvell,reg-init = <3 0x10 0 0x8665>,
25 <3 0x11 0 0x00aa>,
26 <3 0x12 0 0x4105>,
27 <3 0x13 0 0x8a08>;
28 };
29 sgmii02: sgmii@2 {
30 qlm-mode = "0x002,sgmii";
31 reg = <2> ;
32 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
33 marvell,reg-init = <3 0x10 0 0x8665>,
34 <3 0x11 0 0x00aa>,
35 <3 0x12 0 0x4105>,
36 <3 0x13 0 0x8a08>;
37 };
38 sgmii03: sgmii@3 {
39 qlm-mode = "0x003,sgmii";
40 reg = <3> ;
41 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
42 marvell,reg-init = <3 0x10 0 0x8665>,
43 <3 0x11 0 0x00aa>,
44 <3 0x12 0 0x4105>,
45 <3 0x13 0 0x8a08>;
46 };
47 xaui00: xaui@0 {
48 qlm-mode = "0x000,xaui";
49 reg = <0> ;
50 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
51 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
52 };
53 rxaui00: rxaui@0 {
54 qlm-mode = "0x000,rxaui";
55 reg = <0> ;
56 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
57 };
58 rxaui02: rxaui@2 {
59 qlm-mode = "0x002,rxaui";
60 reg = <1> ;
61 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
62 };
63 };
64 mdio@87e005003880 {
65 sgmii10: sgmii@4 {
66 qlm-mode = "0x010,sgmii";
67 reg = <4> ;
68 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
69 marvell,reg-init = <3 0x10 0 0x8665>,
70 <3 0x11 0 0x00aa>,
71 <3 0x12 0 0x4105>,
72 <3 0x13 0 0x8a08>;
73 };
74 sgmii11: sgmii@5 {
75 qlm-mode = "0x011,sgmii";
76 reg = <5> ;
77 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
78 marvell,reg-init = <3 0x10 0 0x8665>,
79 <3 0x11 0 0x00aa>,
80 <3 0x12 0 0x4105>,
81 <3 0x13 0 0x8a08>;
82 };
83 sgmii12: sgmii@6 {
84 qlm-mode = "0x012,sgmii";
85 reg = <6> ;
86 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
87 marvell,reg-init = <3 0x10 0 0x8665>,
88 <3 0x11 0 0x00aa>,
89 <3 0x12 0 0x4105>,
90 <3 0x13 0 0x8a08>;
91 };
92 sgmii13: sgmii@7 {
93 qlm-mode = "0x013,sgmii";
94 reg = <7> ;
95 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
96 marvell,reg-init = <3 0x10 0 0x8665>,
97 <3 0x11 0 0x00aa>,
98 <3 0x12 0 0x4105>,
99 <3 0x13 0 0x8a08>;
100 };
101 xaui10: xaui@4 {
102 qlm-mode = "0x010,xaui";
103 reg = <4> ;
104 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
105 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
106 };
107 rxaui10: rxaui@0 {
108 qlm-mode = "0x010,rxaui";
109 reg = <0> ;
110 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
111 };
112 rxaui12: rxaui@2 {
113 qlm-mode = "0x012,rxaui";
114 reg = <1> ;
115 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
116 };
117 };
118 };
119 };
120 };
121 };
122
123}; \ No newline at end of file
diff --git a/recipes-kernel/linux/linux-cavium/dts/generic-linux.dts b/recipes-kernel/linux/linux-cavium/dts/generic-linux.dts
deleted file mode 100644
index 53b9813..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/generic-linux.dts
+++ /dev/null
@@ -1,54 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2014, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "generic-linux.dtsi"
53
54/include/ "ebb8800-phy.dtsi" \ No newline at end of file
diff --git a/recipes-kernel/linux/linux-cavium/dts/generic-linux.dtsi b/recipes-kernel/linux/linux-cavium/dts/generic-linux.dtsi
deleted file mode 100644
index 68fc692..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/generic-linux.dtsi
+++ /dev/null
@@ -1,2721 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder SoC description
3 *
4 * Copyright (C) 2014-2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/ {
51 model = "Cavium ThunderX CN88XX board";
52 compatible = "cavium,thunder-88xx";
53 interrupt-parent = <&gic0>;
54 #address-cells = <2>;
55 #size-cells = <2>;
56
57 psci {
58 compatible = "arm,psci-0.2";
59 method = "smc";
60 };
61
62 cpus {
63 #address-cells = <2>;
64 #size-cells = <0>;
65
66 cpu-map {
67 cluster0 {
68 core0 {
69 cpu = <&CPU0>;
70 };
71 core1 {
72 cpu = <&CPU1>;
73 };
74 core2 {
75 cpu = <&CPU2>;
76 };
77 core3 {
78 cpu = <&CPU3>;
79 };
80 core4 {
81 cpu = <&CPU4>;
82 };
83 core5 {
84 cpu = <&CPU5>;
85 };
86 core6 {
87 cpu = <&CPU6>;
88 };
89 core7 {
90 cpu = <&CPU7>;
91 };
92 core8 {
93 cpu = <&CPU8>;
94 };
95 core9 {
96 cpu = <&CPU9>;
97 };
98 core10 {
99 cpu = <&CPU10>;
100 };
101 core11 {
102 cpu = <&CPU11>;
103 };
104 core12 {
105 cpu = <&CPU12>;
106 };
107 core13 {
108 cpu = <&CPU13>;
109 };
110 core14 {
111 cpu = <&CPU14>;
112 };
113 core15 {
114 cpu = <&CPU15>;
115 };
116 core16 {
117 cpu = <&CPU16>;
118 };
119 core17 {
120 cpu = <&CPU17>;
121 };
122 core18 {
123 cpu = <&CPU18>;
124 };
125 core19 {
126 cpu = <&CPU19>;
127 };
128 core20 {
129 cpu = <&CPU20>;
130 };
131 core21 {
132 cpu = <&CPU21>;
133 };
134 core22 {
135 cpu = <&CPU22>;
136 };
137 core23 {
138 cpu = <&CPU23>;
139 };
140 core24 {
141 cpu = <&CPU24>;
142 };
143 core25 {
144 cpu = <&CPU25>;
145 };
146 core26 {
147 cpu = <&CPU26>;
148 };
149 core27 {
150 cpu = <&CPU27>;
151 };
152 core28 {
153 cpu = <&CPU28>;
154 };
155 core29 {
156 cpu = <&CPU29>;
157 };
158 core30 {
159 cpu = <&CPU30>;
160 };
161 core31 {
162 cpu = <&CPU31>;
163 };
164 core32 {
165 cpu = <&CPU32>;
166 };
167 core33 {
168 cpu = <&CPU33>;
169 };
170 core34 {
171 cpu = <&CPU34>;
172 };
173 core35 {
174 cpu = <&CPU35>;
175 };
176 core36 {
177 cpu = <&CPU36>;
178 };
179 core37 {
180 cpu = <&CPU37>;
181 };
182 core38 {
183 cpu = <&CPU38>;
184 };
185 core39 {
186 cpu = <&CPU39>;
187 };
188 core40 {
189 cpu = <&CPU40>;
190 };
191 core41 {
192 cpu = <&CPU41>;
193 };
194 core42 {
195 cpu = <&CPU42>;
196 };
197 core43 {
198 cpu = <&CPU43>;
199 };
200 core44 {
201 cpu = <&CPU44>;
202 };
203 core45 {
204 cpu = <&CPU45>;
205 };
206 core46 {
207 cpu = <&CPU46>;
208 };
209 core47 {
210 cpu = <&CPU47>;
211 };
212 };
213
214 cluster1 {
215 core0 {
216 cpu = <&CPU48>;
217 };
218 core1 {
219 cpu = <&CPU49>;
220 };
221 core2 {
222 cpu = <&CPU50>;
223 };
224 core3 {
225 cpu = <&CPU51>;
226 };
227 core4 {
228 cpu = <&CPU52>;
229 };
230 core5 {
231 cpu = <&CPU53>;
232 };
233 core6 {
234 cpu = <&CPU54>;
235 };
236 core7 {
237 cpu = <&CPU55>;
238 };
239 core8 {
240 cpu = <&CPU56>;
241 };
242 core9 {
243 cpu = <&CPU57>;
244 };
245 core10 {
246 cpu = <&CPU58>;
247 };
248 core11 {
249 cpu = <&CPU59>;
250 };
251 core12 {
252 cpu = <&CPU60>;
253 };
254 core13 {
255 cpu = <&CPU61>;
256 };
257 core14 {
258 cpu = <&CPU62>;
259 };
260 core15 {
261 cpu = <&CPU63>;
262 };
263 core16 {
264 cpu = <&CPU64>;
265 };
266 core17 {
267 cpu = <&CPU65>;
268 };
269 core18 {
270 cpu = <&CPU66>;
271 };
272 core19 {
273 cpu = <&CPU67>;
274 };
275 core20 {
276 cpu = <&CPU68>;
277 };
278 core21 {
279 cpu = <&CPU69>;
280 };
281 core22 {
282 cpu = <&CPU70>;
283 };
284 core23 {
285 cpu = <&CPU71>;
286 };
287 core24 {
288 cpu = <&CPU72>;
289 };
290 core25 {
291 cpu = <&CPU73>;
292 };
293 core26 {
294 cpu = <&CPU74>;
295 };
296 core27 {
297 cpu = <&CPU75>;
298 };
299 core28 {
300 cpu = <&CPU76>;
301 };
302 core29 {
303 cpu = <&CPU77>;
304 };
305 core30 {
306 cpu = <&CPU78>;
307 };
308 core31 {
309 cpu = <&CPU79>;
310 };
311 core32 {
312 cpu = <&CPU80>;
313 };
314 core33 {
315 cpu = <&CPU81>;
316 };
317 core34 {
318 cpu = <&CPU82>;
319 };
320 core35 {
321 cpu = <&CPU83>;
322 };
323 core36 {
324 cpu = <&CPU84>;
325 };
326 core37 {
327 cpu = <&CPU85>;
328 };
329 core38 {
330 cpu = <&CPU86>;
331 };
332 core39 {
333 cpu = <&CPU87>;
334 };
335 core40 {
336 cpu = <&CPU88>;
337 };
338 core41 {
339 cpu = <&CPU89>;
340 };
341 core42 {
342 cpu = <&CPU90>;
343 };
344 core43 {
345 cpu = <&CPU91>;
346 };
347 core44 {
348 cpu = <&CPU92>;
349 };
350 core45 {
351 cpu = <&CPU93>;
352 };
353 core46 {
354 cpu = <&CPU94>;
355 };
356 core47 {
357 cpu = <&CPU95>;
358 };
359 };
360 };
361
362 CPU0: cpu@0 {
363 device_type = "cpu";
364 compatible = "cavium,thunder", "arm,armv8";
365 reg = <0x0 0x000>;
366 enable-method = "psci";
367 /* socket 0 */
368 numa-node-id = <0>;
369 next-level-cache = <&thunderx_L2_0>;
370 };
371 CPU1: cpu@1 {
372 device_type = "cpu";
373 compatible = "cavium,thunder", "arm,armv8";
374 reg = <0x0 0x001>;
375 enable-method = "psci";
376 numa-node-id = <0>;
377 next-level-cache = <&thunderx_L2_0>;
378 };
379 CPU2: cpu@2 {
380 device_type = "cpu";
381 compatible = "cavium,thunder", "arm,armv8";
382 reg = <0x0 0x002>;
383 enable-method = "psci";
384 numa-node-id = <0>;
385 next-level-cache = <&thunderx_L2_0>;
386 };
387 CPU3: cpu@3 {
388 device_type = "cpu";
389 compatible = "cavium,thunder", "arm,armv8";
390 reg = <0x0 0x003>;
391 enable-method = "psci";
392 numa-node-id = <0>;
393 next-level-cache = <&thunderx_L2_0>;
394 };
395 CPU4: cpu@4 {
396 device_type = "cpu";
397 compatible = "cavium,thunder", "arm,armv8";
398 reg = <0x0 0x004>;
399 enable-method = "psci";
400 numa-node-id = <0>;
401 next-level-cache = <&thunderx_L2_0>;
402 };
403 CPU5: cpu@5 {
404 device_type = "cpu";
405 compatible = "cavium,thunder", "arm,armv8";
406 reg = <0x0 0x005>;
407 enable-method = "psci";
408 numa-node-id = <0>;
409 next-level-cache = <&thunderx_L2_0>;
410 };
411 CPU6: cpu@6 {
412 device_type = "cpu";
413 compatible = "cavium,thunder", "arm,armv8";
414 reg = <0x0 0x006>;
415 enable-method = "psci";
416 numa-node-id = <0>;
417 next-level-cache = <&thunderx_L2_0>;
418 };
419 CPU7: cpu@7 {
420 device_type = "cpu";
421 compatible = "cavium,thunder", "arm,armv8";
422 reg = <0x0 0x007>;
423 enable-method = "psci";
424 numa-node-id = <0>;
425 next-level-cache = <&thunderx_L2_0>;
426 };
427 CPU8: cpu@8 {
428 device_type = "cpu";
429 compatible = "cavium,thunder", "arm,armv8";
430 reg = <0x0 0x008>;
431 enable-method = "psci";
432 numa-node-id = <0>;
433 next-level-cache = <&thunderx_L2_0>;
434 };
435 CPU9: cpu@9 {
436 device_type = "cpu";
437 compatible = "cavium,thunder", "arm,armv8";
438 reg = <0x0 0x009>;
439 enable-method = "psci";
440 numa-node-id = <0>;
441 next-level-cache = <&thunderx_L2_0>;
442 };
443 CPU10: cpu@a {
444 device_type = "cpu";
445 compatible = "cavium,thunder", "arm,armv8";
446 reg = <0x0 0x00a>;
447 enable-method = "psci";
448 numa-node-id = <0>;
449 next-level-cache = <&thunderx_L2_0>;
450 };
451 CPU11: cpu@b {
452 device_type = "cpu";
453 compatible = "cavium,thunder", "arm,armv8";
454 reg = <0x0 0x00b>;
455 enable-method = "psci";
456 numa-node-id = <0>;
457 next-level-cache = <&thunderx_L2_0>;
458 };
459 CPU12: cpu@c {
460 device_type = "cpu";
461 compatible = "cavium,thunder", "arm,armv8";
462 reg = <0x0 0x00c>;
463 enable-method = "psci";
464 numa-node-id = <0>;
465 next-level-cache = <&thunderx_L2_0>;
466 };
467 CPU13: cpu@d {
468 device_type = "cpu";
469 compatible = "cavium,thunder", "arm,armv8";
470 reg = <0x0 0x00d>;
471 enable-method = "psci";
472 numa-node-id = <0>;
473 next-level-cache = <&thunderx_L2_0>;
474 };
475 CPU14: cpu@e {
476 device_type = "cpu";
477 compatible = "cavium,thunder", "arm,armv8";
478 reg = <0x0 0x00e>;
479 enable-method = "psci";
480 numa-node-id = <0>;
481 next-level-cache = <&thunderx_L2_0>;
482 };
483 CPU15: cpu@f {
484 device_type = "cpu";
485 compatible = "cavium,thunder", "arm,armv8";
486 reg = <0x0 0x00f>;
487 enable-method = "psci";
488 numa-node-id = <0>;
489 next-level-cache = <&thunderx_L2_0>;
490 };
491 CPU16: cpu@100 {
492 device_type = "cpu";
493 compatible = "cavium,thunder", "arm,armv8";
494 reg = <0x0 0x100>;
495 enable-method = "psci";
496 numa-node-id = <0>;
497 next-level-cache = <&thunderx_L2_0>;
498 };
499 CPU17: cpu@101 {
500 device_type = "cpu";
501 compatible = "cavium,thunder", "arm,armv8";
502 reg = <0x0 0x101>;
503 enable-method = "psci";
504 numa-node-id = <0>;
505 next-level-cache = <&thunderx_L2_0>;
506 };
507 CPU18: cpu@102 {
508 device_type = "cpu";
509 compatible = "cavium,thunder", "arm,armv8";
510 reg = <0x0 0x102>;
511 enable-method = "psci";
512 numa-node-id = <0>;
513 next-level-cache = <&thunderx_L2_0>;
514 };
515 CPU19: cpu@103 {
516 device_type = "cpu";
517 compatible = "cavium,thunder", "arm,armv8";
518 reg = <0x0 0x103>;
519 enable-method = "psci";
520 numa-node-id = <0>;
521 next-level-cache = <&thunderx_L2_0>;
522 };
523 CPU20: cpu@104 {
524 device_type = "cpu";
525 compatible = "cavium,thunder", "arm,armv8";
526 reg = <0x0 0x104>;
527 enable-method = "psci";
528 numa-node-id = <0>;
529 next-level-cache = <&thunderx_L2_0>;
530 };
531 CPU21: cpu@105 {
532 device_type = "cpu";
533 compatible = "cavium,thunder", "arm,armv8";
534 reg = <0x0 0x105>;
535 enable-method = "psci";
536 numa-node-id = <0>;
537 next-level-cache = <&thunderx_L2_0>;
538 };
539 CPU22: cpu@106 {
540 device_type = "cpu";
541 compatible = "cavium,thunder", "arm,armv8";
542 reg = <0x0 0x106>;
543 enable-method = "psci";
544 numa-node-id = <0>;
545 next-level-cache = <&thunderx_L2_0>;
546 };
547 CPU23: cpu@107 {
548 device_type = "cpu";
549 compatible = "cavium,thunder", "arm,armv8";
550 reg = <0x0 0x107>;
551 enable-method = "psci";
552 numa-node-id = <0>;
553 next-level-cache = <&thunderx_L2_0>;
554 };
555 CPU24: cpu@108 {
556 device_type = "cpu";
557 compatible = "cavium,thunder", "arm,armv8";
558 reg = <0x0 0x108>;
559 enable-method = "psci";
560 numa-node-id = <0>;
561 next-level-cache = <&thunderx_L2_0>;
562 };
563 CPU25: cpu@109 {
564 device_type = "cpu";
565 compatible = "cavium,thunder", "arm,armv8";
566 reg = <0x0 0x109>;
567 enable-method = "psci";
568 numa-node-id = <0>;
569 next-level-cache = <&thunderx_L2_0>;
570 };
571 CPU26: cpu@10a {
572 device_type = "cpu";
573 compatible = "cavium,thunder", "arm,armv8";
574 reg = <0x0 0x10a>;
575 enable-method = "psci";
576 numa-node-id = <0>;
577 next-level-cache = <&thunderx_L2_0>;
578 };
579 CPU27: cpu@10b {
580 device_type = "cpu";
581 compatible = "cavium,thunder", "arm,armv8";
582 reg = <0x0 0x10b>;
583 enable-method = "psci";
584 numa-node-id = <0>;
585 next-level-cache = <&thunderx_L2_0>;
586 };
587 CPU28: cpu@10c {
588 device_type = "cpu";
589 compatible = "cavium,thunder", "arm,armv8";
590 reg = <0x0 0x10c>;
591 enable-method = "psci";
592 numa-node-id = <0>;
593 next-level-cache = <&thunderx_L2_0>;
594 };
595 CPU29: cpu@10d {
596 device_type = "cpu";
597 compatible = "cavium,thunder", "arm,armv8";
598 reg = <0x0 0x10d>;
599 enable-method = "psci";
600 numa-node-id = <0>;
601 next-level-cache = <&thunderx_L2_0>;
602 };
603 CPU30: cpu@10e {
604 device_type = "cpu";
605 compatible = "cavium,thunder", "arm,armv8";
606 reg = <0x0 0x10e>;
607 enable-method = "psci";
608 numa-node-id = <0>;
609 next-level-cache = <&thunderx_L2_0>;
610 };
611 CPU31: cpu@10f {
612 device_type = "cpu";
613 compatible = "cavium,thunder", "arm,armv8";
614 reg = <0x0 0x10f>;
615 enable-method = "psci";
616 numa-node-id = <0>;
617 next-level-cache = <&thunderx_L2_0>;
618 };
619 CPU32: cpu@200 {
620 device_type = "cpu";
621 compatible = "cavium,thunder", "arm,armv8";
622 reg = <0x0 0x200>;
623 enable-method = "psci";
624 numa-node-id = <0>;
625 next-level-cache = <&thunderx_L2_0>;
626 };
627 CPU33: cpu@201 {
628 device_type = "cpu";
629 compatible = "cavium,thunder", "arm,armv8";
630 reg = <0x0 0x201>;
631 enable-method = "psci";
632 numa-node-id = <0>;
633 next-level-cache = <&thunderx_L2_0>;
634 };
635 CPU34: cpu@202 {
636 device_type = "cpu";
637 compatible = "cavium,thunder", "arm,armv8";
638 reg = <0x0 0x202>;
639 enable-method = "psci";
640 numa-node-id = <0>;
641 next-level-cache = <&thunderx_L2_0>;
642 };
643 CPU35: cpu@203 {
644 device_type = "cpu";
645 compatible = "cavium,thunder", "arm,armv8";
646 reg = <0x0 0x203>;
647 enable-method = "psci";
648 numa-node-id = <0>;
649 next-level-cache = <&thunderx_L2_0>;
650 };
651 CPU36: cpu@204 {
652 device_type = "cpu";
653 compatible = "cavium,thunder", "arm,armv8";
654 reg = <0x0 0x204>;
655 enable-method = "psci";
656 numa-node-id = <0>;
657 next-level-cache = <&thunderx_L2_0>;
658 };
659 CPU37: cpu@205 {
660 device_type = "cpu";
661 compatible = "cavium,thunder", "arm,armv8";
662 reg = <0x0 0x205>;
663 enable-method = "psci";
664 numa-node-id = <0>;
665 next-level-cache = <&thunderx_L2_0>;
666 };
667 CPU38: cpu@206 {
668 device_type = "cpu";
669 compatible = "cavium,thunder", "arm,armv8";
670 reg = <0x0 0x206>;
671 enable-method = "psci";
672 numa-node-id = <0>;
673 next-level-cache = <&thunderx_L2_0>;
674 };
675 CPU39: cpu@207 {
676 device_type = "cpu";
677 compatible = "cavium,thunder", "arm,armv8";
678 reg = <0x0 0x207>;
679 enable-method = "psci";
680 numa-node-id = <0>;
681 next-level-cache = <&thunderx_L2_0>;
682 };
683 CPU40: cpu@208 {
684 device_type = "cpu";
685 compatible = "cavium,thunder", "arm,armv8";
686 reg = <0x0 0x208>;
687 enable-method = "psci";
688 numa-node-id = <0>;
689 next-level-cache = <&thunderx_L2_0>;
690 };
691 CPU41: cpu@209 {
692 device_type = "cpu";
693 compatible = "cavium,thunder", "arm,armv8";
694 reg = <0x0 0x209>;
695 enable-method = "psci";
696 numa-node-id = <0>;
697 next-level-cache = <&thunderx_L2_0>;
698 };
699 CPU42: cpu@20a {
700 device_type = "cpu";
701 compatible = "cavium,thunder", "arm,armv8";
702 reg = <0x0 0x20a>;
703 enable-method = "psci";
704 numa-node-id = <0>;
705 next-level-cache = <&thunderx_L2_0>;
706 };
707 CPU43: cpu@20b {
708 device_type = "cpu";
709 compatible = "cavium,thunder", "arm,armv8";
710 reg = <0x0 0x20b>;
711 enable-method = "psci";
712 numa-node-id = <0>;
713 next-level-cache = <&thunderx_L2_0>;
714 };
715 CPU44: cpu@20c {
716 device_type = "cpu";
717 compatible = "cavium,thunder", "arm,armv8";
718 reg = <0x0 0x20c>;
719 enable-method = "psci";
720 numa-node-id = <0>;
721 next-level-cache = <&thunderx_L2_0>;
722 };
723 CPU45: cpu@20d {
724 device_type = "cpu";
725 compatible = "cavium,thunder", "arm,armv8";
726 reg = <0x0 0x20d>;
727 enable-method = "psci";
728 numa-node-id = <0>;
729 next-level-cache = <&thunderx_L2_0>;
730 };
731 CPU46: cpu@20e {
732 device_type = "cpu";
733 compatible = "cavium,thunder", "arm,armv8";
734 reg = <0x0 0x20e>;
735 enable-method = "psci";
736 numa-node-id = <0>;
737 next-level-cache = <&thunderx_L2_0>;
738 };
739 CPU47: cpu@20f {
740 device_type = "cpu";
741 compatible = "cavium,thunder", "arm,armv8";
742 reg = <0x0 0x20f>;
743 enable-method = "psci";
744 numa-node-id = <0>;
745 next-level-cache = <&thunderx_L2_0>;
746 };
747 CPU48: cpu@10000 {
748 device_type = "cpu";
749 compatible = "cavium,thunder", "arm,armv8";
750 reg = <0x0 0x10000>;
751 enable-method = "psci";
752 /* socket 1 */
753 numa-node-id = <1>;
754 next-level-cache = <&thunderx_L2_1>;
755 };
756 CPU49: cpu@10001 {
757 device_type = "cpu";
758 compatible = "cavium,thunder", "arm,armv8";
759 reg = <0x0 0x10001>;
760 enable-method = "psci";
761 numa-node-id = <1>;
762 next-level-cache = <&thunderx_L2_1>;
763 };
764 CPU50: cpu@10002 {
765 device_type = "cpu";
766 compatible = "cavium,thunder", "arm,armv8";
767 reg = <0x0 0x10002>;
768 enable-method = "psci";
769 numa-node-id = <1>;
770 next-level-cache = <&thunderx_L2_1>;
771 };
772 CPU51: cpu@10003 {
773 device_type = "cpu";
774 compatible = "cavium,thunder", "arm,armv8";
775 reg = <0x0 0x10003>;
776 enable-method = "psci";
777 numa-node-id = <1>;
778 next-level-cache = <&thunderx_L2_1>;
779 };
780 CPU52: cpu@10004 {
781 device_type = "cpu";
782 compatible = "cavium,thunder", "arm,armv8";
783 reg = <0x0 0x10004>;
784 enable-method = "psci";
785 numa-node-id = <1>;
786 next-level-cache = <&thunderx_L2_1>;
787 };
788 CPU53: cpu@10005 {
789 device_type = "cpu";
790 compatible = "cavium,thunder", "arm,armv8";
791 reg = <0x0 0x10005>;
792 enable-method = "psci";
793 numa-node-id = <1>;
794 next-level-cache = <&thunderx_L2_1>;
795 };
796 CPU54: cpu@10006 {
797 device_type = "cpu";
798 compatible = "cavium,thunder", "arm,armv8";
799 reg = <0x0 0x10006>;
800 enable-method = "psci";
801 numa-node-id = <1>;
802 next-level-cache = <&thunderx_L2_1>;
803 };
804 CPU55: cpu@10007 {
805 device_type = "cpu";
806 compatible = "cavium,thunder", "arm,armv8";
807 reg = <0x0 0x10007>;
808 enable-method = "psci";
809 numa-node-id = <1>;
810 next-level-cache = <&thunderx_L2_1>;
811 };
812 CPU56: cpu@10008 {
813 device_type = "cpu";
814 compatible = "cavium,thunder", "arm,armv8";
815 reg = <0x0 0x10008>;
816 enable-method = "psci";
817 numa-node-id = <1>;
818 next-level-cache = <&thunderx_L2_1>;
819 };
820 CPU57: cpu@10009 {
821 device_type = "cpu";
822 compatible = "cavium,thunder", "arm,armv8";
823 reg = <0x0 0x10009>;
824 enable-method = "psci";
825 numa-node-id = <1>;
826 next-level-cache = <&thunderx_L2_1>;
827 };
828 CPU58: cpu@1000a {
829 device_type = "cpu";
830 compatible = "cavium,thunder", "arm,armv8";
831 reg = <0x0 0x1000a>;
832 enable-method = "psci";
833 numa-node-id = <1>;
834 next-level-cache = <&thunderx_L2_1>;
835 };
836 CPU59: cpu@1000b {
837 device_type = "cpu";
838 compatible = "cavium,thunder", "arm,armv8";
839 reg = <0x0 0x1000b>;
840 enable-method = "psci";
841 numa-node-id = <1>;
842 next-level-cache = <&thunderx_L2_1>;
843 };
844 CPU60: cpu@1000c {
845 device_type = "cpu";
846 compatible = "cavium,thunder", "arm,armv8";
847 reg = <0x0 0x1000c>;
848 enable-method = "psci";
849 numa-node-id = <1>;
850 next-level-cache = <&thunderx_L2_1>;
851 };
852 CPU61: cpu@1000d {
853 device_type = "cpu";
854 compatible = "cavium,thunder", "arm,armv8";
855 reg = <0x0 0x1000d>;
856 enable-method = "psci";
857 numa-node-id = <1>;
858 next-level-cache = <&thunderx_L2_1>;
859 };
860 CPU62: cpu@1000e {
861 device_type = "cpu";
862 compatible = "cavium,thunder", "arm,armv8";
863 reg = <0x0 0x1000e>;
864 enable-method = "psci";
865 numa-node-id = <1>;
866 next-level-cache = <&thunderx_L2_1>;
867 };
868 CPU63: cpu@1000f {
869 device_type = "cpu";
870 compatible = "cavium,thunder", "arm,armv8";
871 reg = <0x0 0x1000f>;
872 enable-method = "psci";
873 numa-node-id = <1>;
874 next-level-cache = <&thunderx_L2_1>;
875 };
876 CPU64: cpu@10100 {
877 device_type = "cpu";
878 compatible = "cavium,thunder", "arm,armv8";
879 reg = <0x0 0x10100>;
880 enable-method = "psci";
881 numa-node-id = <1>;
882 next-level-cache = <&thunderx_L2_1>;
883 };
884 CPU65: cpu@10101 {
885 device_type = "cpu";
886 compatible = "cavium,thunder", "arm,armv8";
887 reg = <0x0 0x10101>;
888 enable-method = "psci";
889 numa-node-id = <1>;
890 next-level-cache = <&thunderx_L2_1>;
891 };
892 CPU66: cpu@10102 {
893 device_type = "cpu";
894 compatible = "cavium,thunder", "arm,armv8";
895 reg = <0x0 0x10102>;
896 enable-method = "psci";
897 numa-node-id = <1>;
898 next-level-cache = <&thunderx_L2_1>;
899 };
900 CPU67: cpu@10103 {
901 device_type = "cpu";
902 compatible = "cavium,thunder", "arm,armv8";
903 reg = <0x0 0x10103>;
904 enable-method = "psci";
905 numa-node-id = <1>;
906 next-level-cache = <&thunderx_L2_1>;
907 };
908 CPU68: cpu@10104 {
909 device_type = "cpu";
910 compatible = "cavium,thunder", "arm,armv8";
911 reg = <0x0 0x10104>;
912 enable-method = "psci";
913 numa-node-id = <1>;
914 next-level-cache = <&thunderx_L2_1>;
915 };
916 CPU69: cpu@10105 {
917 device_type = "cpu";
918 compatible = "cavium,thunder", "arm,armv8";
919 reg = <0x0 0x10105>;
920 enable-method = "psci";
921 numa-node-id = <1>;
922 next-level-cache = <&thunderx_L2_1>;
923 };
924 CPU70: cpu@10106 {
925 device_type = "cpu";
926 compatible = "cavium,thunder", "arm,armv8";
927 reg = <0x0 0x10106>;
928 enable-method = "psci";
929 numa-node-id = <1>;
930 next-level-cache = <&thunderx_L2_1>;
931 };
932 CPU71: cpu@10107 {
933 device_type = "cpu";
934 compatible = "cavium,thunder", "arm,armv8";
935 reg = <0x0 0x10107>;
936 enable-method = "psci";
937 numa-node-id = <1>;
938 next-level-cache = <&thunderx_L2_1>;
939 };
940 CPU72: cpu@10108 {
941 device_type = "cpu";
942 compatible = "cavium,thunder", "arm,armv8";
943 reg = <0x0 0x10108>;
944 enable-method = "psci";
945 numa-node-id = <1>;
946 next-level-cache = <&thunderx_L2_1>;
947 };
948 CPU73: cpu@10109 {
949 device_type = "cpu";
950 compatible = "cavium,thunder", "arm,armv8";
951 reg = <0x0 0x10109>;
952 enable-method = "psci";
953 numa-node-id = <1>;
954 next-level-cache = <&thunderx_L2_1>;
955 };
956 CPU74: cpu@1010a {
957 device_type = "cpu";
958 compatible = "cavium,thunder", "arm,armv8";
959 reg = <0x0 0x1010a>;
960 enable-method = "psci";
961 numa-node-id = <1>;
962 next-level-cache = <&thunderx_L2_1>;
963 };
964 CPU75: cpu@1010b {
965 device_type = "cpu";
966 compatible = "cavium,thunder", "arm,armv8";
967 reg = <0x0 0x1010b>;
968 enable-method = "psci";
969 numa-node-id = <1>;
970 next-level-cache = <&thunderx_L2_1>;
971 };
972 CPU76: cpu@1010c {
973 device_type = "cpu";
974 compatible = "cavium,thunder", "arm,armv8";
975 reg = <0x0 0x1010c>;
976 enable-method = "psci";
977 numa-node-id = <1>;
978 next-level-cache = <&thunderx_L2_1>;
979 };
980 CPU77: cpu@1010d {
981 device_type = "cpu";
982 compatible = "cavium,thunder", "arm,armv8";
983 reg = <0x0 0x1010d>;
984 enable-method = "psci";
985 numa-node-id = <1>;
986 next-level-cache = <&thunderx_L2_1>;
987 };
988 CPU78: cpu@1010e {
989 device_type = "cpu";
990 compatible = "cavium,thunder", "arm,armv8";
991 reg = <0x0 0x1010e>;
992 enable-method = "psci";
993 numa-node-id = <1>;
994 next-level-cache = <&thunderx_L2_1>;
995 };
996 CPU79: cpu@1010f {
997 device_type = "cpu";
998 compatible = "cavium,thunder", "arm,armv8";
999 reg = <0x0 0x1010f>;
1000 enable-method = "psci";
1001 numa-node-id = <1>;
1002 next-level-cache = <&thunderx_L2_1>;
1003 };
1004 CPU80: cpu@10200 {
1005 device_type = "cpu";
1006 compatible = "cavium,thunder", "arm,armv8";
1007 reg = <0x0 0x10200>;
1008 enable-method = "psci";
1009 numa-node-id = <1>;
1010 next-level-cache = <&thunderx_L2_1>;
1011 };
1012 CPU81: cpu@10201 {
1013 device_type = "cpu";
1014 compatible = "cavium,thunder", "arm,armv8";
1015 reg = <0x0 0x10201>;
1016 enable-method = "psci";
1017 numa-node-id = <1>;
1018 next-level-cache = <&thunderx_L2_1>;
1019 };
1020 CPU82: cpu@10202 {
1021 device_type = "cpu";
1022 compatible = "cavium,thunder", "arm,armv8";
1023 reg = <0x0 0x10202>;
1024 enable-method = "psci";
1025 numa-node-id = <1>;
1026 next-level-cache = <&thunderx_L2_1>;
1027 };
1028 CPU83: cpu@10203 {
1029 device_type = "cpu";
1030 compatible = "cavium,thunder", "arm,armv8";
1031 reg = <0x0 0x10203>;
1032 enable-method = "psci";
1033 numa-node-id = <1>;
1034 next-level-cache = <&thunderx_L2_1>;
1035 };
1036 CPU84: cpu@10204 {
1037 device_type = "cpu";
1038 compatible = "cavium,thunder", "arm,armv8";
1039 reg = <0x0 0x10204>;
1040 enable-method = "psci";
1041 numa-node-id = <1>;
1042 next-level-cache = <&thunderx_L2_1>;
1043 };
1044 CPU85: cpu@10205 {
1045 device_type = "cpu";
1046 compatible = "cavium,thunder", "arm,armv8";
1047 reg = <0x0 0x10205>;
1048 enable-method = "psci";
1049 numa-node-id = <1>;
1050 next-level-cache = <&thunderx_L2_1>;
1051 };
1052 CPU86: cpu@10206 {
1053 device_type = "cpu";
1054 compatible = "cavium,thunder", "arm,armv8";
1055 reg = <0x0 0x10206>;
1056 enable-method = "psci";
1057 numa-node-id = <1>;
1058 next-level-cache = <&thunderx_L2_1>;
1059 };
1060 CPU87: cpu@10207 {
1061 device_type = "cpu";
1062 compatible = "cavium,thunder", "arm,armv8";
1063 reg = <0x0 0x10207>;
1064 enable-method = "psci";
1065 numa-node-id = <1>;
1066 next-level-cache = <&thunderx_L2_1>;
1067 };
1068 CPU88: cpu@10208 {
1069 device_type = "cpu";
1070 compatible = "cavium,thunder", "arm,armv8";
1071 reg = <0x0 0x10208>;
1072 enable-method = "psci";
1073 numa-node-id = <1>;
1074 next-level-cache = <&thunderx_L2_1>;
1075 };
1076 CPU89: cpu@10209 {
1077 device_type = "cpu";
1078 compatible = "cavium,thunder", "arm,armv8";
1079 reg = <0x0 0x10209>;
1080 enable-method = "psci";
1081 numa-node-id = <1>;
1082 next-level-cache = <&thunderx_L2_1>;
1083 };
1084 CPU90: cpu@1020a {
1085 device_type = "cpu";
1086 compatible = "cavium,thunder", "arm,armv8";
1087 reg = <0x0 0x1020a>;
1088 enable-method = "psci";
1089 numa-node-id = <1>;
1090 next-level-cache = <&thunderx_L2_1>;
1091 };
1092 CPU91: cpu@1020b {
1093 device_type = "cpu";
1094 compatible = "cavium,thunder", "arm,armv8";
1095 reg = <0x0 0x1020b>;
1096 enable-method = "psci";
1097 numa-node-id = <1>;
1098 next-level-cache = <&thunderx_L2_1>;
1099 };
1100 CPU92: cpu@1020c {
1101 device_type = "cpu";
1102 compatible = "cavium,thunder", "arm,armv8";
1103 reg = <0x0 0x1020c>;
1104 enable-method = "psci";
1105 numa-node-id = <1>;
1106 next-level-cache = <&thunderx_L2_1>;
1107 };
1108 CPU93: cpu@1020d {
1109 device_type = "cpu";
1110 compatible = "cavium,thunder", "arm,armv8";
1111 reg = <0x0 0x1020d>;
1112 enable-method = "psci";
1113 numa-node-id = <1>;
1114 next-level-cache = <&thunderx_L2_1>;
1115 };
1116 CPU94: cpu@1020e {
1117 device_type = "cpu";
1118 compatible = "cavium,thunder", "arm,armv8";
1119 reg = <0x0 0x1020e>;
1120 enable-method = "psci";
1121 numa-node-id = <1>;
1122 next-level-cache = <&thunderx_L2_1>;
1123 };
1124 CPU95: cpu@1020f {
1125 device_type = "cpu";
1126 compatible = "cavium,thunder", "arm,armv8";
1127 reg = <0x0 0x1020f>;
1128 enable-method = "psci";
1129 numa-node-id = <1>;
1130 next-level-cache = <&thunderx_L2_1>;
1131 };
1132 thunderx_L2_0: l2-cache0 {
1133 compatible = "cache";
1134 numa-node-id = <0>;
1135 };
1136 thunderx_L2_1: l2-cache1 {
1137 compatible = "cache";
1138 numa-node-id = <1>;
1139 };
1140 };
1141
1142 timer {
1143 compatible = "arm,armv8-timer";
1144 interrupts = <1 13 4>,
1145 <1 14 4>,
1146 <1 11 4>,
1147 <1 10 4>;
1148 };
1149
1150 pmu {
1151 compatible = "cavium,thunder-pmu", "arm,armv8-pmuv3";
1152 interrupts = <1 7 4>;
1153 };
1154
1155 gic0: interrupt-controller@801000000000 {
1156 compatible = "arm,gic-v3";
1157 #interrupt-cells = <3>;
1158 #address-cells = <2>;
1159 #size-cells = <2>;
1160 #redistributor-regions = <2>;
1161 ranges;
1162 interrupt-controller;
1163 reg = <0x8010 0x00000000 0x0 0x010000>, /* GICD */
1164 <0x8010 0x80000000 0x0 0x600000>, /* GICR Node 0 */
1165 <0x9010 0x80000000 0x0 0x600000>; /* GICR Node 1 */
1166 interrupts = <1 9 4>;
1167
1168 its: gic-its@801000020000 {
1169 compatible = "arm,gic-v3-its";
1170 reg = <0x8010 0x20000 0x0 0x200000>;
1171 msi-controller;
1172 numa-node-id = <0>;
1173 };
1174
1175 its1: gic-its@901000020000 {
1176 compatible = "arm,gic-v3-its";
1177 reg = <0x9010 0x20000 0x0 0x200000>;
1178 msi-controller;
1179 numa-node-id = <1>;
1180 };
1181 };
1182
1183 soc@0 {
1184 compatible = "simple-bus";
1185 #address-cells = <2>;
1186 #size-cells = <2>;
1187 ranges;
1188 numa-node-id = <0>;
1189
1190 gpio-keys {
1191 compatible = "gpio-keys";
1192 button@1 {
1193 lable = "GPIO Key Power";
1194 /* 116 is the value of KEY_POWER, which
1195 is defined in include/uapi/linux/input.h
1196 of Linux kernel code */
1197 linux,code = <116>;
1198 /* Interrupt type: SPI;
1199 Interrupt nunmber: 0, which corresponds to
1200 KEY_POWER_IRQ definition in
1201 plat/thunder/include/thunder_io.h of ATF code;
1202 Flag: 1, edge triggered */
1203 interrupts = <0 0 1>;
1204 };
1205 };
1206
1207 refclkuaa: refclkuaa {
1208 compatible = "fixed-clock";
1209 #clock-cells = <0>;
1210 clock-frequency = <116640000>;
1211 clock-output-names = "refclkuaa";
1212 };
1213
1214 sclk: sclk {
1215 compatible = "fixed-clock";
1216 #clock-cells = <0>;
1217 clock-frequency = <800000000>;
1218 clock-output-names = "sclk";
1219 };
1220
1221 uaa0: serial@87e024000000 {
1222 compatible = "arm,pl011", "arm,primecell";
1223 reg = <0x87e0 0x24000000 0x0 0x1000>;
1224 interrupts = <0 5 4>;
1225 clocks = <&refclkuaa>;
1226 clock-names = "apb_pclk";
1227 };
1228
1229 uaa1: serial@87e025000000 {
1230 compatible = "arm,pl011", "arm,primecell";
1231 reg = <0x87e0 0x25000000 0x0 0x1000>;
1232 interrupts = <0 6 4>;
1233 clocks = <&refclkuaa>;
1234 clock-names = "apb_pclk";
1235 };
1236
1237 smmu0@830000000000 {
1238 compatible = "cavium,smmu-v2";
1239 reg = <0x8300 0x0 0x0 0x2000000>;
1240 #global-interrupts = <1>;
1241 interrupts = <0 68 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1242 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1243 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1244 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1245 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1246 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1247 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1248 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1249 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1250 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1251 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1252 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1253 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1254 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1255 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1256 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1257 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1258 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1259 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1260 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1261 <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>, <0 69 4>,
1262 <0 69 4>, <0 69 4>, <0 69 4>;
1263
1264 mmu-masters = <&ecam0 0x100>;
1265 };
1266
1267 smmu1@831000000000 {
1268 compatible = "cavium,smmu-v2";
1269 reg = <0x8310 0x0 0x0 0x2000000>;
1270 #global-interrupts = <1>;
1271 interrupts = <0 70 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1272 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1273 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1274 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1275 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1276 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1277 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1278 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1279 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1280 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1281 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1282 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1283 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1284 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1285 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1286 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1287 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1288 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1289 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1290 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1291 <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>, <0 71 4>,
1292 <0 71 4>, <0 71 4>, <0 71 4>;
1293
1294 mmu-masters = <&ecam1 0x100>,
1295 <&pem0 0x200>,
1296 <&pem1 0x300>,
1297 <&pem2 0x400>;
1298 };
1299
1300 smmu2@832000000000 {
1301 compatible = "cavium,smmu-v2";
1302 reg = <0x8320 0x0 0x0 0x2000000>;
1303 #global-interrupts = <1>;
1304 interrupts = <0 72 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1305 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1306 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1307 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1308 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1309 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1310 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1311 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1312 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1313 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1314 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1315 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1316 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1317 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1318 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1319 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1320 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1321 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1322 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1323 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1324 <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>, <0 73 4>,
1325 <0 73 4>, <0 73 4>, <0 73 4>;
1326
1327 mmu-masters = <&ecam2 0x100>;
1328 };
1329
1330 smmu3@833000000000 {
1331 compatible = "cavium,smmu-v2";
1332 reg = <0x8330 0x0 0x0 0x2000000>;
1333 #global-interrupts = <1>;
1334 interrupts = <0 74 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1335 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1336 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1337 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1338 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1339 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1340 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1341 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1342 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1343 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1344 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1345 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1346 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1347 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1348 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1349 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1350 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1351 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1352 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1353 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1354 <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>, <0 75 4>,
1355 <0 75 4>, <0 75 4>, <0 75 4>;
1356
1357 mmu-masters = <&ecam3 0x100>,
1358 <&pem3 0x200>,
1359 <&pem4 0x300>,
1360 <&pem5 0x400>;
1361 };
1362
1363 ecam0: pci@848000000000 {
1364 compatible = "cavium,pci-host-thunder-ecam";
1365 device_type = "pci";
1366 msi-parent = <&its>;
1367 msi-map = <0 &its 0 0x10000>;
1368 bus-range = <0 31>;
1369 #size-cells = <2>;
1370 #address-cells = <3>;
1371 #stream-id-cells = <1>;
1372 dma-coherent;
1373 reg = <0x8480 0x00000000 0 0x02000000>; /* Configuration space */
1374 ranges = <0x03000000 0x8020 0x00000000 0x8020 0x00000000 0x060 0x00000000>, /* mem ranges */
1375 <0x03000000 0x8380 0x00000000 0x8380 0x00000000 0x0a0 0x00000000>, /* ZIP et al. */
1376 <0x03000000 0x8460 0x00000000 0x8460 0x00000000 0x020 0x00000000>, /* DFA et al. */
1377 <0x03000000 0x8680 0x00000000 0x8680 0x00000000 0x160 0x24000000>, /* hole for UARTs */
1378 <0x03000000 0x87e0 0x26000000 0x87e0 0x26000000 0x000 0x9a000000>, /* hole for PEMs */
1379 <0x03000000 0x87e0 0xc6000000 0x87e0 0xc6000000 0x01f 0x3a000000>;
1380
1381 mrml-bridge@1,0 {
1382 compatible = "cavium,thunder-8890-mrml-bridge";
1383 device_type = "pci";
1384 #size-cells = <2>;
1385 #address-cells = <3>;
1386 ranges = <0x03000000 0x87e0 0x00000000 0x03000000 0x87e0 0x00000000 0x10 0x00000000>;
1387 reg = <0x0800 0 0 0 0>; /* DEVFN = 0x08 (1:0) */
1388
1389 mdio-nexus@1,3 {
1390 compatible = "cavium,thunder-8890-mdio-nexus";
1391 #address-cells = <2>;
1392 #size-cells = <2>;
1393 reg = <0x0b00 0 0 0 0>; /* DEVFN = 0x0b (1:3) */
1394 assigned-addresses = <0x03000000 0x87e0 0x05000000 0x0 0x800000>;
1395 ranges = <0x87e0 0x05000000 0x03000000 0x87e0 0x05000000 0x0 0x800000>;
1396
1397 mdio@87e005003800 {
1398 compatible = "cavium,thunder-8890-mdio";
1399 #address-cells = <1>;
1400 #size-cells = <0>;
1401 reg = <0x87e0 0x05003800 0x0 0x30>;
1402
1403 xfi00: xfi@0 {
1404 qlm-mode = "0x000,xfi","0x000,xfi-10g-kr";
1405 reg = <0> ;
1406 compatible = "cortina,cs4223-slice";
1407 };
1408 xfi01: xfi@1 {
1409 qlm-mode = "0x001,xfi","0x001,xfi-10g-kr";
1410 reg = <1> ;
1411 compatible = "cortina,cs4223-slice";
1412 };
1413 xfi02: xfi@2 {
1414 qlm-mode = "0x002,xfi","0x002,xfi-10g-kr";
1415 reg = <2> ;
1416 compatible = "cortina,cs4223-slice";
1417 };
1418 xfi03: xfi@3 {
1419 qlm-mode = "0x003,xfi","0x003,xfi-10g-kr";
1420 reg = <3> ;
1421 compatible = "cortina,cs4223-slice";
1422 };
1423 xlaui00: xlaui@0 {
1424 qlm-mode = "0x000,xlaui","0x000,xlaui-40g-kr";
1425 reg = <0> ;
1426 compatible = "cortina,cs4223-slice";
1427 };
1428 };
1429
1430 mdio@87e005003880 {
1431 compatible = "cavium,thunder-8890-mdio";
1432 #address-cells = <1>;
1433 #size-cells = <0>;
1434 reg = <0x87e0 0x05003880 0x0 0x30>;
1435
1436 xfi10: xfi@0 {
1437 qlm-mode = "0x010,xfi","0x010,xfi-10g-kr";
1438 reg = <0> ;
1439 compatible = "cortina,cs4223-slice";
1440 };
1441 xfi11: xfi@1 {
1442 qlm-mode = "0x011,xfi","0x011,xfi-10g-kr";
1443 reg = <1> ;
1444 compatible = "cortina,cs4223-slice";
1445 };
1446 xfi12: xfi@2 {
1447 qlm-mode = "0x012,xfi","0x012,xfi-10g-kr";
1448 reg = <2> ;
1449 compatible = "cortina,cs4223-slice";
1450 };
1451 xfi13: xfi@3 {
1452 qlm-mode = "0x013,xfi","0x013,xfi-10g-kr";
1453 reg = <3> ;
1454 compatible = "cortina,cs4223-slice";
1455 };
1456 xlaui10: xlaui@0 {
1457 qlm-mode = "0x010,xlaui","0x010,xlaui-40g-kr";
1458 reg = <0> ;
1459 compatible = "cortina,cs4223-slice";
1460 };
1461 };
1462 };
1463
1464// I2C configuration for EBB8800 testing
1465// i2c@9,0 {
1466// #address-cells = <1>;
1467// #size-cells = <0>;
1468// compatible = "cavium,thunder-8890-twsi";
1469// reg = <0x4800 0 0 0 0>; /* DEVFN = 0x48 (9:0) */
1470// clock-frequency = <100000>;
1471// clocks = <&sclk>;
1472//
1473// rtc@68 {
1474// compatible = "dallas,ds1337";
1475// reg = <0x68>;
1476// };
1477// };
1478//
1479 bgx0 {
1480 #address-cells = <1>;
1481 #size-cells = <0>;
1482 reg = <0x8000 0 0 0 0>; /* DEVFN = 0x80 (16:0) */
1483 /* typename+qlm+typenumber eg :
1484 sgmii+bgx0+sgmmi0
1485 */
1486 // SGMII
1487 sgmii@0 {
1488 reg = <0>;
1489 qlm-mode = "0x000,sgmii";
1490 local-mac-address = [ 00 00 00 00 00 00 ];
1491 phy-handle = <&sgmii00>;
1492 };
1493 sgmii@1 {
1494 reg = <1>;
1495 qlm-mode = "0x001,sgmii";
1496 local-mac-address = [ 00 00 00 00 00 00 ];
1497 phy-handle = <&sgmii01>;
1498 };
1499 sgmii@2 {
1500 reg = <2>;
1501 qlm-mode = "0x002,sgmii";
1502 local-mac-address = [ 00 00 00 00 00 00 ];
1503 phy-handle = <&sgmii02>;
1504 };
1505 sgmii@3 {
1506 reg = <3>;
1507 qlm-mode = "0x003,sgmii";
1508 local-mac-address = [ 00 00 00 00 00 00 ];
1509 phy-handle = <&sgmii03>;
1510 };
1511 xfi@0 {
1512 reg = <0>;
1513 qlm-mode = "0x000,xfi";
1514 local-mac-address = [ 00 00 00 00 00 00 ];
1515 phy-handle = <&xfi00>;
1516 };
1517 xfi@1 {
1518 reg = <1>;
1519 qlm-mode = "0x001,xfi";
1520 local-mac-address = [ 00 00 00 00 00 00 ];
1521 phy-handle = <&xfi01>;
1522 };
1523 xfi@2 {
1524 reg = <2>;
1525 qlm-mode = "0x002,xfi";
1526 local-mac-address = [ 00 00 00 00 00 00 ];
1527 phy-handle = <&xfi02>;
1528 };
1529 xfi@3 {
1530 reg = <3>;
1531 qlm-mode = "0x003,xfi";
1532 local-mac-address = [ 00 00 00 00 00 00 ];
1533 phy-handle = <&xfi03>;
1534 };
1535 // 10g-kr
1536 xfi-10g-kr@0 {
1537 reg = <0>;
1538 qlm-mode = "0x000,xfi-10g-kr";
1539 local-mac-address = [ 00 00 00 00 00 00 ];
1540 phy-handle = <&xfi00>;
1541 };
1542 xfi-10g-kr@1 {
1543 reg = <1>;
1544 qlm-mode = "0x001,xfi-10g-kr";
1545 local-mac-address = [ 00 00 00 00 00 00 ];
1546 phy-handle = <&xfi01>;
1547 };
1548 xfi-10g-kr@2 {
1549 reg = <2>;
1550 qlm-mode = "0x002,xfi-10g-kr";
1551 local-mac-address = [ 00 00 00 00 00 00 ];
1552 phy-handle = <&xfi02>;
1553 };
1554 xfi-10g-kr@3 {
1555 reg = <3>;
1556 qlm-mode = "0x003,xfi-10g-kr";
1557 local-mac-address = [ 00 00 00 00 00 00 ];
1558 phy-handle = <&xfi03>;
1559 };
1560 xlaui@0 {
1561 reg = <0>;
1562 qlm-mode = "0x000,xlaui";
1563 local-mac-address = [ 00 00 00 00 00 00 ];
1564 phy-handle = <&xlaui00>;
1565 };
1566 xlaui-40g-kr@0 {
1567 reg = <0>;
1568 qlm-mode = "0x000,xlaui-40g-kr";
1569 local-mac-address = [ 00 00 00 00 00 00 ];
1570 phy-handle = <&xlaui00>;
1571 };
1572 xaui@0 {
1573 reg = <0>;
1574 qlm-mode = "0x000,xaui";
1575 local-mac-address = [ 00 00 00 00 00 00 ];
1576 phy-handle = <&xaui00>;
1577 };
1578 rxaui@0 {
1579 reg = <0>;
1580 qlm-mode = "0x000,rxaui";
1581 local-mac-address = [ 00 00 00 00 00 00 ];
1582 phy-handle = <&rxaui00>;
1583 };
1584 rxaui@2 {
1585 reg = <2>;
1586 qlm-mode = "0x002,rxaui";
1587 local-mac-address = [ 00 00 00 00 00 00 ];
1588 phy-handle = <&rxaui02>;
1589 };
1590 };
1591
1592 bgx1 {
1593 #address-cells = <1>;
1594 #size-cells = <0>;
1595 reg = <0x8100 0 0 0 0>; /* DEVFN = 0x81 (16:1) */
1596
1597 sgmii@0 {
1598 reg = <0>;
1599 qlm-mode = "0x010,sgmii";
1600 local-mac-address = [ 00 00 00 00 00 00 ];
1601 phy-handle = <&sgmii10>; /*"sgmmi"+bgx+no */
1602 };
1603 sgmii@1 {
1604 reg = <1>;
1605 qlm-mode = "0x011,sgmii";
1606 local-mac-address = [ 00 00 00 00 00 00 ];
1607 phy-handle = <&sgmii11>;
1608 };
1609 sgmii@2 {
1610 reg = <2>;
1611 qlm-mode = "0x012,sgmii";
1612 local-mac-address = [ 00 00 00 00 00 00 ];
1613 phy-handle = <&sgmii12>;
1614 };
1615 sgmii@3 {
1616 reg = <3>;
1617 qlm-mode = "0x013,sgmii";
1618 local-mac-address = [ 00 00 00 00 00 00 ];
1619 phy-handle = <&sgmii13>;
1620 };
1621 xfi@0 {
1622 reg = <0>;
1623 qlm-mode = "0x010,xfi";
1624 local-mac-address = [ 00 00 00 00 00 00 ];
1625 phy-handle = <&xfi10>;
1626 };
1627 xfi@1 {
1628 reg = <1>;
1629 qlm-mode = "0x011,xfi";
1630 local-mac-address = [ 00 00 00 00 00 00 ];
1631 phy-handle = <&xfi11>;
1632 };
1633 xfi@2 {
1634 reg = <2>;
1635 qlm-mode = "0x012,xfi";
1636 local-mac-address = [ 00 00 00 00 00 00 ];
1637 phy-handle = <&xfi12>;
1638 };
1639 xfi@3 {
1640 reg = <3>;
1641 qlm-mode = "0x013,xfi";
1642 local-mac-address = [ 00 00 00 00 00 00 ];
1643 phy-handle = <&xfi13>;
1644 };
1645 // 10g_kr
1646 xfi-10g-kr@0 {
1647 reg = <0>;
1648 qlm-mode = "0x010,xfi-10g-kr";
1649 local-mac-address = [ 00 00 00 00 00 00 ];
1650 phy-handle = <&xfi10>;
1651 };
1652 xfi-10g-kr@1 {
1653 reg = <1>;
1654 qlm-mode = "0x011,xfi-10g-kr";
1655 local-mac-address = [ 00 00 00 00 00 00 ];
1656 phy-handle = <&xfi11>;
1657 };
1658 xfi-10g-kr@2 {
1659 reg = <2>;
1660 qlm-mode = "0x012,xfi-10g-kr";
1661 local-mac-address = [ 00 00 00 00 00 00 ];
1662 phy-handle = <&xfi12>;
1663 };
1664 xfi-10g-kr@3 {
1665 reg = <3>;
1666 qlm-mode = "0x013,xfi-10g-kr";
1667 local-mac-address = [ 00 00 00 00 00 00 ];
1668 phy-handle = <&xfi13>;
1669 };
1670 xlaui@0 {
1671 reg = <0>;
1672 qlm-mode = "0x010,xlaui";
1673 local-mac-address = [ 00 00 00 00 00 00 ];
1674 phy-handle = <&xlaui10>;
1675 };
1676 xlaui-40g-kr-@0 {
1677 reg = <0>;
1678 qlm-mode = "0x010,xlaui-40g-kr";
1679 local-mac-address = [ 00 00 00 00 00 00 ];
1680 phy-handle = <&xlaui10>;
1681 };
1682 xaui@0 {
1683 reg = <0>;
1684 qlm-mode = "0x010,xaui";
1685 local-mac-address = [ 00 00 00 00 00 00 ];
1686 phy-handle = <&xaui10>;
1687 };
1688 rxaui@0 {
1689 reg = <0>;
1690 qlm-mode = "0x010,rxaui";
1691 local-mac-address = [ 00 00 00 00 00 00 ];
1692 phy-handle = <&rxaui10>;
1693 };
1694 rxaui@2 {
1695 reg = <2>;
1696 qlm-mode = "0x012,rxaui";
1697 local-mac-address = [ 00 00 00 00 00 00 ];
1698 phy-handle = <&rxaui12>;
1699 };
1700 };
1701 };
1702
1703// SPI configuration for EBB8800 testing
1704// spi@7,0 {
1705// compatible = "cavium,thunder-8890-spi";
1706// reg = <0x3800 0 0 0 0>; /* DEVFN = 0x38 (7:0) */
1707// #address-cells = <1>;
1708// #size-cells = <0>;
1709// clocks = <&sclk>;
1710//
1711// flash@0 {
1712// compatible = "jedec,spi-nor";
1713// reg = <0>;
1714// spi-max-frequency = <16000000>;
1715// #address-cells = <1>;
1716// #size-cells = <1>;
1717// };
1718// };
1719//
1720 };
1721
1722 ecam1: pci@849000000000 {
1723 compatible = "cavium,pci-host-thunder-ecam";
1724 device_type = "pci";
1725 msi-parent = <&its>;
1726 msi-map = <0 &its 0x10000 0x10000>;
1727 bus-range = <0 31>;
1728 #size-cells = <2>;
1729 #address-cells = <3>;
1730 #stream-id-cells = <1>;
1731 dma-coherent;
1732 reg = <0x8490 0x00000000 0 0x02000000>; /* Configuration space */
1733 ranges = <0x03000000 0x8100 0x00000000 0x8100 0x00000000 0x80 0x00000000>; /* mem ranges */
1734 };
1735
1736 ecam2: pci@84a000000000 {
1737 compatible = "cavium,pci-host-thunder-ecam";
1738 device_type = "pci";
1739 msi-parent = <&its>;
1740 msi-map = <0 &its 0x20000 0x10000>;
1741 bus-range = <0 31>;
1742 #size-cells = <2>;
1743 #address-cells = <3>;
1744 #stream-id-cells = <1>;
1745 dma-coherent;
1746 reg = <0x84a0 0x00000000 0 0x02000000>; /* Configuration space */
1747 ranges = <0x03000000 0x8420 0x00000000 0x8420 0x00000000 0x20 0x00000000>; /* mem ranges */
1748 };
1749
1750 ecam3: pci@84b000000000 {
1751 compatible = "cavium,pci-host-thunder-ecam";
1752 device_type = "pci";
1753 msi-parent = <&its>;
1754 msi-map = <0 &its 0x30000 0x10000>;
1755 bus-range = <0 31>;
1756 #size-cells = <2>;
1757 #address-cells = <3>;
1758 #stream-id-cells = <1>;
1759 dma-coherent;
1760 reg = <0x84b0 0x00000000 0 0x02000000>; /* Configuration space */
1761 ranges = <0x03000000 0x8180 0x00000000 0x8180 0x00000000 0x80 0x00000000>; /* mem ranges */
1762 };
1763
1764 pem0: pci@87e0c0000000 {
1765
1766 /* "cavium,pci-host-thunder-pem" implies that
1767 the first bus in bus-range has config access
1768 via the "PEM space", subsequent buses have
1769 config assess via the "Configuration space".
1770 The "mem64 PEM" range is used to map the PEM
1771 BAR0, which is used by the AER and PME MSI-X
1772 sources. UEFI and Linux must assign the same
1773 bus number to each device, otherwise Linux
1774 enumeration gets confused. Because UEFI
1775 skips the PEM bus and its PCIe-RC bridge it
1776 uses a numbering that starts 1 bus higher.
1777 */
1778
1779 compatible = "cavium,pci-host-thunder-pem";
1780 device_type = "pci";
1781 msi-parent = <&its>;
1782 msi-map = <0 &its 0x10000 0x10000>;
1783 bus-range = <0x1f 0x57>;
1784 #size-cells = <2>;
1785 #address-cells = <3>;
1786 #stream-id-cells = <1>;
1787 dma-coherent;
1788 reg = <0x8800 0x1f000000 0x0 0x39000000>, /* Configuration space */
1789 <0x87e0 0xc0000000 0x0 0x01000000>; /* PEM space */
1790 ranges = <0x01000000 0x00 0x00000000 0x8830 0x00000000 0x00 0x00010000>, /* I/O */
1791 <0x03000000 0x00 0x10000000 0x8810 0x10000000 0x0f 0xf0000000>, /* mem64 */
1792 <0x43000000 0x10 0x00000000 0x8820 0x00000000 0x10 0x00000000>, /* mem64-pref */
1793 <0x03000000 0x87e0 0xc0000000 0x87e0 0xc0000000 0x00 0x01000000>; /* mem64 PEM */
1794
1795 #interrupt-cells = <1>;
1796 interrupt-map-mask = <0 0 0 7>;
1797 interrupt-map = <0 0 0 1 &gic0 0 0 0 16 4>, /* INTA */
1798 <0 0 0 2 &gic0 0 0 0 17 4>, /* INTB */
1799 <0 0 0 3 &gic0 0 0 0 18 4>, /* INTC */
1800 <0 0 0 4 &gic0 0 0 0 19 4>; /* INTD */
1801 };
1802
1803 pem1: pci@87e0c1000000 {
1804 compatible = "cavium,pci-host-thunder-pem";
1805 device_type = "pci";
1806 msi-parent = <&its>;
1807 msi-map = <0 &its 0x10000 0x10000>;
1808 bus-range = <0x57 0x8f>;
1809 #size-cells = <2>;
1810 #address-cells = <3>;
1811 #stream-id-cells = <1>;
1812 dma-coherent;
1813 reg = <0x8840 0x57000000 0x0 0x39000000>, /* Configuration space */
1814 <0x87e0 0xc1000000 0x0 0x01000000>; /* PEM space */
1815 ranges = <0x01000000 0x00 0x00010000 0x8870 0x00010000 0x00 0x00010000>, /* I/O */
1816 <0x03000000 0x00 0x10000000 0x8850 0x10000000 0x0f 0xf0000000>, /* mem64 */
1817 <0x43000000 0x10 0x00000000 0x8860 0x00000000 0x10 0x00000000>, /* mem64-pref */
1818 <0x03000000 0x87e0 0xc1000000 0x87e0 0xc1000000 0x00 0x01000000>; /* mem64 PEM */
1819
1820 #interrupt-cells = <1>;
1821 interrupt-map-mask = <0 0 0 7>;
1822 interrupt-map = <0 0 0 1 &gic0 0 0 0 20 4>, /* INTA */
1823 <0 0 0 2 &gic0 0 0 0 21 4>, /* INTB */
1824 <0 0 0 3 &gic0 0 0 0 22 4>, /* INTC */
1825 <0 0 0 4 &gic0 0 0 0 23 4>; /* INTD */
1826 };
1827
1828 pem2: pci@87e0c2000000 {
1829 compatible = "cavium,pci-host-thunder-pem";
1830 device_type = "pci";
1831 msi-parent = <&its>;
1832 msi-map = <0 &its 0x10000 0x10000>;
1833 bus-range = <0x8f 0xc7>;
1834 #size-cells = <2>;
1835 #address-cells = <3>;
1836 #stream-id-cells = <1>;
1837 dma-coherent;
1838 reg = <0x8880 0x8f000000 0x0 0x39000000>, /* Configuration space */
1839 <0x87e0 0xc2000000 0x0 0x01000000>; /* PEM space */
1840 ranges = <0x01000000 0x00 0x00020000 0x88b0 0x00020000 0x00 0x00010000>, /* I/O */
1841 <0x03000000 0x00 0x10000000 0x8890 0x10000000 0x0f 0xf0000000>, /* mem64 */
1842 <0x43000000 0x10 0x00000000 0x88a0 0x00000000 0x10 0x00000000>, /* mem64-pref */
1843 <0x03000000 0x87e0 0xc2000000 0x87e0 0xc2000000 0x00 0x01000000>; /* mem64 PEM */
1844
1845 #interrupt-cells = <1>;
1846 interrupt-map-mask = <0 0 0 7>;
1847 interrupt-map = <0 0 0 1 &gic0 0 0 0 24 4>, /* INTA */
1848 <0 0 0 2 &gic0 0 0 0 25 4>, /* INTB */
1849 <0 0 0 3 &gic0 0 0 0 26 4>, /* INTC */
1850 <0 0 0 4 &gic0 0 0 0 27 4>; /* INTD */
1851 };
1852
1853 pem3: pci@87e0c3000000 {
1854 compatible = "cavium,pci-host-thunder-pem";
1855 device_type = "pci";
1856 msi-parent = <&its>;
1857 msi-map = <0 &its 0x30000 0x10000>;
1858 bus-range = <0x1f 0x57>;
1859 #size-cells = <2>;
1860 #address-cells = <3>;
1861 #stream-id-cells = <1>;
1862 dma-coherent;
1863 reg = <0x8900 0x1f000000 0x0 0x39000000>, /* Configuration space */
1864 <0x87e0 0xc3000000 0x0 0x01000000>; /* PEM space */
1865 ranges = <0x01000000 0x00 0x00030000 0x8930 0x00030000 0x00 0x00010000>, /* I/O */
1866 <0x03000000 0x00 0x10000000 0x8910 0x10000000 0x0f 0xf0000000>, /* mem64 */
1867 <0x43000000 0x10 0x00000000 0x8920 0x00000000 0x10 0x00000000>, /* mem64-pref */
1868 <0x03000000 0x87e0 0xc3000000 0x87e0 0xc3000000 0x00 0x01000000>; /* mem64 PEM */
1869
1870 #interrupt-cells = <1>;
1871 interrupt-map-mask = <0 0 0 7>;
1872 interrupt-map = <0 0 0 1 &gic0 0 0 0 28 4>, /* INTA */
1873 <0 0 0 2 &gic0 0 0 0 29 4>, /* INTB */
1874 <0 0 0 3 &gic0 0 0 0 30 4>, /* INTC */
1875 <0 0 0 4 &gic0 0 0 0 31 4>; /* INTD */
1876 };
1877
1878 pem4: pci@87e0c4000000 {
1879 compatible = "cavium,pci-host-thunder-pem";
1880 device_type = "pci";
1881 msi-parent = <&its>;
1882 msi-map = <0 &its 0x30000 0x10000>;
1883 bus-range = <0x57 0x8f>;
1884 #size-cells = <2>;
1885 #address-cells = <3>;
1886 #stream-id-cells = <1>;
1887 dma-coherent;
1888 reg = <0x8940 0x57000000 0x0 0x39000000>, /* Configuration space */
1889 <0x87e0 0xc4000000 0x0 0x01000000>; /* PEM space */
1890 ranges = <0x01000000 0x00 0x00040000 0x8970 0x00040000 0x00 0x00010000>, /* I/O */
1891 <0x03000000 0x00 0x10000000 0x8950 0x10000000 0x0f 0xf0000000>, /* mem64 */
1892 <0x43000000 0x10 0x00000000 0x8960 0x00000000 0x10 0x00000000>, /* mem64-pref */
1893 <0x03000000 0x87e0 0xc4000000 0x87e0 0xc4000000 0x00 0x01000000>; /* mem64 PEM */
1894
1895 #interrupt-cells = <1>;
1896 interrupt-map-mask = <0 0 0 7>;
1897 interrupt-map = <0 0 0 1 &gic0 0 0 0 32 4>, /* INTA */
1898 <0 0 0 2 &gic0 0 0 0 33 4>, /* INTB */
1899 <0 0 0 3 &gic0 0 0 0 34 4>, /* INTC */
1900 <0 0 0 4 &gic0 0 0 0 35 4>; /* INTD */
1901 };
1902
1903 pem5: pci@87e0c5000000 {
1904 compatible = "cavium,pci-host-thunder-pem";
1905 device_type = "pci";
1906 msi-parent = <&its>;
1907 msi-map = <0 &its 0x30000 0x10000>;
1908 bus-range = <0x8f 0xc7>;
1909 #size-cells = <2>;
1910 #address-cells = <3>;
1911 #stream-id-cells = <1>;
1912 dma-coherent;
1913 reg = <0x8980 0x8f000000 0x0 0x39000000>, /* Configuration space */
1914 <0x87e0 0xc5000000 0x0 0x01000000>; /* PEM space */
1915 ranges = <0x01000000 0x00 0x00050000 0x89b0 0x00050000 0x00 0x00010000>, /* I/O */
1916 <0x03000000 0x00 0x10000000 0x8990 0x10000000 0x0f 0xf0000000>, /* mem64 */
1917 <0x43000000 0x10 0x00000000 0x89a0 0x00000000 0x10 0x00000000>, /* mem64-pref */
1918 <0x03000000 0x87e0 0xc5000000 0x87e0 0xc5000000 0x00 0x01000000>; /* mem64 PEM */
1919
1920 #interrupt-cells = <1>;
1921 interrupt-map-mask = <0 0 0 7>;
1922 interrupt-map = <0 0 0 1 &gic0 0 0 0 36 4>, /* INTA */
1923 <0 0 0 2 &gic0 0 0 0 37 4>, /* INTB */
1924 <0 0 0 3 &gic0 0 0 0 38 4>, /* INTC */
1925 <0 0 0 4 &gic0 0 0 0 39 4>; /* INTD */
1926 };
1927
1928 };
1929
1930 soc@100000000000 {
1931 compatible = "simple-bus";
1932 #address-cells = <2>;
1933 #size-cells = <2>;
1934 ranges = <0x8000 0 0x9000 0x00000000 0x1000 0x00000000>;
1935 numa-node-id = <1>;
1936
1937 smmu4@830000000000 {
1938 compatible = "cavium,smmu-v2";
1939 reg = <0x8300 0x0 0x0 0x2000000>;
1940 #global-interrupts = <1>;
1941 interrupts = <0 76 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1942 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1943 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1944 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1945 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1946 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1947 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1948 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1949 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1950 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1951 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1952 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1953 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1954 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1955 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1956 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1957 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1958 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1959 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1960 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1961 <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>, <0 77 4>,
1962 <0 77 4>, <0 77 4>, <0 77 4>;
1963
1964 mmu-masters = <&ecam4 0x100>;
1965 };
1966
1967 smmu5@831000000000 {
1968 compatible = "cavium,smmu-v2";
1969 reg = <0x8310 0x0 0x0 0x2000000>;
1970 #global-interrupts = <1>;
1971 interrupts = <0 78 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1972 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1973 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1974 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1975 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1976 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1977 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1978 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1979 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1980 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1981 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1982 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1983 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1984 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1985 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1986 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1987 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1988 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1989 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1990 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1991 <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>, <0 79 4>,
1992 <0 79 4>, <0 79 4>, <0 79 4>;
1993
1994 mmu-masters = <&ecam5 0x100>,
1995 <&pem6 0x200>,
1996 <&pem7 0x300>,
1997 <&pem8 0x400>;
1998 };
1999
2000 smmu6@832000000000 {
2001 compatible = "cavium,smmu-v2";
2002 reg = <0x8320 0x0 0x0 0x2000000>;
2003 #global-interrupts = <1>;
2004 interrupts = <0 80 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2005 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2006 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2007 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2008 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2009 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2010 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2011 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2012 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2013 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2014 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2015 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2016 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2017 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2018 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2019 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2020 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2021 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2022 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2023 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2024 <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>, <0 81 4>,
2025 <0 81 4>, <0 81 4>, <0 81 4>;
2026
2027 mmu-masters = <&ecam6 0x100>;
2028 };
2029
2030 smmu7@833000000000 {
2031 compatible = "cavium,smmu-v2";
2032 reg = <0x8330 0x0 0x0 0x2000000>;
2033 #global-interrupts = <1>;
2034
2035 interrupts = <0 82 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2036 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2037 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2038 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2039 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2040 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2041 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2042 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2043 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2044 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2045 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2046 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2047 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2048 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2049 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2050 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2051 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2052 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2053 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2054 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2055 <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>, <0 83 4>,
2056 <0 83 4>, <0 83 4>, <0 83 4>;
2057
2058 mmu-masters = <&ecam7 0x100>,
2059 <&pem9 0x200>,
2060 <&pem10 0x300>,
2061 <&pem11 0x400>;
2062 };
2063
2064
2065 ecam4: pci@848000000000 {
2066 compatible = "cavium,pci-host-thunder-ecam";
2067 device_type = "pci";
2068 msi-parent = <&its1>;
2069 msi-map = <0 &its1 0x80000 0x10000>;
2070 bus-range = <0 31>;
2071 #size-cells = <2>;
2072 #address-cells = <3>;
2073 #stream-id-cells = <1>;
2074 dma-coherent;
2075 reg = <0x8480 0x00000000 0 0x02000000>; /* Configuration space */
2076 ranges = <0x03000000 0x8020 0x00000000 0x8020 0x00000000 0x060 0x00000000>, /* mem ranges */
2077 <0x03000000 0x8380 0x00000000 0x8380 0x00000000 0x0a0 0x00000000>, /* ZIP et al. */
2078 <0x03000000 0x8460 0x00000000 0x8460 0x00000000 0x020 0x00000000>, /* DFA et al. */
2079 <0x03000000 0x8680 0x00000000 0x8680 0x00000000 0x160 0x24000000>, /* hole for UARTs */
2080 <0x03000000 0x87e0 0x26000000 0x87e0 0x26000000 0x000 0x9a000000>, /* hole for PEMs */
2081 <0x03000000 0x87e0 0xc6000000 0x87e0 0xc6000000 0x01f 0x3a000000>;
2082
2083 mrml-bridge@1,0 {
2084 compatible = "cavium,thunder-8890-mrml-bridge";
2085 device_type = "pci";
2086 #size-cells = <2>;
2087 #address-cells = <3>;
2088 ranges = <0x03000000 0x87e0 0x00000000 0x03000000 0x87e0 0x00000000 0x10 0x00000000>;
2089 reg = <0x0800 0 0 0 0>; /* DEVFN = 0x08 (1:0) */
2090
2091 mdio-nexus@1,3 {
2092 compatible = "cavium,thunder-8890-mdio-nexus";
2093 #address-cells = <2>;
2094 #size-cells = <2>;
2095 reg = <0x0b00 0 0 0 0>; /* DEVFN = 0x0b (1:3) */
2096 assigned-addresses = <0x03000000 0x87e0 0x05000000 0x0 0x800000>;
2097 ranges = <0x87e0 0x05000000 0x03000000 0x87e0 0x05000000 0x0 0x800000>;
2098
2099 mdio@87e05003800 {
2100 compatible = "cavium,thunder-8890-mdio";
2101 #address-cells = <1>;
2102 #size-cells = <0>;
2103 reg = <0x87e0 0x05003800 0x0 0x30>;
2104
2105 sgmii20: sgmii@0 {
2106 qlm-mode = "0x100,sgmii";
2107 reg = <0> ;
2108 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2109 /* LED[2,1]: Speed, LED[3]: RX, LED[0]: TX, all open-drain */
2110 marvell,reg-init = <3 0x10 0 0x8665>,
2111 <3 0x11 0 0x00aa>,
2112 <3 0x12 0 0x4105>,
2113 <3 0x13 0 0x8a08>;
2114 };
2115 sgmii21: sgmii@1 {
2116 qlm-mode = "0x101,sgmii";
2117 reg = <1> ;
2118 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2119 marvell,reg-init = <3 0x10 0 0x8665>,
2120 <3 0x11 0 0x00aa>,
2121 <3 0x12 0 0x4105>,
2122 <3 0x13 0 0x8a08>;
2123 };
2124 sgmii22: sgmii@2 {
2125 qlm-mode = "0x102,sgmii";
2126 reg = <2> ;
2127 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2128 marvell,reg-init = <3 0x10 0 0x8665>,
2129 <3 0x11 0 0x00aa>,
2130 <3 0x12 0 0x4105>,
2131 <3 0x13 0 0x8a08>;
2132 };
2133 sgmii23: sgmii@3 {
2134 qlm-mode = "0x103,sgmii";
2135 reg = <3> ;
2136 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2137 marvell,reg-init = <3 0x10 0 0x8665>,
2138 <3 0x11 0 0x00aa>,
2139 <3 0x12 0 0x4105>,
2140 <3 0x13 0 0x8a08>;
2141 };
2142 xfi20: xfi@0 {
2143 qlm-mode = "0x100,xfi","0x100,xfi-10g-kr";
2144 reg = <0> ;
2145 compatible = "cortina,cs4223-slice";
2146 };
2147 xfi21: xfi@1 {
2148 qlm-mode = "0x101,xfi","0x101,xfi-10g-kr";
2149 reg = <1> ;
2150 compatible = "cortina,cs4223-slice";
2151 };
2152 xfi22: xfi@2 {
2153 qlm-mode = "0x102,xfi","0x102,xfi-10g-kr";
2154 reg = <2> ;
2155 compatible = "cortina,cs4223-slice";
2156 };
2157 xfi23: xfi@3 {
2158 qlm-mode = "0x103,xfi","0x103,xfi-10g-kr";
2159 reg = <3> ;
2160 compatible = "cortina,cs4223-slice";
2161 };
2162 xlaui20: xlaui@0 {
2163 qlm-mode = "0x100,xlaui","0x100,xlaui-40g-kr";
2164 reg = <0> ;
2165 compatible = "cortina,cs4223-slice";
2166 };
2167 xaui20: xaui@0 {
2168 qlm-mode = "0x100,xaui";
2169 reg = <0> ;
2170 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
2171 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
2172 };
2173 rxaui20: rxaui@0 {
2174 qlm-mode = "0x100,rxaui";
2175 reg = <0> ;
2176 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
2177 };
2178 rxaui22: rxaui@1 {
2179 qlm-mode = "0x102,rxaui";
2180 reg = <1> ;
2181 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
2182 };
2183 };
2184
2185 mdio@87e005003880 {
2186 compatible = "cavium,thunder-8890-mdio";
2187 #address-cells = <1>;
2188 #size-cells = <0>;
2189 reg = <0x87e0 0x05003880 0x0 0x30>;
2190
2191 sgmii30: sgmii@4 {
2192 qlm-mode = "0x110,sgmii";
2193 reg = <4> ;
2194 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2195 marvell,reg-init = <3 0x10 0 0x8665>,
2196 <3 0x11 0 0x00aa>,
2197 <3 0x12 0 0x4105>,
2198 <3 0x13 0 0x8a08>;
2199 };
2200 sgmii31: sgmii@5 {
2201 qlm-mode = "0x111,sgmii";
2202 reg = <5> ;
2203 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2204 marvell,reg-init = <3 0x10 0 0x8665>,
2205 <3 0x11 0 0x00aa>,
2206 <3 0x12 0 0x4105>,
2207 <3 0x13 0 0x8a08>;
2208
2209 };
2210 sgmii32: sgmii@6 {
2211 qlm-mode = "0x112,sgmii";
2212 reg = <6> ;
2213 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2214 marvell,reg-init = <3 0x10 0 0x8665>,
2215 <3 0x11 0 0x00aa>,
2216 <3 0x12 0 0x4105>,
2217 <3 0x13 0 0x8a08>;
2218 };
2219 sgmii33: sgmii@7 {
2220 qlm-mode = "0x113,sgmii";
2221 reg = <7> ;
2222 compatible = "marvell,88e1240", "ethernet-phy-ieee802.3-c22";
2223 marvell,reg-init = <3 0x10 0 0x8665>,
2224 <3 0x11 0 0x00aa>,
2225 <3 0x12 0 0x4105>,
2226 <3 0x13 0 0x8a08>;
2227 };
2228 xfi30: xfi@0 {
2229 qlm-mode = "0x110,xfi","0x110,xfi-10g-kr";
2230 reg = <0> ;
2231 compatible = "cortina,cs4223-slice";
2232 };
2233 xfi31: xfi@1 {
2234 qlm-mode = "0x111,xfi","0x111,xfi-10g-kr";
2235 reg = <1> ;
2236 compatible = "cortina,cs4223-slice";
2237 };
2238 xfi32: xfi@2 {
2239 qlm-mode = "0x112,xfi","0x112,xfi-10g-kr";
2240 reg = <2> ;
2241 compatible = "cortina,cs4223-slice";
2242 };
2243 xfi33: xfi@3 {
2244 qlm-mode = "0x113,xfi","0x113,xfi-10g-kr";
2245 reg = <3> ;
2246 compatible = "cortina,cs4223-slice";
2247 };
2248 xlaui30: xlaui@0 {
2249 qlm-mode = "0x110,xlaui","0x110,xlaui-40g-kr";
2250 reg = <0> ;
2251 compatible = "cortina,cs4223-slice";
2252 };
2253 xaui30: xaui@4 {
2254 qlm-mode = "0x110,xaui";
2255 reg = <4> ;
2256 compatible = "broadcom,bcm8706", "ethernet-phy-ieee802.3-c45";
2257 broadcom,c45-reg-init = <1 0xc808 0xff8f 0x70>;
2258 };
2259 rxaui30: rxaui@0 {
2260 qlm-mode = "0x110,rxaui";
2261 reg = <0> ;
2262 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
2263 };
2264 rxaui32: rxaui@1 {
2265 qlm-mode = "0x112,rxaui";
2266 reg = <1> ;
2267 compatible = "marvell,88x3120", "ethernet-phy-ieee802.3-c45";
2268 };
2269 };
2270 };
2271
2272
2273
2274 bgx2 {
2275 #address-cells = <1>;
2276 #size-cells = <0>;
2277 reg = <0x8000 0 0 0 0>; /* DEVFN = 0x80 (16:0) */
2278 /* typename+qlm+typenumber eg :
2279 sgmii+bgx0+sgmmi0
2280 */
2281 // SGMII
2282 sgmii@0 {
2283 reg = <0>;
2284 qlm-mode = "0x100,sgmii";
2285 local-mac-address = [ 00 00 00 00 00 00 ];
2286 phy-handle = <&sgmii20>;
2287 };
2288 sgmii@1 {
2289 reg = <1>;
2290 qlm-mode = "0x101,sgmii";
2291 local-mac-address = [ 00 00 00 00 00 00 ];
2292 phy-handle = <&sgmii21>;
2293 };
2294 sgmii@2 {
2295 reg = <2>;
2296 qlm-mode = "0x102,sgmii";
2297 local-mac-address = [ 00 00 00 00 00 00 ];
2298 phy-handle = <&sgmii22>;
2299 };
2300 sgmii@3 {
2301 reg = <3>;
2302 qlm-mode = "0x103,sgmii";
2303 local-mac-address = [ 00 00 00 00 00 00 ];
2304 phy-handle = <&sgmii23>;
2305 };
2306 xfi@0 {
2307 reg = <0>;
2308 qlm-mode = "0x100,xfi";
2309 local-mac-address = [ 00 00 00 00 00 00 ];
2310 phy-handle = <&xfi20>;
2311 };
2312 xfi@1 {
2313 reg = <1>;
2314 qlm-mode = "0x101,xfi";
2315 local-mac-address = [ 00 00 00 00 00 00 ];
2316 phy-handle = <&xfi21>;
2317 };
2318 xfi@2 {
2319 reg = <2>;
2320 qlm-mode = "0x102,xfi";
2321 local-mac-address = [ 00 00 00 00 00 00 ];
2322 phy-handle = <&xfi22>;
2323 };
2324 xfi@3 {
2325 reg = <3>;
2326 qlm-mode = "0x103,xfi";
2327 local-mac-address = [ 00 00 00 00 00 00 ];
2328 phy-handle = <&xfi23>;
2329 };
2330 // 10g-kr
2331 xfi-10g-kr@0 {
2332 reg = <0>;
2333 qlm-mode = "0x100,xfi-10g-kr";
2334 local-mac-address = [ 00 00 00 00 00 00 ];
2335 phy-handle = <&xfi20>;
2336 };
2337 xfi-10g-kr@1 {
2338 reg = <1>;
2339 qlm-mode = "0x101,xfi-10g-kr";
2340 local-mac-address = [ 00 00 00 00 00 00 ];
2341 phy-handle = <&xfi21>;
2342 };
2343 xfi-10g-kr@2 {
2344 reg = <2>;
2345 qlm-mode = "0x102,xfi-10g-kr";
2346 local-mac-address = [ 00 00 00 00 00 00 ];
2347 phy-handle = <&xfi22>;
2348 };
2349 xfi-10g-kr@3 {
2350 reg = <3>;
2351 qlm-mode = "0x103,xfi-10g-kr";
2352 local-mac-address = [ 00 00 00 00 00 00 ];
2353 phy-handle = <&xfi23>;
2354 };
2355 xlaui@0 {
2356 reg = <0>;
2357 qlm-mode = "0x100,xlaui";
2358 local-mac-address = [ 00 00 00 00 00 00 ];
2359 phy-handle = <&xlaui20>;
2360 };
2361 xlaui-40g-kr@0 {
2362 reg = <0>;
2363 qlm-mode = "0x100,xlaui-40g-kr";
2364 local-mac-address = [ 00 00 00 00 00 00 ];
2365 phy-handle = <&xlaui20>;
2366 };
2367 xaui@0 {
2368 reg = <0>;
2369 qlm-mode = "0x100,xaui";
2370 local-mac-address = [ 00 00 00 00 00 00 ];
2371 phy-handle = <&xaui20>;
2372 };
2373 rxaui@0 {
2374 reg = <0>;
2375 qlm-mode = "0x100,rxaui";
2376 local-mac-address = [ 00 00 00 00 00 00 ];
2377 phy-handle = <&rxaui20>;
2378 };
2379 rxaui@2 {
2380 reg = <2>;
2381 qlm-mode = "0x102,rxaui";
2382 local-mac-address = [ 00 00 00 00 00 00 ];
2383 phy-handle = <&rxaui22>;
2384 };
2385 };
2386
2387 bgx3 {
2388 #address-cells = <1>;
2389 #size-cells = <0>;
2390 reg = <0x8100 0 0 0 0>; /* DEVFN = 0x81 (16:1) */
2391
2392 sgmii@0 {
2393 reg = <0>;
2394 qlm-mode = "0x110,sgmii";
2395 local-mac-address = [ 00 00 00 00 00 00 ];
2396 phy-handle = <&sgmii30>; /*"sgmmi"+bgx+no */
2397 };
2398 sgmii@1 {
2399 reg = <1>;
2400 qlm-mode = "0x111,sgmii";
2401 local-mac-address = [ 00 00 00 00 00 00 ];
2402 phy-handle = <&sgmii31>;
2403 };
2404 sgmii@2 {
2405 reg = <2>;
2406 qlm-mode = "0x112,sgmii";
2407 local-mac-address = [ 00 00 00 00 00 00 ];
2408 phy-handle = <&sgmii32>;
2409 };
2410 sgmii@3 {
2411 reg = <3>;
2412 qlm-mode = "0x113,sgmii";
2413 local-mac-address = [ 00 00 00 00 00 00 ];
2414 phy-handle = <&sgmii33>;
2415 };
2416 xfi@0 {
2417 reg = <0>;
2418 qlm-mode = "0x110,xfi";
2419 local-mac-address = [ 00 00 00 00 00 00 ];
2420 phy-handle = <&xfi30>;
2421 };
2422 xfi@1 {
2423 reg = <1>;
2424 qlm-mode = "0x111,xfi";
2425 local-mac-address = [ 00 00 00 00 00 00 ];
2426 phy-handle = <&xfi31>;
2427 };
2428 xfi@2 {
2429 reg = <2>;
2430 qlm-mode = "0x112,xfi";
2431 local-mac-address = [ 00 00 00 00 00 00 ];
2432 phy-handle = <&xfi32>;
2433 };
2434 xfi@3 {
2435 reg = <3>;
2436 qlm-mode = "0x113,xfi";
2437 local-mac-address = [ 00 00 00 00 00 00 ];
2438 phy-handle = <&xfi33>;
2439 };
2440 // 10g_kr
2441 xfi-10g-kr@0 {
2442 reg = <0>;
2443 qlm-mode = "0x110,xfi-10g-kr";
2444 local-mac-address = [ 00 00 00 00 00 00 ];
2445 phy-handle = <&xfi30>;
2446 };
2447 xfi-10g-kr@1 {
2448 reg = <1>;
2449 qlm-mode = "0x111,xfi-10g-kr";
2450 local-mac-address = [ 00 00 00 00 00 00 ];
2451 phy-handle = <&xfi31>;
2452 };
2453 xfi-10g-kr@2 {
2454 reg = <2>;
2455 qlm-mode = "0x112,xfi-10g-kr";
2456 local-mac-address = [ 00 00 00 00 00 00 ];
2457 phy-handle = <&xfi32>;
2458 };
2459 xfi-10g-kr@3 {
2460 reg = <3>;
2461 qlm-mode = "0x113,xfi-10g-kr";
2462 local-mac-address = [ 00 00 00 00 00 00 ];
2463 phy-handle = <&xfi33>;
2464 };
2465 xlaui@0 {
2466 reg = <0>;
2467 qlm-mode = "0x110,xlaui";
2468 local-mac-address = [ 00 00 00 00 00 00 ];
2469 phy-handle = <&xlaui30>;
2470 };
2471 xlaui-40g-kr@0 {
2472 reg = <0>;
2473 qlm-mode = "0x110,xlaui-40g-kr";
2474 local-mac-address = [ 00 00 00 00 00 00 ];
2475 phy-handle = <&xlaui30>;
2476 };
2477 xaui@0 {
2478 reg = <0>;
2479 qlm-mode = "0x110,xaui";
2480 local-mac-address = [ 00 00 00 00 00 00 ];
2481 phy-handle = <&xaui30>;
2482 };
2483 rxaui@0 {
2484 reg = <0>;
2485 qlm-mode = "0x110,rxaui";
2486 local-mac-address = [ 00 00 00 00 00 00 ];
2487 phy-handle = <&rxaui30>;
2488 };
2489 rxaui@2 {
2490 reg = <2>;
2491 qlm-mode = "0x112,rxaui";
2492 local-mac-address = [ 00 00 00 00 00 00 ];
2493 phy-handle = <&rxaui32>;
2494 };
2495 };
2496 };
2497 };
2498
2499 ecam5: pci@849000000000 {
2500 compatible = "cavium,pci-host-thunder-ecam";
2501 device_type = "pci";
2502 msi-parent = <&its1>;
2503 msi-map = <0 &its1 0x90000 0x10000>;
2504 bus-range = <0 31>;
2505 #size-cells = <2>;
2506 #address-cells = <3>;
2507 #stream-id-cells = <1>;
2508 dma-coherent;
2509 reg = <0x8490 0x00000000 0 0x02000000>; /* Configuration space */
2510 ranges = <0x03000000 0x8100 0x00000000 0x8100 0x00000000 0x80 0x00000000>; /* mem ranges */
2511 };
2512
2513 ecam6: pci@84a000000000 {
2514 compatible = "cavium,pci-host-thunder-ecam";
2515 device_type = "pci";
2516 msi-parent = <&its1>;
2517 msi-map = <0 &its1 0xa0000 0x10000>;
2518 bus-range = <0 31>;
2519 #size-cells = <2>;
2520 #address-cells = <3>;
2521 #stream-id-cells = <1>;
2522 dma-coherent;
2523 reg = <0x84a0 0x00000000 0 0x02000000>; /* Configuration space */
2524 ranges = <0x03000000 0x8420 0x00000000 0x8420 0x00000000 0x20 0x00000000>; /* mem ranges */
2525 };
2526
2527 ecam7: pci@84b000000000 {
2528 compatible = "cavium,pci-host-thunder-ecam";
2529 device_type = "pci";
2530 msi-parent = <&its1>;
2531 msi-map = <0 &its1 0xb0000 0x10000>;
2532 bus-range = <0 31>;
2533 #size-cells = <2>;
2534 #address-cells = <3>;
2535 #stream-id-cells = <1>;
2536 dma-coherent;
2537 reg = <0x84b0 0x00000000 0 0x02000000>; /* Configuration space */
2538 ranges = <0x03000000 0x8180 0x00000000 0x8180 0x00000000 0x80 0x00000000>; /* mem ranges */
2539 };
2540
2541 pem6: pci@87e0c0000000 {
2542 compatible = "cavium,pci-host-thunder-pem";
2543 device_type = "pci";
2544 msi-parent = <&its1>;
2545 msi-map = <0 &its1 0x90000 0x10000>;
2546 bus-range = <0x1f 0x57>;
2547 #size-cells = <2>;
2548 #address-cells = <3>;
2549 #stream-id-cells = <1>;
2550 dma-coherent;
2551 reg = <0x8800 0x1f000000 0x0 0x39000000>, /* Configuration space */
2552 <0x87e0 0xc0000000 0x0 0x01000000>; /* PEM space */
2553 ranges = <0x01000000 0x00 0x00000000 0x8830 0x00000000 0x00 0x00010000>, /* I/O */
2554 <0x03000000 0x00 0x10000000 0x8810 0x10000000 0x0f 0xf0000000>, /* mem64 */
2555 <0x43000000 0x10 0x00000000 0x8820 0x00000000 0x10 0x00000000>, /* mem64-pref */
2556 <0x03000000 0x87e0 0xc0000000 0x87e0 0xc0000000 0x00 0x01000000>; /* mem64 PEM */
2557
2558 #interrupt-cells = <1>;
2559 interrupt-map-mask = <0 0 0 7>;
2560 interrupt-map = <0 0 0 1 &gic0 0 0 0 40 4>, /* INTA */
2561 <0 0 0 2 &gic0 0 0 0 41 4>, /* INTB */
2562 <0 0 0 3 &gic0 0 0 0 42 4>, /* INTC */
2563 <0 0 0 4 &gic0 0 0 0 43 4>; /* INTD */
2564 };
2565
2566 pem7: pci@87e0c1000000 {
2567 compatible = "cavium,pci-host-thunder-pem";
2568 device_type = "pci";
2569 msi-parent = <&its1>;
2570 msi-map = <0 &its1 0x90000 0x10000>;
2571 bus-range = <0x57 0x8f>;
2572 #size-cells = <2>;
2573 #address-cells = <3>;
2574 #stream-id-cells = <1>;
2575 dma-coherent;
2576 reg = <0x8840 0x57000000 0x0 0x39000000>, /* Configuration space */
2577 <0x87e0 0xc1000000 0x0 0x01000000>; /* PEM space */
2578 ranges = <0x01000000 0x00 0x00010000 0x8870 0x00010000 0x00 0x00010000>, /* I/O */
2579 <0x03000000 0x00 0x10000000 0x8850 0x10000000 0x0f 0xf0000000>, /* mem64 */
2580 <0x43000000 0x10 0x00000000 0x8860 0x00000000 0x10 0x00000000>, /* mem64-pref */
2581 <0x03000000 0x87e0 0xc1000000 0x87e0 0xc1000000 0x00 0x01000000>; /* mem64 PEM */
2582
2583 #interrupt-cells = <1>;
2584 interrupt-map-mask = <0 0 0 7>;
2585 interrupt-map = <0 0 0 1 &gic0 0 0 0 44 4>, /* INTA */
2586 <0 0 0 2 &gic0 0 0 0 45 4>, /* INTB */
2587 <0 0 0 3 &gic0 0 0 0 46 4>, /* INTC */
2588 <0 0 0 4 &gic0 0 0 0 47 4>; /* INTD */
2589 };
2590
2591 pem8: pci@87e0c2000000 {
2592 compatible = "cavium,pci-host-thunder-pem";
2593 device_type = "pci";
2594 msi-parent = <&its1>;
2595 msi-map = <0 &its1 0x90000 0x10000>;
2596 bus-range = <0x8f 0xc7>;
2597 #size-cells = <2>;
2598 #address-cells = <3>;
2599 #stream-id-cells = <1>;
2600 dma-coherent;
2601 reg = <0x8880 0x8f000000 0x0 0x39000000>, /* Configuration space */
2602 <0x87e0 0xc2000000 0x0 0x01000000>; /* PEM space */
2603 ranges = <0x01000000 0x00 0x00020000 0x88b0 0x00020000 0x00 0x00010000>, /* I/O */
2604 <0x03000000 0x00 0x10000000 0x8890 0x10000000 0x0f 0xf0000000>, /* mem64 */
2605 <0x43000000 0x10 0x00000000 0x88a0 0x00000000 0x10 0x00000000>, /* mem64-pref */
2606 <0x03000000 0x87e0 0xc2000000 0x87e0 0xc2000000 0x00 0x01000000>; /* mem64 PEM */
2607
2608 #interrupt-cells = <1>;
2609 interrupt-map-mask = <0 0 0 7>;
2610 interrupt-map = <0 0 0 1 &gic0 0 0 0 48 4>, /* INTA */
2611 <0 0 0 2 &gic0 0 0 0 49 4>, /* INTB */
2612 <0 0 0 3 &gic0 0 0 0 50 4>, /* INTC */
2613 <0 0 0 4 &gic0 0 0 0 51 4>; /* INTD */
2614 };
2615
2616 pem9: pci@87e0c3000000 {
2617 compatible = "cavium,pci-host-thunder-pem";
2618 device_type = "pci";
2619 msi-parent = <&its1>;
2620 msi-map = <0 &its1 0xb0000 0x10000>;
2621 bus-range = <0x1f 0x57>;
2622 #size-cells = <2>;
2623 #address-cells = <3>;
2624 #stream-id-cells = <1>;
2625 dma-coherent;
2626 reg = <0x8900 0x1f000000 0x0 0x39000000>, /* Configuration space */
2627 <0x87e0 0xc3000000 0x0 0x01000000>; /* PEM space */
2628 ranges = <0x01000000 0x00 0x00030000 0x8930 0x00030000 0x00 0x00010000>, /* I/O */
2629 <0x03000000 0x00 0x10000000 0x8910 0x10000000 0x0f 0xf0000000>, /* mem64 */
2630 <0x43000000 0x10 0x00000000 0x8920 0x00000000 0x10 0x00000000>, /* mem64-pref */
2631 <0x03000000 0x87e0 0xc3000000 0x87e0 0xc3000000 0x00 0x01000000>; /* mem64 PEM */
2632
2633 #interrupt-cells = <1>;
2634 interrupt-map-mask = <0 0 0 7>;
2635 interrupt-map = <0 0 0 1 &gic0 0 0 0 52 4>, /* INTA */
2636 <0 0 0 2 &gic0 0 0 0 53 4>, /* INTB */
2637 <0 0 0 3 &gic0 0 0 0 54 4>, /* INTC */
2638 <0 0 0 4 &gic0 0 0 0 55 4>; /* INTD */
2639 };
2640
2641 pem10: pci@87e0c4000000 {
2642 compatible = "cavium,pci-host-thunder-pem";
2643 device_type = "pci";
2644 msi-parent = <&its1>;
2645 msi-map = <0 &its1 0xb0000 0x10000>;
2646 bus-range = <0x57 0x8f>;
2647 #size-cells = <2>;
2648 #address-cells = <3>;
2649 #stream-id-cells = <1>;
2650 dma-coherent;
2651 reg = <0x8940 0x57000000 0x0 0x39000000>, /* Configuration space */
2652 <0x87e0 0xc4000000 0x0 0x01000000>; /* PEM space */
2653 ranges = <0x01000000 0x00 0x00040000 0x8970 0x00040000 0x00 0x00010000>, /* I/O */
2654 <0x03000000 0x00 0x10000000 0x8950 0x10000000 0x0f 0xf0000000>, /* mem64 */
2655 <0x43000000 0x10 0x00000000 0x8960 0x00000000 0x10 0x00000000>, /* mem64-pref */
2656 <0x03000000 0x87e0 0xc4000000 0x87e0 0xc4000000 0x00 0x01000000>; /* mem64 PEM */
2657
2658 #interrupt-cells = <1>;
2659 interrupt-map-mask = <0 0 0 7>;
2660 interrupt-map = <0 0 0 1 &gic0 0 0 0 56 4>, /* INTA */
2661 <0 0 0 2 &gic0 0 0 0 57 4>, /* INTB */
2662 <0 0 0 3 &gic0 0 0 0 58 4>, /* INTC */
2663 <0 0 0 4 &gic0 0 0 0 59 4>; /* INTD */
2664 };
2665
2666 pem11: pci@87e0c5000000 {
2667 compatible = "cavium,pci-host-thunder-pem";
2668 device_type = "pci";
2669 msi-parent = <&its1>;
2670 msi-map = <0 &its1 0xb0000 0x10000>;
2671 bus-range = <0x8f 0xc7>;
2672 #size-cells = <2>;
2673 #address-cells = <3>;
2674 #stream-id-cells = <1>;
2675 dma-coherent;
2676 reg = <0x8980 0x8f000000 0x0 0x39000000>, /* Configuration space */
2677 <0x87e0 0xc5000000 0x0 0x01000000>; /* PEM space */
2678 ranges = <0x01000000 0x00 0x00050000 0x89b0 0x00050000 0x00 0x00010000>, /* I/O */
2679 <0x03000000 0x00 0x10000000 0x8990 0x10000000 0x0f 0xf0000000>, /* mem64 */
2680 <0x43000000 0x10 0x00000000 0x89a0 0x00000000 0x10 0x00000000>, /* mem64-pref */
2681 <0x03000000 0x87e0 0xc5000000 0x87e0 0xc5000000 0x00 0x01000000>; /* mem64 PEM */
2682
2683 #interrupt-cells = <1>;
2684 interrupt-map-mask = <0 0 0 7>;
2685 interrupt-map = <0 0 0 1 &gic0 0 0 0 60 4>, /* INTA */
2686 <0 0 0 2 &gic0 0 0 0 61 4>, /* INTB */
2687 <0 0 0 3 &gic0 0 0 0 62 4>, /* INTC */
2688 <0 0 0 4 &gic0 0 0 0 63 4>; /* INTD */
2689 };
2690 };
2691
2692 aliases {
2693 serial0 = &uaa0;
2694 serial1 = &uaa1;
2695 };
2696
2697 chosen {
2698 stdout-path = "serial0:115200n8";
2699 };
2700
2701 memory@0 {
2702 device_type = "memory";
2703 reg = <0x0 0x01400000 0x3 0xFEC00000>;
2704 /* socket 0 */
2705 numa-node-id = <0>;
2706 };
2707
2708 memory@10000000000 {
2709 device_type = "memory";
2710 reg = <0x100 0x00400000 0x3 0xFFC00000>;
2711 /* socket 1 */
2712 numa-node-id = <1>;
2713 };
2714
2715 distance-map {
2716 compatible = "numa-distance-map-v1";
2717 distance-matrix = <0 0 10>,
2718 <0 1 20>,
2719 <1 1 10>;
2720 };
2721};
diff --git a/recipes-kernel/linux/linux-cavium/dts/nas8104-linux.dts b/recipes-kernel/linux/linux-cavium/dts/nas8104-linux.dts
deleted file mode 100644
index 5541daa..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/nas8104-linux.dts
+++ /dev/null
@@ -1,156 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn81xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 sgmii00: sgmii00 {
58 qlm-mode = "0x000,sgmii";
59 reg = <0x0> ;
60 compatible = "marvell,88e1510", "ethernet-phy-ieee802.3-c22";
61 };
62 sgmii01: sgmii01 {
63 qlm-mode = "0x001,sgmii";
64 reg = <0x1> ;
65 compatible = "marvell,88e1510", "ethernet-phy-ieee802.3-c22";
66 };
67 };
68 mdio1@87e005003880 {
69 xfi10: xfi10 {
70 qlm-mode = "0x010,xfi";
71 reg = <0x0>;
72 compatible = "aquantia,aqr105", "ethernet-phy-ieee802.3-c45";
73 };
74 };
75 };
76
77 bgx0 {
78 /* typename+qlm+typenumber eg :
79 sgmii+bgx0+sgmmi0
80 */
81 sgmii00 {
82 reg = <0>;
83 qlm-mode = "0x000,sgmii";
84 local-mac-address = [00 00 00 00 00 00];
85 phy-handle = <&sgmii00>;
86 };
87 sgmii01 {
88 reg = <1>;
89 qlm-mode = "0x001,sgmii";
90 local-mac-address = [00 00 00 00 00 00];
91 phy-handle = <&sgmii01>;
92 };
93
94 };
95
96 bgx1 {
97 xfi10 {
98 reg = <0>;
99 qlm-mode = "0x010,xfi";
100 local-mac-address = [00 00 00 00 00 00];
101 phy-handle = <&xfi10>;
102 };
103 };
104};
105
106&mmc_1_4 {
107 /* NOTE: the BDK is responsible for swapping the two slots.
108 * Unfortunately there does not appear to be any way to read the
109 * position of SW2-7 in software.
110 */
111 mmc-slot@0 {
112 compatible = "mmc-slot";
113 reg = <0>;
114 vmmc-supply = <&mmc_supply_3v3>;
115 max-frequency = <26000000>;
116 /* 1.8v is not supported */
117 no-1-8-v;
118 /* Bus width is only 4 bits maximum */
119 bus-width = <4>;
120 /* No write-protect switch is present */
121 disable-wp;
122 /* There is no card detection available; polling must be used. */
123 broken-cd;
124 /* High-speed mode is supported */
125 cap-sd-highspeed;
126 };
127 mmc-slot@1 {
128 compatible = "mmc-slot";
129 reg = <1>;
130 vmmc-supply = <&mmc_supply_3v3>;
131 max-frequency = <26000000>;
132 mmc-ddr-3_3v;
133 /* 1.8v is not supported */
134 no-1-8-v;
135 /* Bus width is only 8 bits maximum */
136 bus-width = <8>;
137 /* No write-protect switch is present */
138 disable-wp;
139 /* There is no card detection available; polling must be used. */
140 broken-cd;
141 /* High-speed mode is supported */
142 cap-mmc-highspeed;
143 /* eMMC device is soldered onto the board */
144 non-removable;
145 };
146};
147
148&spi_7_0 {
149 flash@0 {
150 compatible = "macronix,mx25l3206e", "jedec,spi-nor";
151 reg = <0x0>;
152 spi-max-frequency = <16000000>;
153 #address-cells = <1>;
154 #size-cells = <1>;
155 };
156};
diff --git a/recipes-kernel/linux/linux-cavium/dts/rbd8030-linux.dts b/recipes-kernel/linux/linux-cavium/dts/rbd8030-linux.dts
deleted file mode 100644
index 2289707..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/rbd8030-linux.dts
+++ /dev/null
@@ -1,190 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn81xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 rgmii00: rgmii00 {
58 reg = <0> ;
59 compatible = "vitesse,vsc8531", "ethernet-phy-ieee802.3-c22";
60 };
61 };
62 mdio1@87e005003880 {
63 xfi11: xfi11 {
64 qlm-mode = "0x011,xfi";
65 reg = <0>;
66 compatible = "aquantia,aqr105", "ethernet-phy-ieee802.3-c45";
67 };
68 };
69 };
70
71 rgx0 {
72 rgmii00 {
73 reg = <0>;
74 local-mac-address = [00 00 00 00 00 00];
75 phy-handle = <&rgmii00>;
76 };
77 };
78
79 bgx0 {
80 /* typename+qlm+typenumber eg :
81 qsgmii+bgx0+sgmmi0
82 */
83 qsgmii00 {
84 reg = <0>;
85 qlm-mode = "0x000,qsgmii";
86 local-mac-address = [00 00 00 00 00 00];
87 cavium,disable-autonegotiation;
88 };
89 qsgmii01 {
90 reg = <1>;
91 qlm-mode = "0x001,qsgmii";
92 local-mac-address = [00 00 00 00 00 00];
93 cavium,disable-autonegotiation;
94 };
95 qsgmii02 {
96 reg = <2>;
97 qlm-mode = "0x002,qsgmii";
98 local-mac-address = [00 00 00 00 00 00];
99 cavium,disable-autonegotiation;
100 };
101 qsgmii03 {
102 reg = <3>;
103 qlm-mode = "0x003,qsgmii";
104 local-mac-address = [00 00 00 00 00 00];
105 cavium,disable-autonegotiation;
106 };
107 };
108
109 bgx1 {
110 /* vitesse vsc7224 */
111 xfi10 {
112 reg = <0>;
113 qlm-mode = "0x010,xfi";
114 local-mac-address = [00 00 00 00 00 00];
115 cavium,disable-autonegotiation;
116 };
117 /* aquantia aqr107 */
118 xfi11 {
119 reg = <1>;
120 qlm-mode = "0x011,xfi";
121 local-mac-address = [00 00 00 00 00 00];
122 phy-handle = <&xfi11>;
123 };
124 };
125};
126
127&mmc_1_4 {
128 /* NOTE: the BDK is responsible for swapping the two slots.
129 * Unfortunately there does not appear to be any way to read the
130 * position of SW2-7 in software.
131 */
132 mmc-slot@0 {
133 compatible = "mmc-slot";
134 reg = <0>;
135 vmmc-supply = <&mmc_supply_3v3>;
136 max-frequency = <26000000>;
137 /* 1.8v is not supported */
138 no-1-8-v;
139 /* Bus width is only 4 bits maximum */
140 bus-width = <4>;
141 /* No write-protect switch is present */
142 disable-wp;
143 /* There is no card detection available; polling must be used. */
144 broken-cd;
145 /* High-speed mode is supported */
146 cap-sd-highspeed;
147 /* speed up device probing */
148 no-sdio;
149 no-mmc;
150 };
151 mmc-slot@1 {
152 compatible = "mmc-slot";
153 reg = <1>;
154 vmmc-supply = <&mmc_supply_3v3>;
155 max-frequency = <26000000>;
156 mmc-ddr-3_3v;
157 /* 1.8v is not supported */
158 no-1-8-v;
159 /* Bus width is only 8 bits maximum */
160 bus-width = <8>;
161 /* No write-protect switch is present */
162 disable-wp;
163 /* There is no card detection available; polling must be used. */
164 broken-cd;
165 /* High-speed mode is supported */
166 cap-mmc-highspeed;
167 /* eMMC device is soldered onto the board */
168 non-removable;
169 /* speed up device probing */
170 no-sdio;
171 no-sd;
172 };
173};
174
175&i2c_9_0 {
176 rtc@68 {
177 compatible = "dallas,ds1337";
178 reg = <0x68>;
179 };
180};
181
182&spi_7_0 {
183 flash@0 {
184 compatible = "micron,n25q128a13", "spi-flash";
185 reg = <0x0>;
186 spi-max-frequency = <16000000>;
187 #address-cells = <1>;
188 #size-cells = <1>;
189 };
190};
diff --git a/recipes-kernel/linux/linux-cavium/dts/sff8104-linux.dts b/recipes-kernel/linux/linux-cavium/dts/sff8104-linux.dts
deleted file mode 100644
index 1f45e25..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/sff8104-linux.dts
+++ /dev/null
@@ -1,317 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2016, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn81xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 rgmii00: rgmii00 {
58 reg = <0> ;
59 compatible = "marvell,88e1510", "ethernet-phy-ieee802.3-c22";
60 };
61
62 qsgmii00: qsgmii00 {
63 qlm-mode = "0x000,qsgmii";
64 reg = <0x10> ;
65 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
66 };
67 qsgmii01: qsgmii01 {
68 qlm-mode = "0x001,qsgmii";
69 reg = <0x11> ;
70 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
71 };
72 qsgmii02: qsgmii02 {
73 qlm-mode = "0x002,qsgmii";
74 reg = <0x12> ;
75 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
76 };
77 qsgmii03: qsgmii03 {
78 qlm-mode = "0x003,qsgmii";
79 reg = <0x13> ;
80 compatible = "vitesse,vsc8574", "ethernet-phy-ieee802.3-c22";
81 };
82 };
83 mdio1@87e005003880 {
84 xfi00: xfi00 {
85 qlm-mode = "0x000,xfi";
86 reg = <0x0>;
87 compatible = "aquantia,aqr105", "ethernet-phy-ieee802.3-c45";
88 };
89 };
90 };
91
92 rgx0 {
93 rgmii00 {
94 reg = <0>;
95 local-mac-address = [00 00 00 00 00 00];
96 phy-handle = <&rgmii00>;
97 };
98 };
99
100 bgx0 {
101 /* typename+qlm+typenumber eg :
102 qsgmii+bgx0+sgmmi0
103 */
104 qsgmii00 {
105 reg = <0>;
106 qlm-mode = "0x000,qsgmii";
107 local-mac-address = [00 00 00 00 00 00];
108 phy-handle = <&qsgmii00>;
109 };
110 qsgmii01 {
111 reg = <1>;
112 qlm-mode = "0x001,qsgmii";
113 local-mac-address = [00 00 00 00 00 00];
114 phy-handle = <&qsgmii01>;
115 };
116 qsgmii02 {
117 reg = <2>;
118 qlm-mode = "0x002,qsgmii";
119 local-mac-address = [00 00 00 00 00 00];
120 phy-handle = <&qsgmii02>;
121 };
122 qsgmii03 {
123 reg = <3>;
124 qlm-mode = "0x003,qsgmii";
125 local-mac-address = [00 00 00 00 00 00];
126 phy-handle = <&qsgmii03>;
127 };
128
129 xfi00 {
130 reg = <0>;
131 qlm-mode = "0x000,xfi";
132 local-mac-address = [00 00 00 00 00 00];
133 phy-handle = <&xfi00>;
134 };
135 };
136
137 bgx1 {
138 xfi10 {
139 reg = <0>;
140 qlm-mode = "0x010,xfi";
141 local-mac-address = [00 00 00 00 00 00];
142 };
143
144 xfi11 {
145 reg = <1>;
146 qlm-mode = "0x011,xfi";
147 local-mac-address = [00 00 00 00 00 00];
148 };
149 };
150
151
152};
153
154&mmc_1_4 {
155 /* NOTE: the BDK is responsible for swapping the two slots.
156 * Unfortunately there does not appear to be any way to read the
157 * position of SW2-7 in software.
158 */
159 mmc-slot@0 {
160 compatible = "mmc-slot";
161 reg = <0>;
162 vmmc-supply = <&mmc_supply_3v3>;
163 max-frequency = <26000000>;
164 /* 1.8v is not supported */
165 no-1-8-v;
166 /* Bus width is only 4 bits maximum */
167 bus-width = <4>;
168 /* No write-protect switch is present */
169 disable-wp;
170 /* There is no card detection available; polling must be used. */
171 broken-cd;
172 /* High-speed mode is supported */
173 cap-sd-highspeed;
174 /* speed up device probing */
175 no-sdio;
176 no-mmc;
177 };
178 mmc-slot@1 {
179 compatible = "mmc-slot";
180 reg = <1>;
181 vmmc-supply = <&mmc_supply_3v3>;
182 max-frequency = <26000000>;
183 mmc-ddr-3_3v;
184 /* 1.8v is not supported */
185 no-1-8-v;
186 /* Bus width is only 8 bits maximum */
187 bus-width = <8>;
188 /* No write-protect switch is present */
189 disable-wp;
190 /* There is no card detection available; polling must be used. */
191 broken-cd;
192 /* High-speed mode is supported */
193 cap-mmc-highspeed;
194 /* eMMC device is soldered onto the board */
195 non-removable;
196 /* speed up device probing */
197 no-sdio;
198 no-sd;
199 };
200};
201
202&i2c_9_0 {
203 /* another pca9535 at 0x20 is only visible via jtag */
204 gpio1: gpio-i2c@21 {
205 compatible = "nxp,pca9535";
206 gpio-controller;
207 reg = <0x21>;
208 gpio_base = <48>;
209 pins = <48 16>;
210 ngpios = <16>; // standard
211 n_gpios = <16>; // deprecated, driver required
212 #gpio-cells = <2>;
213 };
214
215 gpio2: gpio-i2c@22 {
216 compatible = "nxp,pca9535";
217 gpio-controller;
218 reg = <0x22>;
219 gpio_base = <64>;
220 pins = <64 16>;
221 ngpios = <16>; // standard
222 n_gpios = <16>; // deprecated, driver required
223 #gpio-cells = <2>;
224 };
225
226 mux@70 {
227 compatible = "nxp,pca9546";
228 reg = <0x70>;
229 #address-cells = <1>;
230 #size-cells = <0>;
231
232 i2c@0 {
233 #address-cells = <1>;
234 #size-cells = <0>;
235 reg = <0>;
236 };
237
238 i2c@1 {
239 #address-cells = <1>;
240 #size-cells = <0>;
241 reg = <1>;
242 };
243
244 i2c@2 {
245 #address-cells = <1>;
246 #size-cells = <0>;
247 reg = <2>;
248 };
249 };
250};
251
252&i2c_9_1 {
253 rom@54 {
254 compatible = "atmel,24c256";
255 reg = <0x54>;
256 pagesize = <64>;
257 };
258
259 rtc@68 {
260 compatible = "isil,isl12057";
261 reg = <0x68>;
262 };
263};
264
265&spi_7_0 {
266 flash@0 {
267 compatible = "micron,n25q128a13", "spi-flash";
268 reg = <0x0>;
269 spi-max-frequency = <16000000>;
270 #address-cells = <1>;
271 #size-cells = <1>;
272 };
273};
274
275&nfc {
276 nand@1 {
277 reg = <0x1>;
278 nand-ecc-mode = "none";
279 };
280};
281
282&tdm {
283 // need corresponding mmc_etc.enable = <&gpio_6_0 39 1>;
284 pcm-enable-gpios = <&gpio_6_0 39 0>;
285};
286
287&spi_7_0 {
288 spi-mux-gpios = <&gpio1 4 1>;
289
290 flash@0 {
291 compatible = "jedec,spi-nor";
292 reg = <0x0>;
293 spi-max-frequency = <16000000>;
294 #address-cells = <1>;
295 #size-cells = <1>;
296 };
297
298 slic@4 {
299 compatible = "silabs,si32260", "linux,spidev";
300 reg = <4>;
301 spi-max-frequency = <2500000>;
302 reset-gpios = <&gpio1 0 1>;
303 irq-gpios = <&gpio_6_0 13>;
304 tx = <&tdm 0>;
305 rx = <&tdm 1>;
306 };
307
308 framer@5 {
309 compatible = "maxim,ds26521", "linux,spidev";
310 reg = <5>;
311 spi-max-frequency = <2500000>;
312 reset-gpios = <&gpio_6_0 11 1>;
313 irq-gpios = <&gpio_6_0 14>;
314 tx = <&tdm 2>;
315 rx = <&tdm 3>;
316 };
317};
diff --git a/recipes-kernel/linux/linux-cavium/dts/sff8304-linux.dts b/recipes-kernel/linux/linux-cavium/dts/sff8304-linux.dts
deleted file mode 100644
index 705e712..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/sff8304-linux.dts
+++ /dev/null
@@ -1,241 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2017, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn83xx-linux.dtsi"
53
54&mrml_bridge {
55 bgx0 {
56 /* typename+qlm+typenumber eg :
57 sgmii+bgx0+sgmmi0
58 */
59 xfi00 {
60 reg = <0x0>;
61 qlm-mode = "0x000,xfi";
62 local-mac-address = [00 00 00 00 00 00];
63 };
64 xfi01 {
65 reg = <0x1>;
66 qlm-mode = "0x001,xfi";
67 local-mac-address = [00 00 00 00 00 00];
68 };
69 xfi02 {
70 reg = <0x2>;
71 qlm-mode = "0x002,xfi";
72 local-mac-address = [00 00 00 00 00 00];
73 };
74 xfi03 {
75 reg = <0x3>;
76 qlm-mode = "0x003,xfi";
77 local-mac-address = [00 00 00 00 00 00];
78 };
79 };
80 bgx1 {
81 xfi-10g-kr10 {
82 reg = <0x0>;
83 qlm-mode = "0x010,xfi-10g-kr";
84 local-mac-address = [00 00 00 00 00 00];
85 };
86 xfi-10g-kr11 {
87 reg = <0x1>;
88 qlm-mode = "0x011,xfi-10g-kr";
89 local-mac-address = [00 00 00 00 00 00];
90 };
91 xfi-10g-kr12 {
92 reg = <0x2>;
93 qlm-mode = "0x012,xfi-10g-kr";
94 local-mac-address = [00 00 00 00 00 00];
95 };
96 xfi-10g-kr13 {
97 reg = <0x3>;
98 qlm-mode = "0x013,xfi-10g-kr";
99 local-mac-address = [00 00 00 00 00 00];
100 };
101
102 };
103};
104
105&mmc_1_4 {
106 /* Power on GPIO 8, active high, shared */
107 power-gpios = <&gpio_6_0 8 0>;
108
109 mmc-slot@0 {
110 compatible = "mmc-slot";
111 reg = <0>;
112 vmmc-supply = <&mmc_supply_3v3>;
113 max-frequency = <26000000>;
114 mmc-ddr-3_3v;
115 /* 1.8v is not supported */
116 no-1-8-v;
117 /* Bus width is only 4 bits maximum */
118 bus-width = <4>;
119 /* No write-protect switch is present */
120 disable-wp;
121 /* There is no card detection available; polling must be used. */
122 broken-cd;
123 /* High-speed mode is supported */
124 cap-sd-highspeed;
125 /* speed up device probing */
126 no-sdio;
127 no-mmc;
128 };
129 mmc-slot@1 {
130 compatible = "mmc-slot";
131 reg = <1>;
132 vmmc-supply = <&mmc_supply_3v3>;
133 max-frequency = <26000000>;
134 mmc-ddr-3_3v;
135 /* 1.8v is not supported */
136 no-1-8-v;
137 /* Bus width is only 8 bits maximum */
138 bus-width = <8>;
139 /* No write-protect switch is present */
140 disable-wp;
141 /* There is no card detection available; polling must be used. */
142 broken-cd;
143 /* High-speed mode is supported */
144 cap-mmc-highspeed;
145 /* eMMC device is soldered onto the board */
146 non-removable;
147 /* speed up device probing */
148 no-sdio;
149 no-sd;
150 };
151};
152
153&i2c_9_0 {
154 rtc@68 {
155 compatible = "dallas,ds1337";
156 reg = <0x68>;
157 rtcmodel = <1>;
158 };
159 mux@70 {
160 compatible = "nxp,pca9547";
161 reg = <0x70>;
162 #address-cells = <1>;
163 #size-cells = <0>;
164
165 i2c@0 {
166 #address-cells = <1>;
167 #size-cells = <0>;
168 reg = <0>;
169 eeprom@54 {
170 compatible = "atmel,24c256";
171 reg = <0x54>;
172 pagesize = <64>;
173 };
174 };
175
176 i2c@1 {
177 #address-cells = <1>;
178 #size-cells = <0>;
179 reg = <1>;
180 eeprom@54 {
181 compatible = "atmel,24c256";
182 reg = <0x54>;
183 pagesize = <64>;
184 };
185 };
186
187 i2c@2 {
188 #address-cells = <1>;
189 #size-cells = <0>;
190 reg = <2>;
191 eeprom@54 {
192 compatible = "atmel,24c256";
193 reg = <0x54>;
194 pagesize = <64>;
195 };
196 };
197
198 i2c@3 {
199 #address-cells = <1>;
200 #size-cells = <0>;
201 reg = <3>;
202 eeprom@54 {
203 compatible = "atmel,24c256";
204 reg = <0x54>;
205 pagesize = <64>;
206 };
207 };
208
209 i2c@4 {
210 #address-cells = <1>;
211 #size-cells = <0>;
212 reg = <4>;
213 eeprom@54 {
214 compatible = "atmel,24c256";
215 reg = <0x54>;
216 pagesize = <64>;
217 };
218 };
219
220 i2c@5 {
221 #address-cells = <1>;
222 #size-cells = <0>;
223 reg = <5>;
224 eeprom@54 {
225 compatible = "atmel,24c256";
226 reg = <0x54>;
227 pagesize = <64>;
228 };
229 };
230 };
231};
232
233&spi_7_0 {
234 flash@0 {
235 compatible = "jedec,spi-nor", "spi-flash";
236 reg = <0x0>;
237 spi-max-frequency = <16000000>;
238 #address-cells = <1>;
239 #size-cells = <1>;
240 };
241};
diff --git a/recipes-kernel/linux/linux-cavium/dts/xpliant-cn83xx-linux.dts b/recipes-kernel/linux/linux-cavium/dts/xpliant-cn83xx-linux.dts
deleted file mode 100644
index e11bc9d..0000000
--- a/recipes-kernel/linux/linux-cavium/dts/xpliant-cn83xx-linux.dts
+++ /dev/null
@@ -1,138 +0,0 @@
1/*
2 * Cavium Thunder DTS file - Thunder board description
3 *
4 * Copyright (C) 2017, Cavium Inc.
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
11 * a) This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this library; if not, write to the Free
23 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
48 */
49
50/dts-v1/;
51
52/include/ "cn83xx-linux.dtsi"
53
54&mrml_bridge {
55 mdio-nexus@1,3 {
56 mdio0@87e005003800 {
57 sgmii20: sgmii20 {
58 qlm-mode = "0x020,sgmii";
59 reg = <0x1f>;
60 compatible = "broadcom,bcm54616", "ethernet-phy-ieee802.3-c45";
61 reset = <&gpio_6_0 34 0>;
62 };
63 };
64 };
65
66 bgx2 {
67 /* typename+qlm+typenumber eg :
68 sgmii+bgx0+sgmmi0
69 */
70 sgmii20 {
71 reg = <0>;
72 qlm-mode = "0x020,sgmii";
73 local-mac-address = [00 00 00 00 00 00];
74 phy-handle = <&sgmii20>;
75 };
76 };
77 bgx3 {
78 xfi30 {
79 reg = <0>;
80 qlm-mode = "0x030,xfi";
81 local-mac-address = [00 00 00 00 00 00];
82 };
83 };
84};
85
86&mmc_1_4 {
87 mmc-slot@0 {
88 compatible = "mmc-slot";
89 reg = <0>;
90 vmmc-supply = <&mmc_supply_3v3>;
91 max-frequency = <26000000>;
92 /* 1.8v is not supported */
93 no-1-8-v;
94 /* Bus width is only 4 bits maximum */
95 bus-width = <4>;
96 /* No write-protect switch is present */
97 disable-wp;
98 /* There is no card detection available; polling must be used. */
99 broken-cd;
100 /* High-speed mode is supported */
101 cap-sd-highspeed;
102 /* speed up device probing */
103 no-sdio;
104 no-mmc;
105 };
106 mmc-slot@1 {
107 compatible = "mmc-slot";
108 reg = <1>;
109 vmmc-supply = <&mmc_supply_3v3>;
110 max-frequency = <26000000>;
111 mmc-ddr-3_3v;
112 /* 1.8v is not supported */
113 no-1-8-v;
114 /* Bus width is only 8 bits maximum */
115 bus-width = <8>;
116 /* No write-protect switch is present */
117 disable-wp;
118 /* There is no card detection available; polling must be used. */
119 broken-cd;
120 /* High-speed mode is supported */
121 cap-mmc-highspeed;
122 /* eMMC device is soldered onto the board */
123 non-removable;
124 /* speed up device probing */
125 no-sdio;
126 no-sd;
127 };
128};
129
130&spi_7_0 {
131 flash@0 {
132 compatible = "micron,n25q1024", "jedec,spi-nor", "spi-flash";
133 reg = <0x0>;
134 spi-max-frequency = <16000000>;
135 #address-cells = <1>;
136 #size-cells = <1>;
137 };
138};
diff --git a/recipes-kernel/linux/linux-cavium_4.9.bb b/recipes-kernel/linux/linux-cavium_4.9.bb
deleted file mode 100644
index 2851845..0000000
--- a/recipes-kernel/linux/linux-cavium_4.9.bb
+++ /dev/null
@@ -1 +0,0 @@
1require linux-cavium_4.9.inc
diff --git a/recipes-kernel/linux/linux-cavium_4.9.inc b/recipes-kernel/linux/linux-cavium_4.9.inc
deleted file mode 100644
index 1758a30..0000000
--- a/recipes-kernel/linux/linux-cavium_4.9.inc
+++ /dev/null
@@ -1,62 +0,0 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/linux-cavium:"
2
3require recipes-kernel/linux/linux-yocto.inc
4require recipes-kernel/linux/linux-deploy-kconfig.inc
5
6# board specific branches
7KBRANCH_cn8304 ?= "cavium-4.9"
8KBRANCH_qemuarm64 ?= "cavium-4.9"
9
10SRCREV_machine_cn8304 ?= "972d2791f326533d1d03fe561da667ce150319b4"
11SRCREV_machine_qemuarm64 ?= "972d2791f326533d1d03fe561da667ce150319b4"
12SRCREV_metaenea ?= "85a500385477e07d144fc3fcfa4ec62e6aabc8e8"
13KENEABRANCH = "cavium-4.9"
14
15SRC_URI = "git://git@git.enea.com/linux/linux-cavium.git;protocol=ssh;name=machine;branch=${KBRANCH} \
16 git://git@git.enea.com/linux/enea-kernel-cache.git;protocol=ssh;type=kmeta;name=metaenea;branch=${KENEABRANCH};destsuffix=enea-kernel-cache \
17 file://dts \
18 file://CVE-2016-10154.patch \
19 file://CVE-2016-10208.patch \
20 file://CVE-2017-5551.patch \
21 file://CVE-2017-5577.patch \
22 file://CVE-2017-5669.patch \
23 file://CVE-2017-5970.patch \
24 file://CVE-2017-5986.patch \
25 file://CVE-2017-6214.patch \
26 file://CVE-2017-6345.patch \
27 file://CVE-2017-6348.patch \
28 file://CVE-2017-6353.patch \
29 file://CVE-2017-7487.patch \
30 file://CVE-2017-7618.patch \
31 file://CVE-2017-7645.patch \
32 file://CVE-2017-8062.patch \
33 file://CVE-2017-8063.patch \
34 file://CVE-2017-8064.patch \
35 file://CVE-2017-8066.patch \
36 file://CVE-2017-8067.patch \
37 file://CVE-2017-8068.patch \
38 file://CVE-2017-8069.patch \
39 file://CVE-2017-8831.patch \
40 file://CVE-2017-1000364.patch \
41 file://0001-openvswitch-fixed-kernel-crash.patch \
42 file://CVE-2017-11176.patch \
43 "
44
45LINUX_KERNEL_TYPE = "tiny"
46LINUX_VERSION ?= "4.9.0"
47LINUX_VERSION_EXTENSION = "-cavium-${LINUX_KERNEL_TYPE}"
48PV = "4.9-octeontx.sdk.6.1.0.p3.build.22"
49
50KERNEL_DEVICETREE_cn8304 = "cavium/ebb8304-linux.dtb"
51
52COMPATIBLE_MACHINE = "cn8304|qemuarm64"
53KMACHINE_cn8304 = "cavium-cn8304"
54KMACHINE_qemuarm64 = "cavium-cn8304"
55
56KERNEL_FEATURES_append = " features/udev/udev.scc"
57KERNEL_FEATURES_append_cn8304 += "features/net/thunderx/thunderx_nic.scc"
58
59do_patch_append() {
60 install -D ${S}/arch/${ARCH}/boot/dts
61 install ${WORKDIR}/dts/* ${S}/arch/${ARCH}/boot/dts/cavium/
62}
diff --git a/recipes-kernel/linux/linux-ls1-common.inc b/recipes-kernel/linux/linux-ls1-common.inc
deleted file mode 100644
index 06ba19c..0000000
--- a/recipes-kernel/linux/linux-ls1-common.inc
+++ /dev/null
@@ -1,28 +0,0 @@
1require recipes-kernel/linux/enea-common.inc
2
3ENEA_KERNEL_FRAGMENTS += "\
4 cfg/localversion.cfg \
5 cfg/with_modules.cfg \
6 cfg/embedded.cfg \
7 cfg/preempt.cfg \
8 cfg/root_nfs.cfg \
9 cfg/devtmpfs.cfg \
10 cfg/bootlogd.cfg \
11 cfg/mtd_tests.cfg \
12 cfg/latencytop.cfg \
13 cfg/ltp.cfg \
14 cfg/fuse.cfg \
15 cfg/dpa.cfg \
16 cfg/kprobes.cfg \
17 cfg/i2c.cfg \
18 cfg/lttng.cfg \
19 cfg/powertop.cfg \
20 cfg/systemtap.cfg \
21 cfg/kgdb.cfg \
22 cfg/gpio.cfg \
23 cfg/cpusets.cfg \
24 cfg/nfsdv3.cfg \
25 cfg/nfsdv4.cfg \
26 cfg/nls_cp437.cfg \
27 cfg/ikconfig.cfg \
28 "
diff --git a/recipes-kernel/linux/linux-ls1/0001-fsnotify-fix-oops-in-fsnotify_clear_marks_by_group_f.patch b/recipes-kernel/linux/linux-ls1/0001-fsnotify-fix-oops-in-fsnotify_clear_marks_by_group_f.patch
deleted file mode 100644
index 250c8db..0000000
--- a/recipes-kernel/linux/linux-ls1/0001-fsnotify-fix-oops-in-fsnotify_clear_marks_by_group_f.patch
+++ /dev/null
@@ -1,80 +0,0 @@
1From 8f2f3eb59dff4ec538de55f2e0592fec85966aab Mon Sep 17 00:00:00 2001
2From: Jan Kara <jack@suse.com>
3Date: Thu, 6 Aug 2015 15:46:42 -0700
4Subject: [PATCH] fsnotify: fix oops in fsnotify_clear_marks_by_group_flags()
5
6fsnotify_clear_marks_by_group_flags() can race with
7fsnotify_destroy_marks() so that when fsnotify_destroy_mark_locked()
8drops mark_mutex, a mark from the list iterated by
9fsnotify_clear_marks_by_group_flags() can be freed and thus the next
10entry pointer we have cached may become stale and we dereference free
11memory.
12
13Fix the problem by first moving marks to free to a special private list
14and then always free the first entry in the special list. This method
15is safe even when entries from the list can disappear once we drop the
16lock.
17
18Upstream-Status: Backported
19
20Signed-off-by: Jan Kara <jack@suse.com>
21Reported-by: Ashish Sangwan <a.sangwan@samsung.com>
22Reviewed-by: Ashish Sangwan <a.sangwan@samsung.com>
23Cc: Lino Sanfilippo <LinoSanfilippo@gmx.de>
24Cc: <stable@vger.kernel.org>
25Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
26Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
27Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
28---
29 fs/notify/mark.c | 30 +++++++++++++++++++++++++-----
30 1 file changed, 25 insertions(+), 5 deletions(-)
31
32diff --git a/fs/notify/mark.c b/fs/notify/mark.c
33index 92e48c7..39ddcaf 100644
34--- a/fs/notify/mark.c
35+++ b/fs/notify/mark.c
36@@ -412,16 +412,36 @@ void fsnotify_clear_marks_by_group_flags(struct fsnotify_group *group,
37 unsigned int flags)
38 {
39 struct fsnotify_mark *lmark, *mark;
40+ LIST_HEAD(to_free);
41
42+ /*
43+ * We have to be really careful here. Anytime we drop mark_mutex, e.g.
44+ * fsnotify_clear_marks_by_inode() can come and free marks. Even in our
45+ * to_free list so we have to use mark_mutex even when accessing that
46+ * list. And freeing mark requires us to drop mark_mutex. So we can
47+ * reliably free only the first mark in the list. That's why we first
48+ * move marks to free to to_free list in one go and then free marks in
49+ * to_free list one by one.
50+ */
51 mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING);
52 list_for_each_entry_safe(mark, lmark, &group->marks_list, g_list) {
53- if (mark->flags & flags) {
54- fsnotify_get_mark(mark);
55- fsnotify_destroy_mark_locked(mark, group);
56- fsnotify_put_mark(mark);
57- }
58+ if (mark->flags & flags)
59+ list_move(&mark->g_list, &to_free);
60 }
61 mutex_unlock(&group->mark_mutex);
62+
63+ while (1) {
64+ mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING);
65+ if (list_empty(&to_free)) {
66+ mutex_unlock(&group->mark_mutex);
67+ break;
68+ }
69+ mark = list_first_entry(&to_free, struct fsnotify_mark, g_list);
70+ fsnotify_get_mark(mark);
71+ fsnotify_destroy_mark_locked(mark, group);
72+ mutex_unlock(&group->mark_mutex);
73+ fsnotify_put_mark(mark);
74+ }
75 }
76
77 /*
78--
791.9.1
80
diff --git a/recipes-kernel/linux/linux-ls1/0002-watchdog-fix-errata-err004346.patch b/recipes-kernel/linux/linux-ls1/0002-watchdog-fix-errata-err004346.patch
deleted file mode 100644
index a69ef9b..0000000
--- a/recipes-kernel/linux/linux-ls1/0002-watchdog-fix-errata-err004346.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From ff7712de39c333cf888e497a90f88601ef3e228f Mon Sep 17 00:00:00 2001
2From: Stefan Sicleru <stefan.sicleru@enea.com>
3Date: Fri, 10 Jun 2016 10:42:28 +0200
4Subject: [PATCH] watchdog: fix errata ERR004346
5
6Due to errata ERR004346 (WDOG: SRS bit requires to be written twice), two
7additional writes are added to ensure that at least two writes occur within
8one period of the 32kHz clock.
9
10Replace __raw_writew() calls with *_relaxed() calls in order to be
11endian-safe.
12
13Signed-off-by: Stefan Sicleru <stefan.sicleru@enea.com>
14---
15 arch/arm/mach-imx/system.c | 5 ++++-
16 1 file changed, 4 insertions(+), 1 deletion(-)
17
18diff --git a/arch/arm/mach-imx/system.c b/arch/arm/mach-imx/system.c
19index 80c177c..6e09ac0 100644
20--- a/arch/arm/mach-imx/system.c
21+++ b/arch/arm/mach-imx/system.c
22@@ -51,7 +51,10 @@ void mxc_restart(enum reboot_mode mode, const char *cmd)
23 wcr_enable = (1 << 2);
24
25 /* Assert SRS signal */
26- __raw_writew(wcr_enable, wdog_base);
27+
28+ writew_relaxed(wcr_enable, wdog_base);
29+ writew_relaxed(wcr_enable, wdog_base);
30+ writew_relaxed(wcr_enable, wdog_base);
31
32 /* wait for reset to assert... */
33 mdelay(500);
34--
351.9.1
diff --git a/recipes-kernel/linux/linux-ls1/ls1021aiot.dts b/recipes-kernel/linux/linux-ls1/ls1021aiot.dts
deleted file mode 100644
index d8ba94f..0000000
--- a/recipes-kernel/linux/linux-ls1/ls1021aiot.dts
+++ /dev/null
@@ -1,1102 +0,0 @@
1/dts-v1/;
2
3/ {
4 #address-cells = <0x2>;
5 #size-cells = <0x2>;
6 compatible = "fsl,ls1021a";
7 interrupt-parent = <0x1>;
8 model = "LS1021A IOT Board";
9
10 chosen {
11 };
12
13 aliases {
14 serial0 = "/soc/serial@2950000";
15 serial1 = "/soc/serial@2960000";
16 serial2 = "/soc/serial@2970000";
17 serial3 = "/soc/serial@2980000";
18 serial4 = "/soc/serial@2990000";
19 serial5 = "/soc/serial@29a0000";
20 ethernet0 = "/soc/ethernet@2d10000";
21 ethernet1 = "/soc/ethernet@2d50000";
22 ethernet2 = "/soc/ethernet@2d90000";
23 sysclk = "/soc/clocking@1ee1000/sysclk";
24 gpio0 = "/soc/gpio@2300000";
25 gpio1 = "/soc/gpio@2310000";
26 gpio2 = "/soc/gpio@2320000";
27 gpio3 = "/soc/gpio@2330000";
28 crypto = "/soc/crypto@1700000";
29 };
30
31 memory {
32 device_type = "memory";
33 reg = <0x0 0x0 0x0 0x0>;
34 };
35
36 memory@80000000 {
37 device_type = "memory";
38 reg = <0x0 0x80000000 0x0 0x20000000>;
39 };
40
41 cpus {
42 #address-cells = <0x1>;
43 #size-cells = <0x0>;
44
45 cpu@f00 {
46 compatible = "arm,cortex-a7";
47 device_type = "cpu";
48 reg = <0xf00>;
49 clocks = <0x2>;
50 };
51
52 cpu@f01 {
53 compatible = "arm,cortex-a7";
54 device_type = "cpu";
55 reg = <0xf01>;
56 clocks = <0x2>;
57 };
58 };
59
60 timer {
61 compatible = "arm,armv7-timer";
62 interrupts = <0x1 0xd 0x308 0x1 0xe 0x308 0x1 0xb 0x308 0x1 0xa 0x308>;
63 };
64
65 pmu {
66 compatible = "arm,cortex-a7-pmu";
67 interrupts = <0x0 0x8a 0x4 0x0 0x8b 0x4>;
68 };
69
70 soc {
71 compatible = "simple-bus";
72 #address-cells = <0x2>;
73 #size-cells = <0x2>;
74 device_type = "soc";
75 interrupt-parent = <0x1>;
76 ranges;
77
78 interrupt-controller@1400000 {
79 compatible = "arm,cortex-a15-gic";
80 #interrupt-cells = <0x3>;
81 interrupt-controller;
82 reg = <0x0 0x1401000 0x0 0x1000 0x0 0x1402000 0x0 0x1000 0x0 0x1404000 0x0 0x2000 0x0 0x1406000 0x0 0x2000>;
83 interrupts = <0x1 0x9 0x304>;
84 linux,phandle = <0x1>;
85 phandle = <0x1>;
86 };
87
88 ifc@1530000 {
89 compatible = "fsl,ifc", "simple-bus";
90 reg = <0x0 0x1530000 0x0 0x10000>;
91 interrupts = <0x0 0x4b 0x4>;
92 status = "disabled";
93 };
94
95 dcfg@1ee0000 {
96 compatible = "fsl,ls1021a-dcfg";
97 reg = <0x0 0x1ee0000 0x0 0x10000>;
98 };
99
100 quadspi@1550000 {
101 compatible = "fsl,ls1-qspi";
102 #address-cells = <0x1>;
103 #size-cells = <0x0>;
104 reg = <0x0 0x1550000 0x0 0x10000 0x0 0x40000000 0x0 0x4000000>;
105 reg-names = "QuadSPI", "QuadSPI-memory";
106 interrupts = <0x0 0x83 0x4>;
107 clock-names = "qspi_en", "qspi";
108 clocks = <0x3 0x1 0x3 0x1>;
109 big-endian;
110 amba-base = <0x40000000>;
111 status = "disabled";
112 num-cs = <0x2>;
113 bus-num = <0x0>;
114 fsl,spi-num-chipselects = <0x2>;
115 fsl,spi-flash-chipselects = <0x0>;
116
117 s25fl128s@0 {
118 #address-cells = <0x1>;
119 #size-cells = <0x1>;
120 compatible = "spansion,s25fl129p1";
121 spi-max-frequency = <0x1312d00>;
122 reg = <0x0>;
123
124 partition@0 {
125 label = "s25fl128s-0";
126 reg = <0x0 0x1000000>;
127 };
128 };
129
130 s25fl128s@1 {
131 #address-cells = <0x1>;
132 #size-cells = <0x1>;
133 compatible = "spansion,s25fl129p1";
134 spi-max-frequency = <0x1312d00>;
135 reg = <0x1>;
136
137 partition@0x0 {
138 label = "s25fl128s-1";
139 reg = <0x0 0x1000000>;
140 };
141 };
142 };
143
144 esdhc@1560000 {
145 compatible = "fsl,ls1021a-esdhc", "fsl,esdhc";
146 reg = <0x0 0x1560000 0x0 0x10000>;
147 interrupts = <0x0 0x5e 0x4>;
148 clock-frequency = <0x0>;
149 voltage-ranges = <0x708 0x708 0xce4 0xce4>;
150 sdhci,auto-cmd12;
151 big-endian;
152 bus-width = <0x4>;
153 sleep = <0x4 0x80 0x0>;
154 status = "disabled";
155 };
156
157 sata@3200000 {
158 compatible = "fsl,ls1021a-ahci";
159 reg = <0x0 0x3200000 0x0 0x10000>;
160 interrupts = <0x0 0x65 0x4>;
161 clocks = <0x3 0x1>;
162 };
163
164 scfg@1570000 {
165 compatible = "fsl,ls1021a-scfg", "syscon";
166 reg = <0x0 0x1570000 0x0 0x10000>;
167 big-endian;
168 linux,phandle = <0xc>;
169 phandle = <0xc>;
170 };
171
172 crypto@1700000 {
173 compatible = "fsl,sec-v5.3", "fsl,sec-v5.0", "fsl,sec-v4.0";
174 fsl,sec-era = <0x4>;
175 #address-cells = <0x1>;
176 #size-cells = <0x1>;
177 reg = <0x0 0x1700000 0x0 0x100000>;
178 ranges = <0x0 0x0 0x1700000 0x100000>;
179 interrupts = <0x0 0x6b 0x4>;
180
181 jr@10000 {
182 compatible = "fsl,sec-v5.3-job-ring", "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring";
183 reg = <0x10000 0x10000>;
184 interrupts = <0x0 0x67 0x4>;
185 };
186
187 jr@20000 {
188 compatible = "fsl,sec-v5.3-job-ring", "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring";
189 reg = <0x20000 0x10000>;
190 interrupts = <0x0 0x68 0x4>;
191 };
192
193 jr@30000 {
194 compatible = "fsl,sec-v5.3-job-ring", "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring";
195 reg = <0x30000 0x10000>;
196 interrupts = <0x0 0x69 0x4>;
197 };
198
199 jr@40000 {
200 compatible = "fsl,sec-v5.3-job-ring", "fsl,sec-v5.0-job-ring", "fsl,sec-v4.0-job-ring";
201 reg = <0x40000 0x10000>;
202 interrupts = <0x0 0x6a 0x4>;
203 };
204 };
205
206 clocking@1ee1000 {
207 compatible = "fsl,ls1021a-clockgen";
208 reg = <0x0 0x1ee1000 0x0 0x10000>;
209 #address-cells = <0x1>;
210 #size-cells = <0x0>;
211
212 sysclk {
213 compatible = "fixed-clock";
214 #clock-cells = <0x0>;
215 clock-frequency = <0x5f5e100>;
216 clock-output-names = "sysclk";
217 linux,phandle = <0x5>;
218 phandle = <0x5>;
219 };
220
221 pll1@800 {
222 compatible = "fsl,core-pll-clock";
223 #clock-cells = <0x1>;
224 reg = <0x800>;
225 clocks = <0x5>;
226 clock-output-names = "cga-pll1", "cga-pll1-div2", "cga-pll1-div4";
227 linux,phandle = <0x6>;
228 phandle = <0x6>;
229 };
230
231 pll@c00 {
232 compatible = "fsl,core-pll-clock";
233 #clock-cells = <0x1>;
234 reg = <0xc00>;
235 clocks = <0x5>;
236 clock-output-names = "platform-clk", "platform-clk-div2";
237 linux,phandle = <0x3>;
238 phandle = <0x3>;
239 };
240
241 clk0c0@0 {
242 compatible = "fsl,core-mux-clock";
243 #clock-cells = <0x0>;
244 reg = <0x0>;
245 clock-names = "pll1cga", "pll1cga-div2", "pll1cga-div4";
246 clocks = <0x6 0x0 0x6 0x1 0x6 0x2>;
247 clock-output-names = "cluster1-clk";
248 linux,phandle = <0x2>;
249 phandle = <0x2>;
250 };
251 };
252
253 rcpm@1ee2000 {
254 compatible = "fsl,ls1021a-rcpm", "fsl,qoriq-rcpm-2.1";
255 reg = <0x0 0x1ee2000 0x0 0x10000>;
256 linux,phandle = <0x4>;
257 phandle = <0x4>;
258 };
259
260 dspi@2100000 {
261 compatible = "fsl,vf610-dspi";
262 #address-cells = <0x1>;
263 #size-cells = <0x0>;
264 reg = <0x0 0x2100000 0x0 0x10000>;
265 interrupts = <0x0 0x60 0x4>;
266 clock-names = "dspi";
267 clocks = <0x3 0x1>;
268 spi-num-chipselects = <0x5>;
269 big-endian;
270 tcfq-mode;
271 status = "disabled";
272 };
273
274 dspi@2110000 {
275 compatible = "fsl,vf610-dspi";
276 #address-cells = <0x1>;
277 #size-cells = <0x0>;
278 reg = <0x0 0x2110000 0x0 0x10000>;
279 interrupts = <0x0 0x61 0x4>;
280 clock-names = "dspi";
281 clocks = <0x3 0x1>;
282 spi-num-chipselects = <0x5>;
283 big-endian;
284 tcfq-mode;
285 status = "disabled";
286 };
287
288 i2c@2180000 {
289 compatible = "fsl,vf610-i2c";
290 #address-cells = <0x1>;
291 #size-cells = <0x0>;
292 reg = <0x0 0x2180000 0x0 0x10000>;
293 interrupts = <0x0 0x58 0x4>;
294 clock-names = "i2c";
295 clocks = <0x3 0x1>;
296 status = "okay";
297
298 max1239@35 {
299 compatible = "maxim,max1239";
300 reg = <0x35>;
301 #io-channel-cells = <0x1>;
302 };
303
304 sgtl5000@2a {
305 compatible = "fsl,sgtl5000";
306 reg = <0x2a>;
307 VDDA-supply = <0x7>;
308 VDDIO-supply = <0x8>;
309 clocks = <0x9 0x1>;
310 linux,phandle = <0x14>;
311 phandle = <0x14>;
312 };
313
314 pca9555@23 {
315 compatible = "nxp,pca9555";
316 gpio-controller;
317 #gpio-cells = <0x2>;
318 interrupt-controller;
319 #interrupt-cells = <0x2>;
320 reg = <0x23>;
321 };
322
323 ina220@44 {
324 compatible = "ti,ina220";
325 reg = <0x44>;
326 shunt-resistor = <0x3e8>;
327 };
328
329 ina220@45 {
330 compatible = "ti,ina220";
331 reg = <0x45>;
332 shunt-resistor = <0x3e8>;
333 };
334
335 lm75b@48 {
336 compatible = "nxp,lm75a";
337 reg = <0x48>;
338 };
339
340 adt7461a@4c {
341 compatible = "adt7461a";
342 reg = <0x4c>;
343 };
344
345 sii9022a@39 {
346 compatible = "fsl,sii902x";
347 reg = <0x39>;
348 interrupts = <0x0 0xa3 0x1>;
349 };
350 };
351
352 i2c@2190000 {
353 compatible = "fsl,vf610-i2c";
354 #address-cells = <0x1>;
355 #size-cells = <0x0>;
356 reg = <0x0 0x2190000 0x0 0x10000>;
357 interrupts = <0x0 0x59 0x4>;
358 clock-names = "i2c";
359 clocks = <0x3 0x1>;
360 status = "disabled";
361 };
362
363 i2c@21a0000 {
364 compatible = "fsl,vf610-i2c";
365 #address-cells = <0x1>;
366 #size-cells = <0x0>;
367 reg = <0x0 0x21a0000 0x0 0x10000>;
368 interrupts = <0x0 0x5a 0x4>;
369 clock-names = "i2c";
370 clocks = <0x3 0x1>;
371 status = "disabled";
372 };
373
374 serial@21c0500 {
375 compatible = "fsl,16550-FIFO64";
376 reg = <0x0 0x21c0500 0x0 0x100>;
377 interrupts = <0x0 0x56 0x4>;
378 clock-frequency = <0x0>;
379 fifo-size = <0x3f>;
380 status = "okay";
381 };
382
383 serial@21c0600 {
384 compatible = "fsl,16550-FIFO64";
385 reg = <0x0 0x21c0600 0x0 0x100>;
386 interrupts = <0x0 0x56 0x4>;
387 clock-frequency = <0x0>;
388 fifo-size = <0x3f>;
389 status = "disabled";
390 };
391
392 serial@21d0500 {
393 compatible = "fsl,16550-FIFO64";
394 reg = <0x0 0x21d0500 0x0 0x100>;
395 interrupts = <0x0 0x57 0x4>;
396 clock-frequency = <0x0>;
397 fifo-size = <0x3f>;
398 status = "disabled";
399 };
400
401 serial@21d0600 {
402 compatible = "fsl,16550-FIFO64";
403 reg = <0x0 0x21d0600 0x0 0x100>;
404 interrupts = <0x0 0x57 0x4>;
405 clock-frequency = <0x0>;
406 fifo-size = <0x3f>;
407 status = "disabled";
408 };
409
410 uqe@2400000 {
411 #address-cells = <0x1>;
412 #size-cells = <0x1>;
413 device_type = "qe";
414 compatible = "fsl,qe", "simple-bus";
415 ranges = <0x0 0x0 0x2400000 0x40000>;
416 reg = <0x0 0x2400000 0x0 0x480>;
417 brg-frequency = <0x5f5e100>;
418 bus-frequency = <0xbebc200>;
419 fsl,qe-num-riscs = <0x1>;
420 fsl,qe-num-snums = <0x1c>;
421
422 qeic@80 {
423 compatible = "fsl,qe-ic";
424 reg = <0x80 0x80>;
425 #address-cells = <0x0>;
426 interrupt-controller;
427 #interrupt-cells = <0x1>;
428 interrupts = <0x0 0x6d 0x4 0x0 0x6d 0x4>;
429 linux,phandle = <0xa>;
430 phandle = <0xa>;
431 };
432
433 si@700 {
434 #address-cells = <0x1>;
435 #size-cells = <0x0>;
436 compatible = "fsl,qe-si";
437 reg = <0x700 0x80>;
438 };
439
440 siram@1000 {
441 #address-cells = <0x1>;
442 #size-cells = <0x1>;
443 compatible = "fsl,qe-siram";
444 reg = <0x1000 0x800>;
445 };
446
447 ucc@2000 {
448 cell-index = <0x1>;
449 reg = <0x2000 0x200>;
450 interrupts = <0x20>;
451 interrupt-parent = <0xa>;
452 compatible = "fsl,ucc-tdm";
453 rx-clock-name = "brg1";
454 tx-clock-name = "brg1";
455 fsl,rx-sync-clock = "none";
456 fsl,tx-sync-clock = "none";
457 fsl,tx-timeslot = <0xfffffffe>;
458 fsl,rx-timeslot = <0xfffffffe>;
459 fsl,tdm-framer-type = "e1";
460 fsl,tdm-mode = "internel-loopback";
461 fsl,tdm-id = <0x0>;
462 fsl,siram-entry-id = <0x0>;
463 };
464
465 ucc@2200 {
466 cell-index = <0x3>;
467 reg = <0x2200 0x200>;
468 interrupts = <0x22>;
469 interrupt-parent = <0xa>;
470 device_type = "serial";
471 compatible = "ucc_uart";
472 port-number = <0x1>;
473 rx-clock-name = "brg2";
474 tx-clock-name = "brg2";
475 };
476
477 muram@10000 {
478 #address-cells = <0x1>;
479 #size-cells = <0x1>;
480 compatible = "fsl,qe-muram", "fsl,cpm-muram";
481 ranges = <0x0 0x10000 0x6000>;
482
483 data-only@0 {
484 compatible = "fsl,qe-muram-data", "fsl,cpm-muram-data";
485 reg = <0x0 0x6000>;
486 };
487 };
488 };
489
490 serial@2950000 {
491 compatible = "fsl,ls1021a-lpuart";
492 reg = <0x0 0x2950000 0x0 0x1000>;
493 interrupts = <0x0 0x50 0x4>;
494 clocks = <0x5>;
495 clock-names = "ipg";
496 sleep = <0x4 0x0 0x40000000>;
497 status = "okay";
498 };
499
500 serial@2960000 {
501 compatible = "fsl,ls1021a-lpuart";
502 reg = <0x0 0x2960000 0x0 0x1000>;
503 interrupts = <0x0 0x51 0x4>;
504 clocks = <0x3 0x1>;
505 clock-names = "ipg";
506 status = "disabled";
507 };
508
509 serial@2970000 {
510 compatible = "fsl,ls1021a-lpuart";
511 reg = <0x0 0x2970000 0x0 0x1000>;
512 interrupts = <0x0 0x52 0x4>;
513 clocks = <0x3 0x1>;
514 clock-names = "ipg";
515 status = "disabled";
516 };
517
518 serial@2980000 {
519 compatible = "fsl,ls1021a-lpuart";
520 reg = <0x0 0x2980000 0x0 0x1000>;
521 interrupts = <0x0 0x53 0x4>;
522 clocks = <0x3 0x1>;
523 clock-names = "ipg";
524 status = "disabled";
525 };
526
527 serial@2990000 {
528 compatible = "fsl,ls1021a-lpuart";
529 reg = <0x0 0x2990000 0x0 0x1000>;
530 interrupts = <0x0 0x54 0x4>;
531 clocks = <0x3 0x1>;
532 clock-names = "ipg";
533 status = "disabled";
534 };
535
536 serial@29a0000 {
537 compatible = "fsl,ls1021a-lpuart";
538 reg = <0x0 0x29a0000 0x0 0x1000>;
539 interrupts = <0x0 0x55 0x4>;
540 clocks = <0x3 0x1>;
541 clock-names = "ipg";
542 status = "disabled";
543 };
544
545 gpio@2300000 {
546 compatible = "fsl,ls1021a-gpio";
547 reg = <0x0 0x2300000 0x0 0x10000>;
548 interrupts = <0x0 0x62 0x4>;
549 gpio-controller;
550 #gpio-cells = <0x2>;
551 interrupt-controller;
552 #interrupt-cells = <0x2>;
553 sleep = <0x4 0x40 0x0>;
554 };
555
556 gpio@2310000 {
557 compatible = "fsl,ls1021a-gpio";
558 reg = <0x0 0x2310000 0x0 0x10000>;
559 interrupts = <0x0 0x63 0x4>;
560 gpio-controller;
561 #gpio-cells = <0x2>;
562 interrupt-controller;
563 #interrupt-cells = <0x2>;
564 };
565
566 gpio@2320000 {
567 compatible = "fsl,ls1021a-gpio";
568 reg = <0x0 0x2320000 0x0 0x10000>;
569 interrupts = <0x0 0x64 0x4>;
570 gpio-controller;
571 #gpio-cells = <0x2>;
572 interrupt-controller;
573 #interrupt-cells = <0x2>;
574 };
575
576 gpio@2330000 {
577 compatible = "fsl,ls1021a-gpio";
578 reg = <0x0 0x2330000 0x0 0x10000>;
579 interrupts = <0x0 0xa6 0x4>;
580 gpio-controller;
581 #gpio-cells = <0x2>;
582 interrupt-controller;
583 #interrupt-cells = <0x2>;
584 };
585
586 ftm0@29d0000 {
587 compatible = "fsl,ftm-alarm";
588 reg = <0x0 0x29d0000 0x0 0x10000>;
589 interrupts = <0x0 0x76 0x4>;
590 big-endian;
591 sleep = <0x4 0x0 0x20000000>;
592 status = "disabled";
593 };
594
595 ftm@2a00000 {
596 compatible = "fsl,vf610-ftm-pwm";
597 #pwm-cells = <0x3>;
598 reg = <0x0 0x2a00000 0x0 0x10000>;
599 interrupts = <0x0 0x79 0x4>;
600 clock-names = "ftm_sys", "ftm_ext", "ftm_fix", "ftm_cnt_clk_en";
601 clocks = <0x3 0x1 0x3 0x1 0x3 0x1 0x3 0x1>;
602 big-endian;
603 status = "disabled";
604 };
605
606 ftm@2a30000 {
607 compatible = "fsl,vf610-ftm-pwm";
608 #pwm-cells = <0x3>;
609 reg = <0x0 0x2a30000 0x0 0x10000>;
610 interrupts = <0x0 0x7b 0x4>;
611 clock-names = "ftm_sys", "ftm_ext", "ftm_fix", "ftm_cnt_clk_en";
612 clocks = <0x3 0x1 0x3 0x1 0x3 0x1 0x3 0x1>;
613 big-endian;
614 status = "disabled";
615 };
616
617 ftm@2a40000 {
618 compatible = "fsl,vf610-ftm-pwm";
619 #pwm-cells = <0x3>;
620 reg = <0x0 0x2a40000 0x0 0x10000>;
621 interrupts = <0x0 0x7c 0x4>;
622 clock-names = "ftm_sys", "ftm_ext", "ftm_fix", "ftm_cnt_clk_en";
623 clocks = <0x3 0x1 0x3 0x1 0x3 0x1 0x3 0x1>;
624 big-endian;
625 status = "disabled";
626 };
627
628 wdog@2ad0000 {
629 compatible = "fsl,imx21-wdt";
630 reg = <0x0 0x2ad0000 0x0 0x10000>;
631 interrupts = <0x0 0x73 0x4>;
632 clocks = <0x3 0x1>;
633 clock-names = "wdog";
634 big-endian;
635 };
636
637 sai@2b50000 {
638 compatible = "fsl,vf610-sai";
639 reg = <0x0 0x2b50000 0x0 0x10000>;
640 interrupts = <0x0 0x84 0x4>;
641 clocks = <0x3 0x1>;
642 clock-names = "sai";
643 dma-names = "tx", "rx";
644 dmas = <0xb 0x1 0x2f 0xb 0x1 0x2e>;
645 status = "disabled";
646 };
647
648 sai@2b60000 {
649 compatible = "fsl,vf610-sai";
650 reg = <0x0 0x2b60000 0x0 0x10000>;
651 interrupts = <0x0 0x85 0x4>;
652 clocks = <0x3 0x1>;
653 clock-names = "sai";
654 dma-names = "tx", "rx";
655 dmas = <0xb 0x1 0x2d 0xb 0x1 0x2c>;
656 status = "okay";
657 linux,phandle = <0x13>;
658 phandle = <0x13>;
659 };
660
661 edma@2c00000 {
662 #dma-cells = <0x2>;
663 compatible = "fsl,vf610-edma";
664 reg = <0x0 0x2c00000 0x0 0x10000 0x0 0x2c10000 0x0 0x10000 0x0 0x2c20000 0x0 0x10000>;
665 interrupts = <0x0 0x87 0x4 0x0 0x87 0x4>;
666 interrupt-names = "edma-tx", "edma-err";
667 dma-channels = <0x20>;
668 big-endian;
669 clock-names = "dmamux0", "dmamux1";
670 clocks = <0x3 0x1 0x3 0x1>;
671 linux,phandle = <0xb>;
672 phandle = <0xb>;
673 };
674
675 dcu@2ce0000 {
676 compatible = "fsl,ls1021a-dcu";
677 reg = <0x0 0x2ce0000 0x0 0x10000>;
678 interrupts = <0x0 0xac 0x4>;
679 clocks = <0x3 0x0>;
680 clock-names = "dcu";
681 scfg-controller = <0xc>;
682 big-endian;
683 status = "okay";
684 display = <0xd>;
685
686 display@0 {
687 bits-per-pixel = <0x18>;
688 linux,phandle = <0xd>;
689 phandle = <0xd>;
690
691 display-timings {
692 native-mode = <0xe>;
693
694 mode0 {
695 clock-frequency = <0x17d7840>;
696 hactive = <0x280>;
697 vactive = <0x1e0>;
698 hback-porch = <0x50>;
699 hfront-porch = <0x50>;
700 vback-porch = <0x10>;
701 vfront-porch = <0x10>;
702 hsync-len = <0xc>;
703 vsync-len = <0x2>;
704 hsync-active = <0x1>;
705 vsync-active = <0x1>;
706 linux,phandle = <0xe>;
707 phandle = <0xe>;
708 };
709 };
710 };
711 };
712
713 mdio@2d24000 {
714 compatible = "gianfar";
715 device_type = "mdio";
716 #address-cells = <0x1>;
717 #size-cells = <0x0>;
718 reg = <0x0 0x2d24000 0x0 0x4000>;
719
720 ethernet-phy@0 {
721 reg = <0x0>;
722 };
723
724 ethernet-phy@1 {
725 reg = <0x1>;
726 interrupts = <0x0 0xa5 0x8>;
727 linux,phandle = <0x10>;
728 phandle = <0x10>;
729 };
730
731 ethernet-phy@2 {
732 reg = <0x2>;
733 linux,phandle = <0x12>;
734 phandle = <0x12>;
735 };
736
737 ethernet-phy@3 {
738 reg = <0x3>;
739 interrupts = <0x0 0xa5 0x8>;
740 linux,phandle = <0x11>;
741 phandle = <0x11>;
742 };
743
744 tbi-phy@1f {
745 reg = <0x1f>;
746 device_type = "tbi-phy";
747 linux,phandle = <0xf>;
748 phandle = <0xf>;
749 };
750 };
751
752 ethernet@2d10000 {
753 compatible = "fsl,etsec2";
754 device_type = "network";
755 #address-cells = <0x2>;
756 #size-cells = <0x2>;
757 interrupt-parent = <0x1>;
758 model = "eTSEC";
759 fsl,dma-endian-le;
760 fsl,magic-packet;
761 fsl,wake-on-filer;
762 sleep = <0x4 0x80000000 0x0>;
763 fsl,num_rx_queues = <0x8>;
764 fsl,num_tx_queues = <0x8>;
765 local-mac-address = [00 00 00 00 00 00];
766 ranges;
767 tbi-handle = <0xf>;
768 phy-handle = <0x10>;
769 phy-connection-type = "sgmii";
770 status = "ok";
771
772 queue-group@2d10000 {
773 #address-cells = <0x2>;
774 #size-cells = <0x2>;
775 reg = <0x0 0x2d10000 0x0 0x1000>;
776 interrupts = <0x0 0x90 0x4 0x0 0x91 0x4 0x0 0x92 0x4>;
777 };
778
779 queue-group@2d14000 {
780 #address-cells = <0x2>;
781 #size-cells = <0x2>;
782 reg = <0x0 0x2d14000 0x0 0x1000>;
783 interrupts = <0x0 0x93 0x4 0x0 0x94 0x4 0x0 0x95 0x4>;
784 };
785 };
786
787 ethernet@2d50000 {
788 compatible = "fsl,etsec2";
789 device_type = "network";
790 #address-cells = <0x2>;
791 #size-cells = <0x2>;
792 interrupt-parent = <0x1>;
793 model = "eTSEC";
794 fsl,dma-endian-le;
795 fsl,num_rx_queues = <0x8>;
796 fsl,num_tx_queues = <0x8>;
797 local-mac-address = [00 00 00 00 00 00];
798 ranges;
799 tbi-handle = <0xf>;
800 phy-handle = <0x11>;
801 phy-connection-type = "sgmii";
802 status = "ok";
803
804 queue-group@2d50000 {
805 #address-cells = <0x2>;
806 #size-cells = <0x2>;
807 reg = <0x0 0x2d50000 0x0 0x1000>;
808 interrupts = <0x0 0x96 0x4 0x0 0x98 0x4 0x0 0x99 0x4>;
809 };
810
811 queue-group@2d54000 {
812 #address-cells = <0x2>;
813 #size-cells = <0x2>;
814 reg = <0x0 0x2d54000 0x0 0x1000>;
815 interrupts = <0x0 0x9a 0x4 0x0 0x9b 0x4 0x0 0x9c 0x4>;
816 };
817 };
818
819 ethernet@2d90000 {
820 compatible = "fsl,etsec2";
821 device_type = "network";
822 #address-cells = <0x2>;
823 #size-cells = <0x2>;
824 interrupt-parent = <0x1>;
825 model = "eTSEC";
826 fsl,dma-endian-le;
827 fsl,num_rx_queues = <0x8>;
828 fsl,num_tx_queues = <0x8>;
829 local-mac-address = [00 00 00 00 00 00];
830 ranges;
831 tbi-handle = <0xf>;
832 phy-handle = <0x12>;
833 phy-connection-type = "rgmii";
834 status = "ok";
835
836 queue-group@2d90000 {
837 #address-cells = <0x2>;
838 #size-cells = <0x2>;
839 reg = <0x0 0x2d90000 0x0 0x1000>;
840 interrupts = <0x0 0x9d 0x4 0x0 0x9e 0x4 0x0 0x9f 0x4>;
841 };
842
843 queue-group@2d94000 {
844 #address-cells = <0x2>;
845 #size-cells = <0x2>;
846 reg = <0x0 0x2d94000 0x0 0x1000>;
847 interrupts = <0x0 0xa0 0x4 0x0 0xa1 0x4 0x0 0xa2 0x4>;
848 };
849 };
850
851 can@2a70000 {
852 compatible = "fsl,ls1021ar2-flexcan";
853 reg = <0x0 0x2a70000 0x0 0x1000>;
854 interrupts = <0x0 0x7e 0x4>;
855 clocks = <0x3 0x1 0x3 0x1>;
856 clock-names = "ipg", "per";
857 little-endian;
858 };
859
860 can@2a80000 {
861 compatible = "fsl,ls1021ar2-flexcan";
862 reg = <0x0 0x2a80000 0x0 0x1000>;
863 interrupts = <0x0 0x7f 0x4>;
864 clocks = <0x3 0x1 0x3 0x1>;
865 clock-names = "ipg", "per";
866 little-endian;
867 };
868
869 can@2a90000 {
870 compatible = "fsl,ls1021ar2-flexcan";
871 reg = <0x0 0x2a90000 0x0 0x1000>;
872 interrupts = <0x0 0x80 0x4>;
873 clocks = <0x3 0x1 0x3 0x1>;
874 clock-names = "ipg", "per";
875 little-endian;
876 status = "okay";
877 };
878
879 can@2aa0000 {
880 compatible = "fsl,ls1021ar2-flexcan";
881 reg = <0x0 0x2aa0000 0x0 0x1000>;
882 interrupts = <0x0 0x81 0x4>;
883 clocks = <0x3 0x1 0x3 0x1>;
884 clock-names = "ipg", "per";
885 little-endian;
886 status = "okay";
887 };
888
889 usb@8600000 {
890 compatible = "fsl-usb2-dr-v2.5", "fsl-usb2-dr";
891 reg = <0x0 0x8600000 0x0 0x1000>;
892 interrupts = <0x0 0xab 0x4>;
893 dr_mode = "host";
894 phy_type = "ulpi";
895 };
896
897 usb3@3100000 {
898 compatible = "snps,dwc3";
899 reg = <0x0 0x3100000 0x0 0x10000>;
900 interrupts = <0x0 0x5d 0x4>;
901 dr_mode = "host";
902 configure-gfladj;
903 };
904
905 pcie@3400000 {
906 compatible = "fsl,ls1021a-pcie", "snps,dw-pcie";
907 reg = <0x0 0x3400000 0x0 0x10000 0x40 0x0 0x0 0x2000>;
908 reg-names = "regs", "config";
909 interrupts = <0x0 0xb1 0x4 0x0 0xb3 0x4 0x0 0xb5 0x4>;
910 interrupt-names = "intr", "msi", "pme";
911 fsl,pcie-scfg = <0xc 0x0>;
912 num-atus = <0x6>;
913 #address-cells = <0x3>;
914 #size-cells = <0x2>;
915 device_type = "pci";
916 num-lanes = <0x4>;
917 bus-range = <0x0 0xff>;
918 ranges = <0x81000000 0x0 0x0 0x40 0x10000 0x0 0x10000 0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>;
919 #interrupt-cells = <0x1>;
920 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
921 interrupt-map = <0x0 0x0 0x0 0x1 0x1 0x0 0x5b 0x4 0x0 0x0 0x0 0x2 0x1 0x0 0xbc 0x4 0x0 0x0 0x0 0x3 0x1 0x0 0xbe 0x4 0x0 0x0 0x0 0x4 0x1 0x0 0xc0 0x4>;
922 };
923
924 pcie@3500000 {
925 compatible = "fsl,ls1021a-pcie", "snps,dw-pcie";
926 reg = <0x0 0x3500000 0x0 0x10000 0x48 0x0 0x0 0x2000>;
927 reg-names = "regs", "config";
928 interrupts = <0x0 0xb2 0x4 0x0 0xb4 0x4 0x0 0xb6 0x4>;
929 interrupt-names = "intr", "msi", "pme";
930 fsl,pcie-scfg = <0xc 0x1>;
931 num-atus = <0x6>;
932 #address-cells = <0x3>;
933 #size-cells = <0x2>;
934 device_type = "pci";
935 num-lanes = <0x2>;
936 bus-range = <0x0 0xff>;
937 ranges = <0x81000000 0x0 0x0 0x48 0x10000 0x0 0x10000 0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>;
938 #interrupt-cells = <0x1>;
939 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
940 interrupt-map = <0x0 0x0 0x0 0x1 0x1 0x0 0x5c 0x4 0x0 0x0 0x0 0x2 0x1 0x0 0xbd 0x4 0x0 0x0 0x0 0x3 0x1 0x0 0xbf 0x4 0x0 0x0 0x0 0x4 0x1 0x0 0xc1 0x4>;
941 };
942 };
943
944 dcsr {
945 #address-cells = <0x1>;
946 #size-cells = <0x1>;
947 compatible = "fsl,dcsr", "simple-bus";
948 ranges = <0x0 0x0 0x20000000 0x1000000>;
949
950 dcsr-epu@0 {
951 compatible = "fsl,ls1021a-dcsr-epu";
952 reg = <0x0 0x10000>;
953 };
954
955 dcsr-gdi@100000 {
956 compatible = "fsl,ls1021a-dcsr-gdi";
957 reg = <0x100000 0x10000>;
958 };
959
960 dcsr-dddi@120000 {
961 compatible = "fsl,ls1021a-dcsr-dddi";
962 reg = <0x120000 0x10000>;
963 };
964
965 dcsr-dcfg@220000 {
966 compatible = "fsl,ls1021a-dcsr-dcfg";
967 reg = <0x220000 0x1000>;
968 };
969
970 dcsr-clock@221000 {
971 compatible = "fsl,ls1021a-dcsr-clock";
972 reg = <0x221000 0x1000>;
973 };
974
975 dcsr-rcpm@222000 {
976 compatible = "fsl,ls1021a-dcsr-rcpm";
977 reg = <0x222000 0x1000 0x223000 0x1000>;
978 };
979
980 dcsr-ccp@225000 {
981 compatible = "fsl,ls1021a-dcsr-ccp";
982 reg = <0x225000 0x1000>;
983 };
984
985 dcsr-fusectrl@226000 {
986 compatible = "fsl,ls1021a-dcsr-fusectrl";
987 reg = <0x226000 0x1000>;
988 };
989
990 dcsr-dap@300000 {
991 compatible = "fsl,ls1021a-dcsr-dap";
992 reg = <0x300000 0x10000>;
993 };
994
995 dcsr-cstf@350000 {
996 compatible = "fsl,ls1021a-dcsr-cstf";
997 reg = <0x350000 0x1000 0x3a7000 0x1000>;
998 };
999
1000 dcsr-a7rom@360000 {
1001 compatible = "fsl,ls1021a-dcsr-a7rom";
1002 reg = <0x360000 0x10000>;
1003 };
1004
1005 dcsr-a7cpu@370000 {
1006 compatible = "fsl,ls1021a-dcsr-a7cpu";
1007 reg = <0x370000 0x8000>;
1008 };
1009
1010 dcsr-a7cti@378000 {
1011 compatible = "fsl,ls1021a-dcsr-a7cti";
1012 reg = <0x378000 0x4000>;
1013 };
1014
1015 dcsr-etm@37c000 {
1016 compatible = "fsl,ls1021a-dcsr-etm";
1017 reg = <0x37c000 0x1000 0x37d000 0x3000>;
1018 };
1019
1020 dcsr-hugorom@3a0000 {
1021 compatible = "fsl,ls1021a-dcsr-hugorom";
1022 reg = <0x3a0000 0x1000>;
1023 };
1024
1025 dcsr-etf@3a1000 {
1026 compatible = "fsl,ls1021a-dcsr-etf";
1027 reg = <0x3a1000 0x1000 0x3a2000 0x1000>;
1028 };
1029
1030 dcsr-etr@3a3000 {
1031 compatible = "fsl,ls1021a-dcsr-etr";
1032 reg = <0x3a3000 0x1000>;
1033 };
1034
1035 dcsr-cti@3a4000 {
1036 compatible = "fsl,ls1021a-dcsr-cti";
1037 reg = <0x3a4000 0x1000 0x3a5000 0x1000 0x3a6000 0x1000>;
1038 };
1039
1040 dcsr-atbrepl@3a8000 {
1041 compatible = "fsl,ls1021a-dcsr-atbrepl";
1042 reg = <0x3a8000 0x1000>;
1043 };
1044
1045 dcsr-tsgen-ctrl@3a9000 {
1046 compatible = "fsl,ls1021a-dcsr-tsgen-ctrl";
1047 reg = <0x3a9000 0x1000>;
1048 };
1049
1050 dcsr-tsgen-read@3aa000 {
1051 compatible = "fsl,ls1021a-dcsr-tsgen-read";
1052 reg = <0x3aa000 0x1000>;
1053 };
1054 };
1055
1056 clocks {
1057
1058 clock {
1059 compatible = "fixed-clock";
1060 #clock-cells = <0x0>;
1061 clock-frequency = <0x1770000>;
1062 linux,phandle = <0x9>;
1063 phandle = <0x9>;
1064 };
1065 };
1066
1067 regulators {
1068 compatible = "simple-bus";
1069 #address-cells = <0x1>;
1070 #size-cells = <0x0>;
1071
1072 regulator@0 {
1073 compatible = "regulator-fixed";
1074 reg = <0x0>;
1075 regulator-name = "3P3V";
1076 regulator-min-microvolt = <0x325aa0>;
1077 regulator-max-microvolt = <0x325aa0>;
1078 regulator-always-on;
1079 linux,phandle = <0x7>;
1080 phandle = <0x7>;
1081 };
1082
1083 regulator@1 {
1084 compatible = "regulator-fixed";
1085 reg = <0x1>;
1086 regulator-name = "2P5V";
1087 regulator-min-microvolt = <0x2625a0>;
1088 regulator-max-microvolt = <0x2625a0>;
1089 regulator-always-on;
1090 linux,phandle = <0x8>;
1091 phandle = <0x8>;
1092 };
1093 };
1094
1095 sound {
1096 compatible = "fsl,vf610-sgtl5000";
1097 simple-audio-card,name = "FSL-VF610-TWR-BOARD";
1098 simple-audio-card,routing = "MIC_IN", "Microphone Jack", "Microphone Jack", "Mic Bias", "LINE_IN", "Line In Jack", "Headphone Jack", "HP_OUT", "Speaker Ext", "LINE_OUT";
1099 simple-audio-card,cpu = <0x13>;
1100 simple-audio-card,codec = <0x14>;
1101 };
1102};
diff --git a/recipes-kernel/linux/linux-ls1_3.12.bbappend b/recipes-kernel/linux/linux-ls1_3.12.bbappend
deleted file mode 100644
index e0c7a91..0000000
--- a/recipes-kernel/linux/linux-ls1_3.12.bbappend
+++ /dev/null
@@ -1,40 +0,0 @@
1require linux-ls1-common.inc
2
3FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
4
5SRC_URI += "file://ls1021aiot.dts \
6 file://0001-fsnotify-fix-oops-in-fsnotify_clear_marks_by_group_f.patch \
7 file://0002-watchdog-fix-errata-err004346.patch \
8 "
9
10# fix err: "linux-ls1-3.12-r0 do_deploy: Taskhash mismatch"
11ZIMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
12
13do_configure_prepend() {
14 cp -rf ${WORKDIR}/ls1021aiot.dts ${S}/arch/arm/boot/dts/ls1021aiot.dts
15}
16
17do_configure_append() {
18 #
19 # Add Enea specific kernel configs
20 #
21
22 #gather full config fragment paths
23 addon_features=""
24 if [ -n "${ENEA_KERNEL_FRAGMENTS}" ]; then
25 for feature in ${ENEA_KERNEL_FRAGMENTS}; do
26 addon_features="${addon_features} ${WORKDIR}/${feature}"
27 done
28 fi
29
30 #in case there is no .config file yet
31 touch ${B}/.config
32
33 if [ -e "${S}/scripts/kconfig/merge_config.sh" ]; then
34 O=${B} ${S}/scripts/kconfig/merge_config.sh -m .config ${addon_features}
35 else
36 bbfatal "No merge_config.sh found in the kernel tree."
37 fi
38
39 oe_runmake KCONFIG_ALLCONFIG=${B}/.config O=${B} alldefconfig
40}