]> rtime.felk.cvut.cz Git - arc.git/blobdiff - arch/ppc/mpc55xx/drivers/Dma.h
Added Dma_DeInit()
[arc.git] / arch / ppc / mpc55xx / drivers / Dma.h
index 98001b6e6a00f9c15dee0bf8f8c9d9a5ffd42688..dcea7a3b8292e68d42e7dc817daf7559683a8d5d 100644 (file)
  * -------------------------------- Arctic Core ------------------------------*/\r
 \r
 \r
-\r
-\r
-\r
-\r
-\r
+/*\r
+ * Freescale uses two flavors for DMA.\r
+ * 1. eDMA\r
+ * 2. eDMA + DMA_MUX\r
+ *\r
+ * 1. eDMA only (MPC5557, etc)\r
+ *   The "DMA Request Assignments" are used and configured in Dma_Cfg.h using Dma_ChannelType.\r
+ *\r
+ * 2. eDMA + DMA_MUX  (MPC551x , MPC5668, etc )\r
+ *   The eDMA + DMA_MUX the "DMA Request Assignments" are just mappings from the DMA_MUX.\r
+ *   The file Dma.h contains the Dma_MuxChannels\r
+ *\r
+ *\r
+ *  eDMA+DMA_MUX\r
+ *    MPC551x\r
+ *    MPC5668\r
+ *    MPC5605B,MPC5606B,MPC5607B\r
+ *\r
+ *  eDMA\r
+ *    MPC5567\r
+ *\r
+ *  NO DMA\r
+ *    MPC5604B\r
+ *\r
+ */\r
 \r
 #ifndef DMA_H_\r
 #define DMA_H_\r
 #include "Dma_Cfg.h"\r
 #include "mpc55xx.h"\r
 \r
+#if defined(CFG_MPC5516) || defined(CFG_MPC5517) || (CFG_MPC5606S) || defined(CFG_MPC5668)\r
+#if !defined(CFG_DMA_MUX)\r
+#define CFG_DMA_MUX\r
+#endif\r
+#endif\r
+\r
+#if defined(CFG_DMA_MUX)\r
+\r
+#if defined(CFG_MPC5606S)\r
+typedef enum\r
+{\r
+  DMA_CHANNEL_DISABLED,\r
+\r
+  DMA_DSPI_0_TX,\r
+  DMA_DSPI_0_RX,\r
+  DMA_DSPI_1_TX,\r
+  DMA_DSPI_1_RX,\r
+\r
+  DMA_QuadSPI_0_TFFF,\r
+  DMA_QuadSPI_0_RFDF,\r
+\r
+  DMA_I2C_0_TX,\r
+  DMA_I2C_0_RX,\r
+  DMA_I2C_1_TX,\r
+  DMA_I2C_1_RX,\r
+  DMA_I2C_2_TX,\r
+  DMA_I2C_2_RX,\r
+  DMA_I2C_3_TX,\r
+  DMA_I2C_3_RX,\r
+\r
+  DMA_EMIOS200_0_FLAG_F0,\r
+  DMA_EMIOS200_0_FLAG_F1,\r
+  DMA_EMIOS200_0_FLAG_F2,\r
+  DMA_EMIOS200_0_FLAG_F3,\r
+  DMA_EMIOS200_0_FLAG_F4,\r
+  DMA_EMIOS200_0_FLAG_F5,\r
+  DMA_EMIOS200_0_FLAG_F6,\r
+  DMA_EMIOS200_0_FLAG_F7,\r
+  DMA_EMIOS200_0_FLAG_F8,\r
+  DMA_EMIOS200_0_FLAG_F9,\r
+  DMA_EMIOS200_0_FLAG_F10,\r
+  DMA_EMIOS200_0_FLAG_F11,\r
+  DMA_EMIOS200_0_FLAG_F12,\r
+  DMA_EMIOS200_0_FLAG_F13,\r
+  DMA_EMIOS200_0_FLAG_F14,\r
+  DMA_EMIOS200_0_FLAG_F15,\r
+  DMA_EMIOS200_1_FLAG_F0,\r
+  DMA_EMIOS200_1_FLAG_F1,\r
+  DMA_EMIOS200_1_FLAG_F2,\r
+  DMA_EMIOS200_1_FLAG_F3,\r
+  DMA_EMIOS200_1_FLAG_F4,\r
+  DMA_EMIOS200_1_FLAG_F5,\r
+  DMA_EMIOS200_1_FLAG_F6,\r
+  DMA_EMIOS200_1_FLAG_F7,\r
+\r
+  DMA_RESERVED1,\r
+  DMA_RESERVED2,\r
+  DMA_RESERVED3,\r
+  DMA_RESERVED4,\r
+  DMA_RESERVED5,\r
+  DMA_RESERVED6,\r
+  DMA_RESERVED7,\r
+  DMA_RESERVED8,\r
+\r
+  DMA_SIU_EISR_E1F1,\r
+  DMA_SIU_EISR_E1F2,\r
+  DMA_SIU_EISR_E1F3,\r
+  DMA_SIU_EISR_E1F4,\r
+\r
+  DMA_ADC,\r
+\r
+  DMA_RESERVED9,\r
+\r
+  DMA_DCU,\r
+\r
+  DMA_RESERVED10,\r
+  DMA_RESERVED11,\r
+\r
+  DMA_ALWAYS_REQUESTORS1,\r
+  DMA_ALWAYS_REQUESTORS2,\r
+  DMA_ALWAYS_REQUESTORS3,\r
+  DMA_ALWAYS_REQUESTORS4,\r
+  DMA_ALWAYS_REQUESTORS5,\r
+  DMA_ALWAYS_REQUESTORS6,\r
+  DMA_ALWAYS_REQUESTORS7,\r
+  DMA_ALWAYS_REQUESTORS8\r
+}Dma_MuxChannels;\r
+\r
+#elif defined(CFG_MPC5668)\r
+\r
+/* Table 22-4. DMA Source Configuration */\r
+\r
+typedef enum\r
+{\r
+       DMA_CHANNEL_DISABLED,   /* 0 */\r
+       DMA_CHANNEL_RESERVED,\r
+       DMA_SCI_A_COMBTX,\r
+       DMA_SCI_A_COMBRX,\r
+       DMA_SCI_B_COMBTX,\r
+       DMA_SCI_B_COMBRX,\r
+       DMA_SCI_C_COMBTX,\r
+       DMA_SCI_C_COMBRX,\r
+       DMA_SCI_D_COMBTX,\r
+       DMA_SCI_D_COMBRX,\r
+       DMA_SCI_E_COMBTX,\r
+       DMA_SCI_E_COMBRX,\r
+       DMA_SCI_F_COMBTX,\r
+       DMA_SCI_F_COMBRX,\r
+       DMA_SCI_G_COMBTX,\r
+       DMA_SCI_G_COMBRX,\r
+       DMA_SCI_H_COMBTX,\r
+       DMA_SCI_H_COMBRX,\r
+\r
+       DMA_DSPI_A_SR_TFFF,  /* 0x12 */\r
+       DMA_DSPI_A_SR_RFRD,\r
+       DMA_DSPI_B_SR_TFFF,\r
+       DMA_DSPI_B_SR_RFRD,\r
+       DMA_DSPI_E_SR_TFFF,\r
+       DMA_DSPI_E_SR_RFRD,\r
+       DMA_DSPI_F_SR_TFFF,\r
+       DMA_DSPI_F_SR_RFRD,\r
+\r
+       DMA_EMIOS200_FLAG_F0, /* 0x1a */\r
+       DMA_EMIOS200_FLAG_F1,\r
+       DMA_EMIOS200_FLAG_F2,\r
+       DMA_EMIOS200_FLAG_F3,\r
+       DMA_EMIOS200_FLAG_F4,\r
+       DMA_EMIOS200_FLAG_F5,\r
+       DMA_EMIOS200_FLAG_F6,\r
+       DMA_EMIOS200_FLAG_F7,\r
+       DMA_EMIOS200_FLAG_F8,\r
+       DMA_EMIOS200_FLAG_F9,\r
+       DMA_EMIOS200_FLAG_F10,\r
+       DMA_EMIOS200_FLAG_F11,\r
+       DMA_EMIOS200_FLAG_F12,\r
+       DMA_EMIOS200_FLAG_F13,\r
+       DMA_EMIOS200_FLAG_F14,\r
+       DMA_EMIOS200_FLAG_F15,\r
+\r
+       DMA_IIC_A_TX,  /* 0x2a */\r
+       DMA_IIC_A_RX,\r
+       DMA_IIC_B_TX,\r
+       DMA_IIC_B_RX,\r
+\r
+       DMA_SIU_EISR_EIF0, /* 0x2e */\r
+       DMA_SIU_EISR_EIF1,\r
+\r
+       DMA_IIC_C_TX, /* 0x30 */\r
+       DMA_IIC_C_RX,\r
+\r
+       DMA_ADC_A,\r
+\r
+       DMA_IIC_D_TX, /* 0x33 */\r
+       DMA_IIC_D_RX,\r
+\r
+       DMA_SCI_J_COMBTX, /* 0x35 */\r
+       DMA_SCI_J_COMBRX,\r
+       DMA_SCI_K_COMBTX,\r
+       DMA_SCI_K_COMBRX,\r
+       DMA_SCI_L_COMBTX,\r
+       DMA_SCI_L_COMBRX,\r
+       DMA_SCI_M_COMBTX,\r
+       DMA_SCI_M_COMBRX,\r
+\r
+       DMA_ALWAYS_ENABLED_0, /* 0x3d */\r
+       DMA_ALWAYS_ENABLED_1,\r
+       DMA_ALWAYS_ENABLED_2,\r
+} Dma_MuxChannels;\r
+\r
+#elif  defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
+/* MPC551x "Table 13-4. DMA Source Configuration" */\r
+\r
 typedef enum\r
 {\r
   DMA_CHANNEL_DISABLED,\r
@@ -105,12 +297,18 @@ typedef enum
   DMA_ALWAYS_ENABLED8\r
 }Dma_MuxChannels;\r
 \r
