summaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap/usrp/0002-Add-functions-to-dma.c-to-set-address-and-length-for.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/usrp/0002-Add-functions-to-dma.c-to-set-address-and-length-for.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap/usrp/0002-Add-functions-to-dma.c-to-set-address-and-length-for.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/usrp/0002-Add-functions-to-dma.c-to-set-address-and-length-for.patch b/extras/recipes-kernel/linux/linux-omap/usrp/0002-Add-functions-to-dma.c-to-set-address-and-length-for.patch
new file mode 100644
index 00000000..a7415ff0
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap/usrp/0002-Add-functions-to-dma.c-to-set-address-and-length-for.patch
@@ -0,0 +1,83 @@
1From fa589f1ad83e8795ba0509e7899dd1a6926c5fbd Mon Sep 17 00:00:00 2001
2From: Philip Balister <philip@opensdr.com>
3Date: Thu, 22 Apr 2010 19:41:58 -0700
4Subject: [PATCH 2/3] Add functions to dma.c to set address and length for src and dest.
5
6---
7 arch/arm/plat-omap/dma.c | 30 ++++++++++++++++++++++++++++++
8 arch/arm/plat-omap/include/plat/dma.h | 4 ++++
9 2 files changed, 34 insertions(+), 0 deletions(-)
10
11diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
12index c4b2b47..f28f756 100644
13--- a/arch/arm/plat-omap/dma.c
14+++ b/arch/arm/plat-omap/dma.c
15@@ -471,6 +471,21 @@ void omap_set_dma_src_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
16 }
17 EXPORT_SYMBOL(omap_set_dma_src_burst_mode);
18
19+void omap_set_dma_src_addr_size(int lch, unsigned int addr, int elem_count)
20+{
21+
22+ if (cpu_class_is_omap1()) {
23+ p->dma_write(addr >> 16, CSSA, lch);
24+ //p->dma_write((u16)addr, CSSA_L, lch);
25+ }
26+
27+ if (cpu_class_is_omap2())
28+ p->dma_write(addr, CSSA, lch);
29+
30+ p->dma_write(elem_count, CEN, lch);
31+}
32+EXPORT_SYMBOL_GPL(omap_set_dma_src_addr_size);
33+
34 /* Note that dest_port is only for OMAP1 */
35 void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode,
36 unsigned long dest_start,
37@@ -561,6 +576,21 @@ void omap_set_dma_dest_burst_mode(int lch, enum omap_dma_burst_mode burst_mode)
38 }
39 EXPORT_SYMBOL(omap_set_dma_dest_burst_mode);
40
41+void omap_set_dma_dest_addr_size(int lch, unsigned int addr, int elem_count)
42+{
43+
44+ if (cpu_class_is_omap1()) {
45+ p->dma_write(addr >> 16, CDSA, lch);
46+ //p->dma_write((u16)addr, CDSA_L, lch);
47+ }
48+
49+ if (cpu_class_is_omap2())
50+ p->dma_write(addr, CDSA, lch);
51+
52+ p->dma_write(elem_count, CEN, lch);
53+}
54+EXPORT_SYMBOL_GPL(omap_set_dma_dest_addr_size);
55+
56 static inline void omap_enable_channel_irq(int lch)
57 {
58 u32 status;
59diff --git a/arch/arm/plat-omap/include/plat/dma.h b/arch/arm/plat-omap/include/plat/dma.h
60index d1c916f..1e7243e 100644
61--- a/arch/arm/plat-omap/include/plat/dma.h
62+++ b/arch/arm/plat-omap/include/plat/dma.h
63@@ -462,6 +462,8 @@ extern void omap_set_dma_src_index(int lch, int eidx, int fidx);
64 extern void omap_set_dma_src_data_pack(int lch, int enable);
65 extern void omap_set_dma_src_burst_mode(int lch,
66 enum omap_dma_burst_mode burst_mode);
67+extern void omap_set_dma_src_addr_size(int lch, unsigned int addr,
68+ int elem_count);
69
70 extern void omap_set_dma_dest_params(int lch, int dest_port, int dest_amode,
71 unsigned long dest_start,
72@@ -470,6 +472,8 @@ extern void omap_set_dma_dest_index(int lch, int eidx, int fidx);
73 extern void omap_set_dma_dest_data_pack(int lch, int enable);
74 extern void omap_set_dma_dest_burst_mode(int lch,
75 enum omap_dma_burst_mode burst_mode);
76+extern void omap_set_dma_dest_addr_size(int lch, unsigned int addr,
77+ int elem_count);
78
79 extern void omap_set_dma_params(int lch,
80 struct omap_dma_channel_params *params);
81--
821.6.6.1
83