#ifndef _CPRI_CSU_8NR_8LTE_H_
#define _CPRI_CSU_8NR_8LTE_H_

#include "typedef.h"
#include "cpri_csu_api.h"

#define CPRI_8NR8LTE_ID_NUM							18
#define CPRI_8NR8LTE_LATCH_NUM                      7


#define CPRI_8NR8LTE_LINK_START_ADDR				0x721E800

#define CPRI_8NR8LTE_SLOT_COMPRESS_LEN              0x7800  // 8B*3840=30720B, 3840 bf every 1ms
#define CPRI_8NR8LTE_SLOT_AGC_LEN                   0x7800
#define CPRI_8NR8LTE_SLOT_NR_2AXC_LEN               0x78000 // 64B*2*3840=491520B, 2 axc, 3840 bf            
#define CPRI_8NR8LTE_SLOT_LTE_8AXC_LEN              0x78000 // 16B*8*3840=491520B, 8 axc, 3840 bf


#define CPRI_8NR8LTE_TX_SLOT_EVEN_COMPRESS_ADDR		0xB4200000
#define CPRI_8NR8LTE_TX_SLOT_EVEN_AGC_ADDR		    (CPRI_8NR8LTE_TX_SLOT_EVEN_COMPRESS_ADDR+CPRI_8NR8LTE_SLOT_COMPRESS_LEN) // 0xB4207800
#define CPRI_8NR8LTE_TX_SLOT_ODD_COMPRESS_ADDR		(CPRI_8NR8LTE_TX_SLOT_EVEN_AGC_ADDR+CPRI_8NR8LTE_SLOT_AGC_LEN)           // 0xB420F000
#define CPRI_8NR8LTE_TX_SLOT_ODD_AGC_ADDR		    (CPRI_8NR8LTE_TX_SLOT_ODD_COMPRESS_ADDR+CPRI_8NR8LTE_SLOT_COMPRESS_LEN)  // 0xB4216800


#define CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC1_2_ADDR	0x60F00000 
#define CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC3_4_ADDR	(CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC1_2_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x60F78000
#define CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC5_6_ADDR	(CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC3_4_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x60FF0000
#define CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC7_8_ADDR	(CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC5_6_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x61068000
#define CPRI_8NR8LTE_TX_SLOT_EVEN_LTE_AXC1_8_ADDR	(CPRI_8NR8LTE_TX_SLOT_EVEN_NR_AXC7_8_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x610E0000

#define CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC1_2_ADDR		(CPRI_8NR8LTE_TX_SLOT_EVEN_LTE_AXC1_8_ADDR+CPRI_8NR8LTE_SLOT_LTE_8AXC_LEN) // 0x61158000
#define CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC3_4_ADDR		(CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC1_2_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x611D0000
#define CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC5_6_ADDR		(CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC3_4_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x61248000
#define CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC7_8_ADDR		(CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC5_6_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x612C0000
#define CPRI_8NR8LTE_TX_SLOT_ODD_LTE_AXC1_8_ADDR	(CPRI_8NR8LTE_TX_SLOT_ODD_NR_AXC7_8_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x61338000


#define CPRI_8NR8LTE_RX_SLOT_EVEN_COMPRESS_ADDR		(CPRI_8NR8LTE_TX_SLOT_ODD_AGC_ADDR+CPRI_8NR8LTE_SLOT_AGC_LEN)	           // 0xB421E000
#define CPRI_8NR8LTE_RX_SLOT_EVEN_AGC_ADDR			(CPRI_8NR8LTE_RX_SLOT_EVEN_COMPRESS_ADDR+CPRI_8NR8LTE_SLOT_COMPRESS_LEN)   // 0xB4225800
#define CPRI_8NR8LTE_RX_SLOT_ODD_COMPRESS_ADDR		(CPRI_8NR8LTE_RX_SLOT_EVEN_AGC_ADDR+CPRI_8NR8LTE_SLOT_AGC_LEN)	           // 0xB422D000
#define CPRI_8NR8LTE_RX_SLOT_ODD_AGC_ADDR			(CPRI_8NR8LTE_RX_SLOT_ODD_COMPRESS_ADDR+CPRI_8NR8LTE_SLOT_COMPRESS_LEN)    // 0xB4234800


#define CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC1_2_ADDR	0x6BC00000
#define CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC3_4_ADDR	(CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC1_2_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x6BC78000
#define CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC5_6_ADDR	(CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC3_4_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x6BCF0000
#define CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC7_8_ADDR	(CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC5_6_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x6BD68000
#define CPRI_8NR8LTE_RX_SLOT_EVEN_LTE_AXC1_8_ADDR	(CPRI_8NR8LTE_RX_SLOT_EVEN_NR_AXC7_8_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)   // 0x6BDE0000

#define CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC1_2_ADDR		(CPRI_8NR8LTE_RX_SLOT_EVEN_LTE_AXC1_8_ADDR+CPRI_8NR8LTE_SLOT_LTE_8AXC_LEN) // 0x6BE58000
#define CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC3_4_ADDR		(CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC1_2_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x6BED0000
#define CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC5_6_ADDR		(CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC3_4_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)	   // 0x6BF48000
#define CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC7_8_ADDR		(CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC5_6_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x6BFC0000
#define CPRI_8NR8LTE_RX_SLOT_ODD_LTE_AXC1_8_ADDR	(CPRI_8NR8LTE_RX_SLOT_ODD_NR_AXC7_8_ADDR+CPRI_8NR8LTE_SLOT_NR_2AXC_LEN)    // 0x6C038000

void cpri_csu_axc_init_8nr8lte_fdd(uint32_t nDummyFlag, stCpriCsuCmdFifoInfo* pTxCmdFifo, stCpriCsuCmdFifoInfo* pRxCmdFifo);
void cpri_csu_axc_latch_init_8nr8lte_fdd(void);
void cpri_csu_axc_link_init_8nr8lte_fdd(int32_t testMode);
void cpri_csu_axc_paramreg_init_8nr8lte_fdd();
void cpri_csu_axc_cmd_gen_8nr8lte_fdd(stCpriCsuCmdFifoInfo* pTxCmdFifo, stCpriCsuCmdFifoInfo* pRxCmdFifo);
void cpri_csu_start_8nr8lte_fdd(stCpriCsuCmdFifoInfo tx_cmdfifo, stCpriCsuCmdFifoInfo rx_cmdfifo);

/*!   
* @brief:  根据NR配置 Timer和JESD/CPRI CSU Timer&DMA链表
* @author:  guicheng.liu
* @Date:  2022年7月8日
* @param: cell :             [NR 小区参数]
*/
void Phy_Timer_Csu_Config_Nr();


#endif

