[glsdk/meta-ti-glsdk.git] / recipes-bsp / linux / linux-omap / 0028-Add-functions-to-dma.c-to-set-address-and-length-for.patch
1 From c0b0f03265656641342b4915e476a3d5ec9dd17c Mon Sep 17 00:00:00 2001
2 From: Philip Balister <philip@opensdr.com>
3 Date: Thu, 22 Apr 2010 19:41:58 -0700
4 Subject: [PATCH 28/29] Add functions to dma.c to set address and length for src and dest.
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(-)
11 diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
12 index 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);
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);
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;
59 diff --git a/arch/arm/plat-omap/include/plat/dma.h b/arch/arm/plat-omap/include/plat/dma.h
60 index 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);
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);
79 extern void omap_set_dma_params(int lch,
80 struct omap_dma_channel_params *params);
81 --
82 1.6.6.1