diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/atsam/libraries/libchip/include/gmacd.h')
-rw-r--r-- | c/src/lib/libbsp/arm/atsam/libraries/libchip/include/gmacd.h | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/gmacd.h b/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/gmacd.h deleted file mode 100644 index 9cda2f8a6c..0000000000 --- a/c/src/lib/libbsp/arm/atsam/libraries/libchip/include/gmacd.h +++ /dev/null @@ -1,283 +0,0 @@ -/* ---------------------------------------------------------------------------- */ -/* Atmel Microcontroller Software Support */ -/* SAM Software Package License */ -/* ---------------------------------------------------------------------------- */ -/* Copyright (c) 2015, Atmel Corporation */ -/* */ -/* All rights reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or without */ -/* modification, are permitted provided that the following condition is met: */ -/* */ -/* - Redistributions of source code must retain the above copyright notice, */ -/* this list of conditions and the disclaimer below. */ -/* */ -/* Atmel's name may not be used to endorse or promote products derived from */ -/* this software without specific prior written permission. */ -/* */ -/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */ -/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */ -/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */ -/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ -/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ -/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ -/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ -/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* ---------------------------------------------------------------------------- */ - -/** \file */ - -/** \addtogroup gmacd_module - * @{ - * Implement GMAC data transfer and PHY management functions. - * - * \section Usage - * -# Implement GMAC interrupt handler, which must invoke GMACD_Handler() - * to handle GMAC interrupt events. - * -# Implement sGmacd instance in application. - * -# Initialize the instance with GMACD_Init() and GMACD_InitTransfer(), - * so that GMAC data can be transmitted/received. - * -# Some management callbacks can be set by GMACD_SetRxCallback() - * and GMACD_SetTxWakeupCallback(). - * -# Send ethernet packets using GMACD_Send(), GMACD_TxLoad() is used - * to check the free space in TX queue. - * -# Check and obtain received ethernet packets via GMACD_Poll(). - * - * \sa \ref gmacb_module, \ref gmac_module - * - * Related files:\n - * \ref gmacd.c\n - * \ref gmacd.h.\n - * - * \defgroup gmacd_defines GMAC Driver Defines - * \defgroup gmacd_types GMAC Driver Types - * \defgroup gmacd_functions GMAC Driver Functions - */ -/**@}*/ - -#ifndef _GMACD_H_ -#define _GMACD_H_ - -/*--------------------------------------------------------------------------- - * Headers - *---------------------------------------------------------------------------*/ - -#include "chip.h" - - -/*--------------------------------------------------------------------------- - * Definitions - *---------------------------------------------------------------------------*/ -/** \addtogroup gmacd_defines - @{*/ - - -/** \addtogroup gmacd_rc GMACD Return Codes - @{*/ -#define GMACD_OK 0 /**< Operation OK */ -#define GMACD_TX_BUSY 1 /**< TX in progress */ -#define GMACD_RX_NULL 1 /**< No data received */ -/** Buffer size not enough */ -#define GMACD_SIZE_TOO_SMALL 2 -/** Parameter error, TX packet invalid or RX size too small */ -#define GMACD_PARAM 3 -/** Transfer is not initialized */ -#define GMACD_NOT_INITIALIZED 4 -/** @}*/ - -/** @}*/ - -/* Should be a power of 2. - - Buffer Length to store the timestamps of 1588 event messages -*/ -#define EFRS_BUFFER_LEN (1u) - -/*--------------------------------------------------------------------------- -* Types -*---------------------------------------------------------------------------*/ -/** \addtogroup gmacd_types - @{*/ - -typedef enum ptpMsgType_t { - SYNC_MSG_TYPE = 0, - DELAY_REQ_MSG_TYPE = 1, - PDELAY_REQ_TYPE = 2, - PDELAY_RESP_TYPE = 3, - FOLLOW_UP_MSG_TYPE = 8, - DELAY_RESP_MSG_TYPE = 9 -} ptpMsgType; - - - -/** RX callback */ -typedef void (*fGmacdTransferCallback)(uint32_t status); -/** Wakeup callback */ -typedef void (*fGmacdWakeupCallback)(void); -/** Tx PTP message callback */ -typedef void (*fGmacdTxPtpEvtCallBack) (ptpMsgType msg, uint32_t sec, \ - uint32_t nanosec, uint16_t seqId); - -/** - * GMAC scatter-gather entry. - */ -typedef struct _GmacSG { - uint32_t size; - void *pBuffer; -} sGmacSG; - -/** - * GMAC scatter-gather list. - */ -typedef struct _GmacSGList { - uint32_t len; - sGmacSG *sg; -} sGmacSGList; - -/** - * GMAC Queue driver. - */ -typedef struct _GmacQueueDriver { - uint8_t *pTxBuffer; - /** Pointer to allocated RX buffer */ - uint8_t *pRxBuffer; - - /** Pointer to Rx TDs (must be 8-byte aligned) */ - sGmacRxDescriptor *pRxD; - /** Pointer to Tx TDs (must be 8-byte aligned) */ - sGmacTxDescriptor *pTxD; - - /** Optional callback to be invoked once a frame has been received */ - fGmacdTransferCallback fRxCb; - /** Optional callback to be invoked once several TD have been released */ - fGmacdWakeupCallback fWakupCb; - /** Optional callback list to be invoked once TD has been processed */ - fGmacdTransferCallback *fTxCbList; - - /** Optional callback to be invoked on transmit of PTP Event messages */ - fGmacdTxPtpEvtCallBack fTxPtpEvtCb; - - /** RX TD list size */ - uint16_t wRxListSize; - /** RX index for current processing TD */ - uint16_t wRxI; - - /** TX TD list size */ - uint16_t wTxListSize; - /** Circular buffer head pointer by upper layer (buffer to be sent) */ - uint16_t wTxHead; - /** Circular buffer tail pointer incremented by handlers (buffer sent) */ - uint16_t wTxTail; - - /** Number of free TD before wakeup callback is invoked */ - uint8_t bWakeupThreshold; - - /** RX buffer size */ - uint16_t wTxBufferSize; - uint16_t wRxBufferSize; - -} sGmacQd; - -/** - * GMAC driver struct. - */ -typedef struct _GmacDriver { - - /** Pointer to HW register base */ - Gmac *pHw; - /** HW ID */ - uint8_t bId; - /** Base Queue list params **/ - sGmacQd queueList[NUM_GMAC_QUEUES]; -} sGmacd; - -/** - * GMAC driver init struct. - */ -typedef struct _GmacInit { - uint32_t bIsGem: 1; - uint32_t reserved: 31; - - uint8_t bDmaBurstLength; - - /** RX descriptor and data buffers */ - uint8_t *pRxBuffer; - /** RX data buffers: should be wRxBufferSize * wRxSize byte long in a DMA - capable memory region */ - sGmacRxDescriptor *pRxD; - /** RX buffer descriptors: should have wRxSize entries in a DMA - capable memory region */ - uint16_t wRxBufferSize; /** size of a single RX data buffer */ - uint16_t wRxSize; /** number of RX descriptor and data buffers */ - - /** TX descriptor and data buffers */ - /** TX data buffers: should be wTxBufferSize * wTxSize byte long - in a DMA capable memory region */ - uint8_t *pTxBuffer; - /** TX buffer descriptors: should have wTxSize entries - in a DMA capable non-cached memory region */ - sGmacTxDescriptor *pTxD; - /** size of a single TX data buffer */ - uint16_t wTxBufferSize; - /** number of TX descriptor and data buffers */ - uint16_t wTxSize; - - fGmacdTransferCallback *pTxCb; /** should have wTxSize entries */ -} sGmacInit; -/** @}*/ - -/** \addtogroup gmacd_functions - @{*/ - -/*--------------------------------------------------------------------------- - * GMAC Exported functions - *---------------------------------------------------------------------------*/ - -extern void GMACD_Handler(sGmacd *pGmacd , gmacQueList_t queIdx); - -extern void GMACD_Init(sGmacd *pGmacd, - Gmac *pHw, - uint8_t bID, - uint8_t enableCAF, - uint8_t enableNBC); - -extern uint8_t GMACD_InitTransfer(sGmacd *pGmacd, - const sGmacInit *pInit, gmacQueList_t queIdx); - -extern void GMACD_Reset(sGmacd *pGmacd); - -extern uint8_t GMACD_SendSG(sGmacd *pGmacd, - const sGmacSGList *sgl, - fGmacdTransferCallback fTxCb, - gmacQueList_t queIdx); - -extern uint8_t GMACD_Send(sGmacd *pGmacd, - void *pBuffer, - uint32_t size, - fGmacdTransferCallback fTxCb, - gmacQueList_t queIdx); - -extern uint32_t GMACD_TxLoad(sGmacd *pGmacd, gmacQueList_t queIdx); - -extern uint8_t GMACD_Poll(sGmacd *pGmacd, - uint8_t *pFrame, - uint32_t frameSize, - uint32_t *pRcvSize, - gmacQueList_t queIdx); - -extern void GMACD_SetRxCallback(sGmacd *pGmacd, fGmacdTransferCallback - fRxCb, gmacQueList_t queIdx); - -extern uint8_t GMACD_SetTxWakeupCallback(sGmacd *pGmacd, - fGmacdWakeupCallback fWakeup, - uint8_t bThreshold, - gmacQueList_t queIdx); - -extern void GMACD_TxPtpEvtMsgCBRegister (sGmacd *pGmacd, - fGmacdTxPtpEvtCallBack pTxPtpEvtCb, - gmacQueList_t queIdx); - -/** @}*/ - -#endif // #ifndef _GMACD_H_ |