diff options
Diffstat (limited to 'recipes-kernel/linux/linux-cavium')
42 files changed, 0 insertions, 11904 deletions
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 @@ | |||
1 | From 65693212754e9f97d29504219327ce4807780c48 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dragos Motrea <Dragos.Motrea@enea.com> | ||
3 | Date: Tue, 24 Oct 2017 13:10:10 +0200 | ||
4 | Subject: [meta-enea-bsp-arm][cavium-4.9][LXCR-8050][PATCHv1 1/1] openvswitch: | ||
5 | fixed kernel crash | ||
6 | |||
7 | Inserting the openvswitch.ko is causing a kernel crash in | ||
8 | __percpu_counter_sum function. Applying this patch will replace the percpu | ||
9 | counter API with the atomic operations for fragmentation mem accounting. | ||
10 | The atomic operations should be used on architecture with many CPUs. | ||
11 | |||
12 | The revert is made in kernel upstream by the commit: | ||
13 | fb452a1aa3fd4034d7999e309c5466ff2d7005aa | ||
14 | |||
15 | Upstream-Status: Backport | ||
16 | |||
17 | Signed-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 | |||
27 | diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h | ||
28 | index 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 : | ||
107 | diff --git a/net/ieee802154/6lowpan/reassembly.c b/net/ieee802154/6lowpan/reassembly.c | ||
108 | index 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 = | ||
136 | diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c | ||
137 | index 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 | |||
152 | diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c | ||
153 | index 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); | ||
186 | diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c | ||
187 | index 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) | ||
212 | diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c | ||
213 | index 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 | -- | ||
240 | 2.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 @@ | |||
1 | From 7aa58e7ad53bd9536aa49a18ccd0778c728bf57d Mon Sep 17 00:00:00 2001 | ||
2 | From: Andy Lutomirski <luto@kernel.org> | ||
3 | Date: Mon, 12 Dec 2016 12:54:37 -0800 | ||
4 | Subject: [PATCH] cifs: Fix smbencrypt() to stop pointing a scatterlist at the | ||
5 | stack | ||
6 | |||
7 | commit 06deeec77a5a689cc94b21a8a91a76e42176685d upstream. | ||
8 | |||
9 | smbencrypt() points a scatterlist to the stack, which is breaks if | ||
10 | CONFIG_VMAP_STACK=y. | ||
11 | |||
12 | Fix it by switching to crypto_cipher_encrypt_one(). The new code | ||
13 | should be considerably faster as an added benefit. | ||
14 | |||
15 | This code is nearly identical to some code that Eric Biggers | ||
16 | suggested. | ||
17 | |||
18 | CVE: CVE-2016-10154 | ||
19 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
20 | |||
21 | Reported-by: Eric Biggers <ebiggers3@gmail.com> | ||
22 | Signed-off-by: Andy Lutomirski <luto@kernel.org> | ||
23 | Acked-by: Jeff Layton <jlayton@redhat.com> | ||
24 | Signed-off-by: Steve French <smfrench@gmail.com> | ||
25 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
26 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
27 | --- | ||
28 | fs/cifs/smbencrypt.c | 40 ++++++++-------------------------------- | ||
29 | 1 file changed, 8 insertions(+), 32 deletions(-) | ||
30 | |||
31 | diff --git a/fs/cifs/smbencrypt.c b/fs/cifs/smbencrypt.c | ||
32 | index 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 | -- | ||
99 | 1.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 @@ | |||
1 | From 13e6ef99d23b05807e7f8a72f45e3d8260b61570 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eryu Guan <guaneryu@gmail.com> | ||
3 | Date: Thu, 1 Dec 2016 15:08:37 -0500 | ||
4 | Subject: [PATCH] ext4: validate s_first_meta_bg at mount time | ||
5 | |||
6 | commit 3a4b77cd47bb837b8557595ec7425f281f2ca1fe upstream. | ||
7 | |||
8 | Ralf Spenneberg reported that he hit a kernel crash when mounting a | ||
9 | modified ext4 image. And it turns out that kernel crashed when | ||
10 | calculating fs overhead (ext4_calculate_overhead()), this is because | ||
11 | the image has very large s_first_meta_bg (debug code shows it's | ||
12 | 842150400), and ext4 overruns the memory in count_overhead() when | ||
13 | setting bitmap buffer, which is PAGE_SIZE. | ||
14 | |||
15 | ext4_calculate_overhead(): | ||
16 | buf = get_zeroed_page(GFP_NOFS); <=== PAGE_SIZE buffer | ||
17 | blks = count_overhead(sb, i, buf); | ||
18 | |||
19 | count_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 | |||
25 | This 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 | |||
35 | Fix it by validating s_first_meta_bg first at mount time, and | ||
36 | refusing to mount if its value exceeds the largest possible meta_bg | ||
37 | number. | ||
38 | |||
39 | CVE: CVE-2016-10208 | ||
40 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
41 | |||
42 | Reported-by: Ralf Spenneberg <ralf@os-t.de> | ||
43 | Signed-off-by: Eryu Guan <guaneryu@gmail.com> | ||
44 | Signed-off-by: Theodore Ts'o <tytso@mit.edu> | ||
45 | Reviewed-by: Andreas Dilger <adilger@dilger.ca> | ||
46 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
47 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
48 | --- | ||
49 | fs/ext4/super.c | 9 +++++++++ | ||
50 | 1 file changed, 9 insertions(+) | ||
51 | |||
52 | diff --git a/fs/ext4/super.c b/fs/ext4/super.c | ||
53 | index 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 | -- | ||
73 | 1.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 @@ | |||
1 | From cfc0eb403816c5c4f9667d959de5e22789b5421e Mon Sep 17 00:00:00 2001 | ||
2 | From: Hugh Dickins <hughd@google.com> | ||
3 | Date: Mon, 19 Jun 2017 04:03:24 -0700 | ||
4 | Subject: [PATCH] mm: larger stack guard gap, between vmas | ||
5 | |||
6 | commit 1be7107fbe18eed3e319a6c3e83c78254b693acb upstream. | ||
7 | |||
8 | Stack guard page is a useful feature to reduce a risk of stack smashing | ||
9 | into a different mapping. We have been using a single page gap which | ||
10 | is sufficient to prevent having stack adjacent to a different mapping. | ||
11 | But this seems to be insufficient in the light of the stack usage in | ||
12 | userspace. E.g. glibc uses as large as 64kB alloca() in many commonly | ||
13 | used functions. Others use constructs liks gid_t buffer[NGROUPS_MAX] | ||
14 | which is 256kB or stack strings with MAX_ARG_STRLEN. | ||
15 | |||
16 | This will become especially dangerous for suid binaries and the default | ||
17 | no limit for the stack size limit because those applications can be | ||
18 | tricked to consume a large portion of the stack and a single glibc call | ||
19 | could jump over the guard page. These attacks are not theoretical, | ||
20 | unfortunatelly. | ||
21 | |||
22 | Make those attacks less probable by increasing the stack guard gap | ||
23 | to 1MB (on systems with 4k pages; but make it depend on the page size | ||
24 | because systems with larger base pages might cap stack allocations in | ||
25 | the PAGE_SIZE units) which should cover larger alloca() and VLA stack | ||
26 | allocations. It is obviously not a full fix because the problem is | ||
27 | somehow inherent, but it should reduce attack space a lot. | ||
28 | |||
29 | One could argue that the gap size should be configurable from userspace, | ||
30 | but that can be done later when somebody finds that the new 1MB is wrong | ||
31 | for some special case applications. For now, add a kernel command line | ||
32 | option (stack_guard_gap) to specify the stack gap size (in page units). | ||
33 | |||
34 | Implementation wise, first delete all the old code for stack guard page: | ||
35 | because although we could get away with accounting one extra page in a | ||
36 | stack vma, accounting a larger gap can break userspace - case in point, | ||
37 | a program run with "ulimit -S -v 20000" failed when the 1MB gap was | ||
38 | counted for RLIMIT_AS; similar problems could come with RLIMIT_MLOCK | ||
39 | and strict non-overcommit mode. | ||
40 | |||
41 | Instead of keeping gap inside the stack vma, maintain the stack guard | ||
42 | gap 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 | ||
44 | places which need to respect the gap - mainly arch_get_unmapped_area(), | ||
45 | and and the vma tree's subtree_gap support for that. | ||
46 | |||
47 | CVE: CVE-2017-1000364 | ||
48 | Upstream-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 | |||
50 | Original-patch-by: Oleg Nesterov <oleg@redhat.com> | ||
51 | Original-patch-by: Michal Hocko <mhocko@suse.com> | ||
52 | Signed-off-by: Hugh Dickins <hughd@google.com> | ||
53 | Acked-by: Michal Hocko <mhocko@suse.com> | ||
54 | Tested-by: Helge Deller <deller@gmx.de> # parisc | ||
55 | Signed-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] | ||
58 | Signed-off-by: Willy Tarreau <w@1wt.eu> | ||
59 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
60 | Signed-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 | |||
87 | diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt | ||
88 | index 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 | |||
105 | diff --git a/arch/arc/mm/mmap.c b/arch/arc/mm/mmap.c | ||
106 | index 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 | |||
118 | diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c | ||
119 | index 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 | |||
140 | diff --git a/arch/frv/mm/elf-fdpic.c b/arch/frv/mm/elf-fdpic.c | ||
141 | index 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 | |||
153 | diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c | ||
154 | index 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 | |||
166 | diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c | ||
167 | index 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 | |||
215 | diff --git a/arch/powerpc/mm/hugetlbpage-radix.c b/arch/powerpc/mm/hugetlbpage-radix.c | ||
216 | index 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 | /* | ||
228 | diff --git a/arch/powerpc/mm/mmap.c b/arch/powerpc/mm/mmap.c | ||
229 | index 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 | |||
250 | diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c | ||
251 | index 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) | ||
263 | diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c | ||
264 | index 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 | |||
285 | diff --git a/arch/sh/mm/mmap.c b/arch/sh/mm/mmap.c | ||
286 | index 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 | |||
307 | diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c | ||
308 | index 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 | |||
329 | diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c | ||
330 | index 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) | ||
342 | diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c | ||
343 | index 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) | ||
355 | diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c | ||
356 | index 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 | |||
377 | diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c | ||
378 | index 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) | ||
390 | diff --git a/arch/xtensa/kernel/syscall.c b/arch/xtensa/kernel/syscall.c | ||
391 | index 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) | ||
403 | diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c | ||
404 | index 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 | |||
416 | diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c | ||
417 | index 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 ", | ||
432 | diff --git a/include/linux/mm.h b/include/linux/mm.h | ||
433 | index 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; | ||
515 | diff --git a/mm/gup.c b/mm/gup.c | ||
516 | index 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) | ||
531 | diff --git a/mm/memory.c b/mm/memory.c | ||
532 | index 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 | ||
587 | diff --git a/mm/mmap.c b/mm/mmap.c | ||
588 | index 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 | -- | ||
938 | 1.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 @@ | |||
1 | From f991af3daabaecff34684fd51fac80319d1baad1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Cong Wang <xiyou.wangcong@gmail.com> | ||
3 | Date: Sun, 9 Jul 2017 13:19:55 -0700 | ||
4 | Subject: mqueue: fix a use-after-free in sys_mq_notify() | ||
5 | |||
6 | The retry logic for netlink_attachskb() inside sys_mq_notify() | ||
7 | is nasty and vulnerable: | ||
8 | |||
9 | 1) The sock refcnt is already released when retry is needed | ||
10 | 2) The fd is controllable by user-space because we already | ||
11 | release the file refcnt | ||
12 | |||
13 | so we when retry but the fd has been just closed by user-space | ||
14 | during this small window, we end up calling netlink_detachskb() | ||
15 | on the error path which releases the sock again, later when | ||
16 | the user-space closes this socket a use-after-free could be | ||
17 | triggered. | ||
18 | |||
19 | Setting 'sock' to NULL here should be sufficient to fix it. | ||
20 | CVE: CVE-2017-11176 | ||
21 | Upstream-Status: Backport [from: https://git.kernel.org/linus/f991af3daabaecff34684fd51fac80319d1baad1] | ||
22 | |||
23 | Reported-by: GeneBlue <geneblue.mail@gmail.com> | ||
24 | Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> | ||
25 | Cc: Andrew Morton <akpm@linux-foundation.org> | ||
26 | Cc: Manfred Spraul <manfred@colorfullife.com> | ||
27 | Cc: stable@kernel.org | ||
28 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
29 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
30 | --- | ||
31 | ipc/mqueue.c | 4 +++- | ||
32 | 1 file changed, 3 insertions(+), 1 deletion(-) | ||
33 | |||
34 | diff --git a/ipc/mqueue.c b/ipc/mqueue.c | ||
35 | index 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 | -- | ||
51 | cgit 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 @@ | |||
1 | From 782b361c93062f083bbc9a78928498218f950399 Mon Sep 17 00:00:00 2001 | ||
2 | From: Gu Zheng <guzheng1@huawei.com> | ||
3 | Date: Mon, 9 Jan 2017 09:34:48 +0800 | ||
4 | Subject: [PATCH] tmpfs: clear S_ISGID when setting posix ACLs | ||
5 | |||
6 | commit 497de07d89c1410d76a15bec2bb41f24a2a89f31 upstream. | ||
7 | |||
8 | This change was missed the tmpfs modification in In CVE-2016-7097 | ||
9 | commit 073931017b49 ("posix_acl: Clear SGID bit when setting | ||
10 | file permissions") | ||
11 | It can test by xfstest generic/375, which failed to clear | ||
12 | setgid 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 | |||
19 | CVE: CVE-2017-5551 | ||
20 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
21 | |||
22 | Signed-off-by: Gu Zheng <guzheng1@huawei.com> | ||
23 | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> | ||
24 | Cc: Brad Spengler <spender@grsecurity.net> | ||
25 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
26 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
27 | --- | ||
28 | fs/posix_acl.c | 9 ++++----- | ||
29 | 1 file changed, 4 insertions(+), 5 deletions(-) | ||
30 | |||
31 | diff --git a/fs/posix_acl.c b/fs/posix_acl.c | ||
32 | index 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 | -- | ||
52 | 1.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 @@ | |||
1 | From cfba2a001d0e36905016bb4f87fc47245c944c36 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Anholt <eric@anholt.net> | ||
3 | Date: Tue, 17 Jan 2017 21:58:06 +1100 | ||
4 | Subject: [PATCH] drm/vc4: Return -EINVAL on the overflow checks failing. | ||
5 | |||
6 | commit 6b8ac63847bc2f958dd93c09edc941a0118992d9 upstream. | ||
7 | |||
8 | By failing to set the errno, we'd continue on to trying to set up the | ||
9 | RCL, and then oops on trying to dereference the tile_bo that binning | ||
10 | validation should have set up. | ||
11 | |||
12 | CVE: CVE-2017-5577 | ||
13 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
14 | |||
15 | Reported-by: Ingo Molnar <mingo@kernel.org> | ||
16 | Signed-off-by: Eric Anholt <eric@anholt.net> | ||
17 | Fixes: d5b1a78a772f ("drm/vc4: Add support for drawing 3D frames.") | ||
18 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
19 | Signed-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 | |||
24 | diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c | ||
25 | index 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 | -- | ||
37 | 1.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 @@ | |||
1 | From 270e84a1e6effd6c0c6e9b13b196b5fdaa392954 Mon Sep 17 00:00:00 2001 | ||
2 | From: Davidlohr Bueso <dave@stgolabs.net> | ||
3 | Date: Mon, 27 Feb 2017 14:28:24 -0800 | ||
4 | Subject: [PATCH] ipc/shm: Fix shmat mmap nil-page protection | ||
5 | |||
6 | commit 95e91b831f87ac8e1f8ed50c14d709089b4e01b8 upstream. | ||
7 | |||
8 | The issue is described here, with a nice testcase: | ||
9 | |||
10 | https://bugzilla.kernel.org/show_bug.cgi?id=192931 | ||
11 | |||
12 | The problem is that shmat() calls do_mmap_pgoff() with MAP_FIXED, and | ||
13 | the address rounded down to 0. For the regular mmap case, the | ||
14 | protection mentioned above is that the kernel gets to generate the | ||
15 | address -- arch_get_unmapped_area() will always check for MAP_FIXED and | ||
16 | return that address. So by the time we do security_mmap_addr(0) things | ||
17 | get funky for shmat(). | ||
18 | |||
19 | The testcase itself shows that while a regular user crashes, root will | ||
20 | not have a problem attaching a nil-page. There are two possible fixes | ||
21 | to this. The first, and which this patch does, is to simply allow root | ||
22 | to crash as well -- this is also regular mmap behavior, ie when hacking | ||
23 | up the testcase and adding mmap(... |MAP_FIXED). While this approach | ||
24 | is the safer option, the second alternative is to ignore SHM_RND if the | ||
25 | rounded address is 0, thus only having MAP_SHARED flags. This makes the | ||
26 | behavior of shmat() identical to the mmap() case. The downside of this | ||
27 | is obviously user visible, but does make sense in that it maintains | ||
28 | semantics after the round-down wrt 0 address and mmap. | ||
29 | |||
30 | Passes shm related ltp tests. | ||
31 | |||
32 | CVE: CVE-2017-5669 | ||
33 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
34 | |||
35 | Link: http://lkml.kernel.org/r/1486050195-18629-1-git-send-email-dave@stgolabs.net | ||
36 | Signed-off-by: Davidlohr Bueso <dbueso@suse.de> | ||
37 | Reported-by: Gareth Evans <gareth.evans@contextis.co.uk> | ||
38 | Cc: Manfred Spraul <manfred@colorfullife.com> | ||
39 | Cc: Michael Kerrisk <mtk.manpages@googlemail.com> | ||
40 | Signed-off-by: Andrew Morton <akpm@linux-foundation.org> | ||
41 | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> | ||
42 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
43 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
44 | --- | ||
45 | ipc/shm.c | 13 +++++++++---- | ||
46 | 1 file changed, 9 insertions(+), 4 deletions(-) | ||
47 | |||
48 | diff --git a/ipc/shm.c b/ipc/shm.c | ||
49 | index 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 | -- | ||
80 | 1.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 @@ | |||
1 | From f5b54446630a973e1f27b68599366bbd0ac53066 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Dumazet <edumazet@google.com> | ||
3 | Date: Sat, 4 Feb 2017 11:16:52 -0800 | ||
4 | Subject: [PATCH] ipv4: keep skb->dst around in presence of IP options | ||
5 | |||
6 | [ Upstream commit 34b2cef20f19c87999fff3da4071e66937db9644 ] | ||
7 | |||
8 | Andrey Konovalov got crashes in __ip_options_echo() when a NULL skb->dst | ||
9 | is accessed. | ||
10 | |||
11 | ipv4_pktinfo_prepare() should not drop the dst if (evil) IP options | ||
12 | are present. | ||
13 | |||
14 | We could refine the test to the presence of ts_needtime or srr, | ||
15 | but IP options are not often used, so let's be conservative. | ||
16 | |||
17 | Thanks to syzkaller team for finding this bug. | ||
18 | |||
19 | CVE: CVE-2017-5970 | ||
20 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
21 | |||
22 | Fixes: d826eb14ecef ("ipv4: PKTINFO doesnt need dst reference") | ||
23 | Signed-off-by: Eric Dumazet <edumazet@google.com> | ||
24 | Reported-by: Andrey Konovalov <andreyknvl@google.com> | ||
25 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
26 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
27 | Signed-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 | |||
32 | diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c | ||
33 | index 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 | -- | ||
53 | 1.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 @@ | |||
1 | From 00eff2ebbd229758e90659907724c14dd5a18339 Mon Sep 17 00:00:00 2001 | ||
2 | From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | ||
3 | Date: Mon, 6 Feb 2017 18:10:31 -0200 | ||
4 | Subject: [PATCH] sctp: avoid BUG_ON on sctp_wait_for_sndbuf | ||
5 | |||
6 | [ Upstream commit 2dcab598484185dea7ec22219c76dcdd59e3cb90 ] | ||
7 | |||
8 | Alexander Popov reported that an application may trigger a BUG_ON in | ||
9 | sctp_wait_for_sndbuf if the socket tx buffer is full, a thread is | ||
10 | waiting on it to queue more data and meanwhile another thread peels off | ||
11 | the association being used by the first thread. | ||
12 | |||
13 | This patch replaces the BUG_ON call with a proper error handling. It | ||
14 | will return -EPIPE to the original sendmsg call, similarly to what would | ||
15 | have been done if the association wasn't found in the first place. | ||
16 | |||
17 | CVE: CVE-2017-5986 | ||
18 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
19 | |||
20 | Acked-by: Alexander Popov <alex.popov@linux.com> | ||
21 | Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | ||
22 | Reviewed-by: Xin Long <lucien.xin@gmail.com> | ||
23 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
24 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
25 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
26 | --- | ||
27 | net/sctp/socket.c | 3 ++- | ||
28 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
29 | |||
30 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c | ||
31 | index 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 | -- | ||
45 | 1.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 @@ | |||
1 | From 0f895f51a831d73ce24158534784aba5b2a72a9e Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Dumazet <edumazet@google.com> | ||
3 | Date: Fri, 3 Feb 2017 14:59:38 -0800 | ||
4 | Subject: [PATCH] tcp: avoid infinite loop in tcp_splice_read() | ||
5 | |||
6 | [ Upstream commit ccf7abb93af09ad0868ae9033d1ca8108bdaec82 ] | ||
7 | |||
8 | Splicing from TCP socket is vulnerable when a packet with URG flag is | ||
9 | received and stored into receive queue. | ||
10 | |||
11 | __tcp_splice_read() returns 0, and sk_wait_data() immediately | ||
12 | returns since there is the problematic skb in queue. | ||
13 | |||
14 | This is a nice way to burn cpu (aka infinite loop) and trigger | ||
15 | soft lockups. | ||
16 | |||
17 | Again, this gem was found by syzkaller tool. | ||
18 | |||
19 | CVE: CVE-2017-6214 | ||
20 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
21 | |||
22 | Fixes: 9c55e01c0cc8 ("[TCP]: Splice receive support.") | ||
23 | Signed-off-by: Eric Dumazet <edumazet@google.com> | ||
24 | Reported-by: Dmitry Vyukov <dvyukov@google.com> | ||
25 | Cc: Willy Tarreau <w@1wt.eu> | ||
26 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
27 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
28 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
29 | --- | ||
30 | net/ipv4/tcp.c | 6 ++++++ | ||
31 | 1 file changed, 6 insertions(+) | ||
32 | |||
33 | diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c | ||
34 | index 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 | -- | ||
51 | 1.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 @@ | |||
1 | From 42b52783a59cc706c71cdc7096edce4a6f086fd3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eric Dumazet <edumazet@google.com> | ||
3 | Date: Sun, 12 Feb 2017 14:03:52 -0800 | ||
4 | Subject: [PATCH] net/llc: avoid BUG_ON() in skb_orphan() | ||
5 | |||
6 | [ Upstream commit 8b74d439e1697110c5e5c600643e823eb1dd0762 ] | ||
7 | |||
8 | It seems nobody used LLC since linux-3.12. | ||
9 | |||
10 | Fortunately fuzzers like syzkaller still know how to run this code, | ||
11 | otherwise it would be no fun. | ||
12 | |||
13 | Setting skb->sk without skb->destructor leads to all kinds of | ||
14 | bugs, we now prefer to be very strict about it. | ||
15 | |||
16 | Ideally here we would use skb_set_owner() but this helper does not exist yet, | ||
17 | only CAN seems to have a private helper for that. | ||
18 | |||
19 | CVE: CVE-2017-6345 | ||
20 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
21 | |||
22 | Fixes: 376c7311bdb6 ("net: add a temporary sanity check in skb_orphan()") | ||
23 | Signed-off-by: Eric Dumazet <edumazet@google.com> | ||
24 | Reported-by: Andrey Konovalov <andreyknvl@google.com> | ||
25 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
26 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
27 | Signed-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 | |||
33 | diff --git a/net/llc/llc_conn.c b/net/llc/llc_conn.c | ||
34 | index 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); | ||
48 | diff --git a/net/llc/llc_sap.c b/net/llc/llc_sap.c | ||
49 | index 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 | -- | ||
64 | 1.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 @@ | |||
1 | From c2219da51664451149350e47321aa0fcf72a8b8f Mon Sep 17 00:00:00 2001 | ||
2 | From: "David S. Miller" <davem@davemloft.net> | ||
3 | Date: Fri, 17 Feb 2017 16:19:39 -0500 | ||
4 | Subject: [PATCH] irda: Fix lockdep annotations in hashbin_delete(). | ||
5 | |||
6 | [ Upstream commit 4c03b862b12f980456f9de92db6d508a4999b788 ] | ||
7 | |||
8 | A nested lock depth was added to the hasbin_delete() code but it | ||
9 | doesn't actually work some well and results in tons of lockdep splats. | ||
10 | |||
11 | Fix the code instead to properly drop the lock around the operation | ||
12 | and just keep peeking the head of the hashbin queue. | ||
13 | |||
14 | CVE: CVE-2017-6348 | ||
15 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
16 | |||
17 | Reported-by: Dmitry Vyukov <dvyukov@google.com> | ||
18 | Tested-by: Dmitry Vyukov <dvyukov@google.com> | ||
19 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
20 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
21 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
22 | --- | ||
23 | net/irda/irqueue.c | 34 ++++++++++++++++------------------ | ||
24 | 1 file changed, 16 insertions(+), 18 deletions(-) | ||
25 | |||
26 | diff --git a/net/irda/irqueue.c b/net/irda/irqueue.c | ||
27 | index 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 | -- | ||
93 | 1.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 @@ | |||
1 | From 35b9d61ea910c1ebd4652b32cc7d713f6689b4f4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | ||
3 | Date: Thu, 23 Feb 2017 09:31:18 -0300 | ||
4 | Subject: [PATCH] sctp: deny peeloff operation on asocs with threads sleeping | ||
5 | on it | ||
6 | |||
7 | commit dfcb9f4f99f1e9a49e43398a7bfbf56927544af1 upstream. | ||
8 | |||
9 | commit 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf") | ||
10 | attempted to avoid a BUG_ON call when the association being used for a | ||
11 | sendmsg() is blocked waiting for more sndbuf and another thread did a | ||
12 | peeloff operation on such asoc, moving it to another socket. | ||
13 | |||
14 | As Ben Hutchings noticed, then in such case it would return without | ||
15 | locking back the socket and would cause two unlocks in a row. | ||
16 | |||
17 | Further analysis also revealed that it could allow a double free if the | ||
18 | application managed to peeloff the asoc that is created during the | ||
19 | sendmsg call, because then sctp_sendmsg() would try to free the asoc | ||
20 | that was created only for that call. | ||
21 | |||
22 | This patch takes another approach. It will deny the peeloff operation | ||
23 | if there is a thread sleeping on the asoc, so this situation doesn't | ||
24 | exist anymore. This avoids the issues described above and also honors | ||
25 | the syscalls that are already being handled (it can be multiple sendmsg | ||
26 | calls). | ||
27 | |||
28 | Joint work with Xin Long. | ||
29 | |||
30 | CVE: CVE-2017-6353 | ||
31 | Upstream-Status: Backport [from kernel.org longterm 4.9.52] | ||
32 | |||
33 | Fixes: 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf") | ||
34 | Cc: Alexander Popov <alex.popov@linux.com> | ||
35 | Cc: Ben Hutchings <ben@decadent.org.uk> | ||
36 | Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | ||
37 | Signed-off-by: Xin Long <lucien.xin@gmail.com> | ||
38 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
39 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
40 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
41 | --- | ||
42 | net/sctp/socket.c | 8 ++++++-- | ||
43 | 1 file changed, 6 insertions(+), 2 deletions(-) | ||
44 | |||
45 | diff --git a/net/sctp/socket.c b/net/sctp/socket.c | ||
46 | index 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 | -- | ||
72 | 1.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 @@ | |||
1 | From ee0d8d8482345ff97a75a7d747efc309f13b0d80 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan Carpenter <dan.carpenter@oracle.com> | ||
3 | Date: Tue, 2 May 2017 13:58:53 +0300 | ||
4 | Subject: [PATCH] ipx: call ipxitf_put() in ioctl error path | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | We should call ipxitf_put() if the copy_to_user() fails. | ||
10 | |||
11 | CVE: CVE-2017-7487 | ||
12 | Upstream-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 | |||
14 | Reported-by: 李强 <liqiang6-s@360.cn> | ||
15 | Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> | ||
16 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
17 | Signed-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 | |||
22 | diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c | ||
23 | index 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 @@ | |||
1 | From c10479591869177ae7ac0570b54ace6fbdeb57c2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Herbert Xu <herbert@gondor.apana.org.au> | ||
3 | Date: Mon, 10 Apr 2017 17:27:57 +0800 | ||
4 | Subject: [PATCH] crypto: ahash - Fix EINPROGRESS notification callback | ||
5 | |||
6 | commit ef0579b64e93188710d48667cb5e014926af9f1b upstream. | ||
7 | |||
8 | The ahash API modifies the request's callback function in order | ||
9 | to clean up after itself in some corner cases (unaligned final | ||
10 | and missing finup). | ||
11 | |||
12 | When the request is complete ahash will restore the original | ||
13 | callback and everything is fine. However, when the request gets | ||
14 | an EBUSY on a full queue, an EINPROGRESS callback is made while | ||
15 | the request is still ongoing. | ||
16 | |||
17 | In this case the ahash API will incorrectly call its own callback. | ||
18 | |||
19 | This patch fixes the problem by creating a temporary request | ||
20 | object on the stack which is used to relay EINPROGRESS back to | ||
21 | the original completion function. | ||
22 | |||
23 | This patch also adds code to preserve the original flags value. | ||
24 | |||
25 | CVE: CVE-2017-7618 | ||
26 | Upstream-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 | |||
28 | Fixes: ab6bf4e5e5e4 ("crypto: hash - Fix the pointer voodoo in...") | ||
29 | Reported-by: Sabrina Dubroca <sd@queasysnail.net> | ||
30 | Tested-by: Sabrina Dubroca <sd@queasysnail.net> | ||
31 | Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> | ||
32 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
33 | Signed-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 | |||
39 | diff --git a/crypto/ahash.c b/crypto/ahash.c | ||
40 | index 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 | |||
215 | diff --git a/include/crypto/internal/hash.h b/include/crypto/internal/hash.h | ||
216 | index 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 | -- | ||
237 | 1.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 @@ | |||
1 | From fc6445df466f37291a70937642068bda78802a5b Mon Sep 17 00:00:00 2001 | ||
2 | From: "J. Bruce Fields" <bfields@redhat.com> | ||
3 | Date: Fri, 21 Apr 2017 16:10:18 -0400 | ||
4 | Subject: [PATCH] nfsd: check for oversized NFSv2/v3 arguments | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit e6838a29ecb484c97e4efef9429643b9851fba6e upstream. | ||
10 | |||
11 | A client can append random data to the end of an NFSv2 or NFSv3 RPC call | ||
12 | without our complaining; we'll just stop parsing at the end of the | ||
13 | expected data and ignore the rest. | ||
14 | |||
15 | Encoded arguments and replies are stored together in an array of pages, | ||
16 | and if a call is too large it could leave inadequate space for the | ||
17 | reply. This is normally OK because NFS RPC's typically have either | ||
18 | short arguments and long replies (like READ) or long arguments and short | ||
19 | replies (like WRITE). But a client that sends an incorrectly long reply | ||
20 | can violate those assumptions. This was observed to cause crashes. | ||
21 | |||
22 | Also, several operations increment rq_next_page in the decode routine | ||
23 | before checking the argument size, which can leave rq_next_page pointing | ||
24 | well past the end of the page array, causing trouble later in | ||
25 | svc_free_pages. | ||
26 | |||
27 | So, following a suggestion from Neil Brown, add a central check to | ||
28 | enforce our expectation that no NFSv2/v3 call has both a large call and | ||
29 | a large reply. | ||
30 | |||
31 | As followup we may also want to rewrite the encoding routines to check | ||
32 | more carefully that they aren't running off the end of the page array. | ||
33 | |||
34 | We may also consider rejecting calls that have any extra garbage | ||
35 | appended. That would be safer, and within our rights by spec, but given | ||
36 | the age of our server and the NFS protocol, and the fact that we've | ||
37 | never enforced this before, we may need to balance that against the | ||
38 | possibility of breaking some oddball client. | ||
39 | |||
40 | CVE: CVE-2017-7645 | ||
41 | Upstream-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 | |||
43 | Reported-by: Tuomas Haanpää <thaan@synopsys.com> | ||
44 | Reported-by: Ari Kauppi <ari@synopsys.com> | ||
45 | Reviewed-by: NeilBrown <neilb@suse.com> | ||
46 | Signed-off-by: J. Bruce Fields <bfields@redhat.com> | ||
47 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
48 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
49 | --- | ||
50 | fs/nfsd/nfssvc.c | 36 ++++++++++++++++++++++++++++++++++++ | ||
51 | 1 file changed, 36 insertions(+) | ||
52 | |||
53 | diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c | ||
54 | index 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 | -- | ||
108 | 1.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 @@ | |||
1 | From 06996254a605913cd7c1927d0e8a89b5138e110d Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan McDowell <noodles@earth.li> | ||
3 | Date: Wed, 15 Feb 2017 18:29:15 -0200 | ||
4 | Subject: [PATCH] dw2102: don't do DMA on stack | ||
5 | |||
6 | commit 606142af57dad981b78707234cfbd15f9f7b7125 upstream. | ||
7 | |||
8 | On Kernel 4.9, WARNINGs about doing DMA on stack are hit at | ||
9 | the dw2102 driver: one in su3000_power_ctrl() and the other in tt_s2_4600_frontend_attach(). | ||
10 | |||
11 | Both were due to the use of buffers on the stack as parameters to | ||
12 | dvb_usb_generic_rw() and the resulting attempt to do DMA with them. | ||
13 | |||
14 | The device was non-functional as a result. | ||
15 | |||
16 | So, switch this driver over to use a buffer within the device state | ||
17 | structure, as has been done with other DVB-USB drivers. | ||
18 | |||
19 | Tested with TechnoTrend TT-connect S2-4600. | ||
20 | |||
21 | CVE: CVE-2017-8062 | ||
22 | Upstream-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'] | ||
26 | Signed-off-by: Jonathan McDowell <noodles@earth.li> | ||
27 | Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> | ||
28 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
29 | Signed-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 | |||
34 | diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c | ||
35 | index 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 | -- | ||
439 | 1.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 @@ | |||
1 | From fb00319317c152bf3528df13a54c28bf8c5daa55 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de> | ||
3 | Date: Sun, 5 Feb 2017 12:57:59 -0200 | ||
4 | Subject: [PATCH] cxusb: Use a dma capable buffer also for reading | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | commit 3f190e3aec212fc8c61e202c51400afa7384d4bc upstream. | ||
10 | |||
11 | Commit 17ce039b4e54 ("[media] cxusb: don't do DMA on stack") | ||
12 | added a kmalloc'ed bounce buffer for writes, but missed to do the same | ||
13 | for reads. As the read only happens after the write is finished, we can | ||
14 | reuse the same buffer. | ||
15 | |||
16 | As dvb_usb_generic_rw handles a read length of 0 by itself, avoid calling | ||
17 | it using the dvb_usb_generic_read wrapper function. | ||
18 | |||
19 | CVE: CVE-2017-8063 | ||
20 | Upstream-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 | |||
22 | Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> | ||
23 | Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> | ||
24 | Cc: Ben Hutchings <ben@decadent.org.uk> | ||
25 | Cc: Brad Spengler <spender@grsecurity.net> | ||
26 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
27 | Signed-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 | |||
32 | diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c | ||
33 | index 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 | -- | ||
69 | 1.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 @@ | |||
1 | From 1992564156b5dc4ac73418e5b95e1a43f12f3cb1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arnd Bergmann <arnd@arndb.de> | ||
3 | Date: Thu, 2 Feb 2017 12:36:01 -0200 | ||
4 | Subject: [PATCH] dvb-usb-v2: avoid use-after-free | ||
5 | |||
6 | commit 005145378c9ad7575a01b6ce1ba118fb427f583a upstream. | ||
7 | |||
8 | I ran into a stack frame size warning because of the on-stack copy of | ||
9 | the USB device structure: | ||
10 | |||
11 | drivers/media/usb/dvb-usb-v2/dvb_usb_core.c: In function 'dvb_usbv2_disconnect': | ||
12 | drivers/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 | |||
14 | Copying a device structure like this is wrong for a number of other reasons | ||
15 | too aside from the possible stack overflow. One of them is that the | ||
16 | dev_info() call will print the name of the device later, but AFAICT | ||
17 | we have only copied a pointer to the name earlier and the actual name | ||
18 | has been freed by the time it gets printed. | ||
19 | |||
20 | This removes the on-stack copy of the device and instead copies the | ||
21 | device name using kstrdup(). I'm ignoring the possible failure here | ||
22 | as both printk() and kfree() are able to deal with NULL pointers. | ||
23 | |||
24 | CVE: CVE-2017-8064 | ||
25 | Upstream-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 | |||
27 | Signed-off-by: Arnd Bergmann <arnd@arndb.de> | ||
28 | Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> | ||
29 | Cc: Ben Hutchings <ben@decadent.org.uk> | ||
30 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
31 | Signed-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 | |||
36 | diff --git a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c | ||
37 | index 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 | -- | ||
64 | 1.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 @@ | |||
1 | From cec7abd27e878e3c83dc9af41ee87a2e9d483ac0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ethan Zonca <e@ethanzonca.com> | ||
3 | Date: Fri, 24 Feb 2017 11:27:36 -0500 | ||
4 | Subject: [PATCH] can: gs_usb: Don't use stack memory for USB transfers | ||
5 | |||
6 | commit c919a3069c775c1c876bec55e00b2305d5125caa upstream. | ||
7 | |||
8 | Fixes: 05ca5270005c can: gs_usb: add ethtool set_phys_id callback to locate physical device | ||
9 | |||
10 | The gs_usb driver is performing USB transfers using buffers allocated on | ||
11 | the stack. This causes the driver to not function with vmapped stacks. | ||
12 | Instead, allocate memory for the transfer buffers. | ||
13 | |||
14 | CVE: CVE-2017-8066 | ||
15 | Upstream-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 | |||
17 | Signed-off-by: Ethan Zonca <e@ethanzonca.com> | ||
18 | Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | ||
19 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
20 | Signed-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 | |||
25 | diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c | ||
26 | index 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 | -- | ||
137 | 1.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 @@ | |||
1 | From 86c6667f6a5f6bdb392d8ffbe58fbcbcf6db2704 Mon Sep 17 00:00:00 2001 | ||
2 | From: Omar Sandoval <osandov@fb.com> | ||
3 | Date: Wed, 1 Feb 2017 00:02:27 -0800 | ||
4 | Subject: [PATCH] virtio-console: avoid DMA from stack | ||
5 | |||
6 | commit c4baad50297d84bde1a7ad45e50c73adae4a2192 upstream. | ||
7 | |||
8 | put_chars() stuffs the buffer it gets into an sg, but that buffer may be | ||
9 | on the stack. This breaks with CONFIG_VMAP_STACK=y (for me, it | ||
10 | manifested as printks getting turned into NUL bytes). | ||
11 | |||
12 | CVE: CVE-2017-8067 | ||
13 | Upstream-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 | |||
15 | Signed-off-by: Omar Sandoval <osandov@fb.com> | ||
16 | Signed-off-by: Michael S. Tsirkin <mst@redhat.com> | ||
17 | Reviewed-by: Amit Shah <amit.shah@redhat.com> | ||
18 | Cc: Ben Hutchings <ben@decadent.org.uk> | ||
19 | Cc: Brad Spengler <spender@grsecurity.net> | ||
20 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
21 | Signed-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 | |||
26 | diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c | ||
27 | index 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 | -- | ||
57 | 1.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 @@ | |||
1 | From 878b015bcc726560b13be2d906caf6923428f05d Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Hutchings <ben@decadent.org.uk> | ||
3 | Date: Sat, 4 Feb 2017 16:56:03 +0000 | ||
4 | Subject: [PATCH] pegasus: Use heap buffers for all register access | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | [ Upstream commit 5593523f968bc86d42a035c6df47d5e0979b5ace ] | ||
10 | |||
11 | Allocating USB buffers on the stack is not portable, and no longer | ||
12 | works on x86_64 (with VMAP_STACK enabled as per default). | ||
13 | |||
14 | CVE: CVE-2017-8068 | ||
15 | Upstream-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 | |||
17 | Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") | ||
18 | References: https://bugs.debian.org/852556 | ||
19 | Reported-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org> | ||
20 | Tested-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org> | ||
21 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
22 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
23 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
24 | Signed-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 | |||
29 | diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c | ||
30 | index 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 | -- | ||
100 | 1.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 @@ | |||
1 | From e898f6f008aa91c154c9c8fb7be3fb9ec4d333ec Mon Sep 17 00:00:00 2001 | ||
2 | From: Ben Hutchings <ben@decadent.org.uk> | ||
3 | Date: Sat, 4 Feb 2017 16:56:32 +0000 | ||
4 | Subject: [PATCH] rtl8150: Use heap buffers for all register access | ||
5 | |||
6 | [ Upstream commit 7926aff5c57b577ab0f43364ff0c59d968f6a414 ] | ||
7 | |||
8 | Allocating USB buffers on the stack is not portable, and no longer | ||
9 | works on x86_64 (with VMAP_STACK enabled as per default). | ||
10 | |||
11 | CVE: CVE-2017-8069 | ||
12 | Upstream-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 | |||
14 | Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") | ||
15 | Signed-off-by: Ben Hutchings <ben@decadent.org.uk> | ||
16 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
17 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
18 | Signed-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 | |||
23 | diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c | ||
24 | index 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 | -- | ||
72 | 1.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 @@ | |||
1 | From 354dd3924a2e43806774953de536257548b5002c Mon Sep 17 00:00:00 2001 | ||
2 | From: Steven Toth <stoth@kernellabs.com> | ||
3 | Date: Tue, 6 Jun 2017 08:30:27 -0400 | ||
4 | Subject: [PATCH] [PATCH] saa7164: Bug - Double fetch PCIe access condition | ||
5 | |||
6 | Avoid a double fetch by reusing the values from the prior transfer. | ||
7 | |||
8 | Originally reported via https://bugzilla.kernel.org/show_bug.cgi?id=195559 | ||
9 | |||
10 | Thanks to Pengfei Wang <wpengfeinudt@gmail.com> for reporting. | ||
11 | |||
12 | CVE: CVE-2017-8831 | ||
13 | Upstream-Status: Backport [backport from ... | ||
14 | |||
15 | Signed-off-by: Steven Toth <stoth@kernellabs.com> | ||
16 | Signed-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 | |||
21 | diff --git a/drivers/media/pci/saa7164/saa7164-bus.c b/drivers/media/pci/saa7164/saa7164-bus.c | ||
22 | index 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 | }; | ||