diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 12:24:48 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 12:24:48 -0500 |
commit | 5115f3c19d17851aaff5a857f55b4a019c908775 (patch) | |
tree | 0d02cf01e12e86365f4f5e3b234f986daef181a7 /arch | |
parent | c41b3810c09e60664433548c5218cc6ece6a8903 (diff) | |
parent | 17166a3b6e88b93189e6be5f7e1335a3cc4fa965 (diff) |
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine updates from Vinod Koul:
"This is fairly big pull by my standards as I had missed last merge
window. So we have the support for device tree for slave-dmaengine,
large updates to dw_dmac driver from Andy for reusing on different
architectures. Along with this we have fixes on bunch of the drivers"
Fix up trivial conflicts, usually due to #include line movement next to
each other.
* 'next' of git://git.infradead.org/users/vkoul/slave-dma: (111 commits)
Revert "ARM: SPEAr13xx: Pass DW DMAC platform data from DT"
ARM: dts: pl330: Add #dma-cells for generic dma binding support
DMA: PL330: Register the DMA controller with the generic DMA helpers
DMA: PL330: Add xlate function
DMA: PL330: Add new pl330 filter for DT case.
dma: tegra20-apb-dma: remove unnecessary assignment
edma: do not waste memory for dma_mask
dma: coh901318: set residue only if dma is in progress
dma: coh901318: avoid unbalanced locking
dmaengine.h: remove redundant else keyword
dma: of-dma: protect list write operation by spin_lock
dmaengine: ste_dma40: do not remove descriptors for cyclic transfers
dma: of-dma.c: fix memory leakage
dw_dmac: apply default dma_mask if needed
dmaengine: ioat - fix spare sparse complain
dmaengine: move drivers/of/dma.c -> drivers/dma/of-dma.c
ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING
dw_dmac: add support for Lynxpoint DMA controllers
dw_dmac: return proper residue value
dw_dmac: fill individual length of descriptor
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boot/dts/exynos5250.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/pl080.h | 146 | ||||
-rw-r--r-- | arch/arm/mach-s3c64xx/dma.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear3xx.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-spear6xx/spear6xx.c | 2 |
5 files changed, 14 insertions, 150 deletions
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index f50b4e854355..b1ac73e21c80 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
@@ -312,24 +312,36 @@ | |||
312 | compatible = "arm,pl330", "arm,primecell"; | 312 | compatible = "arm,pl330", "arm,primecell"; |
313 | reg = <0x121A0000 0x1000>; | 313 | reg = <0x121A0000 0x1000>; |
314 | interrupts = <0 34 0>; | 314 | interrupts = <0 34 0>; |
315 | #dma-cells = <1>; | ||
316 | #dma-channels = <8>; | ||
317 | #dma-requests = <32>; | ||
315 | }; | 318 | }; |
316 | 319 | ||
317 | pdma1: pdma@121B0000 { | 320 | pdma1: pdma@121B0000 { |
318 | compatible = "arm,pl330", "arm,primecell"; | 321 | compatible = "arm,pl330", "arm,primecell"; |
319 | reg = <0x121B0000 0x1000>; | 322 | reg = <0x121B0000 0x1000>; |
320 | interrupts = <0 35 0>; | 323 | interrupts = <0 35 0>; |
324 | #dma-cells = <1>; | ||
325 | #dma-channels = <8>; | ||
326 | #dma-requests = <32>; | ||
321 | }; | 327 | }; |
322 | 328 | ||
323 | mdma0: mdma@10800000 { | 329 | mdma0: mdma@10800000 { |
324 | compatible = "arm,pl330", "arm,primecell"; | 330 | compatible = "arm,pl330", "arm,primecell"; |
325 | reg = <0x10800000 0x1000>; | 331 | reg = <0x10800000 0x1000>; |
326 | interrupts = <0 33 0>; | 332 | interrupts = <0 33 0>; |
333 | #dma-cells = <1>; | ||
334 | #dma-channels = <8>; | ||
335 | #dma-requests = <1>; | ||
327 | }; | 336 | }; |
328 | 337 | ||
329 | mdma1: mdma@11C10000 { | 338 | mdma1: mdma@11C10000 { |
330 | compatible = "arm,pl330", "arm,primecell"; | 339 | compatible = "arm,pl330", "arm,primecell"; |
331 | reg = <0x11C10000 0x1000>; | 340 | reg = <0x11C10000 0x1000>; |
332 | interrupts = <0 124 0>; | 341 | interrupts = <0 124 0>; |
342 | #dma-cells = <1>; | ||
343 | #dma-channels = <8>; | ||
344 | #dma-requests = <1>; | ||
333 | }; | 345 | }; |
334 | }; | 346 | }; |
335 | 347 | ||
diff --git a/arch/arm/include/asm/hardware/pl080.h b/arch/arm/include/asm/hardware/pl080.h deleted file mode 100644 index 4eea2107214b..000000000000 --- a/arch/arm/include/asm/hardware/pl080.h +++ /dev/null | |||
@@ -1,146 +0,0 @@ | |||
1 | /* arch/arm/include/asm/hardware/pl080.h | ||
2 | * | ||
3 | * Copyright 2008 Openmoko, Inc. | ||
4 | * Copyright 2008 Simtec Electronics | ||
5 | * http://armlinux.simtec.co.uk/ | ||
6 | * Ben Dooks <ben@simtec.co.uk> | ||
7 | * | ||
8 | * ARM PrimeCell PL080 DMA controller | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 as | ||
12 | * published by the Free Software Foundation. | ||
13 | */ | ||
14 | |||
15 | /* Note, there are some Samsung updates to this controller block which | ||
16 | * make it not entierly compatible with the PL080 specification from | ||
17 | * ARM. When in doubt, check the Samsung documentation first. | ||
18 | * | ||
19 | * The Samsung defines are PL080S, and add an extra control register, | ||
20 | * the ability to move more than 2^11 counts of data and some extra | ||
21 | * OneNAND features. | ||
22 | */ | ||
23 | |||
24 | #ifndef ASM_PL080_H | ||
25 | #define ASM_PL080_H | ||
26 | |||
27 | #define PL080_INT_STATUS (0x00) | ||
28 | #define PL080_TC_STATUS (0x04) | ||
29 | #define PL080_TC_CLEAR (0x08) | ||
30 | #define PL080_ERR_STATUS (0x0C) | ||
31 | #define PL080_ERR_CLEAR (0x10) | ||
32 | #define PL080_RAW_TC_STATUS (0x14) | ||
33 | #define PL080_RAW_ERR_STATUS (0x18) | ||
34 | #define PL080_EN_CHAN (0x1c) | ||
35 | #define PL080_SOFT_BREQ (0x20) | ||
36 | #define PL080_SOFT_SREQ (0x24) | ||
37 | #define PL080_SOFT_LBREQ (0x28) | ||
38 | #define PL080_SOFT_LSREQ (0x2C) | ||
39 | |||
40 | #define PL080_CONFIG (0x30) | ||
41 | #define PL080_CONFIG_M2_BE (1 << 2) | ||
42 | #define PL080_CONFIG_M1_BE (1 << 1) | ||
43 | #define PL080_CONFIG_ENABLE (1 << 0) | ||
44 | |||
45 | #define PL080_SYNC (0x34) | ||
46 | |||
47 | /* Per channel configuration registers */ | ||
48 | |||
49 | #define PL080_Cx_STRIDE (0x20) | ||
50 | #define PL080_Cx_BASE(x) ((0x100 + (x * 0x20))) | ||
51 | #define PL080_Cx_SRC_ADDR(x) ((0x100 + (x * 0x20))) | ||
52 | #define PL080_Cx_DST_ADDR(x) ((0x104 + (x * 0x20))) | ||
53 | #define PL080_Cx_LLI(x) ((0x108 + (x * 0x20))) | ||
54 | #define PL080_Cx_CONTROL(x) ((0x10C + (x * 0x20))) | ||
55 | #define PL080_Cx_CONFIG(x) ((0x110 + (x * 0x20))) | ||
56 | #define PL080S_Cx_CONTROL2(x) ((0x110 + (x * 0x20))) | ||
57 | #define PL080S_Cx_CONFIG(x) ((0x114 + (x * 0x20))) | ||
58 | |||
59 | #define PL080_CH_SRC_ADDR (0x00) | ||
60 | #define PL080_CH_DST_ADDR (0x04) | ||
61 | #define PL080_CH_LLI (0x08) | ||
62 | #define PL080_CH_CONTROL (0x0C) | ||
63 | #define PL080_CH_CONFIG (0x10) | ||
64 | #define PL080S_CH_CONTROL2 (0x10) | ||
65 | #define PL080S_CH_CONFIG (0x14) | ||
66 | |||
67 | #define PL080_LLI_ADDR_MASK (0x3fffffff << 2) | ||
68 | #define PL080_LLI_ADDR_SHIFT (2) | ||
69 | #define PL080_LLI_LM_AHB2 (1 << 0) | ||
70 | |||
71 | #define PL080_CONTROL_TC_IRQ_EN (1 << 31) | ||
72 | #define PL080_CONTROL_PROT_MASK (0x7 << 28) | ||
73 | #define PL080_CONTROL_PROT_SHIFT (28) | ||
74 | #define PL080_CONTROL_PROT_CACHE (1 << 30) | ||
75 | #define PL080_CONTROL_PROT_BUFF (1 << 29) | ||
76 | #define PL080_CONTROL_PROT_SYS (1 << 28) | ||
77 | #define PL080_CONTROL_DST_INCR (1 << 27) | ||
78 | #define PL080_CONTROL_SRC_INCR (1 << 26) | ||
79 | #define PL080_CONTROL_DST_AHB2 (1 << 25) | ||
80 | #define PL080_CONTROL_SRC_AHB2 (1 << 24) | ||
81 | #define PL080_CONTROL_DWIDTH_MASK (0x7 << 21) | ||
82 | #define PL080_CONTROL_DWIDTH_SHIFT (21) | ||
83 | #define PL080_CONTROL_SWIDTH_MASK (0x7 << 18) | ||
84 | #define PL080_CONTROL_SWIDTH_SHIFT (18) | ||
85 | #define PL080_CONTROL_DB_SIZE_MASK (0x7 << 15) | ||
86 | #define PL080_CONTROL_DB_SIZE_SHIFT (15) | ||
87 | #define PL080_CONTROL_SB_SIZE_MASK (0x7 << 12) | ||
88 | #define PL080_CONTROL_SB_SIZE_SHIFT (12) | ||
89 | #define PL080_CONTROL_TRANSFER_SIZE_MASK (0xfff << 0) | ||
90 | #define PL080_CONTROL_TRANSFER_SIZE_SHIFT (0) | ||
91 | |||
92 | #define PL080_BSIZE_1 (0x0) | ||
93 | #define PL080_BSIZE_4 (0x1) | ||
94 | #define PL080_BSIZE_8 (0x2) | ||
95 | #define PL080_BSIZE_16 (0x3) | ||
96 | #define PL080_BSIZE_32 (0x4) | ||
97 | #define PL080_BSIZE_64 (0x5) | ||
98 | #define PL080_BSIZE_128 (0x6) | ||
99 | #define PL080_BSIZE_256 (0x7) | ||
100 | |||
101 | #define PL080_WIDTH_8BIT (0x0) | ||
102 | #define PL080_WIDTH_16BIT (0x1) | ||
103 | #define PL080_WIDTH_32BIT (0x2) | ||
104 | |||
105 | #define PL080N_CONFIG_ITPROT (1 << 20) | ||
106 | #define PL080N_CONFIG_SECPROT (1 << 19) | ||
107 | #define PL080_CONFIG_HALT (1 << 18) | ||
108 | #define PL080_CONFIG_ACTIVE (1 << 17) /* RO */ | ||
109 | #define PL080_CONFIG_LOCK (1 << 16) | ||
110 | #define PL080_CONFIG_TC_IRQ_MASK (1 << 15) | ||
111 | #define PL080_CONFIG_ERR_IRQ_MASK (1 << 14) | ||
112 | #define PL080_CONFIG_FLOW_CONTROL_MASK (0x7 << 11) | ||
113 | #define PL080_CONFIG_FLOW_CONTROL_SHIFT (11) | ||
114 | #define PL080_CONFIG_DST_SEL_MASK (0xf << 6) | ||
115 | #define PL080_CONFIG_DST_SEL_SHIFT (6) | ||
116 | #define PL080_CONFIG_SRC_SEL_MASK (0xf << 1) | ||
117 | #define PL080_CONFIG_SRC_SEL_SHIFT (1) | ||
118 | #define PL080_CONFIG_ENABLE (1 << 0) | ||
119 | |||
120 | #define PL080_FLOW_MEM2MEM (0x0) | ||
121 | #define PL080_FLOW_MEM2PER (0x1) | ||
122 | #define PL080_FLOW_PER2MEM (0x2) | ||
123 | #define PL080_FLOW_SRC2DST (0x3) | ||
124 | #define PL080_FLOW_SRC2DST_DST (0x4) | ||
125 | #define PL080_FLOW_MEM2PER_PER (0x5) | ||
126 | #define PL080_FLOW_PER2MEM_PER (0x6) | ||
127 | #define PL080_FLOW_SRC2DST_SRC (0x7) | ||
128 | |||
129 | /* DMA linked list chain structure */ | ||
130 | |||
131 | struct pl080_lli { | ||
132 | u32 src_addr; | ||
133 | u32 dst_addr; | ||
134 | u32 next_lli; | ||
135 | u32 control0; | ||
136 | }; | ||
137 | |||
138 | struct pl080s_lli { | ||
139 | u32 src_addr; | ||
140 | u32 dst_addr; | ||
141 | u32 next_lli; | ||
142 | u32 control0; | ||
143 | u32 control1; | ||
144 | }; | ||
145 | |||
146 | #endif /* ASM_PL080_H */ | ||
diff --git a/arch/arm/mach-s3c64xx/dma.c b/arch/arm/mach-s3c64xx/dma.c index ec29b35f25c0..6af1aa1ef213 100644 --- a/arch/arm/mach-s3c64xx/dma.c +++ b/arch/arm/mach-s3c64xx/dma.c | |||
@@ -23,13 +23,12 @@ | |||
23 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <linux/err.h> | 24 | #include <linux/err.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <linux/amba/pl080.h> | ||
26 | 27 | ||
27 | #include <mach/dma.h> | 28 | #include <mach/dma.h> |
28 | #include <mach/map.h> | 29 | #include <mach/map.h> |
29 | #include <mach/irqs.h> | 30 | #include <mach/irqs.h> |
30 | 31 | ||
31 | #include <asm/hardware/pl080.h> | ||
32 | |||
33 | #include "regs-sys.h" | 32 | #include "regs-sys.h" |
34 | 33 | ||
35 | /* dma channel state information */ | 34 | /* dma channel state information */ |
diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c index b2ba516ca2d4..f9d754f90c59 100644 --- a/arch/arm/mach-spear3xx/spear3xx.c +++ b/arch/arm/mach-spear3xx/spear3xx.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/amba/pl022.h> | 16 | #include <linux/amba/pl022.h> |
17 | #include <linux/amba/pl08x.h> | 17 | #include <linux/amba/pl08x.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <asm/hardware/pl080.h> | ||
20 | #include <plat/pl080.h> | 19 | #include <plat/pl080.h> |
21 | #include <mach/generic.h> | 20 | #include <mach/generic.h> |
22 | #include <mach/spear.h> | 21 | #include <mach/spear.h> |
diff --git a/arch/arm/mach-spear6xx/spear6xx.c b/arch/arm/mach-spear6xx/spear6xx.c index b8bd33ca88bd..8904d8a52d84 100644 --- a/arch/arm/mach-spear6xx/spear6xx.c +++ b/arch/arm/mach-spear6xx/spear6xx.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/of.h> | 20 | #include <linux/of.h> |
21 | #include <linux/of_address.h> | 21 | #include <linux/of_address.h> |
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | #include <asm/hardware/pl080.h> | 23 | #include <linux/amba/pl080.h> |
24 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
25 | #include <asm/mach/time.h> | 25 | #include <asm/mach/time.h> |
26 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |