|
@@ -126,3 +126,87 @@ struct edmacc_param {
|
|
|
#define DAVINCI_DMA_GPIO_GPINT5 37
|
|
|
#define DAVINCI_DMA_GPIO_GPINT6 38
|
|
|
#define DAVINCI_DMA_GPIO_GPINT7 39
|
|
|
+#define DAVINCI_DMA_GPIO_GPBNKINT0 40
|
|
|
+#define DAVINCI_DMA_GPIO_GPBNKINT1 41
|
|
|
+#define DAVINCI_DMA_GPIO_GPBNKINT2 42
|
|
|
+#define DAVINCI_DMA_GPIO_GPBNKINT3 43
|
|
|
+#define DAVINCI_DMA_GPIO_GPBNKINT4 44
|
|
|
+#define DAVINCI_DMA_TIMER0_TINT0 48
|
|
|
+#define DAVINCI_DMA_TIMER1_TINT1 49
|
|
|
+#define DAVINCI_DMA_TIMER2_TINT2 50
|
|
|
+#define DAVINCI_DMA_TIMER3_TINT3 51
|
|
|
+#define DAVINCI_DMA_PWM0 52
|
|
|
+#define DAVINCI_DMA_PWM1 53
|
|
|
+#define DAVINCI_DMA_PWM2 54
|
|
|
+
|
|
|
+/* DA830 specific EDMA3 information */
|
|
|
+#define EDMA_DA830_NUM_DMACH 32
|
|
|
+#define EDMA_DA830_NUM_TCC 32
|
|
|
+#define EDMA_DA830_NUM_PARAMENTRY 128
|
|
|
+#define EDMA_DA830_NUM_EVQUE 2
|
|
|
+#define EDMA_DA830_NUM_TC 2
|
|
|
+#define EDMA_DA830_CHMAP_EXIST 0
|
|
|
+#define EDMA_DA830_NUM_REGIONS 4
|
|
|
+#define DA830_DMACH2EVENT_MAP0 0x000FC03Fu
|
|
|
+#define DA830_DMACH2EVENT_MAP1 0x00000000u
|
|
|
+#define DA830_EDMA_ARM_OWN 0x30FFCCFFu
|
|
|
+
|
|
|
+/*ch_status paramater of callback function possible values*/
|
|
|
+#define DMA_COMPLETE 1
|
|
|
+#define DMA_CC_ERROR 2
|
|
|
+#define DMA_TC1_ERROR 3
|
|
|
+#define DMA_TC2_ERROR 4
|
|
|
+
|
|
|
+enum address_mode {
|
|
|
+ INCR = 0,
|
|
|
+ FIFO = 1
|
|
|
+};
|
|
|
+
|
|
|
+enum fifo_width {
|
|
|
+ W8BIT = 0,
|
|
|
+ W16BIT = 1,
|
|
|
+ W32BIT = 2,
|
|
|
+ W64BIT = 3,
|
|
|
+ W128BIT = 4,
|
|
|
+ W256BIT = 5
|
|
|
+};
|
|
|
+
|
|
|
+enum dma_event_q {
|
|
|
+ EVENTQ_0 = 0,
|
|
|
+ EVENTQ_1 = 1,
|
|
|
+ EVENTQ_2 = 2,
|
|
|
+ EVENTQ_3 = 3,
|
|
|
+ EVENTQ_DEFAULT = -1
|
|
|
+};
|
|
|
+
|
|
|
+enum sync_dimension {
|
|
|
+ ASYNC = 0,
|
|
|
+ ABSYNC = 1
|
|
|
+};
|
|
|
+
|
|
|
+#define EDMA_CTLR_CHAN(ctlr, chan) (((ctlr) << 16) | (chan))
|
|
|
+#define EDMA_CTLR(i) ((i) >> 16)
|
|
|
+#define EDMA_CHAN_SLOT(i) ((i) & 0xffff)
|
|
|
+
|
|
|
+#define EDMA_CHANNEL_ANY -1 /* for edma_alloc_channel() */
|
|
|
+#define EDMA_SLOT_ANY -1 /* for edma_alloc_slot() */
|
|
|
+#define EDMA_CONT_PARAMS_ANY 1001
|
|
|
+#define EDMA_CONT_PARAMS_FIXED_EXACT 1002
|
|
|
+#define EDMA_CONT_PARAMS_FIXED_NOT_EXACT 1003
|
|
|
+
|
|
|
+#define EDMA_MAX_CC 2
|
|
|
+
|
|
|
+/* alloc/free DMA channels and their dedicated parameter RAM slots */
|
|
|
+int edma_alloc_channel(int channel,
|
|
|
+ void (*callback)(unsigned channel, u16 ch_status, void *data),
|
|
|
+ void *data, enum dma_event_q);
|
|
|
+void edma_free_channel(unsigned channel);
|
|
|
+
|
|
|
+/* alloc/free parameter RAM slots */
|
|
|
+int edma_alloc_slot(unsigned ctlr, int slot);
|
|
|
+void edma_free_slot(unsigned slot);
|
|
|
+
|
|
|
+/* alloc/free a set of contiguous parameter RAM slots */
|
|
|
+int edma_alloc_cont_slots(unsigned ctlr, unsigned int id, int slot, int count);
|
|
|
+int edma_free_cont_slots(unsigned slot, int count);
|
|
|
+
|