get rid of $Id$ - it has never helped us and it has broken too many patches ;)
[openwrt/openwrt.git] / target / linux / rb532 / files-2.6.24 / include / asm-mips / rc32434 / dma_v.h
1 #ifndef __IDT_DMA_V_H__
2 #define __IDT_DMA_V_H__
3
4 /*******************************************************************************
5 *
6 * Copyright 2002 Integrated Device Technology, Inc.
7 * All rights reserved.
8 *
9 * DMA register definition.
10 *
11 *
12 * Author : ryan.holmQVist@idt.com
13 * Date : 20011005
14 * Update :
15 * $Log: dma.h,v $
16 * Revision 1.3 2002/06/06 18:34:03 astichte
17 * Added XXX_PhysicalAddress and XXX_VirtualAddress
18 *
19 * Revision 1.2 2002/06/05 18:30:46 astichte
20 * Removed IDTField
21 *
22 * Revision 1.1 2002/05/29 17:33:21 sysarch
23 * jba File moved from vcode/include/idt/acacia
24 *
25 *
26 ******************************************************************************/
27 #include <asm/rc32434/dma.h>
28 #include <asm/rc32434/rc32434.h>
29 #define DMA_CHAN_OFFSET 0x14
30 #define IS_DMA_USED(X) (((X) & (DMAD_f_m | DMAD_d_m | DMAD_t_m)) != 0)
31 #define DMA_COUNT(count) \
32 ((count) & DMAD_count_m)
33
34 #define DMA_HALT_TIMEOUT 500
35
36
37 static inline int rc32434_halt_dma(DMA_Chan_t ch)
38 {
39 int timeout=1;
40 if (local_readl(&ch->dmac) & DMAC_run_m) {
41 local_writel(0, &ch->dmac);
42 for (timeout = DMA_HALT_TIMEOUT; timeout > 0; timeout--) {
43 if (local_readl(&ch->dmas) & DMAS_h_m) {
44 local_writel(0, &ch->dmas);
45 break;
46 }
47 }
48 }
49
50 return timeout ? 0 : 1;
51 }
52
53 static inline void rc32434_start_dma(DMA_Chan_t ch, u32 dma_addr)
54 {
55 local_writel(0, &ch->dmandptr);
56 local_writel(dma_addr, &ch->dmadptr);
57 }
58
59 static inline void rc32434_chain_dma(DMA_Chan_t ch, u32 dma_addr)
60 {
61 local_writel(dma_addr, &ch->dmandptr);
62 }
63
64 #endif // __IDT_DMA_V_H__
65
66
67
68
69
70
71