mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-30 02:00:30 +00:00
192 lines
3.9 KiB
C
192 lines
3.9 KiB
C
|
/*
|
||
|
* 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_
|
||
|
|