/****************************************************************************** * 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 , "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 */