/****************************************************************************** | |
* DISCLAIMER | |
* Please refer to http://www.renesas.com/disclaimer | |
****************************************************************************** | |
Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved. | |
******************************************************************************* | |
* File Name : hwEthernet.h | |
* Version : 1.00 | |
* Description : Ethernet module device driver | |
****************************************************************************** | |
* History : DD.MM.YYYY Version Description | |
* : 06.10.2009 1.00 First Release | |
******************************************************************************/ | |
#ifndef HWETHERNET_H_INCLUDED | |
#define HWETHERNET_H_INCLUDED | |
/****************************************************************************** | |
Includes <System Includes> , "Project Includes" | |
******************************************************************************/ | |
#include "typedefine.h" | |
/****************************************************************************** | |
Typedef definitions | |
******************************************************************************/ | |
typedef struct Discript | |
{ | |
uint32_t status; | |
ushort16_t bufsize; | |
ushort16_t size; | |
char8_t *buf_p; | |
struct Discript *next; | |
} ethfifo; | |
/****************************************************************************** | |
Macro definitions | |
******************************************************************************/ | |
#define BUFSIZE 256 | |
#define ENTRY 8 | |
#define ACT 0x80000000 | |
#define DL 0x40000000 | |
#define FP1 0x20000000 | |
#define FP0 0x10000000 | |
#define FE 0x08000000 | |
#define RFOVER 0x00000200 | |
#define RMAF 0x00000080 | |
#define RRF 0x00000010 | |
#define RTLF 0x00000008 | |
#define RTSF 0x00000004 | |
#define PRE 0x00000002 | |
#define CERF 0x00000001 | |
#define ITF 0x00000010 | |
#define CND 0x00000008 | |
#define DLC 0x00000004 | |
#define CD 0x00000002 | |
#define TRO 0x00000001 | |
/** | |
* Renesas Ethernet API return defines | |
**/ | |
#define R_ETHER_OK 0 | |
#define R_ETHER_ERROR -1 | |
/****************************************************************************** | |
Variable Externs | |
******************************************************************************/ | |
/****************************************************************************** | |
Functions Prototypes | |
******************************************************************************/ | |
/** | |
* Renesas Ethernet API prototypes | |
**/ | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
extern int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]); | |
extern int32_t R_Ether_Close(uint32_t ch); | |
extern int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len); | |
extern int32_t R_Ether_Read(uint32_t ch, void *buf); | |
/* Added for the FreeRTOS demo project. */ | |
unsigned long ulEMACRead( void ); | |
void vEMACWrite( void ); | |
void vInitEmac( void ); | |
long lEMACWaitForLink( void ); | |
/* Extension of the API functions added to allow PnP link */ | |
/* R_Ether_OpenEx opens irrispective of link status */ | |
extern int32_t R_Ether_OpenEx(uint32_t ch, uint8_t mac_addr[]); | |
/* Enables/disables operation for the current link */ | |
extern int32_t R_Ether_EnableEx(uint32_t ch, int iEnable); | |
#ifdef __cplusplus | |
} | |
#endif | |
/****************************************************/ | |
/* Ethernet statistic collection data */ | |
struct enet_stats | |
{ | |
uint32_t rx_packets; /* total packets received */ | |
uint32_t tx_packets; /* total packets transmitted */ | |
uint32_t rx_errors; /* bad packets received */ | |
uint32_t tx_errors; /* packet transmit problems */ | |
uint32_t rx_dropped; /* no space in buffers */ | |
uint32_t tx_dropped; /* no space available */ | |
uint32_t multicast; /* multicast packets received */ | |
uint32_t collisions; | |
/* detailed rx_errors: */ | |
uint32_t rx_length_errors; | |
uint32_t rx_over_errors; /* receiver ring buffer overflow */ | |
uint32_t rx_crc_errors; /* recved pkt with crc error */ | |
uint32_t rx_frame_errors; /* recv'd frame alignment error */ | |
uint32_t rx_fifo_errors; /* recv'r fifo overrun */ | |
uint32_t rx_missed_errors; /* receiver missed packet */ | |
/* detailed tx_errors */ | |
uint32_t tx_aborted_errors; | |
uint32_t tx_carrier_errors; | |
uint32_t tx_fifo_errors; | |
uint32_t tx_heartbeat_errors; | |
uint32_t tx_window_errors; | |
}; | |
struct ei_device | |
{ | |
const char8_t *name; | |
uchar8_t open; | |
uchar8_t Tx_act; | |
uchar8_t Rx_act; | |
uchar8_t txing; /* Transmit Active */ | |
uchar8_t irqlock; /* EDMAC's interrupt disabled when '1'. */ | |
uchar8_t dmaing; /* EDMAC Active */ | |
ethfifo *rxcurrent; /* current receive discriptor */ | |
ethfifo *txcurrent; /* current transmit discriptor */ | |
uchar8_t save_irq; /* Original dev->irq value. */ | |
struct enet_stats stat; | |
uchar8_t mac_addr[6]; | |
}; | |
#endif /* HWETHERNET_H_INCLUDED */ | |