1/*
2 * Copyright (c) 2020 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#include "skeleton.dtsi"
8#include <dt-bindings/interrupt-controller/intel-ioapic.h>
9#include <dt-bindings/i2c/i2c.h>
10#include <dt-bindings/pcie/pcie.h>
11
12/ {
13	cpus {
14		#address-cells = <1>;
15		#size-cells = <0>;
16
17		cpu@0 {
18			device_type = "cpu";
19			compatible = "intel,elkhart_lake";
20			d-cache-line-size = <64>;
21			reg = <0>;
22		};
23
24	};
25
26	dram0: memory@0 {
27		device_type = "memory";
28		reg = <0x0 DT_DRAM_SIZE>;
29	};
30
31	ibecc: ibecc {
32	       compatible = "intel,ibecc";
33	       label = "ibecc";
34	       status = "okay";
35	};
36
37	intc: ioapic@fec00000  {
38		compatible = "intel,ioapic";
39		reg = <0xfec00000 0x1000>;
40		interrupt-controller;
41		#interrupt-cells = <3>;
42	};
43
44	pcie0 {
45		label = "PCIE_0";
46		#address-cells = <1>;
47		#size-cells = <1>;
48		compatible = "intel,pcie";
49		ranges;
50
51		uart0: uart@f000 {
52			compatible = "ns16550";
53
54			reg = <PCIE_BDF(0,0x1e,0) PCIE_ID(0x8086,0x4b28)>;
55
56			label = "UART_0";
57			clock-frequency = <1843200>;
58			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
59			interrupt-parent = <&intc>;
60			status = "okay";
61			current-speed = <115200>;
62		};
63
64		uart1: uart@f100 {
65			compatible = "ns16550";
66
67			reg = <PCIE_BDF(0,0x1e,1) PCIE_ID(0x8086,0x4b29)>;
68
69			label = "UART_1";
70			clock-frequency = <1843200>;
71			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
72			interrupt-parent = <&intc>;
73
74			status = "okay";
75			current-speed = <115200>;
76		};
77
78		uart2: uart@ca00 {
79			compatible = "ns16550";
80
81			reg = <PCIE_BDF(0,0x19,2) PCIE_ID(0x8086,0x4b4d)>;
82
83			label = "UART_2";
84			clock-frequency = <1843200>;
85			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
86			interrupt-parent = <&intc>;
87
88			status = "okay";
89			current-speed = <115200>;
90		};
91
92		uart_pse_0: uart@8800 {
93			compatible = "ns16550";
94
95			reg = <PCIE_BDF(0,0x11,0) PCIE_ID(0x8086,0x4b96)>;
96
97			label = "UART_PSE_0";
98			clock-frequency = <1843200>;
99			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
100			interrupt-parent = <&intc>;
101
102			status = "disabled";
103			current-speed = <115200>;
104		};
105
106		uart_pse_1: uart@8900 {
107			compatible = "ns16550";
108
109			reg = <PCIE_BDF(0,0x11,1) PCIE_ID(0x8086,0x4b97)>;
110
111			label = "UART_PSE_1";
112			clock-frequency = <1843200>;
113			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
114			interrupt-parent = <&intc>;
115
116			status = "disabled";
117			current-speed = <115200>;
118		};
119
120		uart_pse_2: uart@8a00 {
121			compatible = "ns16550";
122
123			reg = <PCIE_BDF(0,0x11,2) PCIE_ID(0x8086,0x4b98)>;
124
125			label = "UART_PSE_2";
126			clock-frequency = <1843200>;
127			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
128			interrupt-parent = <&intc>;
129
130			status = "disabled";
131			current-speed = <115200>;
132		};
133
134		uart_pse_3: uart@8b00 {
135			compatible = "ns16550";
136
137			reg = <PCIE_BDF(0,0x11,3) PCIE_ID(0x8086,0x4b99)>;
138
139			label = "UART_PSE_3";
140			clock-frequency = <1843200>;
141			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
142			interrupt-parent = <&intc>;
143
144			status = "disabled";
145			current-speed = <115200>;
146		};
147
148		uart_pse_4: uart@8c00 {
149			compatible = "ns16550";
150
151			reg = <PCIE_BDF(0,0x11,4) PCIE_ID(0x8086,0x4b9a)>;
152
153			label = "UART_PSE_4";
154			clock-frequency = <1843200>;
155			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
156			interrupt-parent = <&intc>;
157
158			status = "disabled";
159			current-speed = <115200>;
160		};
161
162		uart_pse_5: uart@8d00 {
163			compatible = "ns16550";
164
165			reg = <PCIE_BDF(0,0x11,5) PCIE_ID(0x8086,0x4b9b)>;
166
167			label = "UART_PSE_5";
168			clock-frequency = <1843200>;
169			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
170			interrupt-parent = <&intc>;
171
172			status = "disabled";
173			current-speed = <115200>;
174		};
175
176		i2c0: i2c@a800 {
177			compatible = "snps,designware-i2c";
178			clock-frequency = <I2C_BITRATE_STANDARD>;
179			#address-cells = <1>;
180			#size-cells = <0>;
181			reg = <PCIE_BDF(0,0x15,0) PCIE_ID(0x8086,0x4b78)>;
182			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
183			interrupt-parent = <&intc>;
184			label = "I2C_0";
185
186			status = "okay";
187		};
188
189		i2c1: i2c@a900 {
190			compatible = "snps,designware-i2c";
191			clock-frequency = <I2C_BITRATE_STANDARD>;
192			#address-cells = <1>;
193			#size-cells = <0>;
194			reg = <PCIE_BDF(0,0x15,1) PCIE_ID(0x8086,0x4b79)>;
195			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
196			interrupt-parent = <&intc>;
197			label = "I2C_1";
198
199			status = "okay";
200		};
201
202		i2c2: i2c@aa00 {
203			compatible = "snps,designware-i2c";
204			clock-frequency = <I2C_BITRATE_STANDARD>;
205			#address-cells = <1>;
206			#size-cells = <0>;
207			reg = <PCIE_BDF(0,0x15,2) PCIE_ID(0x8086,0x4b7a)>;
208			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
209			interrupt-parent = <&intc>;
210			label = "I2C_2";
211
212			status = "okay";
213		};
214
215		i2c3: i2c@ab00 {
216			compatible = "snps,designware-i2c";
217			clock-frequency = <I2C_BITRATE_STANDARD>;
218			#address-cells = <1>;
219			#size-cells = <0>;
220			reg = <PCIE_BDF(0,0x15,3) PCIE_ID(0x8086,0x4b7b)>;
221			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
222			interrupt-parent = <&intc>;
223			label = "I2C_3";
224
225			status = "okay";
226		};
227
228		i2c4: i2c@c800 {
229			compatible = "snps,designware-i2c";
230			clock-frequency = <I2C_BITRATE_STANDARD>;
231			#address-cells = <1>;
232			#size-cells = <0>;
233			reg = <PCIE_BDF(0,0x19,0) PCIE_ID(0x8086,0x4b4b)>;
234			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
235			interrupt-parent = <&intc>;
236			label = "I2C_4";
237
238			status = "okay";
239		};
240
241		i2c5: i2c@c900 {
242			compatible = "snps,designware-i2c";
243			clock-frequency = <I2C_BITRATE_STANDARD>;
244			#address-cells = <1>;
245			#size-cells = <0>;
246			reg = <PCIE_BDF(0,0x19,1) PCIE_ID(0x8086,0x4b4c)>;
247			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
248			interrupt-parent = <&intc>;
249			label = "I2C_5";
250
251			status = "okay";
252		};
253
254		i2c6: i2c@8000 {
255			compatible = "snps,designware-i2c";
256			clock-frequency = <I2C_BITRATE_STANDARD>;
257			#address-cells = <1>;
258			#size-cells = <0>;
259			reg = <PCIE_BDF(0,0x10,0) PCIE_ID(0x8086,0x4b44)>;
260			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
261			interrupt-parent = <&intc>;
262			label = "I2C_6";
263
264			status = "okay";
265		};
266
267		i2c7: i2c@8100 {
268			compatible = "snps,designware-i2c";
269			clock-frequency = <I2C_BITRATE_STANDARD>;
270			#address-cells = <1>;
271			#size-cells = <0>;
272			reg = <PCIE_BDF(0,0x10,1) PCIE_ID(0x8086,0x4b45)>;
273			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
274			interrupt-parent = <&intc>;
275			label = "I2C_7";
276
277			status = "okay";
278		};
279
280		i2c_pse_0: i2c@d800 {
281			compatible = "snps,designware-i2c";
282			clock-frequency = <I2C_BITRATE_STANDARD>;
283			#address-cells = <1>;
284			#size-cells = <0>;
285			reg = <PCIE_BDF(0,0x1b,0) PCIE_ID(0x8086,0x4bb9)>;
286			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
287			interrupt-parent = <&intc>;
288			label = "I2C_PSE_0";
289
290			status = "okay";
291		};
292
293		i2c_pse_1: i2c@d900 {
294			compatible = "snps,designware-i2c";
295			clock-frequency = <I2C_BITRATE_STANDARD>;
296			#address-cells = <1>;
297			#size-cells = <0>;
298			reg = <PCIE_BDF(0,0x1b,1) PCIE_ID(0x8086,0x4bba)>;
299			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
300			interrupt-parent = <&intc>;
301			label = "I2C_PSE_1";
302
303			status = "okay";
304		};
305
306		i2c_pse_2: i2c@da00 {
307			compatible = "snps,designware-i2c";
308			clock-frequency = <I2C_BITRATE_STANDARD>;
309			#address-cells = <1>;
310			#size-cells = <0>;
311			reg = <PCIE_BDF(0,0x1b,2) PCIE_ID(0x8086,0x4bbb)>;
312			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
313			interrupt-parent = <&intc>;
314			label = "I2C_PSE_2";
315
316			status = "okay";
317		};
318
319		i2c_pse_3: i2c@db00 {
320			compatible = "snps,designware-i2c";
321			clock-frequency = <I2C_BITRATE_STANDARD>;
322			#address-cells = <1>;
323			#size-cells = <0>;
324			reg = <PCIE_BDF(0,0x1b,3) PCIE_ID(0x8086,0x4bbc)>;
325			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
326			interrupt-parent = <&intc>;
327			label = "I2C_PSE_3";
328
329			status = "okay";
330		};
331
332		i2c_pse_4: i2c@dc00 {
333			compatible = "snps,designware-i2c";
334			clock-frequency = <I2C_BITRATE_STANDARD>;
335			#address-cells = <1>;
336			#size-cells = <0>;
337			reg = <PCIE_BDF(0,0x1b,4) PCIE_ID(0x8086,0x4bbd)>;
338			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
339			interrupt-parent = <&intc>;
340			label = "I2C_PSE_4";
341
342			status = "okay";
343		};
344
345		i2c_pse_5: i2c@dd00 {
346			compatible = "snps,designware-i2c";
347			clock-frequency = <I2C_BITRATE_STANDARD>;
348			#address-cells = <1>;
349			#size-cells = <0>;
350			reg = <PCIE_BDF(0,0x1b,5) PCIE_ID(0x8086,0x4bbe)>;
351			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
352			interrupt-parent = <&intc>;
353			label = "I2C_PSE_5";
354
355			status = "okay";
356		};
357
358		i2c_pse_6: i2c@de00 {
359			compatible = "snps,designware-i2c";
360			clock-frequency = <I2C_BITRATE_STANDARD>;
361			#address-cells = <1>;
362			#size-cells = <0>;
363			reg = <PCIE_BDF(0,0x1b,6) PCIE_ID(0x8086,0x4bbf)>;
364			interrupts = <PCIE_IRQ_DETECT IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
365			interrupt-parent = <&intc>;
366			label = "I2C_PSE_6";
367
368			status = "okay";
369		};
370	};
371
372	soc {
373		#address-cells = <1>;
374		#size-cells = <1>;
375		compatible = "simple-bus";
376		ranges;
377
378		uart1_fixed: uart@fe040000 {
379			compatible = "ns16550";
380
381			reg = <0xfe040000 0x1000>;
382			reg-shift = <0>;
383
384			label = "UART_1_FIXED";
385			clock-frequency = <1843200>;
386			interrupts = <3 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
387			interrupt-parent = <&intc>;
388
389			status = "disabled";
390			current-speed = <115200>;
391		};
392
393		uart2_fixed: uart@fe042000 {
394			compatible = "ns16550";
395
396			reg = <0xfe042000 0x1000>;
397			reg-shift = <0>;
398
399			label = "UART_2_FIXED";
400			clock-frequency = <1843200>;
401			interrupts = <4 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
402			interrupt-parent = <&intc>;
403
404			status = "disabled";
405			current-speed = <115200>;
406		};
407
408		gpio_0_b: gpio@fd6e0700 {
409			compatible = "intel,gpio";
410			reg = <0xfd6e0700 0x1000>;
411			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
412			interrupt-parent = <&intc>;
413
414			label = "GPIO_COM_0_B";
415			group-index = <0x0>;
416			gpio-controller;
417			#gpio-cells = <2>;
418
419			ngpios = <24>;
420			pin-offset = <0>;
421
422			status = "okay";
423		};
424
425		gpio_0_t: gpio@fd6e08a0 {
426			compatible = "intel,gpio";
427			reg = <0xfd6e08a0 0x1000>;
428			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
429			interrupt-parent = <&intc>;
430
431			label = "GPIO_COM_0_T";
432			group-index = <0x1>;
433			gpio-controller;
434			#gpio-cells = <2>;
435
436			ngpios = <16>;
437			pin-offset = <26>;
438
439			status = "okay";
440		};
441
442		gpio_0_g: gpio@fd6e09a0 {
443			compatible = "intel,gpio";
444			reg = <0xfd6e09a0 0x1000>;
445			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
446			interrupt-parent = <&intc>;
447
448			label = "GPIO_COM_0_G";
449			group-index = <0x2>;
450			gpio-controller;
451			#gpio-cells = <2>;
452
453			ngpios = <24>;
454			pin-offset = <42>;
455
456			status = "okay";
457		};
458
459		gpio_1_v: gpio@fd6d0700 {
460			compatible = "intel,gpio";
461			reg = <0xfd6d0700 0x1000>;
462			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
463			interrupt-parent = <&intc>;
464
465			label = "GPIO_COM_1_V";
466			group-index = <0x0>;
467			gpio-controller;
468			#gpio-cells = <2>;
469
470			ngpios = <16>;
471			pin-offset = <0>;
472
473			status = "okay";
474		};
475
476		gpio_1_h: gpio@fd6d0800 {
477			compatible = "intel,gpio";
478			reg = <0xfd6d0800 0x1000>;
479			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
480			interrupt-parent = <&intc>;
481
482			label = "GPIO_COM_1_H";
483			group-index = <0x1>;
484			gpio-controller;
485			#gpio-cells = <2>;
486
487			ngpios = <24>;
488			pin-offset = <16>;
489
490			status = "okay";
491		};
492
493		gpio_1_d: gpio@fd6d0980 {
494			compatible = "intel,gpio";
495			reg = <0xfd6d0980 0x1000>;
496			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
497			interrupt-parent = <&intc>;
498
499			label = "GPIO_COM_1_D";
500			group-index = <0x2>;
501			gpio-controller;
502			#gpio-cells = <2>;
503
504			ngpios = <20>;
505			pin-offset = <40>;
506
507			status = "okay";
508		};
509
510		gpio_1_u: gpio@fd6d0ad0 {
511			compatible = "intel,gpio";
512			reg = <0xfd6d0ad0 0x1000>;
513			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
514			interrupt-parent = <&intc>;
515
516			label = "GPIO_COM_1_U";
517			group-index = <0x3>;
518			gpio-controller;
519			#gpio-cells = <2>;
520
521			ngpios = <20>;
522			pin-offset = <61>;
523
524			status = "okay";
525		};
526
527		gpio_1_vG: gpio@fd6d0c50 {
528			compatible = "intel,gpio";
529			reg = <0xfd6d0c50 0x1000>;
530			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
531			interrupt-parent = <&intc>;
532
533			label = "GPIO_COM_1_vG";
534			group-index = <0x4>;
535			gpio-controller;
536			#gpio-cells = <2>;
537
538			ngpios = <28>;
539			pin-offset = <85>;
540
541			status = "okay";
542		};
543
544		gpio_3_s: gpio@fd6b0810 {
545			compatible = "intel,gpio";
546			reg = <0xfd6b0810 0x1000>;
547			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
548			interrupt-parent = <&intc>;
549
550			label = "GPIO_COM_3_S";
551			group-index = <0x1>;
552			gpio-controller;
553			#gpio-cells = <2>;
554
555			ngpios = <2>;
556			pin-offset = <17>;
557
558			status = "okay";
559		};
560
561		gpio_3_a: gpio@fd6b0830 {
562			compatible = "intel,gpio";
563			reg = <0xfd6b0830 0x1000>;
564			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
565			interrupt-parent = <&intc>;
566
567			label = "GPIO_COM_3_A";
568			group-index = <0x2>;
569			gpio-controller;
570			#gpio-cells = <2>;
571
572			ngpios = <24>;
573			pin-offset = <25>;
574
575			status = "okay";
576		};
577
578		gpio_3_vG: gpio@fd6b09b0 {
579			compatible = "intel,gpio";
580			reg = <0xfd6b09b0 0x1000>;
581			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
582			interrupt-parent = <&intc>;
583
584			label = "GPIO_COM_3_vG";
585			group-index = <0x3>;
586			gpio-controller;
587			#gpio-cells = <2>;
588
589			ngpios = <4>;
590			pin-offset = <49>;
591
592			status = "okay";
593		};
594
595		gpio_4_c: gpio@fd6a0700 {
596			compatible = "intel,gpio";
597			reg = <0xfd6a0700 0x1000>;
598			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
599			interrupt-parent = <&intc>;
600
601			label = "GPIO_COM_4_C";
602			group-index = <0x0>;
603			gpio-controller;
604			#gpio-cells = <2>;
605
606			ngpios = <24>;
607			pin-offset = <0>;
608
609			status = "okay";
610		};
611
612		gpio_4_f: gpio@fd6a0880 {
613			compatible = "intel,gpio";
614			reg = <0xfd6a0880 0x1000>;
615			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
616			interrupt-parent = <&intc>;
617
618			label = "GPIO_COM_4_F";
619			group-index = <0x1>;
620			gpio-controller;
621			#gpio-cells = <2>;
622
623			ngpios = <24>;
624			pin-offset = <24>;
625
626			status = "okay";
627		};
628
629		gpio_4_e: gpio@fd6a0a70 {
630			compatible = "intel,gpio";
631			reg = <0xfd6a0a70 0x1000>;
632			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
633			interrupt-parent = <&intc>;
634
635			label = "GPIO_COM_4_E";
636			group-index = <0x3>;
637			gpio-controller;
638			#gpio-cells = <2>;
639
640			ngpios = <24>;
641			pin-offset = <57>;
642
643			status = "okay";
644		};
645
646		gpio_5_r: gpio@fd690700 {
647			compatible = "intel,gpio";
648			reg = <0xfd690700 0x1000>;
649			interrupts = <14 IRQ_TYPE_LOWEST_LEVEL_LOW 3>;
650			interrupt-parent = <&intc>;
651
652			label = "GPIO_COM_5_R";
653			group-index = <0x0>;
654			gpio-controller;
655			#gpio-cells = <2>;
656
657			ngpios = <8>;
658			pin-offset = <0>;
659
660			status = "okay";
661		};
662
663		hpet: hpet@fed00000 {
664			label = "HPET";
665			compatible = "intel,hpet";
666			reg = <0xfed00000 0x400>;
667			interrupts = <2 IRQ_TYPE_FIXED_EDGE_RISING 4>;
668			interrupt-parent = <&intc>;
669
670			status = "okay";
671		};
672	};
673};
674