blob: 25bbc3a930c7f5aaedcc283333aa076be3da20eb [file] [log] [blame]
#ifndef __CLDMA_REG_H__
#define __CLDMA_REG_H__
/*CLDMA IN (Tx)*/
#define CLDMA_AP_UL_SBDMA_CODA_VERSION (0x0000) /* UL SBDMA version control register */
#define CLDMA_AP_UL_START_ADDR_0 (0x0100) /* the start address of first TGPD */
#define CLDMA_AP_UL_START_ADDR_1 (0x0104)
#define CLDMA_AP_UL_START_ADDR_2 (0x0108)
#define CLDMA_AP_UL_START_ADDR_3 (0x010C)
#define CLDMA_AP_UL_START_ADDR_4 (0x0110)
#define CLDMA_AP_UL_START_ADDR_5 (0x0114)
#define CLDMA_AP_UL_START_ADDR_6 (0x0118)
#define CLDMA_AP_UL_START_ADDR_7 (0x011C)
#define CLDMA_AP_UL_START_ADDR_8 (0x0120)
#define CLDMA_AP_UL_START_ADDR_9 (0x0124)
#define CLDMA_AP_UL_CURRENT_ADDR_0 (0x0128) /* the address of current processing TGPD */
#define CLDMA_AP_UL_CURRENT_ADDR_1 (0x012C)
#define CLDMA_AP_UL_CURRENT_ADDR_2 (0x0130)
#define CLDMA_AP_UL_CURRENT_ADDR_3 (0x0134)
#define CLDMA_AP_UL_CURRENT_ADDR_4 (0x0138)
#define CLDMA_AP_UL_CURRENT_ADDR_5 (0x013C)
#define CLDMA_AP_UL_CURRENT_ADDR_6 (0x0140)
#define CLDMA_AP_UL_CURRENT_ADDR_7 (0x0144)
#define CLDMA_AP_UL_CURRENT_ADDR_8 (0x0148)
#define CLDMA_AP_UL_CURRENT_ADDR_9 (0x014C)
#define CLDMA_AP_UL_STATUS (0x0150) /* UL SBDMA operation status */
#define CLDMA_AP_UL_START_CMD (0x0154) /* UL START SBDMA command */
#define CLDMA_AP_UL_RESUME_CMD (0x0158) /* UL RESUME SBDMA command */
#define CLDMA_AP_UL_STOP_CMD (0x015C) /* UL STOP SBDMA command */
#define CLDMA_AP_UL_ERROR (0x0160) /* ERROR */
#define CLDMA_AP_UL_CFG (0x0174) /* operation configuration */
#define CLDMA_AP_HPQTCR (0x0210) /* high priority queue traffic control value */
#define CLDMA_AP_LPQTCR (0x0214) /* low priority queue traffic control value */
#define CLDMA_AP_HPQR (0x0218) /* high priority queue register */
#define CLDMA_AP_TCR0 (0x021C) /* traffic control value for tx queue */
#define CLDMA_AP_TCR1 (0x0220)
#define CLDMA_AP_TCR2 (0x0224)
#define CLDMA_AP_TCR3 (0x0228)
#define CLDMA_AP_TCR4 (0x022C)
#define CLDMA_AP_TCR5 (0x0230)
#define CLDMA_AP_TCR6 (0x0234)
#define CLDMA_AP_TCR7 (0x0238)
#define CLDMA_AP_TCR_CMD (0x023C) /* traffic control command register */
#define CLDMA_AP_UL_CHECKSUM_CHANNEL_ENABLE (0x0240) /* per-channel checksum checking function enable */
/*CLDMA OUT (Rx)*/
#define CLDMA_AP_SO_OUTDMA_CODA_VERSION (0x1000) /* SME OUT OUTDMA version control register */
#define CLDMA_AP_SO_ERROR (0x1100) /* ERROR */
#define CLDMA_AP_SO_CFG (0x1104) /* operation configuration */
#define CLDMA_AP_SO_CHECKSUM_CHANNEL_ENABLE (0x1174) /* per-channel checksum checking function enable */
#define CLDMA_AP_SO_START_ADDR_0 (0x1178) /* the start address of first RGPD */
#define CLDMA_AP_SO_START_ADDR_1 (0x117C)
#define CLDMA_AP_SO_START_ADDR_2 (0x1180)
#define CLDMA_AP_SO_START_ADDR_3 (0x1184)
#define CLDMA_AP_SO_START_ADDR_4 (0x1188)
#define CLDMA_AP_SO_START_ADDR_5 (0x118C)
#define CLDMA_AP_SO_START_ADDR_6 (0x1190)
#define CLDMA_AP_SO_START_ADDR_7 (0x1194)
#define CLDMA_AP_SO_CURRENT_ADDR_0 (0x1198) /* the address of current processing RGPD */
#define CLDMA_AP_SO_CURRENT_ADDR_1 (0x119C)
#define CLDMA_AP_SO_CURRENT_ADDR_2 (0x11A0)
#define CLDMA_AP_SO_CURRENT_ADDR_3 (0x11A4)
#define CLDMA_AP_SO_CURRENT_ADDR_4 (0x11A8)
#define CLDMA_AP_SO_CURRENT_ADDR_5 (0x11AC)
#define CLDMA_AP_SO_CURRENT_ADDR_6 (0x11B0)
#define CLDMA_AP_SO_CURRENT_ADDR_7 (0x11B4)
#define CLDMA_AP_SO_STATUS (0x11B8) /* SME OUT SBDMA operation status */
#define CLDMA_AP_SO_START_CMD (0x11BC) /* SME OUT SBDMA START command */
#define CLDMA_AP_SO_RESUME_CMD (0x11C0) /* SME OUT SBDMA RESUME command */
#define CLDMA_AP_SO_STOP_CMD (0x11C4) /* SME OUT SBDMA STOP command */
#define CLDMA_AP_DEBUG_ID_EN (0x11C8) /* DEBUG_ID enable */
/*CLDMA MISC*/
#define CLDMA_AP_CLDMA_CODA_VERSION (0x2000) /* CLDMA version control register */
#define CLDMA_AP_L2TISAR0 (0x2010) /* level 2 interrupt and acknowledgement register (Tx part) */
#define CLDMA_AP_L2TISAR1 (0x2014)
#define CLDMA_AP_L2TIMR0 (0x2018) /* level 2 interrupt mask regsiter (Tx part) */
#define CLDMA_AP_L2TIMR1 (0x201C)
#define CLDMA_AP_L2TIMCR0 (0x2020) /* level 2 interrupt mask clear register (Tx part) */
#define CLDMA_AP_L2TIMCR1 (0x2024)
#define CLDMA_AP_L2TIMSR0 (0x2028) /* level 2 interrupt mask set register (Tx part) */
#define CLDMA_AP_L2TIMSR1 (0x202C)
#define CLDMA_AP_L3TISAR0 (0x2030) /* level 3 interrupt and acknowledgement register (Tx part) */
#define CLDMA_AP_L3TISAR1 (0x2034)
#define CLDMA_AP_L3TIMR0 (0x2038) /* level 3 interrupt mask regsiter (Tx part) */
#define CLDMA_AP_L3TIMR1 (0x203C)
#define CLDMA_AP_L3TIMCR0 (0x2040) /* level 3 interrupt mask clear register (Tx part) */
#define CLDMA_AP_L3TIMCR1 (0x2044)
#define CLDMA_AP_L3TIMSR0 (0x2048) /* level 3 interrupt mask set register (Tx part) */
#define CLDMA_AP_L3TIMSR1 (0x204C)
#define CLDMA_AP_L2RISAR0 (0x2050) /* level 2 interrupt and acknowledgement register (Rx part) */
#define CLDMA_AP_L2RISAR1 (0x2054)
#define CLDMA_AP_L2RIMR0 (0x2058) /* level 2 interrupt mask regsiter (Rx part) */
#define CLDMA_AP_L2RIMR1 (0x205C)
#define CLDMA_AP_L2RIMCR0 (0x2060) /* level 2 interrupt mask clear register (Rx part) */
#define CLDMA_AP_L2RIMCR1 (0x2064)
#define CLDMA_AP_L2RIMSR0 (0x2068) /* level 2 interrupt mask set register (Rx part) */
#define CLDMA_AP_L2RIMSR1 (0x206C)
#define CLDMA_AP_L3RISAR0 (0x2070) /* level 3 interrupt and acknowledgement register (Rx part) */
#define CLDMA_AP_L3RISAR1 (0x2074)
#define CLDMA_AP_L3RIMR0 (0x2078) /* level 3 interrupt mask regsiter (Rx part) */
#define CLDMA_AP_L3RIMR1 (0x207C)
#define CLDMA_AP_L3RIMCR0 (0x2080) /* level 3 interrupt mask clear register (Rx part) */
#define CLDMA_AP_L3RIMCR1 (0x2084)
#define CLDMA_AP_L3RIMSR0 (0x2088) /* level 3 interrupt mask set register (Rx part) */
#define CLDMA_AP_L3RIMSR1 (0x208C)
#define CLDMA_AP_BUS_CFG (0x2090) /* LTEL2_BUS_INTF configuration register */
#define CLDMA_AP_CHNL_DISABLE (0x2094) /* DMA channel disable register */
#define CLDMA_AP_HIGH_PRIORITY (0x2098) /* DMA high priority register */
#define CLDMA_AP_BUS_STA (0x209C) /* LTEL2_BUS_INTF status register */
#define CLDMA_AP_CHNL_IDLE (0x209C) /* DMA channel idle */
/*assistant macros*/
#define CLDMA_AP_TQSAR(i) (CLDMA_AP_UL_START_ADDR_0 + (4 * (i)))
#define CLDMA_AP_TQCPR(i) (CLDMA_AP_UL_CURRENT_ADDR_0 + (4 * (i)))
#define CLDMA_AP_RQSAR(i) (CLDMA_AP_SO_START_ADDR_0 + (4 * (i)))
#define CLDMA_AP_RQCPR(i) (CLDMA_AP_SO_CURRENT_ADDR_0 + (4 * (i)))
#define CLDMA_AP_TQTCR(i) (CLDMA_AP_TCR0 + (4 * (i)))
#ifdef MT6290
#define cldma_write32(b, a, v) iowrite32(v, (b)+(a))
#define cldma_write16(b, a, v) iowrite16(v, (b)+(a))
#define cldma_write8(b, a, v) iowrite8(v, (b)+(a))
#define cldma_read32(b, a) ioread32((b)+(a))
#define cldma_read16(b, a) ioread16((b)+(a))
#define cldma_read8(b, a) ioread8((b)+(a))
#else
#include <mach/sync_write.h>
#define cldma_write32(b, a, v) mt_reg_sync_writel(v, (b)+(a))
#define cldma_write16(b, a, v) mt_reg_sync_writew(v, (b)+(a))
#define cldma_write8(b, a, v) mt_reg_sync_writeb(v, (b)+(a))
#define cldma_read32(b, a) ioread32((void __iomem *)((b)+(a)))
#define cldma_read16(b, a) ioread16((void __iomem *)((b)+(a)))
#define cldma_read8(b, a) ioread8((void __iomem *)((b)+(a)))
#endif
/*bitmap*/
#define CLDMA_BM_INT_ALL 0xFFFFFFFF
/* L2 interrupt */
#define CLDMA_BM_INT_ACTIVE_START 0xFF000000 /* trigger start command on one active queue */
#define CLDMA_BM_INT_ERROR 0x00FF0000 /* error occured on the specified queue, check L3 interrupt register for detail */
#define CLDMA_BM_INT_QUEUE_EMPTY 0x0000FF00 /* when there is no GPD to be transmitted on the specified queue */
#define CLDMA_BM_INT_DONE 0x000000FF /* when the transmission if the GPD on the specified queue is done */
#define CLDMA_BM_INT_ACTIVE_LD_TC 0x000000FF /* modify TC register when one Tx channel is active */
#define CLDMA_BM_INT_INACTIVE_ERR 0x000000FF /* asserted when a specified Rx queue is inactive */
/* L3 interrupt */
#define CLDMA_BM_INT_BD_LEN_ERR 0xFF000000 /* asserted when a lenth fild in BD is not configured correctly */
#define CLDMA_BM_INT_GPD_LEN_ERR 0x00FF0000 /* asserted when a lenth fild in GPD is not configured correctly */
#define CLDMA_BM_INT_BD_CSERR 0x0000FF00 /* asserted when the BD checksum error happen */
#define CLDMA_BM_INT_GPD_CSERR 0x000000FF /* asserted when the GPD checksum error happen */
#define CLDMA_BM_INT_DATA_LEN_MIS 0x00FF0000 /* TGPD data length mismatch error happen */
#define CLDMA_BM_INT_BD_64KERR 0x0000FF00 /* asserted when the TBD length is more than 64K */
#define CLDMA_BM_INT_GPD_64KERR 0x000000FF /* asserted when the TGPD length is more than 64K */
#define CLDMA_BM_INT_RBIDX_ERR 0x80000000 /* internal error for Rx queue */
#define CLDMA_BM_INT_FIFO_LEN_MIS 0x0000FF00 /* internal error for Rx queue */
#define CLDMA_BM_INT_ALLEN 0x000000FF /* asserted when the RGPD/RBD allow data buffer length is not enough */
#define CLDMA_BM_ALL_QUEUE 0xFF /* all 8 queues */
#endif /* __CLDMA_REG_H__ */