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

📄 lan_am79c973.c

📁 MIPS YAMON, a famous monitor inc. source, make file and PDF manuals.
💻 C
📖 第 1 页 / 共 5 页
字号:
/* field: MACADR4 */#define INIT_WORD2_MACADR4_SHF          0#define INIT_WORD2_MACADR4_MSK          (MSK(8) << INIT_WORD2_MACADR4_SHF)/******** reg: Init Block, WORD3 ********//******** reg: Init Block, WORD4 ********//******** reg: Init Block, WORD5 ********//******** reg: Init Block, WORD6 ********//************************************************************************ *  LAN AM79C973: Receive Descriptor Element (SSIZE32=1)*************************************************************************/#define RDE_WORD0_OFS    0x00000       /* Word0:                       */#define RDE_WORD1_OFS    0x00004       /* Word1:                       */#define RDE_WORD2_OFS    0x00008       /* Word2:                       */#define RDE_WORD3_OFS    0x0000C       /* Word3:                       *//******** reg: RDE, WORD0 ********//******** reg: RDE, WORD1 ********//* field: OWN */#define RDE_WORD1_OWN_SHF              31#define RDE_WORD1_OWN_MSK              (MSK(1) << RDE_WORD1_OWN_SHF)/* field: ERR */#define RDE_WORD1_ERR_SHF              30#define RDE_WORD1_ERR_MSK              (MSK(1) << RDE_WORD1_ERR_SHF)/* field: FRAM */#define RDE_WORD1_FRAM_SHF             29#define RDE_WORD1_FRAM_MSK             (MSK(1) << RDE_WORD1_FRAM_SHF)/* field: OFLO */#define RDE_WORD1_OFLO_SHF             28#define RDE_WORD1_OFLO_MSK             (MSK(1) << RDE_WORD1_OFLO_SHF)/* field: CRC */#define RDE_WORD1_CRC_SHF              27#define RDE_WORD1_CRC_MSK              (MSK(1) << RDE_WORD1_CRC_SHF)/* field: BUFF */#define RDE_WORD1_BUFF_SHF             26#define RDE_WORD1_BUFF_MSK             (MSK(1) << RDE_WORD1_BUFF_SHF)/* field: STP */#define RDE_WORD1_STP_SHF              25#define RDE_WORD1_STP_MSK              (MSK(1) << RDE_WORD1_STP_SHF)/* field: ENP */#define RDE_WORD1_ENP_SHF              24#define RDE_WORD1_ENP_MSK              (MSK(1) << RDE_WORD1_ENP_SHF)/* field: BPE */#define RDE_WORD1_BPE_SHF              23#define RDE_WORD1_BPE_MSK              (MSK(1) << RDE_WORD1_BPE_SHF)/* field: PAM */#define RDE_WORD1_PAM_SHF              22#define RDE_WORD1_PAM_MSK              (MSK(1) << RDE_WORD1_PAM_SHF)/* field: LAFM */#define RDE_WORD1_LAFM_SHF             21#define RDE_WORD1_LAFM_MSK             (MSK(1) << RDE_WORD1_LAFM_SHF)/* field: BAM */#define RDE_WORD1_BAM_SHF              20#define RDE_WORD1_BAM_MSK              (MSK(1) << RDE_WORD1_BAM_SHF)/* field: ONES */#define RDE_WORD1_ONES_SHF             12#define RDE_WORD1_ONES_MSK             (MSK(4) << RDE_WORD1_ONES_SHF)/* field: BCNT */#define RDE_WORD1_BCNT_SHF             0#define RDE_WORD1_BCNT_MSK             (MSK(12) << RDE_WORD1_BCNT_SHF)/******** reg: RDE, WORD2 ********//* field: MCNT */#define RDE_WORD2_MCNT_SHF             0#define RDE_WORD2_MCNT_MSK             (MSK(12) << RDE_WORD2_MCNT_SHF)/******** reg: RDE, WORD3 ********//************************************************************************ *  LAN AM79C973: Transmit Descriptor Element (SSIZE32=1)*************************************************************************/#define TDE_WORD0_OFS    0x00000       /* Word0:                       */#define TDE_WORD1_OFS    0x00004       /* Word1:                       */#define TDE_WORD2_OFS    0x00008       /* Word2:                       */#define TDE_WORD3_OFS    0x0000C       /* Word3:                       *//******** reg: TDE, WORD0 ********//******** reg: TDE, WORD1 ********//* field: OWN */#define TDE_WORD1_OWN_SHF              31#define TDE_WORD1_OWN_MSK              (MSK(1) << TDE_WORD1_OWN_SHF)/* field: ERR */#define TDE_WORD1_ERR_SHF              30#define TDE_WORD1_ERR_MSK              (MSK(1) << TDE_WORD1_ERR_SHF)/* field: AFCS */#define TDE_WORD1_AFCS_SHF             29#define TDE_WORD1_AFCS_MSK             (MSK(1) << TDE_WORD1_AFCS_SHF)/* field: MORE */#define TDE_WORD1_MORE_SHF             28#define TDE_WORD1_MORE_MSK             (MSK(1) << TDE_WORD1_MORE_SHF)/* field: ONE */#define TDE_WORD1_ONE_SHF              27#define TDE_WORD1_ONE_MSK              (MSK(1) << TDE_WORD1_ONE_SHF)/* field: DEF */#define TDE_WORD1_DEF_SHF              26#define TDE_WORD1_DEF_MSK              (MSK(1) << TDE_WORD1_DEF_SHF)/* field: STP */#define TDE_WORD1_STP_SHF              25#define TDE_WORD1_STP_MSK              (MSK(1) << TDE_WORD1_STP_SHF)/* field: ENP */#define TDE_WORD1_ENP_SHF              24#define TDE_WORD1_ENP_MSK              (MSK(1) << TDE_WORD1_ENP_SHF)/* field: BPE */#define TDE_WORD1_BPE_SHF              23#define TDE_WORD1_BPE_MSK              (MSK(1) << TDE_WORD1_BPE_SHF)/* field: ONES */#define TDE_WORD1_ONES_SHF             12#define TDE_WORD1_ONES_MSK             (MSK(4) << TDE_WORD1_ONES_SHF)/* field: BCNT */#define TDE_WORD1_BCNT_SHF             0#define TDE_WORD1_BCNT_MSK             (MSK(12) << TDE_WORD1_BCNT_SHF)/******** reg: TDE, WORD2 ********//* field: BUFF */#define TDE_WORD2_BUFF_SHF             31#define TDE_WORD2_BUFF_MSK             (MSK(1) << TDE_WORD2_BUFF_SHF)/* field: UFLO */#define TDE_WORD2_UFLO_SHF             30#define TDE_WORD2_UFLO_MSK             (MSK(1) << TDE_WORD2_UFLO_SHF)/* field: EXDEF */#define TDE_WORD2_EXDEF_SHF            29#define TDE_WORD2_EXDEF_MSK            (MSK(1) << TDE_WORD2_EXDEF_SHF)/* field: LCOL */#define TDE_WORD2_LCOL_SHF             28#define TDE_WORD2_LCOL_MSK             (MSK(1) << TDE_WORD2_LCOL_SHF)/* field: LCAR */#define TDE_WORD2_LCAR_SHF             27#define TDE_WORD2_LCAR_MSK             (MSK(1) << TDE_WORD2_LCAR_SHF)/* field: RTRY */#define TDE_WORD2_RTRY_SHF             26#define TDE_WORD2_RTRY_MSK             (MSK(1) << TDE_WORD2_RTRY_SHF)/* field: TRC */#define TDE_WORD2_TRC_SHF              0#define TDE_WORD2_TRC_MSK              (MSK(4) << TDE_WORD2_TRC_SHF)/* Value definition for TX and RX descriptor entry owner semaphore     */#define HOST_IS_OWNER                  0#define CTRL_IS_OWNER                  1/* Global driver states */#define LAN_AM79C973_DRIVER_IS_STOPPED   0x42#define LAN_AM79C973_DRIVER_IS_STARTED   0x44/************************************************************************ *      Public variables ************************************************************************//************************************************************************ *      Static variables ************************************************************************/static char msg[160] ;/* Global driver state */static UINT32 LAN_AM79C973_state = LAN_AM79C973_DRIVER_IS_STOPPED ;/* MAC broadcast address */static t_mac_addr mac_broadcast_adr = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } ;/* User registered receive handler */static UINT32 (*usr_receive)( UINT32 length, UINT8 *data ) = NULL ;/* Device context per minor device for this driver */static t_LAN_AM79C973_device   minor_device[LAN_MINOR_AM79C973_DEVICES] ;/* Dynamic allocated memory state */static UINT32 first_time_init  = 0 ;/************************************************************************ *      Static function prototypes, local helper functions ************************************************************************//************************************************************************ * *                          LAN_AM79C973_allocate_memory *  Description : *  ------------- *     This routine allocates memory for: * *     - Init Block, *     - TX and RX descriptor ring elements, *     - Tx data buffers, *     - Rx data buffers and * *    initializes the allocated structures. *   * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/staticINT32 LAN_AM79C973_allocate_memory( t_LAN_AM79C973_device *pdevice )  ;/************************************************************************ * *                          LAN_AM79C973_init_initblock *  Description : *  ------------- *   This routine initializes the AM79C973 Init Block data structure. *  * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/staticINT32 LAN_AM79C973_init_initblock( t_LAN_AM79C973_device *pdevice ) ;/************************************************************************ * *                          LAN_AM79C973_init_ring_descriptors *  Description : *  ------------- *   This routine initializes the AM79C973 ring descriptor *   data structures. *  * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/staticINT32 LAN_AM79C973_init_ring_descriptors( t_LAN_AM79C973_device *pdevice ) ;/************************************************************************ * *                          LAN_AM79C973_stop *  Description : *  ------------- *   This routine stops the AM79C973 LAN controller *   by stopping  DMA transfer and resetting the chip. *   * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/staticINT32 LAN_AM79C973_stop( t_LAN_AM79C973_device *pdevice ) ;            /************************************************************************ * *                          LAN_AM79C973_MII_setup *  Description : *  ------------- *    Setup MII: if PCI clock < 33 MHz, then force 10 MBit/sec and *    half duplex; else setup MII for autonegotiate. * * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/staticINT32 LAN_AM79C973_MII_setup( t_LAN_AM79C973_device *pdevice ) ;/************************************************************************ * *                          LAN_AM79C973_MII_status *  Description : *  ------------- *    Display MII status  *   * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/staticINT32 LAN_AM79C973_MII_status( t_LAN_AM79C973_device *pdevice ) ;        /************************************************************************ * *                          LAN_AM79C973_dump_regs *  Description : *  ------------- *    Dump all AM79C973 LAN controller registers *  * *  Parameters : *  ------------ * *  'pdevice',     IN,    reference for this device  context * * *  Return values : *  --------------- * *  'OK'(=0) * * * ************************************************************************/#ifdef ETH_DEBUGstaticINT32 LAN_AM79C973_dump_regs( t_LAN_AM79C973_device *pdevice ) ;#endif/************************************************************************ * *                          LAN_AM79C973_dump_status *  Description : *  ------------- *    Dump all AM79C973 LAN controller statistics *  * *  Parameters :

⌨️ 快捷键说明

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