dma: intel_adsp_gpdma: Unmask interrupt on ACE
On ACE a seperate, soc specific, interrupt mask needs to be enabled to unmask the interrupt. Do so for GPDMA. Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
This commit is contained in:
parent
6e66efa088
commit
0e373019d6
|
@ -4,6 +4,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <adsp_interrupt.h>
|
||||
#include <zephyr/drivers/dma.h>
|
||||
#include <zephyr/cache.h>
|
||||
|
||||
|
@ -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);
|
||||
|
|
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue