Skip to content

Commit 919d067

Browse files
LaurentiuM1234dleach02
authored andcommitted
devices: MIMX9352: Add SoC layer definitions required for using edma rev2
With the introduction of revision 2 of the edma driver, each SoC will have to expose to the entities using the edma rev2 driver an array of eDMA configurations. Each of the entries from said array represents an eDMA version found on an SoC. Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
1 parent 0cc2ef5 commit 919d067

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*
2+
* Copyright 2023 NXP
3+
*
4+
* SPDX-License-Identifier: BSD-3-Clause
5+
*/
6+
7+
#ifndef _FSL_EDMA_SOC_REV2_H_
8+
#define _FSL_EDMA_SOC_REV2_H_
9+
10+
#include "fsl_edma_rev2.h"
11+
12+
#if defined(__cplusplus)
13+
extern "C" {
14+
#endif
15+
16+
#define EDMA3_CONFIG (&s_edmaConfigs[0])
17+
#define EDMA4_CONFIG (&s_edmaConfigs[1])
18+
19+
static const uint32_t s_edma3RegisterLayout[] = {
20+
/* MP-related layout */
21+
[EDMA_MP_CS_INDEX] = 0x0,
22+
[EDMA_MP_ES_INDEX] = 0x4,
23+
[EDMA_MP_INT_INDEX] = 0x8,
24+
[EDMA_MP_HRS_INDEX] = 0xc,
25+
[EDMA_MP_CH_GRPRI_INDEX] = 0x100,
26+
27+
/* TCD-related layout */
28+
[EDMA_TCD_CH_CSR_INDEX] = 0x0,
29+
[EDMA_TCD_CH_ES_INDEX] = 0x4,
30+
[EDMA_TCD_CH_INT_INDEX] = 0x8,
31+
[EDMA_TCD_CH_SBR_INDEX] = 0xc,
32+
[EDMA_TCD_CH_PRI_INDEX] = 0x10,
33+
[EDMA_TCD_SADDR_INDEX] = 0x20,
34+
[EDMA_TCD_SOFF_INDEX] = 0x24,
35+
[EDMA_TCD_ATTR_INDEX] = 0x26,
36+
[EDMA_TCD_NBYTES_INDEX] = 0x28,
37+
[EDMA_TCD_SLAST_SDA_INDEX] = 0x2c,
38+
[EDMA_TCD_DADDR_INDEX] = 0x30,
39+
[EDMA_TCD_DOFF_INDEX] = 0x34,
40+
[EDMA_TCD_CITER_INDEX] = 0x36,
41+
[EDMA_TCD_DLAST_SGA_INDEX] = 0x38,
42+
[EDMA_TCD_CSR_INDEX] = 0x3c,
43+
[EDMA_TCD_BITER_INDEX] = 0x3e,
44+
};
45+
46+
static const uint32_t s_edma4RegisterLayout[] = {
47+
/* MP-related layout */
48+
[EDMA_MP_CS_INDEX] = 0x0,
49+
[EDMA_MP_ES_INDEX] = 0x4,
50+
[EDMA_MP_INT_LOW_INDEX] = 0x8,
51+
[EDMA_MP_INT_HIGH_INDEX] = 0xc,
52+
[EDMA_MP_HRS_LOW_INDEX] = 0x10,
53+
[EDMA_MP_HRS_HIGH_INDEX] = 0x14,
54+
[EDMA_MP_CH_GRPRI_INDEX] = 0x100,
55+
56+
/* TCD-related layout */
57+
[EDMA_TCD_CH_CSR_INDEX] = 0x0,
58+
[EDMA_TCD_CH_ES_INDEX] = 0x4,
59+
[EDMA_TCD_CH_INT_INDEX] = 0x8,
60+
[EDMA_TCD_CH_SBR_INDEX] = 0xc,
61+
[EDMA_TCD_CH_PRI_INDEX] = 0x10,
62+
[EDMA_TCD_CH_MUX_INDEX] = 0x14,
63+
[EDMA_TCD_CH_MATTR_INDEX] = 0x18,
64+
[EDMA_TCD_SADDR_INDEX] = 0x20,
65+
[EDMA_TCD_SOFF_INDEX] = 0x24,
66+
[EDMA_TCD_ATTR_INDEX] = 0x26,
67+
[EDMA_TCD_NBYTES_INDEX] = 0x28,
68+
[EDMA_TCD_SLAST_SDA_INDEX] = 0x2c,
69+
[EDMA_TCD_DADDR_INDEX] = 0x30,
70+
[EDMA_TCD_DOFF_INDEX] = 0x34,
71+
[EDMA_TCD_CITER_INDEX] = 0x36,
72+
[EDMA_TCD_DLAST_SGA_INDEX] = 0x38,
73+
[EDMA_TCD_CSR_INDEX] = 0x3c,
74+
[EDMA_TCD_BITER_INDEX] = 0x3e,
75+
};
76+
77+
static edma_config_t s_edmaConfigs[] = {
78+
/* EDMA3 configuration */
79+
{
80+
.registerLayout = s_edma3RegisterLayout,
81+
.regmap = 0x44000000,
82+
.channels = 31,
83+
.channelOffset = 0x10000,
84+
.channelWidth = 0x10000,
85+
},
86+
/* EDMA4 configuration */
87+
{
88+
.registerLayout = s_edma4RegisterLayout,
89+
.regmap = 0x42000000,
90+
.channels = 64,
91+
.channelOffset = 0x10000,
92+
.channelWidth = 0x8000,
93+
.flags = EDMA_HAS_CH_MUX_FLAG | EDMA_ALLOWS_128B_TRANSFER_FLAG,
94+
},
95+
};
96+
97+
#if defined(__cplusplus)
98+
}
99+
#endif
100+
#endif /* _FSL_EDMA_SOC_REV2_H_ */

0 commit comments

Comments
 (0)