OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [RX600_RX62N-RSK_Renesas/] [RTOSDemo/] [webserver/] [r_ether.h] - Rev 585

Compare with Previous | Blame | View Log

/******************************************************************************
* DISCLAIMER
* Please refer to http://www.renesas.com/disclaimer
******************************************************************************
  Copyright (C) 2008. Renesas Technology Corp., All Rights Reserved.
*******************************************************************************
* File Name    : r_ether.h
* Version      : 1.02
* Description  : Ethernet module device driver
******************************************************************************
* History : DD.MM.YYYY Version Description
*         : 15.02.2010 1.00    First Release
*         : 03.03.2010 1.01    Buffer size is aligned on the 32-byte boundary.
*         : 04.06.2010 1.02    RX62N changes
******************************************************************************/
 
#ifndef	R_ETHER_H
#define	R_ETHER_H
 
/******************************************************************************
Includes   <System Includes> , "Project Includes"
******************************************************************************/
#include <stdint.h>
 
/******************************************************************************
Typedef definitions
******************************************************************************/
struct Descriptor
{
	__evenaccess uint32_t	status;
#if __LIT                               
/* Little endian */
	__evenaccess uint16_t	size;
	__evenaccess uint16_t	bufsize;
#else                                   
/* Big endian */
	__evenaccess uint16_t	bufsize;
	__evenaccess uint16_t	size;
 
#endif
	int8_t					*buf_p;
	struct Descriptor		*next;
};
 
typedef struct Descriptor ethfifo;
 
typedef enum _NETLNK
{
    PHY_NO_LINK = 0,
    PHY_LINK_10H,
    PHY_LINK_10F,
    PHY_LINK_100H,
    PHY_LINK_100F
 
} NETLNK;
 
/******************************************************************************
Macro definitions
******************************************************************************/
#define	BUFSIZE	  256                   /* Must be 32-bit aligned */
#define ENTRY     8                     /* Number of RX and TX buffers */
 
#define  ACT      0x80000000
#define  DL       0x40000000
#define  FP1      0x20000000
#define  FP0      0x10000000
#define  FE       0x08000000
 
#define  RFOVER   0x00000200
#define  RAD      0x00000100
#define  RMAF     0x00000080
#define  RRF      0x00000010
#define  RTLF     0x00000008
#define  RTSF     0x00000004
#define  PRE      0x00000002
#define  CERF     0x00000001
 
#define  TAD      0x00000100
#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
 
/*	Ether Interface definitions	*/
#define ETH_RMII_MODE	0
#define ETH_MII_MODE	1
/*	Select Ether Interface Mode 	*/
#define ETH_MODE_SEL	ETH_MII_MODE
 
/******************************************************************************
Variable Externs
******************************************************************************/
 
/******************************************************************************
Functions Prototypes
******************************************************************************/
/** 
 * Renesas Ethernet API prototypes
 **/
int32_t R_Ether_Open(uint32_t ch, uint8_t mac_addr[]);
int32_t R_Ether_Close(uint32_t ch);
int32_t R_Ether_Write(uint32_t ch, void *buf, uint32_t len);
int32_t R_Ether_Read(uint32_t ch, void *buf);
 
/**
 * FreeRTOS Ethernet API prototypes.
 */
 
/*
 * Configure all the ethernet components (MAC, DMA, PHY) ready for communication.
 */
void vInitEmac( void );
 
/*
 * Auto negotiate the link, returning pass or fail depending on whether a link
 * was established or not.
 */
long lEMACWaitForLink( void );
 
/*
 * Check the Rx status, and return the number of bytes received if any.
 */
unsigned long ulEMACRead( void );
 
/*
 * Send uip_len bytes from uip_buf to the Tx descriptors and initiate a Tx.
 */
void vEMACWrite( void );
 
 
 
 
/****************************************************/
/* 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 int8_t      *name;
  uint8_t           open;
  uint8_t           Tx_act;
  uint8_t           Rx_act;
  uint8_t           txing;        /* Transmit Active */
  uint8_t           irqlock;      /* EDMAC's interrupt disabled when '1'. */
  uint8_t           dmaing;       /* EDMAC Active */
  ethfifo           *rxcurrent;   /* current receive discripter */
  ethfifo           *txcurrent;   /* current transmit discripter */
  uint8_t           save_irq;     /* Original dev->irq value. */
  struct enet_stats stat;
  uint8_t           mac_addr[6];
};
 
#endif /* R_ETHER_H */
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.