1/*
2 * Copyright (c) 2022 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#include <xtensa/xtensa.dtsi>
8#include <mem.h>
9
10/ {
11	cpus {
12		#address-cells = <1>;
13		#size-cells = <0>;
14
15		cpu0: cpu@0 {
16			device_type = "cpu";
17			compatible = "cdns,tensilica-xtensa-lx7";
18			reg = <0>;
19			cpu-power-states = <&d0i3 &d3>;
20			i-cache-line-size = <64>;
21			d-cache-line-size = <64>;
22		};
23
24		cpu1: cpu@1 {
25			device_type = "cpu";
26			compatible = "cdns,tensilica-xtensa-lx7";
27			reg = <1>;
28			cpu-power-states = <&d0i3 &d3>;
29		};
30
31		cpu2: cpu@2 {
32			device_type = "cpu";
33			compatible = "cdns,tensilica-xtensa-lx7";
34			reg = <2>;
35			cpu-power-states = <&d0i3 &d3>;
36		};
37
38		cpu3: cpu@3 {
39			device_type = "cpu";
40			compatible = "cdns,tensilica-xtensa-lx7";
41			reg = <3>;
42			cpu-power-states = <&d0i3 &d3>;
43		};
44
45		cpu4: cpu@4 {
46			device_type = "cpu";
47			compatible = "cdns,tensilica-xtensa-lx7";
48			reg = <4>;
49			cpu-power-states = <&d0i3 &d3>;
50		};
51
52		power-states {
53			d0i3: idle {
54				compatible = "zephyr,power-state";
55				power-state-name = "runtime-idle";
56				min-residency-us = <200>;
57				exit-latency-us = <100>;
58			};
59			/* PM_STATE_SOFT_OFF can be entered only by calling pm_state_force.
60			 * The procedure is triggered by IPC from the HOST (SET_DX).
61			 */
62			d3: off {
63				compatible = "zephyr,power-state";
64				power-state-name = "soft-off";
65				min-residency-us = <0>;
66				exit-latency-us = <0>;
67				status = "disabled";
68			};
69		};
70	};
71
72	sram0: memory@a0020000 {
73		device_type = "memory";
74		compatible = "mmio-sram";
75		reg = <0xa0020000 DT_SIZE_K(2816)>;
76	};
77
78	sram0virtual: virtualmemory@a0020000 {
79		device_type = "memory";
80		compatible = "mmio-sram";
81		reg = <0xa0020000 DT_SIZE_K(8192)>;
82	};
83
84	sram1: memory@a0000000 {
85		device_type = "memory";
86		compatible = "mmio-sram";
87		reg = <0xa0000000 DT_SIZE_K(64)>;
88	};
89
90	sysclk: system-clock {
91		compatible = "fixed-clock";
92		clock-frequency = <38400000>;
93		#clock-cells = <0>;
94	};
95
96	clkctl: clkctl {
97		compatible = "intel,adsp-shim-clkctl";
98		adsp-clkctl-clk-wovcro = <0>;
99		adsp-clkctl-clk-ipll = <1>;
100		adsp-clkctl-freq-enc = <0xc 0x4>;
101		adsp-clkctl-freq-mask = <0x0 0x0>;
102		adsp-clkctl-freq-default = <1>;
103		adsp-clkctl-freq-lowest = <0>;
104		wovcro-supported;
105	};
106
107	audioclk: audio-clock {
108		compatible = "fixed-clock";
109		clock-frequency = <24576000>;
110		#clock-cells = <0>;
111	};
112
113	pllclk: pll-clock {
114		compatible = "fixed-clock";
115		clock-frequency = <96000000>;
116		#clock-cells = <0>;
117	};
118
119	IMR1: memory@A1000000 {
120		compatible = "intel,adsp-imr";
121		reg = <0xA1000000 DT_SIZE_M(16)>;
122		block-size = <0x1000>;
123		zephyr,memory-region = "IMR1";
124	};
125
126	shim: shim@71f00 {
127		compatible = "intel,adsp-shim";
128		reg = <0x71f00 0x100>;
129	};
130
131	soc {
132
133		l1ccap: l1ccap@1fe80080 {
134			compatible = "intel,adsp-l1ccap";
135			reg = <0x1fe80080 0x4>;
136		};
137
138		l1ccfg: l1ccfg@1fe80084 {
139			compatible = "intel,adsp-l1ccfg";
140			reg = <0x1fe80084 0x4>;
141		};
142
143		l1pcfg: l1pcfg@1fe80088 {
144			compatible = "intel,adsp-l1pcfg";
145			reg = <0x1fe80088 0x4>;
146		};
147
148		hsbcap: hsbcap@71d00 {
149			compatible = "intel,adsp-hsbcap";
150			reg = <0x71d00 0x4>;
151		};
152
153		lsbpm: lsbpm@71d80 {
154			compatible = "intel,adsp-lsbpm";
155			reg = <0x71d80 0x0008>;
156		};
157
158		hsbpm: hsbpm@17a800 {
159			compatible = "intel,adsp-hsbpm";
160			reg = <0x17a800 0x0008>;
161		};
162
163		core_intc: core_intc@0 {
164			compatible = "cdns,xtensa-core-intc";
165			reg = <0x00 0x400>;
166			interrupt-controller;
167			#interrupt-cells = <3>;
168		};
169
170		hdamlddmic: hdamlddmic@cc0 {
171			compatible = "intel,adsp-hda-dmic-cap";
172			reg = <0xcc0 0x40>;
173			status = "okay";
174		};
175
176		dmic0: dai-dmic0@10100 {
177			compatible = "intel,dai-dmic";
178			reg = <0x10100 0x8000>;
179			shim = <0x10000>;
180			fifo = <0x0008>;
181			interrupts = <0x08 0 0>;
182			interrupt-parent = <&ace_intc>;
183			zephyr,pm-device-runtime-auto;
184		};
185
186		dmic1: dai-dmic1@10100 {
187			compatible = "intel,dai-dmic";
188			reg = <0x10100 0x8000>;
189			shim = <0x10000>;
190			fifo = <0x0108>;
191			interrupts = <0x08 0 0>;
192			interrupt-parent = <&ace_intc>;
193			zephyr,pm-device-runtime-auto;
194		};
195
196		dmicvss: dmicvss@16000 {
197			compatible = "intel,adsp-dmic-vss";
198			reg = <0x16000 0x2000>;
199			status = "okay";
200		};
201
202		sspbase: ssp_base@28000 {
203			compatible = "intel,ssp-sspbase";
204			reg = <0x28000 0x1000>;
205		};
206
207		hdamlssp: hdamlssp@d00 {
208			compatible = "intel,adsp-hda-ssp-cap";
209			reg = <0xD00 0x40>;
210			status = "okay";
211		};
212
213		ssp0: ssp@28100 {
214			compatible = "intel,ssp";
215			#address-cells = <1>;
216			#size-cells = <0>;
217			reg = <0x00028100 0x1000
218				   0x00079C00 0x200>;
219			i2svss = <0x00028C00 0x1000>;
220			interrupts = <0x00 0 0>;
221			interrupt-parent = <&ace_intc>;
222			dmas = <&hda_link_out 1
223				&hda_link_in 1>;
224			dma-names = "tx", "rx";
225			ssp-index = <0>;
226			status = "okay";
227
228			ssp00: ssp@0 {
229				compatible = "intel,ssp-dai";
230				power-domains = <&io0_domain>;
231				zephyr,pm-device-runtime-auto;
232				status = "okay";
233				reg = <0x0>;
234			};
235		};
236
237		ssp1: ssp@29100 {
238			compatible = "intel,ssp";
239			#address-cells = <1>;
240			#size-cells = <0>;
241			reg = <0x00029100 0x1000
242				   0x00079C00 0x200>;
243			i2svss = <0x00029C00 0x1000>;
244			interrupts = <0x01 0 0>;
245			interrupt-parent = <&ace_intc>;
246			dmas = <&hda_link_out 2
247				&hda_link_in 2>;
248			dma-names = "tx", "rx";
249			ssp-index = <1>;
250			status = "okay";
251
252			ssp10: ssp@10 {
253				compatible = "intel,ssp-dai";
254				power-domains = <&io0_domain>;
255				zephyr,pm-device-runtime-auto;
256				status = "okay";
257				reg = <0x10>;
258			};
259		};
260
261		ssp2: ssp@2a100 {
262			compatible = "intel,ssp";
263			#address-cells = <1>;
264			#size-cells = <0>;
265			reg = <0x0002a100 0x1000
266				   0x00079C00 0x200>;
267			i2svss = <0x0002AC00 0x1000>;
268			interrupts = <0x02 0 0>;
269			interrupt-parent = <&ace_intc>;
270			dmas = <&hda_link_out 3
271				&hda_link_in 3>;
272			dma-names = "tx", "rx";
273			ssp-index = <2>;
274			status = "okay";
275
276			ssp20: ssp@20 {
277				compatible = "intel,ssp-dai";
278				power-domains = <&io0_domain>;
279				zephyr,pm-device-runtime-auto;
280				status = "okay";
281				reg = <0x20>;
282			};
283		};
284
285		mem_window0: mem_window@70200 {
286			compatible = "intel,adsp-mem-window";
287			reg = <0x70200 0x8>;
288			offset = <0x4000>;
289			memory = <&sram0>;
290			initialize;
291			read-only;
292		};
293
294		mem_window1: mem_window@70208 {
295			compatible = "intel,adsp-mem-window";
296			reg = <0x70208 0x8>;
297			memory = <&sram0>;
298		};
299
300		mem_window2: mem_window@70210 {
301			compatible = "intel,adsp-mem-window";
302			reg = <0x70210 0x8>;
303			memory = <&sram0>;
304		};
305
306		mem_window3: mem_window@70218 {
307			compatible = "intel,adsp-mem-window";
308			reg = <0x70218 0x8>;
309			memory = <&sram0>;
310			read-only;
311		};
312
313		adsp_idc: ace_idc@70400 {
314			compatible = "intel,adsp-idc";
315			reg = <0x70400 0x0400>;
316			interrupts = <24 0 0>;
317			interrupt-parent = <&ace_intc>;
318		};
319
320		dfpmcch: dfpmcch@71ac0 {
321			compatible = "intel,adsp-dfpmcch";
322			reg = <0x00071ac0 0x40>;
323		};
324
325		dfpmccu: dfpmccu@71b00 {
326			compatible = "intel,adsp-dfpmccu";
327			reg = <0x71b00 0x100>;
328
329			hub_ulp_domain: hub_ulp_domain {
330				compatible = "intel,adsp-power-domain";
331				bit-position = <15>;
332				#power-domain-cells = <0>;
333			};
334			ml0_domain: ml0_domain {
335				compatible = "intel,adsp-power-domain";
336				bit-position = <12>;
337				#power-domain-cells = <0>;
338			};
339			io1_domain: io1_domain {
340				compatible = "intel,adsp-power-domain";
341				bit-position = <9>;
342				#power-domain-cells = <0>;
343			};
344			io0_domain: io0_domain {
345				compatible = "intel,adsp-power-domain";
346				bit-position = <8>;
347				#power-domain-cells = <0>;
348			};
349			hub_hp_domain: hub_hp_domain {
350				compatible = "intel,adsp-power-domain";
351				bit-position = <6>;
352				#power-domain-cells = <0>;
353			};
354			hst_domain: hst_domain {
355				compatible = "intel,adsp-power-domain";
356				bit-position = <5>;
357				#power-domain-cells = <0>;
358			};
359		};
360
361		tts: tts@72000 {
362			compatible = "intel,adsp-tts";
363			reg = <0x72000 0x70>;
364			status = "okay";
365		};
366
367		ace_rtc_counter: ace_rtc_counter@72008 {
368			compatible = "intel,ace-rtc-counter";
369			reg = <0x72008 0x0064>;
370		};
371
372
373		ace_timestamp: ace_timestamp@72040 {
374			compatible = "intel,ace-timestamp";
375			reg = <0x72040 0x0032>;
376		};
377
378		ace_art_counter: ace_art_counter@72058 {
379			compatible = "intel,ace-art-counter";
380			reg = <0x72058 0x0064>;
381		};
382
383		hda_host_out: dma@72800 {
384			compatible = "intel,adsp-hda-host-out";
385			#dma-cells = <1>;
386			reg = <0x00072800 0x40>;
387			dma-channels = <9>;
388			dma-buf-addr-alignment = <128>;
389			dma-buf-size-alignment = <32>;
390			dma-copy-alignment = <16>;
391			power-domains = <&hst_domain>;
392			zephyr,pm-device-runtime-auto;
393			interrupts = <13 0 0>;
394			interrupt-parent = <&ace_intc>;
395			status = "okay";
396		};
397
398		hda_host_in: dma@72c00 {
399			compatible = "intel,adsp-hda-host-in";
400			#dma-cells = <1>;
401			reg = <0x00072c00 0x40>;
402			dma-channels = <11>;
403			dma-buf-addr-alignment = <128>;
404			dma-buf-size-alignment = <32>;
405			dma-copy-alignment = <16>;
406			power-domains = <&hst_domain>;
407			zephyr,pm-device-runtime-auto;
408			interrupts = <12 0 0>;
409			interrupt-parent = <&ace_intc>;
410			status = "okay";
411		};
412
413		adsp_host_ipc: ace_host_ipc@73000 {
414			compatible = "intel,adsp-host-ipc";
415			status = "okay";
416			reg = <0x73000 0x30>;
417			interrupts = <0 0 0>;
418			interrupt-parent = <&ace_intc>;
419		};
420
421		hda_link_out: dma@79400 {
422			compatible = "intel,adsp-hda-link-out";
423			#dma-cells = <1>;
424			reg = <0x00079400 0x40>;
425			dma-channels = <9>;
426			dma-buf-addr-alignment = <128>;
427			dma-buf-size-alignment = <32>;
428			dma-copy-alignment = <16>;
429			power-domains = <&hub_ulp_domain>;
430			zephyr,pm-device-runtime-auto;
431			status = "okay";
432		};
433
434		hda_link_in: dma@79800 {
435			compatible = "intel,adsp-hda-link-in";
436			#dma-cells = <1>;
437			reg = <0x00079800 0x40>;
438			dma-channels = <11>;
439			dma-buf-addr-alignment = <128>;
440			dma-buf-size-alignment = <32>;
441			dma-copy-alignment = <16>;
442			power-domains = <&hub_ulp_domain>;
443			zephyr,pm-device-runtime-auto;
444			status = "okay";
445		};
446
447		/* This is actually an array of per-core designware
448		 * controllers, but the special setup and extra
449		 * masking layer makes it easier for LNL to handle
450		 * this internally.
451		 */
452		ace_intc: ace_intc@7ac00  {
453			compatible = "intel,ace-intc";
454			reg = <0x7ac00 0xc00>;
455			interrupt-controller;
456			#interrupt-cells = <3>;
457			interrupts = <4 0 0>;
458			num-irqs = <28>;
459			interrupt-parent = <&core_intc>;
460		};
461
462		tlb: tlb@17e000 {
463			compatible = "intel,adsp-mtl-tlb";
464			reg = <0x17e000 0x1000>;
465			paddr-size = <12>;
466			exec-bit-idx = <14>;
467			write-bit-idx= <15>;
468		};
469
470		timer: timer {
471			compatible = "intel,adsp-timer";
472			syscon = <&tts>;
473		};
474	};
475
476	hdas {
477		#address-cells = <1>;
478		#size-cells = <0>;
479
480		hda0: hda@0 {
481			compatible = "intel,hda-dai";
482			power-domains = <&io0_domain>;
483			zephyr,pm-device-runtime-auto;
484			status = "okay";
485			reg = <0>;
486		};
487		hda1: hda@1 {
488			compatible = "intel,hda-dai";
489			power-domains = <&io0_domain>;
490			zephyr,pm-device-runtime-auto;
491			status = "okay";
492			reg = <1>;
493		};
494		hda2: hda@2 {
495			compatible = "intel,hda-dai";
496			power-domains = <&io0_domain>;
497			zephyr,pm-device-runtime-auto;
498			status = "okay";
499			reg = <2>;
500		};
501		hda3: hda@3 {
502			compatible = "intel,hda-dai";
503			power-domains = <&io0_domain>;
504			zephyr,pm-device-runtime-auto;
505			status = "okay";
506			reg = <3>;
507		};
508		hda4: hda@4 {
509			compatible = "intel,hda-dai";
510			power-domains = <&io0_domain>;
511			zephyr,pm-device-runtime-auto;
512			status = "okay";
513			reg = <4>;
514		};
515		hda5: hda@5 {
516			compatible = "intel,hda-dai";
517			power-domains = <&io0_domain>;
518			zephyr,pm-device-runtime-auto;
519			status = "okay";
520			reg = <5>;
521		};
522		hda6: hda@6 {
523			compatible = "intel,hda-dai";
524			power-domains = <&io0_domain>;
525			zephyr,pm-device-runtime-auto;
526			status = "okay";
527			reg = <6>;
528		};
529		hda7: hda@7 {
530			compatible = "intel,hda-dai";
531			power-domains = <&io0_domain>;
532			zephyr,pm-device-runtime-auto;
533			status = "okay";
534			reg = <7>;
535		};
536		hda8: hda@8 {
537			compatible = "intel,hda-dai";
538			power-domains = <&io0_domain>;
539			zephyr,pm-device-runtime-auto;
540			status = "okay";
541			reg = <8>;
542		};
543		hda9: hda@9 {
544			compatible = "intel,hda-dai";
545			power-domains = <&io0_domain>;
546			zephyr,pm-device-runtime-auto;
547			status = "okay";
548			reg = <9>;
549		};
550		hda10: hda@a {
551			compatible = "intel,hda-dai";
552			power-domains = <&io0_domain>;
553			zephyr,pm-device-runtime-auto;
554			status = "okay";
555			reg = <0x0a>;
556		};
557		hda11: hda@b {
558			compatible = "intel,hda-dai";
559			power-domains = <&io0_domain>;
560			zephyr,pm-device-runtime-auto;
561			status = "okay";
562			reg = <0x0b>;
563		};
564		hda12: hda@c {
565			compatible = "intel,hda-dai";
566			power-domains = <&io0_domain>;
567			zephyr,pm-device-runtime-auto;
568			status = "okay";
569			reg = <0x0c>;
570		};
571		hda13: hda@d {
572			compatible = "intel,hda-dai";
573			power-domains = <&io0_domain>;
574			zephyr,pm-device-runtime-auto;
575			status = "okay";
576			reg = <0x0d>;
577		};
578		hda14: hda@e {
579			compatible = "intel,hda-dai";
580			power-domains = <&io0_domain>;
581			zephyr,pm-device-runtime-auto;
582			status = "okay";
583			reg = <0x0e>;
584		};
585		hda15: hda@f {
586			compatible = "intel,hda-dai";
587			power-domains = <&io0_domain>;
588			zephyr,pm-device-runtime-auto;
589			status = "okay";
590			reg = <0x0f>;
591		};
592		hda16: hda@10 {
593			compatible = "intel,hda-dai";
594			power-domains = <&io0_domain>;
595			zephyr,pm-device-runtime-auto;
596			status = "okay";
597			reg = <0x10>;
598		};
599		hda17: hda@11 {
600			compatible = "intel,hda-dai";
601			power-domains = <&io0_domain>;
602			zephyr,pm-device-runtime-auto;
603			status = "okay";
604			reg = <0x11>;
605		};
606		hda18: hda@12 {
607			compatible = "intel,hda-dai";
608			power-domains = <&io0_domain>;
609			zephyr,pm-device-runtime-auto;
610			status = "okay";
611			reg = <0x12>;
612		};
613	};
614};
615