/* * Routines to access hardware * * Copyright (c) 2013 Realtek Semiconductor Corp. * * This module is a confidential and proprietary property of RealTek and * possession or use of this module requires written permission of RealTek. */ #ifndef _HAL_MII_H_ #define _HAL_MII_H_ #include "rtl8195a_mii.h" /** * LOG Configurations */ #define NOLOG #define LOG_TAG "NoTag" #define LOG_INFO_HEADER "I" #define LOG_DEBUG_HEADER "D" #define LOG_ERROR_HEADER "E" #define LOG_TEST_HEADER "T" #define IDENT_TWO_SPACE " " #define IDENT_FOUR_SPACE " " #define LOG_INFO(...) do {\ DiagPrintf("\r"LOG_INFO_HEADER"/"LOG_TAG": " __VA_ARGS__);\ }while(0) #define LOG_DEBUG(...) do {\ DiagPrintf("\r"LOG_DEBUG_HEADER"/"LOG_TAG": " __VA_ARGS__);\ }while(0) #define LOG_ERROR(...) do {\ DiagPrintf("\r"LOG_ERROR_HEADER"/"LOG_TAG": " __VA_ARGS__);\ }while(0) #ifdef NOLOG #define LOGI #define LOGD #define LOGE #define LOGI2 #define LOGD2 #define LOGE2 #define LOGI4 #define LOGD4 #define LOGE4 #else #define LOGI LOG_INFO #define LOGD LOG_DEBUG #define LOGE LOG_ERROR #define LOGI2(...) LOG_INFO(IDENT_TWO_SPACE __VA_ARGS__) #define LOGD2(...) LOG_DEBUG(IDENT_TWO_SPACE __VA_ARGS__) #define LOGE2(...) LOG_ERROR(IDENT_TWO_SPACE __VA_ARGS__) #define LOGI4(...) LOG_INFO(IDENT_FOUR_SPACE __VA_ARGS__) #define LOGD4(...) LOG_DEBUG(IDENT_FOUR_SPACE __VA_ARGS__) #define LOGE4(...) LOG_ERROR(IDENT_FOUR_SPACE __VA_ARGS__) #endif #define ANSI_COLOR_GREEN "\x1b[32m" #define ANSI_COLOR_CYAN "\x1b[36m" #define ANSI_COLOR_YELLOW "\x1b[33m" #define ANSI_COLOR_MAGENTA "\x1b[35m" #define ANSI_COLOR_RED "\x1b[31m" #define ANSI_COLOR_BLUE "\x1b[34m" #define ANSI_COLOR_RESET "\x1b[0m" #define DBG_ENTRANCE LOGI(ANSI_COLOR_GREEN "=> %s() <%s>\n" ANSI_COLOR_RESET, \ __func__, __FILE__) // GMAC MII Configurations #ifdef LOG_TAG #undef LOG_TAG #define LOG_TAG "MII" #endif typedef enum { ETH_TXDONE, ETH_RXDONE, ETH_LINKUP, ETH_LINKDOWN }EthernetEventType; typedef struct _HAL_ETHER_ADAPTER_{ IRQ_HANDLE IrqHandle; u32 InterruptMask; u8 tx_desc_num; u8 rx_desc_num; volatile u8 *TxDescAddr; volatile u8 *RxDescAddr; volatile u8 *pTxPktBuf; volatile u8 *pRxPktBuf; VOID (*CallBack)(u32 Event, u32 Data); }HAL_ETHER_ADAPTER, *PHAL_ETHER_ADAPTER; extern s32 HalMiiInit( IN VOID ); extern VOID HalMiiDeInit( IN VOID ); extern s32 HalMiiWriteData( IN const char *Data, IN u32 Size ); extern u32 HalMiiSendPacket( IN VOID ); extern u32 HalMiiReceivePacket( IN VOID ); extern u32 HalMiiReadData( IN u8 *Data, IN u32 Size ); extern VOID HalMiiGetMacAddress( IN u8 *Addr ); extern u32 HalMiiGetLinkStatus( IN VOID ); extern VOID HalMiiForceLink( IN s32 Speed, IN s32 Duplex ); #ifdef CONFIG_MII_VERIFY typedef struct _HAL_MII_ADAPTER_ { u32 InterruptMask; PPHY_MODE_INFO pPhyModeInfo; }HAL_MII_ADAPTER, *PHAL_MII_ADAPTER; typedef struct _HAL_MII_OP_ { BOOL (*HalMiiGmacInit)(VOID *Data); BOOL (*HalMiiGmacReset)(VOID *Data); BOOL (*HalMiiGmacEnablePhyMode)(VOID *Data); u32 (*HalMiiGmacXmit)(VOID *Data); VOID (*HalMiiGmacCleanTxRing)(VOID *Data); VOID (*HalMiiGmacFillTxInfo)(VOID *Data); VOID (*HalMiiGmacFillRxInfo)(VOID *Data); VOID (*HalMiiGmacTx)(VOID *Data); VOID (*HalMiiGmacRx)(VOID *Data); VOID (*HalMiiGmacSetDefaultEthIoCmd)(VOID *Data); VOID (*HalMiiGmacInitIrq)(VOID *Data); u32 (*HalMiiGmacGetInterruptStatus)(VOID); VOID (*HalMiiGmacClearInterruptStatus)(u32 IsrStatus); }HAL_MII_OP, *PHAL_MII_OP; VOID HalMiiOpInit(IN VOID *Data); typedef struct _MII_ADAPTER_ { PHAL_MII_OP pHalMiiOp; PHAL_MII_ADAPTER pHalMiiAdapter; PTX_INFO pTx_Info; PRX_INFO pRx_Info; VOID* TxBuffer; VOID* RxBuffer; }MII_ADAPTER, *PMII_ADAPTER; #endif // #ifdef CONFIG_MII_VERIFY #endif // #ifndef _HAL_MII_H_