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