OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-sh/] [dma.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef __ASM_SH_DMA_H
2
#define __ASM_SH_DMA_H
3
 
4
#include <linux/config.h>
5
#include <asm/io.h>             /* need byte IO */
6
 
7
#define MAX_DMA_CHANNELS 8
8
#define SH_MAX_DMA_CHANNELS 4
9
 
10
/* The maximum address that we can perform a DMA transfer to on this platform */
11
/* Don't define MAX_DMA_ADDRESS; it's useless on the SuperH and any
12
   occurrence should be flagged as an error.  */
13
/* But... */
14
/* XXX: This is not applicable to SuperH, just needed for alloc_bootmem */
15
#define MAX_DMA_ADDRESS      (PAGE_OFFSET+0x10000000)
16
 
17
#if defined(__sh3__)
18
#define SAR ((unsigned long[]){0xa4000020,0xa4000030,0xa4000040,0xa4000050})
19
#define DAR ((unsigned long[]){0xa4000024,0xa4000034,0xa4000044,0xa4000054})
20
#define DMATCR ((unsigned long[]){0xa4000028,0xa4000038,0xa4000048,0xa4000058})
21
#define CHCR ((unsigned long[]){0xa400002c,0xa400003c,0xa400004c,0xa400005c})
22
#define DMAOR 0xa4000060UL
23
#elif defined(__SH4__)
24
#define SAR ((unsigned long[]){0xbfa00000,0xbfa00010,0xbfa00020,0xbfa00030})
25
#define DAR ((unsigned long[]){0xbfa00004,0xbfa00014,0xbfa00024,0xbfa00034})
26
#define DMATCR ((unsigned long[]){0xbfa00008,0xbfa00018,0xbfa00028,0xbfa00038})
27
#define CHCR ((unsigned long[]){0xbfa0000c,0xbfa0001c,0xbfa0002c,0xbfa0003c})
28
#define DMAOR 0xbfa00040UL
29
#endif
30
 
31
#define DMTE_IRQ ((int[]){DMTE0_IRQ,DMTE1_IRQ,DMTE2_IRQ,DMTE3_IRQ})
32
 
33
#define DMA_MODE_READ   0x00    /* I/O to memory, no autoinit, increment, single mode */
34
#define DMA_MODE_WRITE  0x01    /* memory to I/O, no autoinit, increment, single mode */
35
#define DMA_AUTOINIT    0x10
36
 
37
#define REQ_L   0x00000000
38
#define REQ_E   0x00080000
39
#define RACK_H  0x00000000
40
#define RACK_L  0x00040000
41
#define ACK_R   0x00000000
42
#define ACK_W   0x00020000
43
#define ACK_H   0x00000000
44
#define ACK_L   0x00010000
45
#define DM_INC  0x00004000
46
#define DM_DEC  0x00008000
47
#define SM_INC  0x00001000
48
#define SM_DEC  0x00002000
49
#define RS_DUAL 0x00000000
50
#define RS_IN   0x00000200
51
#define RS_OUT  0x00000300
52
#define TM_BURST 0x0000080
53
#define TS_8    0x00000010
54
#define TS_16   0x00000020
55
#define TS_32   0x00000030
56
#define TS_64   0x00000000
57
#define TS_BLK  0x00000040
58
#define CHCR_DE 0x00000001
59
#define CHCR_TE 0x00000002
60
#define CHCR_IE 0x00000004
61
 
62
#define DMAOR_COD       0x00000008
63
#define DMAOR_AE        0x00000004
64
#define DMAOR_NMIF      0x00000002
65
#define DMAOR_DME       0x00000001
66
 
67
struct dma_info_t {
68
        unsigned int chan;
69
        unsigned int mode_read;
70
        unsigned int mode_write;
71
        unsigned long dev_addr;
72
        unsigned int mode;
73
        unsigned long mem_addr;
74
        unsigned int count;
75
};
76
 
77
static __inline__ void clear_dma_ff(unsigned int dmanr){}
78
 
79
/* These are in arch/sh/kernel/dma.c: */
80
extern unsigned long claim_dma_lock(void);
81
extern void release_dma_lock(unsigned long flags);
82
extern void setup_dma(unsigned int dmanr, struct dma_info_t *info);
83
extern void enable_dma(unsigned int dmanr);
84
extern void disable_dma(unsigned int dmanr);
85
extern void set_dma_mode(unsigned int dmanr, char mode);
86
extern void set_dma_addr(unsigned int dmanr, unsigned int a);
87
extern void set_dma_count(unsigned int dmanr, unsigned int count);
88
extern int get_dma_residue(unsigned int dmanr);
89
 
90
#ifdef CONFIG_PCI
91
extern int isa_dma_bridge_buggy;
92
#else
93
#define isa_dma_bridge_buggy    (0)
94
#endif
95
 
96
 
97
#endif /* __ASM_SH_DMA_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.