0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef __ASM_RC32434_DMA_H
0013 #define __ASM_RC32434_DMA_H
0014
0015 #include <asm/mach-rc32434/rb.h>
0016
0017 #define DMA0_BASE_ADDR 0x18040000
0018
0019
0020
0021
0022
0023 struct dma_desc {
0024 u32 control;
0025 u32 ca;
0026 u32 devcs;
0027 u32 link;
0028 };
0029
0030 #define DMA_DESC_SIZ sizeof(struct dma_desc)
0031 #define DMA_DESC_COUNT_BIT 0
0032 #define DMA_DESC_COUNT_MSK 0x0003ffff
0033 #define DMA_DESC_DS_BIT 20
0034 #define DMA_DESC_DS_MSK 0x00300000
0035
0036 #define DMA_DESC_DEV_CMD_BIT 22
0037 #define DMA_DESC_DEV_CMD_MSK 0x01c00000
0038
0039
0040 #define DMA_DESC_DEV_CMD_BYTE 0
0041 #define DMA_DESC_DEV_CMD_HLF_WD 1
0042 #define DMA_DESC_DEV_CMD_WORD 2
0043 #define DMA_DESC_DEV_CMD_2WORDS 3
0044 #define DMA_DESC_DEV_CMD_4WORDS 4
0045 #define DMA_DESC_DEV_CMD_6WORDS 5
0046 #define DMA_DESC_DEV_CMD_8WORDS 6
0047 #define DMA_DESC_DEV_CMD_16WORDS 7
0048
0049
0050 #define DMA_DESC_COF (1 << 25)
0051 #define DMA_DESC_COD (1 << 26)
0052 #define DMA_DESC_IOF (1 << 27)
0053 #define DMA_DESC_IOD (1 << 28)
0054 #define DMA_DESC_TERM (1 << 29)
0055 #define DMA_DESC_DONE (1 << 30)
0056 #define DMA_DESC_FINI (1 << 31)
0057
0058
0059
0060
0061
0062 struct dma_reg {
0063 u32 dmac;
0064 u32 dmas;
0065 u32 dmasm;
0066 u32 dmadptr;
0067 u32 dmandptr;
0068 };
0069
0070
0071 #define DMA_CHAN_RUN_BIT (1 << 0)
0072 #define DMA_CHAN_DONE_BIT (1 << 1)
0073 #define DMA_CHAN_MODE_BIT (1 << 2)
0074 #define DMA_CHAN_MODE_MSK 0x0000000c
0075 #define DMA_CHAN_MODE_AUTO 0
0076 #define DMA_CHAN_MODE_BURST 1
0077 #define DMA_CHAN_MODE_XFRT 2
0078 #define DMA_CHAN_MODE_RSVD 3
0079 #define DMA_CHAN_ACT_BIT (1 << 4)
0080
0081
0082 #define DMA_STAT_FINI (1 << 0)
0083 #define DMA_STAT_DONE (1 << 1)
0084 #define DMA_STAT_CHAIN (1 << 2)
0085 #define DMA_STAT_ERR (1 << 3)
0086 #define DMA_STAT_HALT (1 << 4)
0087
0088
0089
0090
0091
0092 #define DMA_CHAN_ETH_RCV 0
0093 #define DMA_CHAN_ETH_XMT 1
0094 #define DMA_CHAN_MEM_TO_FIFO 2
0095 #define DMA_CHAN_FIFO_TO_MEM 3
0096 #define DMA_CHAN_PCI_TO_MEM 4
0097 #define DMA_CHAN_MEM_TO_PCI 5
0098 #define DMA_CHAN_COUNT 6
0099
0100 struct dma_channel {
0101 struct dma_reg ch[DMA_CHAN_COUNT];
0102 };
0103
0104 #endif