_基于S3C2440的嵌入式LINUX操作系统内核研究
0x300;
dev->dev_addr[0] = 0x08; dev->dev_addr[1] = 0x89; dev->dev_addr[2] = 0x89; dev->dev_addr[3] = 0x89; dev->dev_addr[4] = 0x89; dev->dev_addr[5] = 0x89;
oldval_bwscon = *((volatile unsigned int *)S3C2410_BWSCON);
*((volatile unsigned int *)S3C2410_BWSCON) = (oldval_bwscon & ~(3<<12)) | S3C2410_BWSCON_DW3_16 | S3C2410_BWSCON_WS3 | S3C2410_BWSCON_ST3;
oldval_bankcon3 = *((volatile unsigned int *)S3C2410_BANKCON3); *((volatile unsigned int *)S3C2410_BANKCON3) = 0x1f7c; #endif
out: //出错退出
#if defined(CONFIG_ARCH_S3C2410) iounmap(netcard_portlist[0]); netcard_portlist[0] = 0;
*((volatile unsigned int *)S3C2410_BWSCON) = oldval_bwscon; *((volatile unsigned int *)S3C2410_BANKCON3) = oldval_bankcon3; #endif
free_netdev(dev);
注册中断处理程序,指定中断触发方式,修改net_open函数: #if 0
writereg(dev, PP_BusCTL, ENABLE_IRQ | MEMORY_ON); #endif
write_irq(dev, lp->chip_type, dev->irq); #if defined(CONFIG_ARCH_S3C2410)
ret = request_irq(dev->irq, &net_interrupt, IRQF_TRIGGER_RISING, dev->name,
dev); #else
ret = request_irq(dev->irq, &net_interrupt, 0, dev->name, dev); #endif
在drivers/net/cs89x0.c中适当的位置加上CONFIG_ARCH_S3C2410宏编译开关,