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

📄 ag7100.h

📁 TP-LINK公司TL-WR941N无线路由器的Bootloader U_BOOT源代码
💻 H
字号:
#ifndef _AG7100_H#define _AG7100_H#include <linux/types.h>/* * h/w descriptor */typedef struct {    uint32_t    pkt_start_addr;    uint32_t    is_empty       :  1;    uint32_t    res1           : 10;    uint32_t    ftpp_override  :  5;    uint32_t    res2           :  4;    uint32_t    pkt_size       : 12;    uint32_t    next_desc      ;}ag7100_desc_t;#define NO_OF_TX_FIFOS  8#define NO_OF_RX_FIFOS  8typedef struct {    ag7100_desc_t *fifo_tx[NO_OF_TX_FIFOS];    ag7100_desc_t *fifo_rx[NO_OF_RX_FIFOS];    u32            next_tx;    u32            next_rx;    u32            link;    u32            duplex;    u32            speed;}ag7100_mac_t;#define ag7100_reg_wr(_x, _y)   ar7100_reg_wr(((_x) + AR7100_GE0_BASE), (_y))#define ag7100_reg_rd(_x)       ar7100_reg_rd(((_x) + AR7100_GE0_BASE))#define ag7100_reg_rmw_set(_x, _y)   \    ar7100_reg_rmw_set(((_x) + AR7100_GE0_BASE), (_y))#define ag7100_reg_rmw_clear(_x, _y)    \    ar7100_reg_rmw_clear(((_x) + AR7100_GE0_BASE), (_y))/* * spd is _1000BASET, _100BASET etc. defined in include/miiphy.h */#define ag7100_set_mii_ctrl_speed(_spd)   do {                        \    ar7100_reg_rmw_clear(AR7100_MII0_CTRL, (3 << 4));                 \    ar7100_reg_rmw_set(AR7100_MII0_CTRL, (((_spd) >> 2) << 4));       \}while(0);#if defined (CFG_MII0_GMII)#define ag7100_get_mii_if()             0#elif defined (CFG_MII0_MII)#define ag7100_get_mii_if()             0#elif defined (CFG_MII0_RGMII)#define ag7100_get_mii_if()             0#elif defined (CFG_MII0_RMII)#define ag7100_get_mii_if()             0#endif        #define MAX_WAIT        1000/* * Config/Mac Register definitions */#define AG7100_MAC_CFG1             0x00#define AG7100_MAC_CFG2             0x04#define AG7100_MAC_IFCTL            0x38/* * fifo control registers */#define AG7100_MAC_FIFO_CFG_0      0x48#define AG7100_MAC_FIFO_CFG_1      0x4c#define AG7100_MAC_FIFO_CFG_2      0x50#define AG7100_MAC_FIFO_CFG_3      0x54#define AG7100_MAC_FIFO_CFG_4      0x58#define AG7100_MAC_FIFO_CFG_5      0x5c#define AG7100_BYTE_PER_CLK_EN     (1 << 19)#define AG7100_MAC_FIFO_RAM_0      0x60#define AG7100_MAC_FIFO_RAM_1      0x64#define AG7100_MAC_FIFO_RAM_2      0x68#define AG7100_MAC_FIFO_RAM_3      0x6c#define AG7100_MAC_FIFO_RAM_4      0x70#define AG7100_MAC_FIFO_RAM_5      0x74#define AG7100_MAC_FIFO_RAM_6      0x78#define AG7100_MAC_FIFO_RAM_7      0x7c/* * fields */#define AG7100_MAC_CFG1_SOFT_RST       (1 << 31)#define AG7100_MAC_CFG1_LOOPBACK       (1 << 8)#define AG7100_MAC_CFG1_RX_EN          (1 << 2)#define AG7100_MAC_CFG1_TX_EN          (1 << 0)#define AG7100_MAC_CFG2_FDX            (1 << 0)#define AG7100_MAC_CFG2_PAD_CRC_EN     (1 << 2)#define AG7100_MAC_CFG2_LEN_CHECK      (1 << 4)#define AG7100_MAC_CFG2_HUGE_FRAME_EN  (1 << 5)#define AG7100_MAC_CFG2_IF_1000        (1 << 9)#define AG7100_MAC_CFG2_IF_10_100      (1 << 8)#define AG7100_MAC_IFCTL_SPEED         (1 << 16)/* * DMA (tx/rx) register defines */#define AG7100_DMA_TX_CTRL              0x180#define AG7100_DMA_TX_DESC              0x184#define AG7100_DMA_TX_STATUS            0x188#define AG7100_DMA_RX_CTRL              0x18c#define AG7100_DMA_RX_DESC              0x190#define AG7100_DMA_RX_STATUS            0x194#define AG7100_DMA_INTR_MASK            0x198#define AG7100_DMA_INTR                 0x19c/* * tx/rx ctrl and status bits */#define AG7100_TXE                      (1 << 0)#define AG7100_TX_STATUS_PKTCNT_SHIFT   16#define AG7100_TX_STATUS_PKT_SENT       0x1#define AG7100_TX_STATUS_URN            0x2#define AG7100_TX_STATUS_BUS_ERROR      0x8#define AG7100_RXE                      (1 << 0)#define AG7100_RX_STATUS_PKTCNT_MASK    0xff0000#define AG7100_RX_STATUS_PKT_RCVD       (1 << 0)#define AG7100_RX_STATUS_OVF            (1 << 2)#define AG7100_RX_STATUS_BUS_ERROR      (1 << 3)/* * Int and int mask */#define AG7100_INTR_TX                  (1 << 0)#define AG7100_INTR_TX_URN              (1 << 1)#define AG7100_INTR_TX_BUS_ERROR        (1 << 3)#define AG7100_INTR_RX                  (1 << 4)#define AG7100_INTR_RX_OVF              (1 << 6)#define AG7100_INTR_RX_BUS_ERROR        (1 << 7)/* * MII registers */#define AG7100_MAC_MII_MGMT_CFG         0x20#define AG7100_MGMT_CFG_CLK_DIV_20      0x06#define AG7100_MII_MGMT_CMD             0x24#define AG7100_MGMT_CMD_READ            0x1#define AG7100_MII_MGMT_ADDRESS         0x28#define AG7100_ADDR_SHIFT               8#define AG7100_MII_MGMT_CTRL            0x2c#define AG7100_MII_MGMT_STATUS          0x30#define AG7100_MII_MGMT_IND             0x34#define AG7100_MGMT_IND_BUSY            (1 << 0)#define AG7100_MGMT_IND_INVALID         (1 << 2)#define AG7100_GE_MAC_ADDR1             0x40#define AG7100_GE_MAC_ADDR2             0x44/* *  * ownership of descriptors between DMA and cpu *   */#define ag7100_rx_owned_by_dma(_ds)     ((_ds)->is_empty == 1)#define ag7100_rx_give_to_dma(_ds)      ((_ds)->is_empty = 1)#define ag7100_tx_owned_by_dma(_ds)     ((_ds)->is_empty == 0)#define ag7100_tx_give_to_dma(_ds)      ((_ds)->is_empty = 0)#define ag7100_tx_own(_ds)              ((_ds)->is_empty = 1)/* * link settings */#define ag7100_set_mac_duplex(_fdx)       do {                         \    if ((_fdx))                                                              \        ag7100_reg_rmw_set(AG7100_MAC_CFG2, AG7100_MAC_CFG2_FDX)     \    else                                                                     \        ag7100_reg_rmw_clear(AG7100_MAC_CFG2, AG7100_MAC_CFG2_FDX)   \}while(0)#define ag7100_set_mac_if(_isXGMII)    do {                              \    ag7100_reg_rmw_clear(AG7100_MAC_CFG2, AG7100_MAC_CFG2_IF_1000|      \                                          AG7100_MAC_CFG2_IF_10_100);   \    if ((_isXGMII)) {                                            \        ag7100_reg_rmw_set(AG7100_MAC_CFG2, AG7100_MAC_CFG2_IF_1000)  \        ag7100_reg_rmw_set(AG7100_MAC_FIFO_CFG_5, AG7100_BYTE_PER_CLK_EN);\    }                                                                       \    else {                                                              \        ag7100_reg_rmw_set(AG7100_MAC_CFG2, AG7100_MAC_CFG2_IF_10_100)\        ag7100_reg_rmw_clear(AG7100_MAC_FIFO_CFG_5, AG7100_BYTE_PER_CLK_EN);\    }                                                                       \}while(0)#define ag7100_set_mac_speed(_is100)   do {                             \    if ((_is100))                                                             \        ag7100_reg_rmw_set(AG7100_MAC_IFCTL, AG7100_MAC_IFCTL_SPEED)  \    else                                                                      \        ag7100_reg_rmw_clear(AG7100_MAC_IFCTL, AG7100_MAC_IFCTL_SPEED)\}while(0)#endif

⌨️ 快捷键说明

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