xref: /rk3399_rockchip-uboot/arch/m68k/include/asm/coldfire/edma.h (revision 326ea986ac150acdc7656d57fca647db80b50158)
1819833afSPeter Tyser /*
2819833afSPeter Tyser  * EDMA Internal Memory Map
3819833afSPeter Tyser  *
4819833afSPeter Tyser  * Copyright (C) 2004-2007 Freescale Semiconductor, Inc.
5819833afSPeter Tyser  * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
6819833afSPeter Tyser  *
7*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
8819833afSPeter Tyser  */
9819833afSPeter Tyser 
10819833afSPeter Tyser #ifndef __EDMA_H__
11819833afSPeter Tyser #define __EDMA_H__
12819833afSPeter Tyser 
13819833afSPeter Tyser /*********************************************************************
14819833afSPeter Tyser * Enhanced DMA (EDMA)
15819833afSPeter Tyser *********************************************************************/
16819833afSPeter Tyser 
17819833afSPeter Tyser /* eDMA module registers */
18819833afSPeter Tyser typedef struct edma_ctrl {
19819833afSPeter Tyser 	u32 cr;			/* 0x00 Control Register */
20819833afSPeter Tyser 	u32 es;			/* 0x04 Error Status Register */
21819833afSPeter Tyser 	u16 res1[3];		/* 0x08 - 0x0D */
22819833afSPeter Tyser 	u16 erq;		/* 0x0E Enable Request Register */
23819833afSPeter Tyser 	u16 res2[3];		/* 0x10 - 0x15 */
24819833afSPeter Tyser 	u16 eei;		/* 0x16 Enable Error Interrupt Request */
25819833afSPeter Tyser 	u8 serq;		/* 0x18 Set Enable Request */
26819833afSPeter Tyser 	u8 cerq;		/* 0x19 Clear Enable Request */
27819833afSPeter Tyser 	u8 seei;		/* 0x1A Set En Error Interrupt Request */
28819833afSPeter Tyser 	u8 ceei;		/* 0x1B Clear En Error Interrupt Request */
29819833afSPeter Tyser 	u8 cint;		/* 0x1C Clear Interrupt Enable */
30819833afSPeter Tyser 	u8 cerr;		/* 0x1D Clear Error */
31819833afSPeter Tyser 	u8 ssrt;		/* 0x1E Set START Bit */
32819833afSPeter Tyser 	u8 cdne;		/* 0x1F Clear DONE Status Bit */
33819833afSPeter Tyser 	u16 res3[3];		/* 0x20 - 0x25 */
34819833afSPeter Tyser 	u16 intr;		/* 0x26 Interrupt Request */
35819833afSPeter Tyser 	u16 res4[3];		/* 0x28 - 0x2D */
36819833afSPeter Tyser 	u16 err;		/* 0x2E Error Register */
37819833afSPeter Tyser 	u32 res5[52];		/* 0x30 - 0xFF */
38819833afSPeter Tyser 	u8 dchpri0;		/* 0x100 Channel 0 Priority */
39819833afSPeter Tyser 	u8 dchpri1;		/* 0x101 Channel 1 Priority */
40819833afSPeter Tyser 	u8 dchpri2;		/* 0x102 Channel 2 Priority */
41819833afSPeter Tyser 	u8 dchpri3;		/* 0x103 Channel 3 Priority */
42819833afSPeter Tyser 	u8 dchpri4;		/* 0x104 Channel 4 Priority */
43819833afSPeter Tyser 	u8 dchpri5;		/* 0x105 Channel 5 Priority */
44819833afSPeter Tyser 	u8 dchpri6;		/* 0x106 Channel 6 Priority */
45819833afSPeter Tyser 	u8 dchpri7;		/* 0x107 Channel 7 Priority */
46819833afSPeter Tyser 	u8 dchpri8;		/* 0x108 Channel 8 Priority */
47819833afSPeter Tyser 	u8 dchpri9;		/* 0x109 Channel 9 Priority */
48819833afSPeter Tyser 	u8 dchpri10;		/* 0x110 Channel 10 Priority */
49819833afSPeter Tyser 	u8 dchpri11;		/* 0x111 Channel 11 Priority */
50819833afSPeter Tyser 	u8 dchpri12;		/* 0x112 Channel 12 Priority */
51819833afSPeter Tyser 	u8 dchpri13;		/* 0x113 Channel 13 Priority */
52819833afSPeter Tyser 	u8 dchpri14;		/* 0x114 Channel 14 Priority */
53819833afSPeter Tyser 	u8 dchpri15;		/* 0x115 Channel 15 Priority */
54819833afSPeter Tyser } edma_t;
55819833afSPeter Tyser 
56819833afSPeter Tyser /* TCD - eDMA*/
57819833afSPeter Tyser typedef struct tcd_ctrl {
58819833afSPeter Tyser 	u32 saddr;		/* 0x00 Source Address */
59819833afSPeter Tyser 	u16 attr;		/* 0x04 Transfer Attributes */
60819833afSPeter Tyser 	u16 soff;		/* 0x06 Signed Source Address Offset */
61819833afSPeter Tyser 	u32 nbytes;		/* 0x08 Minor Byte Count */
62819833afSPeter Tyser 	u32 slast;		/* 0x0C Last Source Address Adjustment */
63819833afSPeter Tyser 	u32 daddr;		/* 0x10 Destination address */
64819833afSPeter Tyser 	u16 citer;		/* 0x14 Cur Minor Loop Link, Major Loop Cnt */
65819833afSPeter Tyser 	u16 doff;		/* 0x16 Signed Destination Address Offset */
66819833afSPeter Tyser 	u32 dlast_sga;		/* 0x18 Last Dest Adr Adj/Scatter Gather Adr */
67819833afSPeter Tyser 	u16 biter;		/* 0x1C Minor Loop Lnk, Major Loop Cnt */
68819833afSPeter Tyser 	u16 csr;		/* 0x1E Control and Status */
69819833afSPeter Tyser } tcd_st;
70819833afSPeter Tyser 
71819833afSPeter Tyser typedef struct tcd_multiple {
72819833afSPeter Tyser 	tcd_st tcd[16];
73819833afSPeter Tyser } tcd_t;
74819833afSPeter Tyser 
75819833afSPeter Tyser /* Bit definitions and macros for EPPAR */
76819833afSPeter Tyser #define EPORT_EPPAR_EPPA1(x)		(((x)&0x0003)<<2)
77819833afSPeter Tyser #define EPORT_EPPAR_EPPA2(x)		(((x)&0x0003)<<4)
78819833afSPeter Tyser #define EPORT_EPPAR_EPPA3(x)		(((x)&0x0003)<<6)
79819833afSPeter Tyser #define EPORT_EPPAR_EPPA4(x)		(((x)&0x0003)<<8)
80819833afSPeter Tyser #define EPORT_EPPAR_EPPA5(x)		(((x)&0x0003)<<10)
81819833afSPeter Tyser #define EPORT_EPPAR_EPPA6(x)		(((x)&0x0003)<<12)
82819833afSPeter Tyser #define EPORT_EPPAR_EPPA7(x)		(((x)&0x0003)<<14)
83819833afSPeter Tyser #define EPORT_EPPAR_LEVEL		(0)
84819833afSPeter Tyser #define EPORT_EPPAR_RISING		(1)
85819833afSPeter Tyser #define EPORT_EPPAR_FALLING		(2)
86819833afSPeter Tyser #define EPORT_EPPAR_BOTH		(3)
87819833afSPeter Tyser #define EPORT_EPPAR_EPPA7_LEVEL		(0x0000)
88819833afSPeter Tyser #define EPORT_EPPAR_EPPA7_RISING	(0x4000)
89819833afSPeter Tyser #define EPORT_EPPAR_EPPA7_FALLING	(0x8000)
90819833afSPeter Tyser #define EPORT_EPPAR_EPPA7_BOTH		(0xC000)
91819833afSPeter Tyser #define EPORT_EPPAR_EPPA6_LEVEL		(0x0000)
92819833afSPeter Tyser #define EPORT_EPPAR_EPPA6_RISING	(0x1000)
93819833afSPeter Tyser #define EPORT_EPPAR_EPPA6_FALLING	(0x2000)
94819833afSPeter Tyser #define EPORT_EPPAR_EPPA6_BOTH		(0x3000)
95819833afSPeter Tyser #define EPORT_EPPAR_EPPA5_LEVEL		(0x0000)
96819833afSPeter Tyser #define EPORT_EPPAR_EPPA5_RISING	(0x0400)
97819833afSPeter Tyser #define EPORT_EPPAR_EPPA5_FALLING	(0x0800)
98819833afSPeter Tyser #define EPORT_EPPAR_EPPA5_BOTH		(0x0C00)
99819833afSPeter Tyser #define EPORT_EPPAR_EPPA4_LEVEL		(0x0000)
100819833afSPeter Tyser #define EPORT_EPPAR_EPPA4_RISING	(0x0100)
101819833afSPeter Tyser #define EPORT_EPPAR_EPPA4_FALLING	(0x0200)
102819833afSPeter Tyser #define EPORT_EPPAR_EPPA4_BOTH		(0x0300)
103819833afSPeter Tyser #define EPORT_EPPAR_EPPA3_LEVEL		(0x0000)
104819833afSPeter Tyser #define EPORT_EPPAR_EPPA3_RISING	(0x0040)
105819833afSPeter Tyser #define EPORT_EPPAR_EPPA3_FALLING	(0x0080)
106819833afSPeter Tyser #define EPORT_EPPAR_EPPA3_BOTH		(0x00C0)
107819833afSPeter Tyser #define EPORT_EPPAR_EPPA2_LEVEL		(0x0000)
108819833afSPeter Tyser #define EPORT_EPPAR_EPPA2_RISING	(0x0010)
109819833afSPeter Tyser #define EPORT_EPPAR_EPPA2_FALLING	(0x0020)
110819833afSPeter Tyser #define EPORT_EPPAR_EPPA2_BOTH		(0x0030)
111819833afSPeter Tyser #define EPORT_EPPAR_EPPA1_LEVEL		(0x0000)
112819833afSPeter Tyser #define EPORT_EPPAR_EPPA1_RISING	(0x0004)
113819833afSPeter Tyser #define EPORT_EPPAR_EPPA1_FALLING	(0x0008)
114819833afSPeter Tyser #define EPORT_EPPAR_EPPA1_BOTH		(0x000C)
115819833afSPeter Tyser 
116819833afSPeter Tyser /* Bit definitions and macros for EPDDR */
117819833afSPeter Tyser #define EPORT_EPDDR_EPDD1		(0x02)
118819833afSPeter Tyser #define EPORT_EPDDR_EPDD2		(0x04)
119819833afSPeter Tyser #define EPORT_EPDDR_EPDD3		(0x08)
120819833afSPeter Tyser #define EPORT_EPDDR_EPDD4		(0x10)
121819833afSPeter Tyser #define EPORT_EPDDR_EPDD5		(0x20)
122819833afSPeter Tyser #define EPORT_EPDDR_EPDD6		(0x40)
123819833afSPeter Tyser #define EPORT_EPDDR_EPDD7		(0x80)
124819833afSPeter Tyser 
125819833afSPeter Tyser /* Bit definitions and macros for EPIER */
126819833afSPeter Tyser #define EPORT_EPIER_EPIE1		(0x02)
127819833afSPeter Tyser #define EPORT_EPIER_EPIE2		(0x04)
128819833afSPeter Tyser #define EPORT_EPIER_EPIE3		(0x08)
129819833afSPeter Tyser #define EPORT_EPIER_EPIE4		(0x10)
130819833afSPeter Tyser #define EPORT_EPIER_EPIE5		(0x20)
131819833afSPeter Tyser #define EPORT_EPIER_EPIE6		(0x40)
132819833afSPeter Tyser #define EPORT_EPIER_EPIE7		(0x80)
133819833afSPeter Tyser 
134819833afSPeter Tyser /* Bit definitions and macros for EPDR */
135819833afSPeter Tyser #define EPORT_EPDR_EPD1			(0x02)
136819833afSPeter Tyser #define EPORT_EPDR_EPD2			(0x04)
137819833afSPeter Tyser #define EPORT_EPDR_EPD3			(0x08)
138819833afSPeter Tyser #define EPORT_EPDR_EPD4			(0x10)
139819833afSPeter Tyser #define EPORT_EPDR_EPD5			(0x20)
140819833afSPeter Tyser #define EPORT_EPDR_EPD6			(0x40)
141819833afSPeter Tyser #define EPORT_EPDR_EPD7			(0x80)
142819833afSPeter Tyser 
143819833afSPeter Tyser /* Bit definitions and macros for EPPDR */
144819833afSPeter Tyser #define EPORT_EPPDR_EPPD1		(0x02)
145819833afSPeter Tyser #define EPORT_EPPDR_EPPD2		(0x04)
146819833afSPeter Tyser #define EPORT_EPPDR_EPPD3		(0x08)
147819833afSPeter Tyser #define EPORT_EPPDR_EPPD4		(0x10)
148819833afSPeter Tyser #define EPORT_EPPDR_EPPD5		(0x20)
149819833afSPeter Tyser #define EPORT_EPPDR_EPPD6		(0x40)
150819833afSPeter Tyser #define EPORT_EPPDR_EPPD7		(0x80)
151819833afSPeter Tyser 
152819833afSPeter Tyser /* Bit definitions and macros for EPFR */
153819833afSPeter Tyser #define EPORT_EPFR_EPF1			(0x02)
154819833afSPeter Tyser #define EPORT_EPFR_EPF2			(0x04)
155819833afSPeter Tyser #define EPORT_EPFR_EPF3			(0x08)
156819833afSPeter Tyser #define EPORT_EPFR_EPF4			(0x10)
157819833afSPeter Tyser #define EPORT_EPFR_EPF5			(0x20)
158819833afSPeter Tyser #define EPORT_EPFR_EPF6			(0x40)
159819833afSPeter Tyser #define EPORT_EPFR_EPF7			(0x80)
160819833afSPeter Tyser 
161819833afSPeter Tyser #endif					/* __EDMA_H__ */
162