summaryrefslogtreecommitdiff
path: root/drivers/misc/gpsip/cgdriver/gps_dma.h
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
committerYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
commit8e4bff4cab0ddac6060645b0715210484d02ff40 (patch)
tree3a5c3024371a04692a3a6d9974d001cdff8ebf84 /drivers/misc/gpsip/cgdriver/gps_dma.h
Initial file dump from open source releaseHEADmaster
Diffstat (limited to 'drivers/misc/gpsip/cgdriver/gps_dma.h')
-rw-r--r--drivers/misc/gpsip/cgdriver/gps_dma.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/drivers/misc/gpsip/cgdriver/gps_dma.h b/drivers/misc/gpsip/cgdriver/gps_dma.h
new file mode 100644
index 00000000..13168d93
--- /dev/null
+++ b/drivers/misc/gpsip/cgdriver/gps_dma.h
@@ -0,0 +1,89 @@
+#ifndef GPS_DMA_H
+#define GPS_DMA_H
+
+#include <asm/io.h>
+
+#ifdef __cplusplus
+ extern "C"
+ {
+#endif
+
+#define MAX_DMA_CHUNK_SIZE (0x80000)
+
+#define MAX_DMA_TRANSFER_TASKS (64)
+
+#define DMAC_STATUS_SUCCESS (0)
+#define DMAC_STATUS_ERROR (-1)
+
+#define SPRD_GPS_DMA_IRQ (44)
+
+#define DMAC_BLOCK_SIZE (0xffff)
+
+#define CH_STAT_MASK (0x0000000f)
+
+#define CHANNEL_ENABLE (1)
+#define CHANNEL_DISABLE (0)
+
+#define DMAC_REMAP_NOACP 1
+
+#define REG_PERI_CTRL0 (IO_ADDRESS(0xFCA09000))
+
+#define RCHAIN_EN (0x02)
+#define RCHAIN_EN_MASK (0xfffffffc)
+
+//#define NUMBER_1K (1024)
+
+#define NUMBER_16K (16*1024)
+
+#define NUMBER_64K (64*1024)
+
+#define REG_DMAC_BASE CG_DRIVER_DMA_BASE_PA
+
+
+#define REG_DMAC_CX_CURR_CNT0 (IO_ADDRESS(REG_DMAC_BASE) + 0x0704)
+
+typedef struct DMA_CFG_S
+{
+ unsigned int src_addr;
+ unsigned int dma_phys;
+ unsigned int dma_size;
+ void __iomem *dma_virt;
+
+ unsigned int lli_count;
+ unsigned int lli_size;
+ unsigned int lli_addr_pa;
+ void *lli_addr_va;
+
+}GPS_DMAC_CFG;
+
+typedef union{
+ unsigned int cx_config_arg;
+ struct cx_config_bits
+ {
+ unsigned int ch_en : 1;
+ unsigned int itc_en : 1;
+ unsigned int flow_ctrl : 2;
+ unsigned int peri : 6;
+ unsigned int reserve1 : 2;
+ unsigned int dw : 3;
+ unsigned int reserve2 : 1;
+ unsigned int sw : 3;
+ unsigned int reserve3 : 1;
+ unsigned int dl : 4;
+ unsigned int sl : 4;
+ unsigned int dmode : 1;
+ unsigned int smode : 1;
+ unsigned int di : 1;
+ unsigned int si : 1;
+ }bits;
+}cx_config_reg_s;
+
+int CgCpuDmaLLIDataCopyFromGps(TCgCpuDmaTask *apDmaTask, U32 aDmaTaskCount, U32 aDeviceAddress, U32 aDestAddress);
+
+int CgCpuDmaDataCopyFromGps(TCgCpuDmaTask *apDmaTask, U32 aDmaTaskCount, U32 aDeviceAddress, U32 aDestAddress);
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif