|
@@ -82,9 +82,39 @@ struct dw_dma_regs {
|
|
|
DW_REG(ID);
|
|
|
DW_REG(TEST);
|
|
|
|
|
|
+ /* reserved */
|
|
|
+ DW_REG(__reserved0);
|
|
|
+ DW_REG(__reserved1);
|
|
|
+
|
|
|
/* optional encoded params, 0x3c8..0x3f7 */
|
|
|
+ u32 __reserved;
|
|
|
+
|
|
|
+ /* per-channel configuration registers */
|
|
|
+ u32 DWC_PARAMS[DW_DMA_MAX_NR_CHANNELS];
|
|
|
+ u32 MULTI_BLK_TYPE;
|
|
|
+ u32 MAX_BLK_SIZE;
|
|
|
+
|
|
|
+ /* top-level parameters */
|
|
|
+ u32 DW_PARAMS;
|
|
|
};
|
|
|
|
|
|
+/* To access the registers in early stage of probe */
|
|
|
+#define dma_read_byaddr(addr, name) \
|
|
|
+ readl((addr) + offsetof(struct dw_dma_regs, name))
|
|
|
+
|
|
|
+/* Bitfields in DW_PARAMS */
|
|
|
+#define DW_PARAMS_NR_CHAN 8 /* number of channels */
|
|
|
+#define DW_PARAMS_NR_MASTER 11 /* number of AHB masters */
|
|
|
+#define DW_PARAMS_DATA_WIDTH(n) (15 + 2 * (n))
|
|
|
+#define DW_PARAMS_DATA_WIDTH1 15 /* master 1 data width */
|
|
|
+#define DW_PARAMS_DATA_WIDTH2 17 /* master 2 data width */
|
|
|
+#define DW_PARAMS_DATA_WIDTH3 19 /* master 3 data width */
|
|
|
+#define DW_PARAMS_DATA_WIDTH4 21 /* master 4 data width */
|
|
|
+#define DW_PARAMS_EN 28 /* encoded parameters */
|
|
|
+
|
|
|
+/* Bitfields in DWC_PARAMS */
|
|
|
+#define DWC_PARAMS_MBLK_EN 11 /* multi block transfer */
|
|
|
+
|
|
|
/* Bitfields in CTL_LO */
|
|
|
#define DWC_CTLL_INT_EN (1 << 0) /* irqs enabled? */
|
|
|
#define DWC_CTLL_DST_WIDTH(n) ((n)<<1) /* bytes per element */
|