1 #ifndef __IDT_DMA_V_H__
2 #define __IDT_DMA_V_H__
4 /*******************************************************************************
6 * Copyright 2002 Integrated Device Technology, Inc.
9 * DMA register definition.
11 * File : $Id: dma.h,v 1.3 2002/06/06 18:34:03 astichte Exp $
13 * Author : ryan.holmQVist@idt.com
17 * Revision 1.3 2002/06/06 18:34:03 astichte
18 * Added XXX_PhysicalAddress and XXX_VirtualAddress
20 * Revision 1.2 2002/06/05 18:30:46 astichte
23 * Revision 1.1 2002/05/29 17:33:21 sysarch
24 * jba File moved from vcode/include/idt/acacia
27 ******************************************************************************/
28 #include <asm/rc32434/dma.h>
29 #include <asm/rc32434/rc32434.h>
30 #define DMA_CHAN_OFFSET 0x14
31 #define IS_DMA_USED(X) (((X) & (DMAD_f_m | DMAD_d_m | DMAD_t_m)) != 0)
32 #define DMA_COUNT(count) \
33 ((count) & DMAD_count_m)
35 #define DMA_HALT_TIMEOUT 500
38 static inline int rc32434_halt_dma(DMA_Chan_t ch
)
41 if (local_readl(&ch
->dmac
) & DMAC_run_m
) {
42 local_writel(0, &ch
->dmac
);
43 for (timeout
= DMA_HALT_TIMEOUT
; timeout
> 0; timeout
--) {
44 if (local_readl(&ch
->dmas
) & DMAS_h_m
) {
45 local_writel(0, &ch
->dmas
);
51 return timeout
? 0 : 1;
54 static inline void rc32434_start_dma(DMA_Chan_t ch
, u32 dma_addr
)
56 local_writel(0, &ch
->dmandptr
);
57 local_writel(dma_addr
, &ch
->dmadptr
);
60 static inline void rc32434_chain_dma(DMA_Chan_t ch
, u32 dma_addr
)
62 local_writel(dma_addr
, &ch
->dmandptr
);
65 #endif // __IDT_DMA_V_H__