xref: /OK3568_Linux_fs/u-boot/arch/m68k/include/asm/coldfire/edma.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * EDMA Internal Memory Map
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2004-2007 Freescale Semiconductor, Inc.
5*4882a593Smuzhiyun  * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifndef __EDMA_H__
11*4882a593Smuzhiyun #define __EDMA_H__
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /*********************************************************************
14*4882a593Smuzhiyun * Enhanced DMA (EDMA)
15*4882a593Smuzhiyun *********************************************************************/
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun /* eDMA module registers */
18*4882a593Smuzhiyun typedef struct edma_ctrl {
19*4882a593Smuzhiyun 	u32 cr;			/* 0x00 Control Register */
20*4882a593Smuzhiyun 	u32 es;			/* 0x04 Error Status Register */
21*4882a593Smuzhiyun 	u16 res1[3];		/* 0x08 - 0x0D */
22*4882a593Smuzhiyun 	u16 erq;		/* 0x0E Enable Request Register */
23*4882a593Smuzhiyun 	u16 res2[3];		/* 0x10 - 0x15 */
24*4882a593Smuzhiyun 	u16 eei;		/* 0x16 Enable Error Interrupt Request */
25*4882a593Smuzhiyun 	u8 serq;		/* 0x18 Set Enable Request */
26*4882a593Smuzhiyun 	u8 cerq;		/* 0x19 Clear Enable Request */
27*4882a593Smuzhiyun 	u8 seei;		/* 0x1A Set En Error Interrupt Request */
28*4882a593Smuzhiyun 	u8 ceei;		/* 0x1B Clear En Error Interrupt Request */
29*4882a593Smuzhiyun 	u8 cint;		/* 0x1C Clear Interrupt Enable */
30*4882a593Smuzhiyun 	u8 cerr;		/* 0x1D Clear Error */
31*4882a593Smuzhiyun 	u8 ssrt;		/* 0x1E Set START Bit */
32*4882a593Smuzhiyun 	u8 cdne;		/* 0x1F Clear DONE Status Bit */
33*4882a593Smuzhiyun 	u16 res3[3];		/* 0x20 - 0x25 */
34*4882a593Smuzhiyun 	u16 intr;		/* 0x26 Interrupt Request */
35*4882a593Smuzhiyun 	u16 res4[3];		/* 0x28 - 0x2D */
36*4882a593Smuzhiyun 	u16 err;		/* 0x2E Error Register */
37*4882a593Smuzhiyun 	u32 res5[52];		/* 0x30 - 0xFF */
38*4882a593Smuzhiyun 	u8 dchpri0;		/* 0x100 Channel 0 Priority */
39*4882a593Smuzhiyun 	u8 dchpri1;		/* 0x101 Channel 1 Priority */
40*4882a593Smuzhiyun 	u8 dchpri2;		/* 0x102 Channel 2 Priority */
41*4882a593Smuzhiyun 	u8 dchpri3;		/* 0x103 Channel 3 Priority */
42*4882a593Smuzhiyun 	u8 dchpri4;		/* 0x104 Channel 4 Priority */
43*4882a593Smuzhiyun 	u8 dchpri5;		/* 0x105 Channel 5 Priority */
44*4882a593Smuzhiyun 	u8 dchpri6;		/* 0x106 Channel 6 Priority */
45*4882a593Smuzhiyun 	u8 dchpri7;		/* 0x107 Channel 7 Priority */
46*4882a593Smuzhiyun 	u8 dchpri8;		/* 0x108 Channel 8 Priority */
47*4882a593Smuzhiyun 	u8 dchpri9;		/* 0x109 Channel 9 Priority */
48*4882a593Smuzhiyun 	u8 dchpri10;		/* 0x110 Channel 10 Priority */
49*4882a593Smuzhiyun 	u8 dchpri11;		/* 0x111 Channel 11 Priority */
50*4882a593Smuzhiyun 	u8 dchpri12;		/* 0x112 Channel 12 Priority */
51*4882a593Smuzhiyun 	u8 dchpri13;		/* 0x113 Channel 13 Priority */
52*4882a593Smuzhiyun 	u8 dchpri14;		/* 0x114 Channel 14 Priority */
53*4882a593Smuzhiyun 	u8 dchpri15;		/* 0x115 Channel 15 Priority */
54*4882a593Smuzhiyun } edma_t;
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun /* TCD - eDMA*/
57*4882a593Smuzhiyun typedef struct tcd_ctrl {
58*4882a593Smuzhiyun 	u32 saddr;		/* 0x00 Source Address */
59*4882a593Smuzhiyun 	u16 attr;		/* 0x04 Transfer Attributes */
60*4882a593Smuzhiyun 	u16 soff;		/* 0x06 Signed Source Address Offset */
61*4882a593Smuzhiyun 	u32 nbytes;		/* 0x08 Minor Byte Count */
62*4882a593Smuzhiyun 	u32 slast;		/* 0x0C Last Source Address Adjustment */
63*4882a593Smuzhiyun 	u32 daddr;		/* 0x10 Destination address */
64*4882a593Smuzhiyun 	u16 citer;		/* 0x14 Cur Minor Loop Link, Major Loop Cnt */
65*4882a593Smuzhiyun 	u16 doff;		/* 0x16 Signed Destination Address Offset */
66*4882a593Smuzhiyun 	u32 dlast_sga;		/* 0x18 Last Dest Adr Adj/Scatter Gather Adr */
67*4882a593Smuzhiyun 	u16 biter;		/* 0x1C Minor Loop Lnk, Major Loop Cnt */
68*4882a593Smuzhiyun 	u16 csr;		/* 0x1E Control and Status */
69*4882a593Smuzhiyun } tcd_st;
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun typedef struct tcd_multiple {
72*4882a593Smuzhiyun 	tcd_st tcd[16];
73*4882a593Smuzhiyun } tcd_t;
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* Bit definitions and macros for EPPAR */
76*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA1(x)		(((x)&0x0003)<<2)
77*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA2(x)		(((x)&0x0003)<<4)
78*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA3(x)		(((x)&0x0003)<<6)
79*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA4(x)		(((x)&0x0003)<<8)
80*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA5(x)		(((x)&0x0003)<<10)
81*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA6(x)		(((x)&0x0003)<<12)
82*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA7(x)		(((x)&0x0003)<<14)
83*4882a593Smuzhiyun #define EPORT_EPPAR_LEVEL		(0)
84*4882a593Smuzhiyun #define EPORT_EPPAR_RISING		(1)
85*4882a593Smuzhiyun #define EPORT_EPPAR_FALLING		(2)
86*4882a593Smuzhiyun #define EPORT_EPPAR_BOTH		(3)
87*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA7_LEVEL		(0x0000)
88*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA7_RISING	(0x4000)
89*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA7_FALLING	(0x8000)
90*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA7_BOTH		(0xC000)
91*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA6_LEVEL		(0x0000)
92*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA6_RISING	(0x1000)
93*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA6_FALLING	(0x2000)
94*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA6_BOTH		(0x3000)
95*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA5_LEVEL		(0x0000)
96*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA5_RISING	(0x0400)
97*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA5_FALLING	(0x0800)
98*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA5_BOTH		(0x0C00)
99*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA4_LEVEL		(0x0000)
100*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA4_RISING	(0x0100)
101*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA4_FALLING	(0x0200)
102*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA4_BOTH		(0x0300)
103*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA3_LEVEL		(0x0000)
104*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA3_RISING	(0x0040)
105*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA3_FALLING	(0x0080)
106*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA3_BOTH		(0x00C0)
107*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA2_LEVEL		(0x0000)
108*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA2_RISING	(0x0010)
109*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA2_FALLING	(0x0020)
110*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA2_BOTH		(0x0030)
111*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA1_LEVEL		(0x0000)
112*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA1_RISING	(0x0004)
113*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA1_FALLING	(0x0008)
114*4882a593Smuzhiyun #define EPORT_EPPAR_EPPA1_BOTH		(0x000C)
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun /* Bit definitions and macros for EPDDR */
117*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD1		(0x02)
118*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD2		(0x04)
119*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD3		(0x08)
120*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD4		(0x10)
121*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD5		(0x20)
122*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD6		(0x40)
123*4882a593Smuzhiyun #define EPORT_EPDDR_EPDD7		(0x80)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun /* Bit definitions and macros for EPIER */
126*4882a593Smuzhiyun #define EPORT_EPIER_EPIE1		(0x02)
127*4882a593Smuzhiyun #define EPORT_EPIER_EPIE2		(0x04)
128*4882a593Smuzhiyun #define EPORT_EPIER_EPIE3		(0x08)
129*4882a593Smuzhiyun #define EPORT_EPIER_EPIE4		(0x10)
130*4882a593Smuzhiyun #define EPORT_EPIER_EPIE5		(0x20)
131*4882a593Smuzhiyun #define EPORT_EPIER_EPIE6		(0x40)
132*4882a593Smuzhiyun #define EPORT_EPIER_EPIE7		(0x80)
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun /* Bit definitions and macros for EPDR */
135*4882a593Smuzhiyun #define EPORT_EPDR_EPD1			(0x02)
136*4882a593Smuzhiyun #define EPORT_EPDR_EPD2			(0x04)
137*4882a593Smuzhiyun #define EPORT_EPDR_EPD3			(0x08)
138*4882a593Smuzhiyun #define EPORT_EPDR_EPD4			(0x10)
139*4882a593Smuzhiyun #define EPORT_EPDR_EPD5			(0x20)
140*4882a593Smuzhiyun #define EPORT_EPDR_EPD6			(0x40)
141*4882a593Smuzhiyun #define EPORT_EPDR_EPD7			(0x80)
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun /* Bit definitions and macros for EPPDR */
144*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD1		(0x02)
145*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD2		(0x04)
146*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD3		(0x08)
147*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD4		(0x10)
148*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD5		(0x20)
149*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD6		(0x40)
150*4882a593Smuzhiyun #define EPORT_EPPDR_EPPD7		(0x80)
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun /* Bit definitions and macros for EPFR */
153*4882a593Smuzhiyun #define EPORT_EPFR_EPF1			(0x02)
154*4882a593Smuzhiyun #define EPORT_EPFR_EPF2			(0x04)
155*4882a593Smuzhiyun #define EPORT_EPFR_EPF3			(0x08)
156*4882a593Smuzhiyun #define EPORT_EPFR_EPF4			(0x10)
157*4882a593Smuzhiyun #define EPORT_EPFR_EPF5			(0x20)
158*4882a593Smuzhiyun #define EPORT_EPFR_EPF6			(0x40)
159*4882a593Smuzhiyun #define EPORT_EPFR_EPF7			(0x80)
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun #endif					/* __EDMA_H__ */
162