blob: 114a369705bcfddc30c60eb7f9981edee6f1c75b [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ASM_CPU_SH4_DMA_H
2#define __ASM_CPU_SH4_DMA_H
3
Manuel Lauss9f8a5e32007-01-25 15:22:11 +09004/* SH7751/7760/7780 DMA IRQ sources */
Manuel Lauss9f8a5e32007-01-25 15:22:11 +09005
Paul Mundt0d831772006-01-16 22:14:09 -08006#ifdef CONFIG_CPU_SH4A
Paul Mundt5283ecb2006-09-27 15:59:17 +09007
Nobuhiro Iwamatsu71b973a2009-03-10 17:26:49 +09008#define DMAOR_INIT (DMAOR_DME)
Paul Mundt5283ecb2006-09-27 15:59:17 +09009
Nobuhiro Iwamatsu71b973a2009-03-10 17:26:49 +090010#include <cpu/dma-sh4a.h>
11#else /* CONFIG_CPU_SH4A */
12/*
13 * SH7750/SH7751/SH7760
14 */
15#define DMTE0_IRQ 34
16#define DMTE4_IRQ 44
17#define DMTE6_IRQ 46
18#define DMAE0_IRQ 38
Linus Torvalds1da177e2005-04-16 15:20:36 -070019
Nobuhiro Iwamatsu71b973a2009-03-10 17:26:49 +090020#define DMAOR_INIT (0x8000|DMAOR_DME)
21#define SH_DMAC_BASE0 0xffa00000
22#define SH_DMAC_BASE1 0xffa00070
Paul Mundt0d831772006-01-16 22:14:09 -080023/* Definitions for the SuperH DMAC */
Nobuhiro Iwamatsu71b973a2009-03-10 17:26:49 +090024#define TM_BURST 0x00000080
Paul Mundt0d831772006-01-16 22:14:09 -080025#define TS_8 0x00000010
26#define TS_16 0x00000020
27#define TS_32 0x00000030
28#define TS_64 0x00000000
29
Guennadi Liakhovetski623b4ac2010-02-03 14:44:12 +000030#define CHCR_TS_LOW_MASK 0x70
31#define CHCR_TS_LOW_SHIFT 4
32#define CHCR_TS_HIGH_MASK 0
33#define CHCR_TS_HIGH_SHIFT 0
Paul Mundt0d831772006-01-16 22:14:09 -080034
35#define DMAOR_COD 0x00000008
36
Paul Mundt0d831772006-01-16 22:14:09 -080037/*
38 * The SuperH DMAC supports a number of transmit sizes, we list them here,
39 * with their respective values as they appear in the CHCR registers.
40 *
41 * Defaults to a 64-bit transfer size.
42 */
43enum {
Guennadi Liakhovetski623b4ac2010-02-03 14:44:12 +000044 XMIT_SZ_8BIT = 1,
45 XMIT_SZ_16BIT = 2,
46 XMIT_SZ_32BIT = 3,
47 XMIT_SZ_64BIT = 0,
48 XMIT_SZ_256BIT = 4,
Paul Mundt0d831772006-01-16 22:14:09 -080049};
50
51/*
52 * The DMA count is defined as the number of bytes to transfer.
53 */
Guennadi Liakhovetski623b4ac2010-02-03 14:44:12 +000054#define TS_SHIFT { \
55 [XMIT_SZ_8BIT] = 0, \
56 [XMIT_SZ_16BIT] = 1, \
57 [XMIT_SZ_32BIT] = 2, \
58 [XMIT_SZ_64BIT] = 3, \
59 [XMIT_SZ_256BIT] = 5, \
60}
61
62#define TS_INDEX2VAL(i) (((i) & 7) << CHCR_TS_LOW_SHIFT)
63
Paul Mundt5283ecb2006-09-27 15:59:17 +090064#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070065
66#endif /* __ASM_CPU_SH4_DMA_H */