| /* | 
 |  * (C) Copyright 2003 | 
 |  * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | 
 |  * | 
 |  * This file is based on code | 
 |  * (C) Copyright Motorola, Inc., 2000 | 
 |  * | 
 |  * MPC8220 dma header file | 
 |  */ | 
 |  | 
 | #ifndef __MPC8220_DMA_H | 
 | #define __MPC8220_DMA_H | 
 |  | 
 | #include <common.h> | 
 | #include <mpc8220.h> | 
 |  | 
 | /* Task number assignment */ | 
 | #define FEC_RECV_TASK_NO            0 | 
 | #define FEC_XMIT_TASK_NO            1 | 
 |  | 
 | /*--------------------------------------------------------------------- | 
 |  * Stuff for Ethernet Tx/Rx tasks | 
 |  *--------------------------------------------------------------------- | 
 |  */ | 
 |  | 
 | /* Layout of Ethernet controller Parameter SRAM area: | 
 |  * ---------------------------------------------------------------- | 
 |  * 0x00: TBD_BASE, base address of TX BD ring | 
 |  * 0x04: TBD_NEXT, address of next TX BD to be processed | 
 |  * 0x08: RBD_BASE, base address of RX BD ring | 
 |  * 0x0C: RBD_NEXT, address of next RX BD to be processed | 
 |  * --------------------------------------------------------------- | 
 |  * ALL PARAMETERS ARE ALL LONGWORDS (FOUR BYTES EACH). | 
 |  */ | 
 |  | 
 | /* base address of SRAM area to store parameters used by Ethernet tasks */ | 
 | #define FEC_PARAM_BASE  (MMAP_SRAM + 0x5b00) | 
 |  | 
 | /* base address of SRAM area for buffer descriptors */ | 
 | #define FEC_BD_BASE     (MMAP_SRAM + 0x5b20) | 
 |  | 
 | /*--------------------------------------------------------------------- | 
 |  * common shortcuts  used  by driver C code | 
 |  *--------------------------------------------------------------------- | 
 |  */ | 
 |  | 
 | /* Disable SmartDMA task */ | 
 | #define DMA_TASK_DISABLE(tasknum)						\ | 
 | {										\ | 
 | 	volatile ushort *tcr = (ushort *)(MMAP_DMA + 0x0000001c + 2 * tasknum); \ | 
 | 	*tcr = (*tcr) & (~0x8000);						\ | 
 | } | 
 |  | 
 | /* Enable SmartDMA task */ | 
 | #define DMA_TASK_ENABLE(tasknum)						\ | 
 | {										\ | 
 | 	volatile ushort *tcr = (ushort *) (MMAP_DMA + 0x0000001c + 2 * tasknum);\ | 
 | 	*tcr = (*tcr)  | 0x8000;						\ | 
 | } | 
 |  | 
 | /* Clear interrupt pending bits */ | 
 | #define DMA_CLEAR_IEVENT(tasknum)						\ | 
 | {										\ | 
 | 	struct mpc8220_dma *dma = (struct mpc8220_dma *)MMAP_DMA;		\ | 
 | 	dma->IntPend = (1 << tasknum);						\ | 
 | } | 
 |  | 
 | #endif  /* __MPC8220_DMA_H */ |