浦发银行信用卡好不好:FS2410开发板cs8900A的驱动移植linux2.6.35
来源:百度文库 编辑:中财网 时间:2024/05/02 10:59:13
FS2410开发板cs8900A的驱动移植linux2.6.35117030
2011-5-29 18:42:32 收藏 | 打印 | 投票 | 评论 | 阅读 ◇字体:[大 中 小]优龙FS2410开发板cs8900A的驱动移植
华清远见(深圳) 1102期 pclli
内核:2.6.35
方法:修改内置的drivers/net/cs89x0.c
由于cs89x0.c支持cs8900A,所以这里只需要把smdk2410平台加入,让cs89x0.c支持即可。
加入步骤如下:行数只对应于原版文件
1、修改cs89x0.c
195:加入
#elif defined(CONFIG_ARCH_S3C2410)
#include //#include <> static int IS_OK=0; static unsigned int netcard_portlist[]= {0x300,}; static unsigned int cs8900_irq_map[] = {SMDK2410_ETH_IRQ, 0, 0, 0}; 324:加入 #if defined(CONFIG_ARCH_S3C2410) unsigned int oldval_bwscon; unsigned int oldval_bankcon3; if(IS_OK){ IS_OK=1; netcard_portlist[0] = vSMDK2410_ETH_IO + 0x300; dev->dev_addr[0] = 0xaa; dev->dev_addr[1] = 0xbb; dev->dev_addr[2] = 0xcc; dev->dev_addr[3] = 0xdd; dev->dev_addr[4] = 0xee; dev->dev_addr[5] = 0xff; 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 345:加入 #if defined(CONFIG_ARCH_S3C2410) IS_OK = 0; *((volatile unsigned int *)S3C2410_BWSCON) = oldval_bwscon; *((volatile unsigned int *)S3C2410_BANKCON3) = oldval_bankcon3; #endif 1279: 改 #if !defined(CONFIG_SH_HICOSH4) && !defined(CONFIG_ARCH_PNX010X) 1310: 改 #ifndef CONFIG_CS89x0_NONISA_IRQ 1325: 改 ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev); 1394: 改 #ifdef CONFIG_ARCH_PNX010X 改 为 三、修改arch/arm/mach-s3c2410/include/mach/map.h 加入 四、修改 drivers/net/Kconfig 的 config CS89x0 在 depends on 中加入 五、在menu中选中 cs89x0 选项,保存退出 make uImage 生成的uImage就可以用了。
return -ENODEV;
}
为 #if !defined(CONFIG_SH_HICOSH4) && !defined(CONFIG_ARCH_PNX010X) && !defined(CONFIG_ARCH_S3C2410)
为 #if !defined(CONFIG_CS89x0_NONISA_IRQ) && !defined(CONFIG_ARCH_S3C2410)
为 ret = request_irq(dev->irq, net_interrupt, IRQF_TRIGGER_RISING, dev->name, dev);
为 #if defined(CONFIG_ARCH_PNX010X) || defined(CONFIG_ARCH_S3C2410)
二、修改arch/arm/mach-s3c2410/mach-smdk2410.c
static struct map_desc smdk2410_iodesc[] __initdata = {
/*nothing here yet */
};
static struct map_desc smdk2410_iodesc[] __initdata = {
/*nothing here yet */
{vSMDK2410_ETH_IO, pSMDK2410_ETH_IO, SZ_1M, MT_DEVICE},
};
/* S3C2410 CS8900a */
#define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000)
#define vSMDK2410_ETH_IO 0xE9000000
#define SMDK2410_ETH_IRQ IRQ_EINT9
|| ARCH_SMDK2410