Loading...
Searching...
No Matches
Go to the documentation of this file.
8#ifndef __SOF_DRIVERS_EDMA_H__
9#define __SOF_DRIVERS_EDMA_H__
12#include <sof/trace/trace.h>
18#define EDMA_CH_CSR 0x00
19#define EDMA_CH_ES 0x04
20#define EDMA_CH_INT 0x08
21#define EDMA_CH_SBR 0x0C
22#define EDMA_CH_PRI 0x10
23#define EDMA_CH_MUX 0x14
24#define EDMA_TCD_SADDR 0x20
25#define EDMA_TCD_SOFF 0x24
26#define EDMA_TCD_ATTR 0x26
27#define EDMA_TCD_NBYTES 0x28
28#define EDMA_TCD_SLAST 0x2C
29#define EDMA_TCD_DADDR 0x30
30#define EDMA_TCD_DOFF 0x34
31#define EDMA_TCD_CITER_ELINK 0x36
32#define EDMA_TCD_CITER 0x36
33#define EDMA_TCD_DLAST_SGA 0x38
34#define EDMA_TCD_CSR 0x3C
35#define EDMA_TCD_BITER_ELINK 0x3E
36#define EDMA_TCD_BITER 0x3E
43#define EDMA_TCD_CSR_START BIT(0)
44#define EDMA_TCD_CSR_INTMAJOR BIT(1)
45#define EDMA_TCD_CSR_INTHALF BIT(2)
46#define EDMA_TCD_CSR_INTHALF_INTMAJOR (BIT(1) | BIT(2))
47#define EDMA_TCD_CSR_DREQ BIT(3)
48#define EDMA_TCD_CSR_ESG BIT(4)
49#define EDMA_CH_CSR_ERQ_EARQ (BIT(0) | BIT(1))
51#define EDMA_CH_ES_ERR BIT(31)
52#define EDMA_CH_ES_SAE BIT(7)
53#define EDMA_CH_ES_SOE BIT(6)
54#define EDMA_CH_ES_DAE BIT(5)
55#define EDMA_CH_ES_DOE BIT(4)
56#define EDMA_CH_ES_NCE BIT(3)
57#define EDMA_CH_ES_SGE BIT(2)
58#define EDMA_CH_ES_SBE BIT(1)
59#define EDMA_CH_ES_DBE BIT(0)
61#define EDMA_TCD_ATTR_SSIZE_8BIT 0x0000
62#define EDMA_TCD_ATTR_SSIZE_16BIT 0x0100
63#define EDMA_TCD_ATTR_SSIZE_32BIT 0x0200
64#define EDMA_TCD_ATTR_SSIZE_64BIT 0x0300
65#define EDMA_TCD_ATTR_SSIZE_16BYTE 0x0400
66#define EDMA_TCD_ATTR_SSIZE_32BYTE 0x0500
67#define EDMA_TCD_ATTR_SSIZE_64BYTE 0x0600
69#define EDMA_TCD_ATTR_DSIZE_8BIT 0x0000
70#define EDMA_TCD_ATTR_DSIZE_16BIT 0x0001
71#define EDMA_TCD_ATTR_DSIZE_32BIT 0x0002
72#define EDMA_TCD_ATTR_DSIZE_64BIT 0x0003
73#define EDMA_TCD_ATTR_DSIZE_16BYTE 0x0004
74#define EDMA_TCD_ATTR_DSIZE_32BYTE 0x0005
75#define EDMA_TCD_ATTR_DSIZE_64BYTE 0x0006
77#define EDMA_BUFFER_PERIOD_COUNT 2
79#define EDMA_TCD_ALIGNMENT 32
81#define EDMA_HS_GET_IRQ(hs) (((hs) & MASK(8, 0)) >> 0)
82#define EDMA_HS_SET_IRQ(irq) SET_BITS(8, 0, irq)
83#define EDMA_HS_GET_CHAN(hs) (((hs) & MASK(13, 9)) >> 9)
84#define EDMA_HS_SET_CHAN(chan) SET_BITS(13, 9, chan)
85#define EDMA_HS_GET_DMAMUX_CFG(hs) (((hs) & MASK(21, 14)) >> 14)
86#define EDMA_HS_SET_DMAMUX_CFG(cfg) SET_BITS(21, 14, cfg)
87#define EDMA_HANDSHAKE(irq, channel, cfg)\
88 (EDMA_HS_SET_CHAN(channel) | EDMA_HS_SET_IRQ(irq) | EDMA_HS_SET_DMAMUX_CFG(cfg))
90#define EDMA0_ESAI_CHAN_RX 6
91#define EDMA0_ESAI_CHAN_TX 7
92#define EDMA0_SAI_CHAN_RX 14
93#define EDMA0_SAI_CHAN_TX 15
94#define EDMA0_CHAN_MAX 32
96#define EDMA0_ESAI_CHAN_RX_IRQ 442
97#define EDMA0_ESAI_CHAN_TX_IRQ 442
98#define EDMA0_SAI_CHAN_RX_IRQ 349
99#define EDMA0_SAI_CHAN_TX_IRQ 349
101#ifdef CONFIG_IMX93_A55
107#define EDMA2_SAI3_CHAN_RX 1
108#define EDMA2_SAI3_CHAN_TX 0
112#define EDMA2_CHAN_MAX 64
117#define EDMA2_SAI3_CHAN_RX_IRQ (128 + 32)
118#define EDMA2_SAI3_CHAN_TX_IRQ (128 + 32)
123#define EDMA2_SAI3_TX_MUX 60
124#define EDMA2_SAI3_RX_MUX 61
129#define IMX8ULP_EDMA2_CHAN0 0
130#define IMX8ULP_EDMA2_CHAN1 1
131#define IMX8ULP_EDMA2_CHAN_MAX 8
134#define IMX8ULP_EDMA2_CHAN0_IRQ 6
135#define IMX8ULP_EDMA2_CHAN1_IRQ 7
136#define IMX8ULP_EDMA2_CHAN2_IRQ 8
137#define IMX8ULP_EDMA2_CHAN3_IRQ 9
138#define IMX8ULP_EDMA2_CHAN4_IRQ 10
139#define IMX8ULP_EDMA2_CHAN5_IRQ 11
140#define IMX8ULP_EDMA2_CHAN6_IRQ 12
141#define IMX8ULP_EDMA2_CHAN7_IRQ 13
146#define IMX8ULP_DMAMUX2_SAI5_RX 69
147#define IMX8ULP_DMAMUX2_SAI5_TX 70
148#define IMX8ULP_DMAMUX2_SAI6_RX 71
149#define IMX8ULP_DMAMUX2_SAI6_TX 72