YB_Platform/inc/drv_jesd_csu.h
xinxin.li 926ce7e7a9 1. fix UCP4008-SL-EVB feature #1612;
2. add para for phy_sniffer_start;
3. test case: case34, case44, case45, case48, case41, case42, case21.
2024-01-29 14:47:15 +08:00

163 lines
7.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _JESD_CSU_H_
#define _JESD_CSU_H_
#include "typedef.h"
#define JS_204B_CONVERTER_BITS 16 // 12
#define JS_204B_CS_BITS 0 // 2
#define JS_204B_CF_VAL 0
#define JESD_CSU_RX0_TAG 0
#define JESD_CSU_TX0_TAG 1
#define JESD_CSU_RX1_TAG 2
#define JESD_CSU_TX1_TAG 3
#define JESD_CH_NUM 2 // rx0/rx1, tx0/tx1
#define JESD_LIST_NUM 2 // double 2.5ms, 2 lists for every ch
// 链表通道定义tx/rx各有两个通道小于等于4天线情况下只会启用通道0
typedef enum _tagJesdCsuCh
{
JESD_CSU_CH0 = 0,
JESD_CSU_CH1 = 1
}numJesdCsuCh;
typedef struct _tagJesdCsuPara
{
uint8_t antNum; // 天线数
uint8_t cf;
uint8_t cs; // 控制字, =0
uint8_t n; // iq数据精度, = 16bit
uint8_t m; // 天线数*2
uint8_t nTotal; // n+cs+padding
uint8_t seq;
uint8_t margin;
uint8_t tfMode;
}stJesdCsuPara;
// 链表节点结构体定义
typedef struct _tagJesdCsuNodePara
{
uint32_t dataAddr; // 数据地址
uint32_t yStep; // 每个天线的数据总长度B为单位
uint32_t allNum; // 需要csu搬运的总的数据长度B为单位
}stJesdCsuNodePara;
/*******************************************************************************************************************
函数名称jesd_set_protocol_rx_advance
函数入参:
uint32_t rxAdvance: 协议规定的接收提前量
返回值:
函数功能协议规定的接收提前量NR提前13usLTE不提前LTE模式下需在建小区之前调用该接口修改协议提前量
********************************************************************************************************************/
void jesd_set_protocol_rx_advance(uint32_t rxAdvance);
/*******************************************************************************************************************
函数名称jesd_csu_init
函数入参:
uint8_t antNum: 天线数
uint8_t margin: jesd csu一次搬移的数据量xnum=(32*2^margin)B设置合理的margin值确保allnum/xnum是个整数值
uint8_t tfMode: tdd/fdd mode
返回值:
0 : 正常
-1: 输入参数错误
函数功能JESD CSU初始化
********************************************************************************************************************/
int32_t jesd_csu_init(uint8_t antNum, uint8_t margin, uint8_t tfMode);
/*******************************************************************************************************************
函数名称jesd_orx_csu_init
函数入参:
uint8_t margin: jesd csu一次搬移的数据量xnum=(32*2^margin)B设置合理的margin值确保allnum/xnum是个整数值
返回值:
0 : 正常
-1: 还未正常执行jesd_csu_init
函数功能JESD ORX通道CSU初始化
********************************************************************************************************************/
int32_t jesd_orx_csu_init(uint8_t margin);
/*******************************************************************************************************************
函数名称jesd_csu_rx_inlatch_thres_cfg
函数入参:
uint8_t ch: rx通道IDJESD_CSU_CH0: rx0, JESD_CSU_CH1: rx1
uint32_t send_threshold: 接收缓存InLatch的阈值低于该值CSU暂停向总线发起写请求
uint32_t almostfull_threshold: 接收缓存InLatch的阈值不低于该值CSU开始向总线发起写请求
返回值:
0 : 正常
-1: 输入参数错误
函数功能JESD CSU初始化
********************************************************************************************************************/
int32_t jesd_csu_rx_inlatch_thres_cfg(uint8_t ch, uint32_t send_threshold, uint32_t almostfull_threshold);
// JESD CSU资源配置可以根据通道ID和list ID查询驱动所采用的tag号从而查询对应的通道任务是否完成
/***********************************************************************************
ch list RegGroup CmdFIFO tagId = RegGroupId
rx0 0/1/2/3 0/4/8/12 0 0/4/8/12
tx0 0/1/2/3 1/5/9/13 1 1/5/9/13
rx1 0/1/2/3 2/6/10/14 2 2/6/10/14
tx1 0/1/2/3 3/7/11/15 3 3/7/11/15
************************************************************************************/
/*******************************************************************************************************************
函数名称jesd_csu_rx_cfg
函数入参:
uint32_t listAddr: 链表地址目前使用的双边多维链式DMA地址要求0x40B对齐
uint32_t nodeNum: 链表包含的节点个数
stJesdCsuNodePara* pListNode: 指向链表节点首地址的指针
uint8_t nChId: 通道ID, JESD_CSU_CH0: rx0, JESD_CSU_CH1: rx1
uint8_t nListId: 链表ID, 0~1, 每个通道最多支持2个链表配置该参数可用于2.5ms双小区配置,
第一个2.5ms采用list0第二个2.5ms采用list1
返回值:
0 : 正常
-1: 输入参数错误
函数功能JESD RX通道CSU配置
********************************************************************************************************************/
int32_t jesd_csu_rx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId);
/*******************************************************************************************************************
函数名称jesd_csu_tx_cfg
函数入参:
uint32_t listAddr: 链表地址目前使用的双边多维链式DMA地址要求0x40B对齐
uint32_t nodeNum: 链表包含的节点个数
stJesdCsuNodePara* pListNode: 指向链表节点首地址的指针
uint8_t nChId: 通道ID, JESD_CSU_CH0: tx0, JESD_CSU_CH1: tx1
uint8_t nListId: 链表ID, 0~1, 每个通道最多支持2个链表配置该参数可用于2.5ms双小区配置,
第一个2.5ms采用list0第二个2.5ms采用list1
返回值:
0 : 正常
-1: 输入参数错误
函数功能JESD TX通道CSU配置
********************************************************************************************************************/
int32_t jesd_csu_tx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nChId, uint8_t nListId);
/*******************************************************************************************************************
函数名称jesd_csu_orx_cfg
函数入参:
uint32_t listAddr: 链表地址目前使用的双边多维链式DMA地址要求0x40B对齐
uint32_t nodeNum: 链表包含的节点个数
stJesdCsuNodePara* pListNode: 指向链表节点首地址的指针
uint8_t nListId: 链表ID
返回值:
0 : 正常
-1: 输入参数错误
函数功能JESD ORX通道CSU配置
********************************************************************************************************************/
int32_t jesd_csu_orx_cfg(uint32_t listAddr, uint32_t nodeNum, stJesdCsuNodePara* pListNode, uint8_t nListId);
/*******************************************************************************************************************
函数名称jesd_csu_stat_lookup
函数入参:
uint8_t tag: tag号
返回值:
0 : 未完成
1 : 已完成
-1: 输入参数错误
函数功能根据tag号查询该tag号对应的通道任务是否完成
********************************************************************************************************************/
int32_t jesd_csu_stat_lookup(uint8_t tag);
#endif