📄 ge_cam.c
字号:
/**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-
* GE_CAM.c - Ethernet 1000M code. .
*
* Copyright 2001-12 by GDT, Inc
*
* modification history
* --------------------
* 2001-12-14,yxy created.
*
*/
#include <msgQlib.h>
#include <errno.h>
#include <taskLib.h>
#include "GE_GlobalP.h"
#include "GE_CAM.h"
#include "GE_Utility.h"
/*****************************************************************/
STATUS cam_init()
{
ULONG flag;
cam_hw_reset();
flag=outfpgaRead(0x2a);
if((flag & 0x40000000) == 0x40000000) /*allow cam option*/
{
outfpgaWrite(0x68,0x00); /*write the device ID*/
outfpgaWrite(0x6C,0x00); /*write device work mode*/
outfpgaWrite(0x5C,0xFFFFFFFF); /*write globe mask*/
outfpgaWrite(0x60,0x00);
outfpgaWrite(0x58,0xFFFFFFFF);
}
if(GE_ARP_DEBUG)
GE_printf(GE_EVENT,"cam_init:cam init succeed!\n");
return OK;
}
/******************************************************************/
STATUS cam_software_reset()
{
ULONG flag;
flag=outfpgaRead(0x2a);
if((flag & 0x40000000) == 0x40000000) /*allow cam option*/
{
outfpgaWrite(0x54,0x0);
if(GE_ARP_DEBUG)
GE_printf(GE_EVENT,"cam_software_reset:cam reset succeed!\n");
return OK;
}
return ERROR;
}
/*** **************************************************************/
STATUS cam_hw_reset()
{
outfpgaWrite(0x1e,0x0);
taskDelay(1);
return OK;
}
/*** **************************************************************/
STATUS cam_add(ULONG address,ULONG ipaddr,ULONG macHigh,ULONG macLow)
{
ULONG flag;
flag=outfpgaRead(0x2a);
if((flag & 0x40000000) == 0x40000000)/*allow cam option*/
{ outfpgaWrite(0x40,address);
outfpgaWrite(0x64,ipaddr);
outfpgaWrite(0x44,macHigh);
outfpgaWrite(0x48,macLow);
if(GE_ARP_DEBUG)
GE_printf(GE_EVENT,"cam_add:cam add succeed!\n");
return OK;
}
return ERROR;
}
/*******************************************************************/
STATUS cam_del(ULONG addrCounter)
{
ULONG flag;
flag=outfpgaRead(0x2a);
if((flag & 0x40000000) == 0x40000000)/*allow cam option*/
{
outfpgaWrite(0x4C, addrCounter);
if(GE_ARP_DEBUG)
GE_printf(GE_EVENT,"cam del:cam del succeed!\n");
}
return OK;
}
/**************************************************************************/
STATUS cam_read(ULONG addr)
{
ULONG flag;
ULONG macHigh,macLow;
flag=outfpgaRead(0x2a);
while((flag & 0x40000000) == 0x40000000)
{
outfpgaWrite(0x50,addr);
flag=outfpgaRead(0x2a);
if((flag & 0x40000000) == 0x40000000)
{
macHigh=outfpgaRead(0x2b);
macLow=(outfpgaRead(0x2c));
if(GE_ARP_DEBUG)
GE_printf(GE_DATA,"cam_read:macHigh=%4lx,macLow=%4lx",macHigh,macLow);
return OK;
}
}
return ERROR;
}
/*end of GE_CAM.c*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -