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