dts: xtensa: intel: update cavs25_tgph to match cavs25
Add definitions for DMAs, Digital Audio Interfaces (DAIs) and
the necessary clocks to enable full use of audio peripherals
in the intel_adsp_cavs25_tgph boards.
Link: https://github.com/thesofproject/sof/issues/6710
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
diff --git a/dts/xtensa/intel/intel_adsp_cavs25_tgph.dtsi b/dts/xtensa/intel/intel_adsp_cavs25_tgph.dtsi
index c541651..2055741 100644
--- a/dts/xtensa/intel/intel_adsp_cavs25_tgph.dtsi
+++ b/dts/xtensa/intel/intel_adsp_cavs25_tgph.dtsi
@@ -39,6 +39,36 @@
reg = <0xbe800000 DT_SIZE_K(64)>;
};
+ sysclk: system-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <38400000>;
+ #clock-cells = <0>;
+ };
+
+ audioclk: audio-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <24576000>;
+ #clock-cells = <0>;
+ };
+
+ pllclk: pll-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <96000000>;
+ #clock-cells = <0>;
+ };
+
+ clkctl: clkctl {
+ compatible = "intel,adsp-shim-clkctl";
+ adsp-clkctl-clk-wovcro = <0>;
+ adsp-clkctl-clk-lpro = <1>;
+ adsp-clkctl-clk-hpro = <2>;
+ adsp-clkctl-freq-enc = <0x1a 0x20000002 0x80000002>;
+ adsp-clkctl-freq-mask = <0x10 0x20000000 0x80000000>;
+ adsp-clkctl-freq-default = <2>;
+ adsp-clkctl-freq-lowest = <0>;
+ wovcro-supported;
+ };
+
soc {
shim: shim@71f00 {
compatible = "intel,adsp-shim";
@@ -51,6 +81,7 @@
offset = <0x4000>;
memory = <&sram0>;
initialize;
+ read-only;
};
mem_window1: mem_window@71a08 {
compatible = "intel,adsp-mem-window";
@@ -68,6 +99,7 @@
compatible = "intel,adsp-mem-window";
reg = <0x71a18 0x8>;
memory = <&sram0>;
+ read-only;
};
timer: timer {
@@ -75,11 +107,23 @@
syscon = <&shim>;
};
+ sspbase: ssp_base@71c00 {
+ compatible = "intel,cavs-sspbase";
+ reg = <0x71c00 0x100>;
+ };
+
l2lm: l2lm@71d00 {
compatible = "intel,cavs-l2lm";
reg = <0x71d00 0x20>;
};
+ adsp_host_ipc: cavs_host_ipc@71e00 {
+ compatible = "intel,adsp-host-ipc";
+ reg = <0x71e00 0x30>;
+ interrupts = <7 0 0>;
+ interrupt-parent = <&cavs_intc0>;
+ };
+
core_intc: core_intc@0 {
compatible = "cdns,xtensa-core-intc";
reg = <0x00 0x400>;
@@ -135,5 +179,220 @@
reg = <0x3000 0x1000>;
paddr-size = <11>;
};
+
+ dmic0: dmic0@10000 {
+ compatible = "intel,dai-dmic";
+ reg = <0x10000 0x8000>;
+ shim = <0x71E80>;
+ fifo = <0x0008>;
+ interrupts = <0x08 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ };
+
+ dmic1: dmic1@10000 {
+ compatible = "intel,dai-dmic";
+ reg = <0x10000 0x8000>;
+ shim = <0x71E80>;
+ fifo = <0x0108>;
+ interrupts = <0x09 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ };
+
+ /*
+ * FIXME this is modeling individual alh channels/instances
+ * with node labels, which has problems. A better representation
+ * is discussed here:
+ *
+ * https://github.com/zephyrproject-rtos/zephyr/pull/50287#discussion_r974591009
+ */
+ alh0: alh0@71000 {
+ compatible = "intel,alh-dai";
+ reg = <0x00071000 0x00071200>;
+
+ status = "okay";
+ };
+
+ alh1: alh1@71000 {
+ compatible = "intel,alh-dai";
+ reg = <0x00071000 0x00071200>;
+
+ status = "okay";
+ };
+
+ ssp0: ssp@77000 {
+ compatible = "intel,ssp-dai";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x00077000 0x200
+ 0x00078C00 0x008>;
+ interrupts = <0x01 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ dmas = <&lpgpdma0 2
+ &lpgpdma0 3>;
+ dma-names = "tx", "rx";
+
+ status = "okay";
+ };
+
+ ssp1: ssp@77200 {
+ compatible = "intel,ssp-dai";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x00077200 0x200
+ 0x00078C00 0x008>;
+ interrupts = <0x01 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ dmas = <&lpgpdma0 4
+ &lpgpdma0 5>;
+ dma-names = "tx", "rx";
+
+ status = "okay";
+ };
+
+ ssp2: ssp@77400 {
+ compatible = "intel,ssp-dai";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x00077400 0x200
+ 0x00078C00 0x008>;
+ interrupts = <0x02 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ dmas = <&lpgpdma0 6
+ &lpgpdma0 7>;
+ dma-names = "tx", "rx";
+
+ status = "okay";
+ };
+
+ ssp3: ssp@77600 {
+ compatible = "intel,ssp-dai";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x00077600 0x200
+ 0x00078C00 0x008>;
+ interrupts = <0x03 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ dmas = <&lpgpdma0 8
+ &lpgpdma0 9>;
+ dma-names = "tx", "rx";
+
+ status = "okay";
+ };
+
+ ssp4: ssp@77800 {
+ compatible = "intel,ssp-dai";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x00077800 0x200
+ 0x00078C00 0x008>;
+ interrupts = <0x03 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ dmas = <&lpgpdma0 10
+ &lpgpdma0 11>;
+ dma-names = "tx", "rx";
+
+ status = "okay";
+ };
+
+ ssp5: ssp@77a00 {
+ compatible = "intel,ssp-dai";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x00077A00 0x200
+ 0x00078C00 0x008>;
+ interrupts = <0x03 0 0>;
+ interrupt-parent = <&cavs_intc3>;
+ dmas = <&lpgpdma0 12
+ &lpgpdma0 13>;
+ dma-names = "tx", "rx";
+
+ status = "okay";
+ };
+ };
+
+ hdas {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ hda0: hda@0 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0>;
+ };
+ hda1: hda@1 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <1>;
+ };
+ hda2: hda@2 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <2>;
+ };
+ hda3: hda@3 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <3>;
+ };
+ hda4: hda@4 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <4>;
+ };
+ hda5: hda@5 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <5>;
+ };
+ hda6: hda@6 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <6>;
+ };
+ hda7: hda@7 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <7>;
+ };
+ hda8: hda@8 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <8>;
+ };
+ hda9: hda@9 {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <9>;
+ };
+ hda10: hda@a {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0x0a>;
+ };
+ hda11: hda@b {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0x0b>;
+ };
+ hda12: hda@c {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0x0c>;
+ };
+ hda13: hda@d {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0x0d>;
+ };
+ hda14: hda@e {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0x0e>;
+ };
+ hda15: hda@f {
+ compatible = "intel,hda-dai";
+ status = "okay";
+ reg = <0x0f>;
+ };
};
};