|
我把dm900_initnic函数的最后一句dm9k_debug_test();不注释的话,可以初始化正常运行,debug_test里面的各项测试也都正常,
注释掉后,dm9000_initnic的第一句都无法运行iow(DM9000_REG_NCR, DM9000_REG_RESET); 敢问什么原因???
void dm9k_initnic(void)
{
iow(DM9000_REG_NCR, DM9000_REG_RESET); /* 对 DM9000A 进行软件重置 */
dm9k_udelay(10); /* delay 10us */
dm9k_hash_table(); /* 设置 DM9000A MAC 及 多播*/
dm9k_reset(); /* 进行 DM9000A 软件设置 */
iow(DM9000_REG_GPR, DM9000_PHY_OFF); /* 关闭 PHY ,进行 PHY 设置*/
dm9k_phy_write(0x00, 0x8000); /* 重置 PHY 的寄存器 */
#ifdef DM9000A_FLOW_CONTROL
dm9k_phy_write(0x04, 0x01e1 | 0x0400); /* 设置 自适应模式相容表 */
#else
dm9k_phy_write(0x04, 0x01e1); /* 设置 自适应模式相容表 */
#endif
dm9k_phy_write(0x00, 0x1000); /* 设置 基本连接模式 */
/* 连接模式设置
0x0000 : 固定10M半双工
0x0100 : 固定10M全双工
0x2000 : 固定100M半双工
0x2100 : 固定100M全双工
0x1000 : 自适应模式
*/
dm9k_phy_write(0x00, 0x1000); /* 设置 基本连接模式 */
iow(DM9000_REG_GPR, DM9000_PHY_ON); /* 结束 PHY 设置, 开启 PHY */
//dm9k_debug_test();
} |
|