⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sf_api.c

📁 华为 HI3510 BOOTLOADER HIBOOT 源码包
💻 C
📖 第 1 页 / 共 5 页
字号:
	{		ClearSpeLinDupChangeFlag.w32 = *SF_MAC_DIO(6);		ClearSpeLinDupChangeFlag.bits.down_speed_stat_ch = u32Speed;		ClearSpeLinDupChangeFlag.bits.down_duplex_stat_ch = u32Duplex;		ClearSpeLinDupChangeFlag.bits.down_link_stat_ch = u32Link;		*SF_MAC_DIO(6) = ClearSpeLinDupChangeFlag.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC_DIO(6);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC_DIO(6)-SF p0 CPU clear mode change flag is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)/*up port*/	{		ClearSpeLinDupChangeFlag.w32 = *SF_MAC_DIO(6);		ClearSpeLinDupChangeFlag.bits.up_speed_stat_ch = u32Speed;		ClearSpeLinDupChangeFlag.bits.up_duplex_stat_ch = u32Duplex;		ClearSpeLinDupChangeFlag.bits.up_link_stat_ch = u32Link;		*SF_MAC_DIO(6) = ClearSpeLinDupChangeFlag.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC_DIO(6);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC_DIO(6)-SF p1 CPU clear mode change flag is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF CPU clear mode change flag error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_SetRMIIOrMII(In UINT8 u8PortNo, In UINT32 u32MIIOrRMIIMode) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置端口与PHY之间RMII与MII接口模式选择(0-MII,1-RMII) *  输入参数:端口号 *	     	 RMII/MII模式 *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_SetRMIIOrMII (In UINT8 u8PortNo, In UINT32 u32MIIOrRMIIMode) {	Set_RMII_MII_U SetRMIIOrMII;	if (u8PortNo == 0)/*down port*/	{		SetRMIIOrMII.w32 = *SF_GLB_DIO(18);		SetRMIIOrMII.bits.down_mode_rmii = u32MIIOrRMIIMode;		*SF_GLB_DIO(18) = SetRMIIOrMII.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_GLB_DIO(18);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_GLB_DIO(18)-SF p0 RMII/MII mode is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)/*up port*/	{		SetRMIIOrMII.w32 = *SF_GLB_DIO(18);		SetRMIIOrMII.bits.up_mode_rmii = u32MIIOrRMIIMode;		*SF_GLB_DIO(18) = SetRMIIOrMII.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_GLB_DIO(18);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_GLB_DIO(18)-SF p1 RMII/MII mode is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF RMII/MII mode set error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_SetCntReadClean(In UINT8 u8PortNo, In UINT32 u32CntAuCleEn) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置端口统计寄存器读清空使能/禁止 *  输入参数:端口号 *	     	 读清空设置,1->read clean enable; 0-> read clean disable. *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_SetCntReadClean(In UINT8 u8PortNo, In UINT32 u32CntAuCleEn){	Port_Conf_U SetCntAuCleEn;	if (u8PortNo == 0)	{		SetCntAuCleEn.w32 = *SF_MAC0_DIO(0);		SetCntAuCleEn.bits.cntr_rdclr_en = u32CntAuCleEn;		*SF_MAC0_DIO(0) = SetCntAuCleEn.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(0);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(0)-SF p0 read clear mode is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)	{		SetCntAuCleEn.w32 = *SF_MAC0_DIO(4);		SetCntAuCleEn.bits.cntr_rdclr_en = u32CntAuCleEn;		*SF_MAC0_DIO(4) = SetCntAuCleEn.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(4);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(4)-SF p1 read clear mode is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF set read clear mode error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_SetShortFrameReceive(In UINT8 u8PortNo, In UINT32 u32ShorReceEn) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置端口短帧接收使能/禁止 *  输入参数:端口号 *	     	 短帧接收使能->1/禁止设置->0 *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_SetShortFrameReceive(In UINT8 u8PortNo, In UINT32 u32ShorReceEn){	Port_Conf_U SetShorReceEn;	if (u8PortNo == 0)	{		SetShorReceEn.w32 = *SF_MAC0_DIO(0);		SetShorReceEn.bits.rx_shframe_en = u32ShorReceEn;		*SF_MAC0_DIO(0) = SetShorReceEn.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(0);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(0)-SF p0 short frame receive enable mode is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)	{		SetShorReceEn.w32 = *SF_MAC0_DIO(4);		SetShorReceEn.bits.rx_shframe_en = u32ShorReceEn;		*SF_MAC0_DIO(4) = SetShorReceEn.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(4);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(4)-SF p0 short frame receive enable mode is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF set short frame receive enable mode error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_SetPostFrameSendEnable(In UINT8 u8PortNo, In UINT32 u32PostFraSenEn) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置端口流控帧发送使能/禁止 *  输入参数:端口号 *	     	 流控帧发送使能->1/禁止设置->0 *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_SetPostFrameSendEnable(In UINT8 u8PortNo, In UINT32 u32PostFraSenEn){	Port_Conf_U SetPostFraSenEn;	if (u8PortNo == 0)	{		SetPostFraSenEn.w32 = *SF_MAC0_DIO(0);		SetPostFraSenEn.bits.pause_en = u32PostFraSenEn;		*SF_MAC0_DIO(0) = SetPostFraSenEn.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(0);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(0)-SF p0 post frame transmit enable mode is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)	{		SetPostFraSenEn.w32 = *SF_MAC0_DIO(4);		SetPostFraSenEn.bits.pause_en = u32PostFraSenEn;		*SF_MAC0_DIO(4) = SetPostFraSenEn.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(4);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(4)-SF p1 post frame transmit enable mode is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF post frame transmit enable mode set error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_SetPortStatusFetchMode(In UINT8 u8PortNo, In UINT32 u32PortStatMode) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置端口状态信息获得方式 *  输入参数:端口号 *	     	 端口状态信息获得方式设置(2'b10表示使用cpu设定的状态信息,其他是从mdio获取状态信息) *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/void SF_SetPortStatusFetchMode(In UINT8 u8PortNo, In UINT32 u32PortStatMode) {	Port_Stat_Choice_U SetPortStatMode;	UINT32 u32HelpSetStatM = 0;	if (u8PortNo == 0)	{		SetPortStatMode.w32 = *SF_MAC_DIO(2);		u32HelpSetStatM = (SetPortStatMode.bits.stat_ctrl & (0xc));		u32HelpSetStatM = (u32HelpSetStatM | ( u32PortStatMode ));		SetPortStatMode.bits.stat_ctrl = u32HelpSetStatM;		*SF_MAC_DIO(2) = SetPortStatMode.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC_DIO(2);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC_DIO(2)-SF p0 information fetching mode is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)	{		SetPortStatMode.w32 = *SF_MAC_DIO(2);		u32HelpSetStatM = (SetPortStatMode.bits.stat_ctrl & (0x3));		u32HelpSetStatM = (u32HelpSetStatM | (( u32PortStatMode ) << 2 ));		SetPortStatMode.bits.stat_ctrl = u32HelpSetStatM;		*SF_MAC_DIO(2) = SetPortStatMode.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC_DIO(2);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC_DIO(2)-SF p1 information fetching mode is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF port fetching mode set error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_SetPortCountRollZeroEnable( In UINT8 u8PortNo, In UINT32 u32Value)  *  初稿完成:2005/1/6    *  作    者:   *  函数功能:设置端口的统计信息计满是否回零 *  输入参数:端口号(上行口或者下行口), *			 需要设置计数器满回零的端口置1,否则置0 *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_SetPortCountRollZeroEnable( In UINT8 u8PortNo, In UINT32 u32Value) {	Port_Conf_U CntRollCtrl;	if (u8PortNo == 0)	{		CntRollCtrl.w32 = *SF_MAC0_DIO(0);		CntRollCtrl.bits.cntr_roll_dis = u32Value;		*SF_MAC0_DIO(0) = CntRollCtrl.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(0);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(0)-SF p0 count roll zero is %s\n",OutBinary);		#endif	}	else if (u8PortNo == 1)	{		CntRollCtrl.w32 = *SF_MAC0_DIO(4);		CntRollCtrl.bits.cntr_roll_dis = u32Value;		*SF_MAC0_DIO(4) = CntRollCtrl.w32;		#ifdef SfTest			outinfor = * ( UINT32 * ) SF_MAC0_DIO(4);			TChangeHEXToBin(outinfor,OutBinary);			SF_Print("SF_MAC0_DIO(4)-SF p1 count roll zero is %s\n",OutBinary);		#endif	}	else	{		#ifdef SfTest			SF_Print("SF port count roll zero set error\n");		#endif	}}/*======================================================================= *  函数名称:void SF_CountPortStatistic( In UINT8 u8PortNo, Out Port_Cnt_S *pu32StaticCnt) *  初稿完成:2005/1/6    *  作    者:   *  函数功能:统计端口的统计信息 *  输入参数:端口号(上行口或者下行口), *  输出参数:   *  返回类型:  无 *  其他说明:  *  调用函数:  建议  *  主调函数:  建议 *========================================================================*/static void SF_CountPortStatistic( In UINT8 u8PortNo, Out Port_Cnt_S *pu32StaticCnt) {	UINT32 AddrForPort = 0;		if (u8PortNo == 1)	{		AddrForPort = 0x0100;	}	pu32StaticCnt->drop_event	= *(UINT32 *) (SF_Statis + (AddrForPort | 0x0000));	pu32StaticCnt->crcerr = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0004));	        	pu32StaticCnt->undersizepkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0008));	pu32StaticCnt->oversizepkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x000c));	        	pu32StaticCnt->fragments = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0010));    	pu32StaticCnt->jabber = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0014));	        	pu32StaticCnt->broadcastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0018));	pu32StaticCnt->multicastpkts = *(UINT32 *) (SF_Statis + (AddrForPort | 0x001c));	        	pu32StaticCnt->pkts64 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0020));		        	pu32StaticCnt->pkts65_127 = *(UINT32 *) (SF_Statis + (AddrForPort | 0x0024));	        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -