⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eth_ocm_desc.h

📁 sopc builder 中网络的eth_ocm核
💻 H
字号:
#ifndef __ETH_OCM_DESCRIPTORS_H__
#define __ETH_OCM_DESCRIPTORS_H__

#include <errno.h>
#include "eth_ocm_regs.h"

#define ETH_OCM_DESC_SIZE       2   //descriptors span two word
#define ETH_OCM_DESC_CTRL_WRD   0   //Control word is first word
#define ETH_OCM_DESC_PTR_WRD    1   //Pointer is second word
#define ETH_OCM_MAX_DESCRIPTORS 128

#define IOWR_ETH_OCM_DESC_CTRL(base, desc, dat) \
    IOWR(base, (ETH_OCM_DESC_START + (desc<<1)), dat)
#define IORD_ETH_OCM_DESC_CTRL(base, desc)  \
    IORD(base, (ETH_OCM_DESC_START + (desc<<1)))

#define IOWR_ETH_OCM_DESC_PTR(base, desc, dat) \
    IOWR(base, ((ETH_OCM_DESC_START + (desc<<1)) | 1), dat)
#define IORD_ETH_OCM_DESC_PTR(base, desc) \
    IORD(base, ((ETH_OCM_DESC_START + (desc<<1)) | 1))

//Transmit descriptor bit masks
#define ETH_OCM_TXDESC_LEN_MSK      0xFFFF0000
#define ETH_OCM_TXDESC_LEN_OFST     16
#define ETH_OCM_TXDESC_READY_MSK    0x00008000
#define ETH_OCM_TXDESC_READY_OFST   15
#define ETH_OCM_TXDESC_IRQ_MSK      0x00004000
#define ETH_OCM_TXDESC_IRQ_OFST     14
#define ETH_OCM_TXDESC_WRAP_MSK     0x00002000
#define ETH_OCM_TXDESC_WRAP_OFST    13
#define ETH_OCM_TXDESC_PAD_MSK      0x00001000
#define ETH_OCM_TXDESC_PAD_OFST     12
#define ETH_OCM_TXDESC_CRC_MSK      0x00000800
#define ETH_OCM_TXDESC_CRC_OFST     11
#define ETH_OCM_TXDESC_UR_MSK       0x00000100
#define ETH_OCM_TXDESC_UR_OFST      8
#define ETH_OCM_TXDESC_RTRY_MSK     0x000000F0
#define ETH_OCM_TXDESC_RTRY_OFST    4
#define ETH_OCM_TXDESC_RL_MSK       0x00000008
#define ETH_OCM_TXDESC_RL_OFST      3
#define ETH_OCM_TXDESC_LC_MSK       0x00000004
#define ETH_OCM_TXDESC_LC_OFST      2
#define ETH_OCM_TXDESC_DF_MSK       0x00000002
#define ETH_OCM_TXDESC_DF_OFST      1
#define ETH_OCM_TXDESC_CS_MSK       0x00000001
#define ETH_OCM_TXDESC_CS_OFST      0
//End transmit descriptor bit masks

//Receive descriptor bit masks
#define ETH_OCM_RXDESC_LEN_MSK      0xFFFF0000
#define ETH_OCM_RXDESC_LEN_OFST     16
#define ETH_OCM_RXDESC_EMPTY_MSK    0x00008000
#define ETH_OCM_RXDESC_EMPTY_OFST   15
#define ETH_OCM_RXDESC_IRQ_MSK      0x00004000
#define ETH_OCM_RXDESC_IRQ_OFST     14
#define ETH_OCM_RXDESC_WRAP_MSK     0x00002000
#define ETH_OCM_RXDESC_WRAP_OFST    13
#define ETH_OCM_RXDESC_CF_MSK       0x00000100
#define ETH_OCM_RXDESC_CF_OFST      8
#define ETH_OCM_RXDESC_M_MSK        0x00000080
#define ETH_OCM_RXDESC_M_OFST       7
#define ETH_OCM_RXDESC_OR_MSK       0x00000040
#define ETH_OCM_RXDESC_OR_OFST      6
#define ETH_OCM_RXDESC_IS_MSK       0x00000020
#define ETH_OCM_RXDESC_IS_OFST      5
#define ETH_OCM_RXDESC_DN_MSK       0x00000010
#define ETH_OCM_RXDESC_DN_OFST      4
#define ETH_OCM_RXDESC_TL_MSK       0x00000008
#define ETH_OCM_RXDESC_TL_OFST      3
#define ETH_OCM_RXDESC_SF_MSK       0x00000004
#define ETH_OCM_RXDESC_SF_OFST      2
#define ETH_OCM_RXDESC_CRC_MSK      0x00000002
#define ETH_OCM_RXDESC_CRC_OFST     1
#define ETH_OCM_RXDESC_LC_MSK       0x00000001
#define ETH_OCM_RXDESC_LC_OFST      0
//End receive descriptor bit masks

#define ETH_OCM_RXDESC_ERROR_MSK    \
    (ETH_OCM_RXDESC_OR_MSK  |       \
    ETH_OCM_RXDESC_IS_MSK   |       \
    ETH_OCM_RXDESC_DN_MSK   |       \
    ETH_OCM_RXDESC_TL_MSK   |       \
    ETH_OCM_RXDESC_SF_MSK   |       \
    ETH_OCM_RXDESC_CRC_MSK  |       \
    ETH_OCM_RXDESC_LC_MSK)        \

typedef struct{
    alt_u32     ctrl;
    alt_u32     ptr;
} eth_ocm_desc;

#endif //__ETH_OCM_DESCRIPTORS_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -