/**************************************************************************** * Copyright (C), 2009-2010, www.armfly.com 安富莱电子 * * 文件名: dm9k_uip.c * 内容简述: Davicom DM9KA uP NIC fast Ethernet driver for uIP. * * 文件历史: * 版本号 日期 作者 说明 * v0.1 2010-01-18 armfly 创建该文件 * */ #ifndef _DM9K_H_ #define _DM9K_H_ #include "dwt.h" #include "interface.h" #include "lwip_init.h" #include /* DM9K REGISTER LIST */ #define DM9K_REG_NCR 0x00 #define DM9K_REG_NSR 0x01 #define DM9K_REG_TCR 0x02 #define DM9K_REG_TSR1 0x03 #define DM9K_REG_TSR2 0x04 #define DM9K_REG_RCR 0x05 #define DM9K_REG_RSR 0x06 #define DM9K_REG_ROCR 0x07 #define DM9K_REG_BPTR 0x08 #define DM9K_REG_FCTR 0x09 #define DM9K_REG_FCR 0x0A #define DM9K_REG_EPCR 0x0B #define DM9K_REG_EPAR 0x0C #define DM9K_REG_EPDRL 0x0D #define DM9K_REG_EPDRH 0x0E #define DM9K_REG_WAR 0x0F #define DM9K_REG_PAR 0x10 #define DM9K_REG_MAR 0x16 #define DM9K_REG_GPCR 0x1E #define DM9K_REG_GPR 0x1F #define DM9K_REG_VID_L 0x28 #define DM9K_REG_VID_H 0x29 #define DM9K_REG_PID_L 0x2A #define DM9K_REG_PID_H 0x2B #define DM9K_REG_CHIPR 0x2C #define DM9K_REG_TCR2 0x2D #define DM9K_REG_OTCR 0x2E #define DM9K_REG_SMCR 0x2F #define DM9K_REG_ETXCSR 0x30 #define DM9K_REG_TCSCR 0x31 #define DM9K_REG_RCSCSR 0x32 #define DM9K_REG_MRCMDX 0xF0 #define DM9K_REG_MRCMD 0xF2 #define DM9K_REG_MRRL 0xF4 #define DM9K_REG_MRRH 0xF5 #define DM9K_REG_MWCMDX 0xF6 #define DM9K_REG_MWCMD 0xF8 #define DM9K_REG_MWRL 0xFA #define DM9K_REG_MWRH 0xFB #define DM9K_REG_TXPLL 0xFC #define DM9K_REG_TXPLH 0xFD #define DM9K_REG_ISR 0xFE #define DM9K_REG_IMR 0xFF /* 相关宏设置 */ #define DM9KA_ID 0x90000A46 #define DM9K_BYTE_MODE 0x01 #define DM9K_WORD_MODE 0x00 #define DM9K_PHY 0x40 #define DM9K_PKT_RDY 0x01 #define DM9K_PKT_NORDY 0x00 #define DM9K_REG_RESET 0x03 #define DM9K_RX_INTR 0x01 /* 接收中断判断 bit */ #define DM9K_TX_INTR 0x02 /* 传送中断判断 bit */ #define DM9K_OVERFLOW_INTR 0x04 /* 内存溢出中断判断 bit */ #define DM9K_LINK_CHANG 0x20 /* 连接变动中断判断 bit */ #define DM9K_PHY_ON 0x00 /* 设定 PHY 开启 */ #define DM9K_PHY_OFF 0x01 /* 设定 PHY 关闭 */ #define DM9K_RCR_SET 0x31 /* 设定 接收功能 (不收 CRC 及 超长包) */ #define DM9K_TCR_SET 0x01 /* 设定 传送功能 */ #define DM9K_RCR_OFF 0x00 /* 设定 接收功能关关闭设置 */ #define DM9K_BPTR_SET 0x37 /* 设定 Back Pressure 条件设置 */ #define DM9K_FCTR_SET 0x38 /* 设定 Flow Control 条件设置 */ #define DM9K_TCR2_SET 0x80 /* 设置 LED 显示模式 */ #define DM9K_OTCR_SET 0x80 /* 设置 DM9K 工作频率 0x80 = 100Mhz */ #define DM9K_ETXCSR_SET 0x83 /* 设置 Early Tramsmit 条件设置 */ #define DM9K_FCR_SET 0x28 /* 开启 网络流控功能设置 */ #define DM9K_TCSCR_SET 0x07 /* 设定 CHECKSUM 传送运算 设置 */ #define DM9K_RCSCSR_SET 0x03 /* 设定 CHECKSUM 接收检查 设置 */ #define DM9K_IMR_SET 0x81 /* 设定 启用中断使能 条件设置 */ #define DM9K_IMR_OFF 0x80 /* 设定 关闭中断使能 条件设置 */ // DM9K内部PHY寄存器 #define DM9K_PHY_BMCR 0x00 #define DM9K_PHY_BMSR 0x01 #define DM9K_PHY_PHYID1 0x02 #define DM9K_PHY_PHYID2 0x03 #define DM9K_PHY_ANAR 0x04 #define DM9K_PHY_ANLPAR 0x05 #define DM9K_PHY_ANER 0x06 #define DM9K_PHY_DSCR 0x10 #define DM9K_PHY_DSCSR 0x11 #define DM9K_PHY_10BTCSR 0x12 #define DM9K_PHY_PWDOR 0x13 #define DM9K_PHY_SCR 0x14 #define DM9K_INTPORT GPIOA #define DM9K_INTPIN GPIO_PIN_15 #define NET_BASE_ADDR 0x68400000 #define NET_REG_ADDR (*((volatile uint16_t *)NET_BASE_ADDR)) #define NET_REG_DATA (*((volatile uint16_t *)(NET_BASE_ADDR + 0x00080000))) #define Max_Ethernet_Lenth 1536 /* EXPORTED SUBPROGRAM SPECIFICATIONS */ void dm9k_init(void); uint8_t dm9k_linkstat(void); uint8_t dm9k_ReadReg(uint8_t reg); void dm9k_WriteReg(uint8_t reg, uint8_t writedata); void etherdev_send(uint8_t *p_char, uint16_t length); uint16_t etherdev_read(uint8_t *p_char); uint16_t dm9k_receive_packet(uint8_t *_uip_buf); void etherdev_chkmedia(void); uint32_t dm9k_ReadID(void); void dm9k_debug_test(void); #endif