#ifndef _IBM4XX_DWCDMACREG_H_
#define _IBM4XX_DWCDMACREG_H_
#define DWCDMAC_SIZE 0x400
#define DWCDMAC_OFFSET 0x800
#define DWCDMAC_CHAN_SIZE 0x58
#define DWCDMAC_CHAN(ch) ((ch) * DWCDMAC_CHAN_SIZE)
#define DWCDMAC_SAR(ch) (DWCDMAC_CHAN(ch) + 0x00)
#define DWCDMAC_DAR(ch) (DWCDMAC_CHAN(ch) + 0x08)
#define DWCDMAC_LLP(ch) (DWCDMAC_CHAN(ch) + 0x10)
#define DWCDMAC_CTL(ch) (DWCDMAC_CHAN(ch) + 0x18)
#define DWCDMAC_CTL_HI(ch) (DWCDMAC_CHAN(ch) + 0x1c)
#define DWCDMAC_SSTAT(ch) (DWCDMAC_CHAN(ch) + 0x20)
#define DWCDMAC_DSTAT(ch) (DWCDMAC_CHAN(ch) + 0x28)
#define DWCDMAC_SSTATAR(ch) (DWCDMAC_CHAN(ch) + 0x30)
#define DWCDMAC_DSTATAR(ch) (DWCDMAC_CHAN(ch) + 0x38)
#define DWCDMAC_CFG(ch) (DWCDMAC_CHAN(ch) + 0x40)
#define DWCDMAC_CFG_HI(ch) (DWCDMAC_CHAN(ch) + 0x44)
#define DWCDMAC_SGR(ch) (DWCDMAC_CHAN(ch) + 0x48)
#define DWCDMAC_DSR(ch) (DWCDMAC_CHAN(ch) + 0x50)
#define DWCDMAC_RAW_TFR 0x2c0
#define DWCDMAC_RAW_BLOCK 0x2c8
#define DWCDMAC_RAW_SRCTRAN 0x2d0
#define DWCDMAC_RAW_DSTTRAN 0x2d8
#define DWCDMAC_RAW_ERR 0x2e0
#define DWCDMAC_STATUS_TFR 0x2e8
#define DWCDMAC_STATUS_BLOCK 0x2f0
#define DWCDMAC_STATUS_SRCTRAN 0x2f8
#define DWCDMAC_STATUS_DSTTRAN 0x300
#define DWCDMAC_STATUS_ERR 0x308
#define DWCDMAC_MASK_TFR 0x310
#define DWCDMAC_MASK_BLOCK 0x318
#define DWCDMAC_MASK_SRCTRAN 0x320
#define DWCDMAC_MASK_DSTTRAN 0x328
#define DWCDMAC_MASK_ERR 0x330
#define DWCDMAC_CLEAR_TFR 0x338
#define DWCDMAC_CLEAR_BLOCK 0x340
#define DWCDMAC_CLEAR_SRCTRAN 0x348
#define DWCDMAC_CLEAR_DSTTRAN 0x350
#define DWCDMAC_CLEAR_ERR 0x358
#define DWCDMAC_STATUSINT 0x360
#define DWCDMAC_REQ_SRC 0x368
#define DWCDMAC_REQ_DST 0x370
#define DWCDMAC_SGL_REQ_SRC 0x378
#define DWCDMAC_SGL_REQ_DST 0x380
#define DWCDMAC_LST_SRC 0x388
#define DWCDMAC_LST_DST 0x390
#define DWCDMAC_DMACFG 0x398
#define DWCDMAC_DMACFG_EN 0x00000001
#define DWCDMAC_CHEN 0x3a0
#define DWCDMAC_ID 0x3a8
#define DWCDMAC_TEST 0x3b0
#define DWCDMAC_CHANBIT(ch) (1U << (ch))
#define DWCDMAC_CH_ENABLE(ch) (DWCDMAC_CHANBIT(ch) | (DWCDMAC_CHANBIT(ch) << 8))
#define DWCDMAC_CH_DISABLE(ch) (DWCDMAC_CHANBIT(ch) << 8)
#define DWCDMAC_CTL_INT_EN 0x00000001
#define DWCDMAC_CTL_DST_TRWID(w) (((w) & 0x7) << 1)
#define DWCDMAC_CTL_SRC_TRWID(w) (((w) & 0x7) << 4)
#define DWCDMAC_CTL_DINC_INC 0x00000000
#define DWCDMAC_CTL_DINC_DEC 0x00000080
#define DWCDMAC_CTL_DINC_NOCHANGE 0x00000100
#define DWCDMAC_CTL_SINC_INC 0x00000000
#define DWCDMAC_CTL_SINC_DEC 0x00000200
#define DWCDMAC_CTL_SINC_NOCHANGE 0x00000400
#define DWCDMAC_CTL_DST_MSIZE(m) (((m) & 0x7) << 11)
#define DWCDMAC_CTL_SRC_MSIZE(m) (((m) & 0x7) << 14)
#define DWCDMAC_CTL_TTFC(t) (((t) & 0x7) << 20)
#define DWCDMAC_TTFC_P2M_DMAC 0x2
#define DWCDMAC_TTFC_M2P_DMAC 0x1
#define DWCDMAC_TTFC_M2P_PER 0x3
#define DWCDMAC_CTL_DMS(m) (((m) & 0x3) << 23)
#define DWCDMAC_CTL_SMS(m) (((m) & 0x3) << 25)
#define DWCDMAC_CTL_LLP_DST_EN 0x08000000
#define DWCDMAC_CTL_LLP_SRC_EN 0x10000000
#define DWCDMAC_CTL_BLOCK_TS(items) ((items) & 0xfff)
#define DWCDMAC_MAX_BLOCK_ITEMS 0x800
#define DWCDMAC_CTL_DONE 0x00001000
#define DWCDMAC_CFG_CH_PRIOR(p) (((p) & 0x7) << 5)
#define DWCDMAC_CFG_CH_SUSP 0x00000100
#define DWCDMAC_CFG_FIFO_EMPTY 0x00000200
#define DWCDMAC_CFG_HS_SEL_DST 0x00000400
#define DWCDMAC_CFG_HS_SEL_SRC 0x00000800
#define DWCDMAC_CFG_FCMODE_REQ 0x00000001
#define DWCDMAC_CFG_FIFO_MODE 0x00000002
#define DWCDMAC_CFG_PROTCTL 0x0000000c
#define DWCDMAC_CFG_HS_SRC(i) (((i) & 0xf) << 7)
#define DWCDMAC_CFG_HS_DST(i) (((i) & 0xf) << 11)
#define DWCDMAC_MS_PERIPH 0
#define DWCDMAC_MS_MEM 1
struct dwcdmac_lli {
uint32_t sar;
uint32_t dar;
uint32_t llp;
uint32_t ctl_lo;
uint32_t ctl_hi;
uint32_t dstat_lo;
uint32_t dstat_hi;
};
#endif