tizen 2.4 release
[profile/mobile/platform/kernel/linux-3.10-sc7730.git] / drivers / misc / gpsip / cgdriver / gps_dma.h
1 #ifndef GPS_DMA_H
2 #define GPS_DMA_H
3
4 #include <asm/io.h>
5
6 #ifdef __cplusplus
7     extern "C"
8     {
9 #endif
10
11 #define MAX_DMA_CHUNK_SIZE (0x80000)
12
13 #define MAX_DMA_TRANSFER_TASKS (64)
14
15 #define DMAC_STATUS_SUCCESS (0)
16 #define DMAC_STATUS_ERROR (-1)
17
18 #define SPRD_GPS_DMA_IRQ (44)
19
20 #define DMAC_BLOCK_SIZE (0xffff)
21
22 #define CH_STAT_MASK (0x0000000f)
23
24 #define CHANNEL_ENABLE (1)
25 #define CHANNEL_DISABLE (0)
26
27 #define DMAC_REMAP_NOACP 1
28
29 #define REG_PERI_CTRL0 (IO_ADDRESS(0xFCA09000))
30
31 #define RCHAIN_EN (0x02)
32 #define RCHAIN_EN_MASK (0xfffffffc)
33
34 //#define NUMBER_1K (1024)
35
36 #define NUMBER_16K (16*1024)
37
38 #define NUMBER_64K (64*1024)
39
40 #define REG_DMAC_BASE CG_DRIVER_DMA_BASE_PA
41
42
43 #define REG_DMAC_CX_CURR_CNT0  (IO_ADDRESS(REG_DMAC_BASE) + 0x0704)
44
45 typedef struct DMA_CFG_S
46 {
47         unsigned int  src_addr;
48         unsigned int  dma_phys;
49         unsigned int  dma_size;
50         void __iomem  *dma_virt;
51
52         unsigned int  lli_count;
53         unsigned int  lli_size;
54         unsigned int  lli_addr_pa;
55         void          *lli_addr_va;
56
57 }GPS_DMAC_CFG;
58
59 typedef union{
60         unsigned int cx_config_arg;
61         struct cx_config_bits
62         {
63                 unsigned int ch_en : 1;
64                 unsigned int itc_en : 1;
65                 unsigned int flow_ctrl : 2;
66                 unsigned int peri : 6;
67                 unsigned int reserve1 : 2;
68                 unsigned int dw : 3;
69                 unsigned int reserve2 : 1;
70                 unsigned int sw : 3;
71                 unsigned int reserve3 : 1;
72                 unsigned int dl : 4;
73                 unsigned int sl : 4;
74                 unsigned int dmode : 1;
75                 unsigned int smode : 1;
76                 unsigned int di : 1;
77                 unsigned int si : 1;
78         }bits;
79 }cx_config_reg_s;
80
81 int CgCpuDmaLLIDataCopyFromGps(TCgCpuDmaTask *apDmaTask, U32 aDmaTaskCount, U32 aDeviceAddress, U32 aDestAddress);
82
83 int CgCpuDmaDataCopyFromGps(TCgCpuDmaTask *apDmaTask, U32 aDmaTaskCount, U32 aDeviceAddress, U32 aDestAddress);
84
85 #ifdef __cplusplus
86     }
87 #endif
88
89 #endif