188 lines
4.8 KiB
C
Executable File
188 lines
4.8 KiB
C
Executable File
/*
|
|
Protected header for Ethernet module
|
|
|
|
Ethernet Configuration module protected header file.
|
|
|
|
@file Ethernet_protected.h
|
|
@ingroup mIDrvIO_Eth
|
|
@note Nothing
|
|
|
|
Copyright Novatek Microelectronics Corp. 2014. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _ETHERNET_PROTECTED_H
|
|
#define _ETHERNET_PROTECTED_H
|
|
|
|
#include <kwrap/nvt_type.h>
|
|
#include "netif/nvt_eth.h"
|
|
|
|
//#define ETH_EXTERNAL_PHY // External PHY
|
|
//#define ETH_EXTERNAL_CLK // Input Mode
|
|
//#define ETH_RGMII
|
|
//#define RGMII_RX_DELAY_CHAIN
|
|
|
|
/*
|
|
@addtogroup mIDrvIO_Eth
|
|
*/
|
|
//@{
|
|
|
|
/**
|
|
@name Ethernet general call back prototype
|
|
|
|
@param[in] UINT32 buffer address
|
|
@param[in] UINT32 buffer length
|
|
|
|
@return UINT32
|
|
*/
|
|
typedef UINT32(*ETH_CALLBACK_HDL)(UINT32, UINT32);
|
|
|
|
/*
|
|
MAC Address ID
|
|
|
|
@note ethernet IP has has multiple MAC address, total 32 MAC address
|
|
*/
|
|
typedef enum {
|
|
ETH_MAC_ID_0, //< MAC address 0
|
|
ETH_MAC_ID_1, //< MAC address 1
|
|
ETH_MAC_ID_2, //< MAC address 2
|
|
ETH_MAC_ID_3, //< MAC address 3
|
|
ETH_MAC_ID_4, //< MAC address 4
|
|
ETH_MAC_ID_5, //< MAC address 5
|
|
ETH_MAC_ID_6, //< MAC address 6
|
|
ETH_MAC_ID_7, //< MAC address 7
|
|
ETH_MAC_ID_8, //< MAC address 8
|
|
ETH_MAC_ID_9, //< MAC address 9
|
|
ETH_MAC_ID_10, //< MAC address 10
|
|
ETH_MAC_ID_11, //< MAC address 11
|
|
ETH_MAC_ID_12, //< MAC address 12
|
|
ETH_MAC_ID_13, //< MAC address 13
|
|
ETH_MAC_ID_14, //< MAC address 14
|
|
ETH_MAC_ID_15, //< MAC address 15
|
|
|
|
ETH_MAC_ID_COUNT, //< MAC address count
|
|
|
|
ENUM_DUMMY4WORD(ETH_MAC_ID)
|
|
} ETH_MAC_ID;
|
|
|
|
/*
|
|
Ethernet loopback mode
|
|
|
|
*/
|
|
/*
|
|
typedef enum {
|
|
ETH_LOOPBACK_MODE_DISABLE, //< Normal (disable loopback)
|
|
ETH_LOOPBACK_MODE_MAC, //< Loopback at MAC layer
|
|
ETH_LOOPBACK_MODE_PHY, //< Loopback at PHY layer
|
|
ETH_LOOPBACK_MODE_EXTERNAL, //< Loopback at External layer
|
|
|
|
ENUM_DUMMY4WORD(ETH_LOOPBACK_MODE_ENUM)
|
|
} ETH_LOOPBACK_MODE_ENUM;
|
|
*/
|
|
/*
|
|
Ethernet duplex mode
|
|
|
|
*/
|
|
typedef enum {
|
|
ETH_DUPLEX_HALF, //< Half duplex
|
|
ETH_DUPLEX_FULL, //< Full duplex
|
|
|
|
ENUM_DUMMY4WORD(ETH_DUPLEX_ENUM)
|
|
} ETH_DUPLEX_ENUM;
|
|
|
|
/*
|
|
Ethernet Configuration ID
|
|
|
|
*/
|
|
/*
|
|
typedef enum {
|
|
ETH_CONFIG_ID_SET_MEM_REGION, //< Install buffer address.
|
|
//< Context should be DRAM address
|
|
ETH_CONFIG_ID_MAC_ADDR, //< local MAC address
|
|
//< Context should be a unsigned char array
|
|
//< length should be 6 bytes
|
|
ETH_CONFIG_ID_LOOPBACK, //< loopback option
|
|
//< Context can be:
|
|
//< - @b ETH_LOOPBACK_MODE_DISABLE
|
|
//< - @b ETH_LOOPBACK_MODE_MAC
|
|
//< - @b ETH_LOOPBACK_MODE_PHY
|
|
ETH_CONFIG_ID_WRITE_DETECT_TEST,//< Write detect test option
|
|
//< Context can be: TRUE or FALSE
|
|
ETH_CONFIG_ID_SPEED, //< Force MAC/PHY speed
|
|
//< Context can be:
|
|
//< - @b 10
|
|
//< - @b 100
|
|
//< - @b 1000
|
|
ETH_CONFIG_ID_DUPLEX, //< Force MAC/PHY duplex
|
|
//< Context can be:
|
|
//< - @b ETH_DUPLEX_HALF
|
|
//< - @b ETH_DUPLEX_FULL
|
|
|
|
|
|
ETH_CONFIG_ID_COUNT, //< MAC address count
|
|
|
|
ETH_CONFIG_SET_LPI, //< Enable/Disable LPI
|
|
ETH_CONFIG_SET_PMT, //< Enable/Disable PMT
|
|
ETH_CONFIG_SET_MSS, //< Set MSS
|
|
|
|
ENUM_DUMMY4WORD(ETH_CONFIG_ID)
|
|
} ETH_CONFIG_ID;
|
|
*/
|
|
/*
|
|
Ethernet payload type
|
|
|
|
*/
|
|
/*
|
|
typedef enum {
|
|
ETH_PAYLOAD_RAW, //< Raw data
|
|
ETH_PAYLOAD_IP, //< IP(v4) packet
|
|
ETH_PAYLOAD_ARP, //< ARP packet
|
|
ETH_PAYLOAD_TCP, //< TCP packet (IP/TCP)
|
|
ETH_PAYLOAD_UDP, //< UDP packet (IP/UDP)
|
|
|
|
ENUM_DUMMY4WORD(ETH_PAYLOAD_ENUM)
|
|
} ETH_PAYLOAD_ENUM;
|
|
*/
|
|
/*
|
|
Ethernet call back list
|
|
*/
|
|
typedef enum {
|
|
ETH_CALLBACK_RX_DONE, //< rx done
|
|
|
|
ENUM_DUMMY4WORD(ETH_CALLBACK)
|
|
} ETH_CALLBACK;
|
|
/*
|
|
#define htons __builtin_bswap16
|
|
#define ntohs __builtin_bswap16
|
|
#define htonl __builtin_bswap32
|
|
#define ntohl __builtin_bswap32
|
|
*/
|
|
#define swap_uint32(x) ((((x) & 0x000000FF) << 24) | \
|
|
(((x) & 0x0000FF00) << 8) | \
|
|
(((x) & 0x00FF0000) >> 8) | \
|
|
(((x) & 0xFF000000) >> 24))
|
|
|
|
#define swap_uint16(x) ((((x) & 0x00FF) << 8) | \
|
|
(( (x) & 0xFF00) >>8 ))
|
|
|
|
extern void eth_init(void);
|
|
extern ER eth_open(void);
|
|
extern ER eth_close(void);
|
|
extern ER eth_setConfig(ETH_CONFIG_ID configID, UINT32 uiConfig);
|
|
extern ER eth_getConfig(ETH_CONFIG_ID configID, UINT32 *pConfigContext);
|
|
extern ER eth_setCallBack(ETH_CALLBACK callBackID, ETH_CALLBACK_HDL pCallBack);
|
|
extern UINT32 eth_getPhyID(void);
|
|
extern ER eth_send(UINT8 *pDstAddr, ETH_PAYLOAD_ENUM type, UINT32 uiLen, UINT8 *pData);
|
|
extern ER eth_waitRcv(UINT32 uiBufSize, UINT32 *puiLen, UINT8 *pData);
|
|
|
|
extern ER eth_send_prepare(UINT8 *pDstAddr, ETH_PAYLOAD_ENUM type, UINT32 uiLen, UINT8 *pData);
|
|
extern ER eth_sendandwait(void);
|
|
|
|
extern void eth_clearWGisr(void);
|
|
|
|
//@}
|
|
|
|
#endif
|
|
|
|
|
|
|