+#endif\r
+#endif\r
+\r
+\r
+#if defined(CFG_DMA_MUX)\r
 typedef struct\r
 {\r
   vuint8_t DMA_CHANNEL_ENABLE;\r
   vuint8_t DMA_CHANNEL_TRIG_ENABLE;\r
   Dma_MuxChannels DMA_CHANNEL_SOURCE;\r
 } Dma_MuxConfigType;\r
+#endif\r
 \r
 typedef struct\r
 {\r
@@ -137,7 +335,7 @@ typedef enum
 typedef struct\r
 {\r
        // 5567 has no Dma Mux, but maybe this should be left in anyway?\r
-#if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
+#if defined(CFG_DMA_MUX)\r
   const Dma_MuxConfigType          *dmaMuxConfigPtr;\r
 #endif\r
   const Dma_ChannelConfigType      *dmaChannelConfigPtr;\r
@@ -148,7 +346,8 @@ extern const Dma_ConfigType DmaConfig [];
 \r
 \r
 void Dma_Init (const Dma_ConfigType *ConfigPtr);\r
-void Dma_ConfigureChannel (struct tcd_t *tcd, Dma_ChannelType channel);\r
+void Dma_DeInit (void );\r
+void Dma_ConfigureChannel (Dma_TcdType *tcd, Dma_ChannelType channel);\r
 void Dma_ConfigureChannelTranferSize (uint32_t nbrOfIterations, Dma_ChannelType channel);\r
 void Dma_ConfigureChannelSourceCorr (uint32_t sourceCorrection, Dma_ChannelType channel);\r
 void Dma_ConfigureChannelDestinationCorr (uint32_t destinationCorrection, Dma_ChannelType channel);\r
@@ -157,7 +356,7 @@ void Dma_ConfigureSourceAddress (uint32_t sourceAddr, Dma_ChannelType channel);
 void Dma_StartChannel (Dma_ChannelType channel);\r
 void Dma_StopChannel (Dma_ChannelType channel);\r
 Std_ReturnType Dma_ChannelDone (Dma_ChannelType channel);\r
-volatile struct tcd_t * Dma_GetTcd( Dma_ChannelType channel );\r
+volatile Dma_TcdType * Dma_GetTcd( Dma_ChannelType channel );\r
 boolean Dma_CheckConfig( void );\r
 \r
 #endif /* DMA_H_ */\r