diff --git a/drivers/dma/dma_intel_adsp_gpdma.c b/drivers/dma/dma_intel_adsp_gpdma.c index 3564b15be0a..1601d9af6ac 100644 --- a/drivers/dma/dma_intel_adsp_gpdma.c +++ b/drivers/dma/dma_intel_adsp_gpdma.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include #include #include @@ -425,6 +426,16 @@ int intel_adsp_gpdma_get_attribute(const struct device *dev, uint32_t type, uint return 0; } +#ifdef CONFIG_SOC_SERIES_INTEL_ACE +static inline void ace_gpdma_intc_unmask(void) +{ + ACE_DINT[0].ie[ACE_INTL_GPDMA] = BIT(0); +} +#else +static inline void ace_gpdma_intc_unmask(void) {} +#endif + + int intel_adsp_gpdma_init(const struct device *dev) { struct dw_dma_dev_data *const dev_data = dev->data; @@ -433,6 +444,9 @@ int intel_adsp_gpdma_init(const struct device *dev) dev_data->dma_ctx.magic = DMA_MAGIC; dev_data->dma_ctx.dma_channels = DW_MAX_CHAN; dev_data->dma_ctx.atomic = dev_data->channels_atomic; + + ace_gpdma_intc_unmask(); + #if CONFIG_PM_DEVICE && CONFIG_SOC_SERIES_INTEL_ACE if (pm_device_on_power_domain(dev)) { pm_device_init_off(dev); diff --git a/dts/xtensa/intel/intel_adsp_ace15_mtpm.dtsi b/dts/xtensa/intel/intel_adsp_ace15_mtpm.dtsi index 1a669d5eb44..0c2711e0920 100644 --- a/dts/xtensa/intel/intel_adsp_ace15_mtpm.dtsi +++ b/dts/xtensa/intel/intel_adsp_ace15_mtpm.dtsi @@ -556,8 +556,8 @@ #dma-cells = <1>; reg = <0x0007c000 0x1000>; shim = <0x0007c800 0x1000>; - interrupts = <0x10 0 0>; - interrupt-parent = <&core_intc>; + interrupts = <17 0 0>; + interrupt-parent = <&ace_intc>; dma-buf-size-alignment = <4>; dma-copy-alignment = <4>; status = "okay";