Files
eb001/tb/sw/tl2cdr/tl2cdr.h

167 lines
5.8 KiB
C
Raw Permalink Normal View History

2025-01-15 11:23:02 +08:00
#ifndef _TL2CDR_H_
#define _TL2CDR_H_
#ifndef __ASSEMBLER__
2025-01-15 11:23:02 +08:00
#include <stdint.h>
#endif
2025-01-15 11:23:02 +08:00
2025-02-10 23:59:35 +08:00
#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)
2025-02-10 23:59:35 +08:00
#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
2025-01-15 11:23:02 +08:00
#endif