Blame view
include/linux/sh_dma.h
3.61 KB
b2623a61c dmaengine: shdma:... |
1 2 3 4 5 6 7 8 9 10 11 |
/* * Header for the new SH dmaengine driver * * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef SH_DMA_H #define SH_DMA_H |
b2623a61c dmaengine: shdma:... |
12 |
#include <linux/dmaengine.h> |
5902c9a7a dma: shdma: prepa... |
13 14 |
#include <linux/list.h> #include <linux/shdma-base.h> |
ce3a1ab74 dma: shdma: conve... |
15 16 17 |
#include <linux/types.h> struct device; |
b2623a61c dmaengine: shdma:... |
18 19 20 |
/* Used by slave DMA clients to request DMA to/from a specific peripheral */ struct sh_dmae_slave { |
ce3a1ab74 dma: shdma: conve... |
21 |
struct shdma_slave shdma_slave; /* Set by the platform */ |
b2623a61c dmaengine: shdma:... |
22 |
}; |
5bac942db SH: constify mult... |
23 |
|
ce3a1ab74 dma: shdma: conve... |
24 25 26 27 |
/* * Supplied by platforms to specify, how a DMA channel has to be configured for * a certain peripheral */ |
b2623a61c dmaengine: shdma:... |
28 |
struct sh_dmae_slave_config { |
c2cdb7e4d dma: sh: use an i... |
29 30 31 32 |
int slave_id; dma_addr_t addr; u32 chcr; char mid_rid; |
b2623a61c dmaengine: shdma:... |
33 |
}; |
ca8b38780 DMA: shdma: suppo... |
34 35 36 37 38 39 40 41 |
/** * struct sh_dmae_channel - DMAC channel platform data * @offset: register offset within the main IOMEM resource * @dmars: channel DMARS register offset * @chclr_offset: channel CHCLR register offset * @dmars_bit: channel DMARS field offset within the register * @chclr_bit: bit position, to be set to reset the channel */ |
b2623a61c dmaengine: shdma:... |
42 43 44 |
struct sh_dmae_channel { unsigned int offset; unsigned int dmars; |
c11b46c32 dma: shdma: fix r... |
45 |
unsigned int chclr_offset; |
ca8b38780 DMA: shdma: suppo... |
46 47 |
unsigned char dmars_bit; unsigned char chclr_bit; |
b2623a61c dmaengine: shdma:... |
48 |
}; |
ca8b38780 DMA: shdma: suppo... |
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
/** * struct sh_dmae_pdata - DMAC platform data * @slave: array of slaves * @slave_num: number of slaves in the above array * @channel: array of DMA channels * @channel_num: number of channels in the above array * @ts_low_shift: shift of the low part of the TS field * @ts_low_mask: low TS field mask * @ts_high_shift: additional shift of the high part of the TS field * @ts_high_mask: high TS field mask * @ts_shift: array of Transfer Size shifts, indexed by TS value * @ts_shift_num: number of shifts in the above array * @dmaor_init: DMAOR initialisation value * @chcr_offset: CHCR address offset * @chcr_ie_bit: CHCR Interrupt Enable bit * @dmaor_is_32bit: DMAOR is a 32-bit register * @needs_tend_set: the TEND register has to be set * @no_dmars: DMAC has no DMARS registers * @chclr_present: DMAC has one or several CHCLR registers * @chclr_bitwise: channel CHCLR registers are bitwise * @slave_only: DMAC cannot be used for MEMCPY */ |
b2623a61c dmaengine: shdma:... |
71 |
struct sh_dmae_pdata { |
5bac942db SH: constify mult... |
72 |
const struct sh_dmae_slave_config *slave; |
b2623a61c dmaengine: shdma:... |
73 |
int slave_num; |
5bac942db SH: constify mult... |
74 |
const struct sh_dmae_channel *channel; |
b2623a61c dmaengine: shdma:... |
75 76 77 78 79 |
int channel_num; unsigned int ts_low_shift; unsigned int ts_low_mask; unsigned int ts_high_shift; unsigned int ts_high_mask; |
5bac942db SH: constify mult... |
80 |
const unsigned int *ts_shift; |
b2623a61c dmaengine: shdma:... |
81 82 |
int ts_shift_num; u16 dmaor_init; |
5899a723b dmaengine: shdma:... |
83 |
unsigned int chcr_offset; |
67c6269e5 dmaengine: shdma:... |
84 |
u32 chcr_ie_bit; |
e76c3af87 dmaengine: shdma:... |
85 86 |
unsigned int dmaor_is_32bit:1; |
260bf2c5f dmaengine: shdma:... |
87 88 |
unsigned int needs_tend_set:1; unsigned int no_dmars:1; |
c11b46c32 dma: shdma: fix r... |
89 |
unsigned int chclr_present:1; |
ca8b38780 DMA: shdma: suppo... |
90 |
unsigned int chclr_bitwise:1; |
e9c8d7a03 dma: sh_dma: not ... |
91 |
unsigned int slave_only:1; |
b2623a61c dmaengine: shdma:... |
92 |
}; |
b2623a61c dmaengine: shdma:... |
93 |
/* DMAOR definitions */ |
6b32fafee dmaengine: shdma:... |
94 |
#define DMAOR_AE 0x00000004 /* Address Error Flag */ |
b2623a61c dmaengine: shdma:... |
95 |
#define DMAOR_NMIF 0x00000002 |
6b32fafee dmaengine: shdma:... |
96 |
#define DMAOR_DME 0x00000001 /* DMA Master Enable */ |
b2623a61c dmaengine: shdma:... |
97 98 |
/* Definitions for the SuperH DMAC */ |
6b32fafee dmaengine: shdma:... |
99 100 101 102 103 104 105 106 107 108 109 |
#define DM_INC 0x00004000 /* Destination addresses are incremented */ #define DM_DEC 0x00008000 /* Destination addresses are decremented */ #define DM_FIX 0x0000c000 /* Destination address is fixed */ #define SM_INC 0x00001000 /* Source addresses are incremented */ #define SM_DEC 0x00002000 /* Source addresses are decremented */ #define SM_FIX 0x00003000 /* Source address is fixed */ #define RS_AUTO 0x00000400 /* Auto Request */ #define RS_ERS 0x00000800 /* DMA extended resource selector */ #define CHCR_DE 0x00000001 /* DMA Enable */ #define CHCR_TE 0x00000002 /* Transfer End Flag */ #define CHCR_IE 0x00000004 /* Interrupt Enable */ |
b2623a61c dmaengine: shdma:... |
110 111 |
#endif |