#ifndef _TL2CDR_H_ #define _TL2CDR_H_ #ifndef __ASSEMBLER__ #include #endif #define HLM_TX_FIFO_LEN 16U #define HLM_RX_FIFO_LEN 16U #define HLM_TX0_FIFO_FULL (1U<<0U) #define HLM_TX1_FIFO_FULL (1U<<1U) #define HLM_TX0_BUSY (1U<<2U) #define HLM_TX1_BUSY (1U<<3U) #define HLM_RX0_ERROR (1U<<4U) #define HLM_RX1_ERROR (1U<<5U) #define HLM_RX0_VALID (1U<<6U) #define HLM_RX1_VALID (1U<<7U) #define HLM_RX0_FIFO_LEFT(s) (((s) >> 8) & 0x1f) #define HLM_RX1_FIFO_LEFT(s) (((s) >> (8 + 5)) & 0x1f) #define HLM_TX0_FIFO_LEFT(s) (((s) >> (8 + 10)) & 0x1f) #define HLM_TX1_FIFO_LEFT(s) (((s) >> (8 + 15)) & 0x1f) #define HLM_INT_TX1_END (1U<<11U) #define HLM_INT_TX0_END (1U<<10U) #define HLM_INT_RX1_ERR (1U<<9U) #define HLM_INT_RX0_ERR (1U<<8U) #define HLM_INT_RX1_START (1U<<7U) #define HLM_INT_RX0_START (1U<<6U) #define HLM_INT_RX1_END (1U<<5U) #define HLM_INT_RX0_END (1U<<4U) #define HLM_INT_TX1_FIFO_DEQ (1U<<3U) #define HLM_INT_TX0_FIFO_DEQ (1U<<2U) #define HLM_INT_RX1_FIFO_ENQ (1U<<1U) #define HLM_INT_RX0_FIFO_ENQ (1U<<0U) #ifndef __ASSEMBLER__ #define i_tx0_softReset(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x00, x0, %0, x0" :: "r"(rs1)) #define i_tx0_txLen(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x01, x0, %0, x0" :: "r"(rs1)) #define i_tx0_txFifo(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x02, x0, %0, x0" :: "r"(rs1)) #define i_tx0_txCrc(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x03, %0, x0, x0" :"=r"(rd)) #define i_tx0_clear_timer(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x04, x0, %0, x0" :: "r"(rs1)) #define i_tx0_read_timer(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x04, %0, x0, x0" :"=r"(rd)) #define i_tx1_softReset(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x05, x0, %0, x0" :: "r"(rs1)) #define i_tx1_txLen(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x06, x0, %0, x0" :: "r"(rs1)) #define i_tx1_txFifo(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x07, x0, %0, x0" :: "r"(rs1)) #define i_tx1_txCrc(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x08, %0, x0, x0" :"=r"(rd)) #define i_tx1_clear_timer(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x09, x0, %0, x0" :: "r"(rs1)) #define i_tx1_read_timer(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x09, %0, x0, x0" :"=r"(rd)) #define i_rx0_softReset(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x0A, x0, %0, x0" :: "r"(rs1)) #define i_rx0_rxLen(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x0B, %0, x0, x0" :"=r"(rd)) #define i_rx0_rxFifo(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x0C, %0, x0, x0" :"=r"(rd)) #define i_rx0_rxCrc(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x0D, %0, x0, x0" :"=r"(rd)) #define i_rx0_limitTime(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x0E, x0, %0, x0" :: "r"(rs1)) #define i_rx0_txPair(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x0F, x0, %0, x0" :: "r"(rs1)) #define i_rx1_softReset(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x10, x0, %0, x0" :: "r"(rs1)) #define i_rx1_rxLen(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x11, %0, x0, x0" :"=r"(rd)) #define i_rx1_rxFifo(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x12, %0, x0, x0" :"=r"(rd)) #define i_rx1_rxCrc(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x13, %0, x0, x0" :"=r"(rd)) #define i_rx1_limitTime(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x14, x0, %0, x0" :: "r"(rs1)) #define i_rx1_txPair(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x15, x0, %0, x0" :: "r"(rs1)) #define i_hlm_status(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x16, %0, x0, x0" :"=r"(rd)) #define i_hlm_clear_intflag(rs1) \ __asm__ volatile (".insn r 0x0B, 2, 0x17, x0, %0, x0" :: "r"(rs1)) #define i_hlm_read_intflag(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x17, %0, x0, x0" :"=r"(rd)) #define i_hlm_isLast(rd) \ __asm__ volatile (".insn r 0x0B, 4, 0x18, %0, x0, x0" :"=r"(rd)) #else #define i_tx0_softReset(rs1) \ .insn r 0x0B, 2, 0x00, x0, rs1, x0 #define i_tx0_txLen(rs1) \ .insn r 0x0B, 2, 0x01, x0, rs1, x0 #define i_tx0_txFifo(rs1) \ .insn r 0x0B, 2, 0x01, x0, rs1, x0 #define i_tx0_txCrc(rd) \ .insn r 0x0B, 4, 0x03, rd, x0, x0 #define i_tx0_clear_timer(rs1) \ .insn r 0x0B, 2, 0x04, x0, rs1, x0 #define i_tx0_read_timer(rd) \ .insn r 0x0B, 4, 0x04, rd, x0, x0 #define i_tx1_softReset(rs1) \ .insn r 0x0B, 2, 0x05, x0, rs1, x0 #define i_tx1_txLen(rs1) \ .insn r 0x0B, 2, 0x06, x0, rs1, x0 #define i_tx1_txFifo(rs1) \ .insn r 0x0B, 2, 0x07, x0, rs1, x0 #define i_tx1_txCrc(rd) \ .insn r 0x0B, 4, 0x08, rd, x0, x0 #define i_tx1_clear_timer(rs1) \ .insn r 0x0B, 2, 0x09, x0, rs1, x0 #define i_tx1_read_timer(rd) \ .insn r 0x0B, 4, 0x09, rd, x0, x0 #define i_rx0_softReset(rs1) \ .insn r 0x0B, 2, 0x0A, x0, rs1, x0 #define i_rx0_rxLen(rd) \ .insn r 0x0B, 4, 0x0B, rd, x0, x0 #define i_rx0_rxFifo(rd) \ .insn r 0x0B, 4, 0x0C, rd, x0, x0 #define i_rx0_rxCrc(rd) \ .insn r 0x0B, 4, 0x0D, rd, x0, x0 #define i_rx0_limitTime(rs1) \ .insn r 0x0B, 2, 0x0E, x0, rs1, x0 #define i_rx0_txPair(rs1) \ .insn r 0x0B, 2, 0x0F, x0, rs1, x0 #define i_rx1_softReset(rs1) \ .insn r 0x0B, 2, 0x10, x0, rs1, x0 #define i_rx1_rxLen(rd) \ .insn r 0x0B, 4, 0x11, rd, x0, x0 #define i_rx1_rxFifo(rd) \ .insn r 0x0B, 4, 0x12, rd, x0, x0 #define i_rx1_rxCrc(rd) \ .insn r 0x0B, 4, 0x13, rd, x0, x0 #define i_rx1_limitTime(rs1) \ .insn r 0x0B, 2, 0x14, x0, rs1, x0 #define i_rx1_txPair(rs1) \ .insn r 0x0B, 2, 0x15, x0, rs1, x0 #define i_hlm_status(rd) \ .insn r 0x0B, 4, 0x16, rd, x0, x0 #define i_hlm_clear_intflag(rs1) \ .insn r 0x0B, 2, 0x17, x0, rs1, x0 #define i_hlm_read_intflag(rd) \ .insn r 0x0B, 4, 0x17, rd, x0, x0 #define i_hlm_isLast(rd) \ .insn r 0x0B, 4, 0x18, rd, x0, x0 #endif #endif