- initial import
git-svn-id: http://moon:8086/svn/mips@1 a8ebac50-d88d-4704-bea3-6648445a41b3
This commit is contained in:
+130
@@ -0,0 +1,130 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include "libsys.h"
|
||||
|
||||
void EMAC_TX_commit(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_TX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_TX_SIZE;
|
||||
|
||||
*pEmac_ctrl |= EMAC_TX_CTRL_PKT_COMMIT;
|
||||
|
||||
}
|
||||
|
||||
void EMAC_TX_alloc(uint32_t size)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_TX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_TX_SIZE;
|
||||
|
||||
while(*pEmac_ctrl & EMAC_TX_STAT_PKT_ALLOC_BSY);
|
||||
|
||||
*pEmac_size = size;
|
||||
*pEmac_ctrl |= EMAC_TX_CTRL_PKT_ALLOC;
|
||||
|
||||
while(*pEmac_ctrl & EMAC_TX_STAT_PKT_ALLOC_BSY);
|
||||
|
||||
}
|
||||
|
||||
uint32_t EMAC_TX_is_avail(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_TX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_TX_SIZE;
|
||||
|
||||
while(*pEmac_ctrl & EMAC_TX_STAT_PKT_ALLOC_BSY);
|
||||
|
||||
return (*pEmac_ctrl & EMAC_TX_STAT_PKT_ARMED) == EMAC_TX_STAT_PKT_ARMED;
|
||||
|
||||
}
|
||||
|
||||
uint32_t EMAC_TX_is_idle(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_TX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_TX_SIZE;
|
||||
|
||||
return (*pEmac_ctrl & EMAC_TX_STAT_PKT_DONE) == EMAC_TX_STAT_PKT_DONE;
|
||||
|
||||
}
|
||||
|
||||
void EMAC_TX_reset(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_TX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_TX_SIZE;
|
||||
|
||||
*pEmac_ctrl = EMAC_TX_CTRL_RESET | EMAC_TX_CTRL_FCS_APPEND;
|
||||
|
||||
while(*pEmac_ctrl & EMAC_TX_CTRL_RESET);
|
||||
|
||||
}
|
||||
|
||||
uint32_t EMAC_RX_is_avail(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_RX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_RX_SIZE;
|
||||
|
||||
return (*pEmac_ctrl & EMAC_RX_STAT_PKT_AVAIL) == EMAC_RX_STAT_PKT_AVAIL;
|
||||
|
||||
}
|
||||
|
||||
void EMAC_RX_request(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_RX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_RX_SIZE;
|
||||
|
||||
*pEmac_ctrl = (*pEmac_ctrl & ~EMAC_RX_CTRL_PKT_FREE) | EMAC_RX_CTRL_PKT_REQ;
|
||||
|
||||
}
|
||||
|
||||
uint32_t EMAC_RX_is_valid(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_RX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_RX_SIZE;
|
||||
|
||||
return (*pEmac_ctrl & EMAC_RX_STAT_PKT_VALID) == EMAC_RX_STAT_PKT_VALID;
|
||||
|
||||
}
|
||||
|
||||
void EMAC_RX_free(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_RX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_RX_SIZE;
|
||||
|
||||
*pEmac_ctrl = (*pEmac_ctrl & ~EMAC_RX_CTRL_PKT_REQ) | EMAC_RX_CTRL_PKT_FREE;
|
||||
|
||||
}
|
||||
|
||||
void EMAC_RX_reset(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_RX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_RX_SIZE;
|
||||
|
||||
*pEmac_ctrl = EMAC_RX_CTRL_RESET | EMAC_RX_CTRL_FCS_CHECK;
|
||||
|
||||
while(*pEmac_ctrl & EMAC_RX_CTRL_RESET);
|
||||
|
||||
}
|
||||
|
||||
uint32_t EMAC_RX_get_size(void)
|
||||
{
|
||||
|
||||
volatile UINT32 *pEmac_ctrl = (UINT32*)SYS_EMAC_RX_CTRL;
|
||||
volatile UINT32 *pEmac_size = (UINT32*)SYS_EMAC_RX_SIZE;
|
||||
|
||||
return *pEmac_size;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user