关键词: ARM9, S3C2410, CS8900, 驱动程序移植, Linux 2.6.27
按照2.6.25内核的cs8900驱动移植方法对2.6.27内核中的drivers/net/cs89x0.c文件进行修改,修改的部分完全一样:
参考 http://blog.csdn.net/onlyzhangqin/archive/2008/05/25/2479813.aspx
Linux内核升级到2.6.27之后,代码结构发生了一些改变,这些改变包括一些变量的命名、部分头文件的文件名和所在的目录等。因此,将 CS8900驱动移植到该版本内核时,需要修改多处源码:
(参考 http://blog.csdn.net/onlyzhangqin/archive/2008/05/25/2479813.aspx)
关键词: ARM9, S3C2410, CS8900, 驱动程序移植, Linux 2.6.27
按照2.6.25内核的cs8900驱动移植方法对2.6.27内核中的drivers/net/cs89x0.c文件进行修改,修改的部分完全一样:
参考 http://blog.csdn.net/onlyzhangqin/archive/2008/05/25/2479813.aspx
Linux内核升级到2.6.27之后,代码结构发生了一些改变,这些改变包括一些变量的命名、部分头文件的文件名和所在的目录等。因此,将 CS8900驱动移植到该版本内核时,需要修改多处源码:
(参考 http://blog.csdn.net/onlyzhangqin/archive/2008/05/25/2479813.aspx)
1、加入头文件#include <linux/fs.h>,不然在cs8900_cleanup()函数中使用unregister_chrdev时,会提示未声明;
2、在include/asm-arm/arch-s3c2410/下新建smdk2410.h,并且在cs8900.c中包含。内容如下:
[root@Sure linux-2.6.27.3]# vim include/asm-arm/plat-s3c24xx/smdk2410.h
1 //++++>
2 #define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000)
3 #define vSMDK2410_ETH_IO 0xe0000000
4 #define SMDK2410_ETH_IRQ __IRQ_EINT9 //以上和之前老版本移植时一样
5 //以下新加的内容,此版本内核没有定义的一些宏,是从老版本内核的irq.h文件中弄过来的
6 #define __IRQT_FALEDGE IRQ_TYPE_EDGE_FALLING
7 #define __IRQT_RISEDGE IRQ_TYPE_EDGE_RISING
8 #define __IRQT_LOWLVL IRQ_TYPE_LEVEL_LOW
9 #define __IRQT_HIGHLVL IRQ_TYPE_LEVEL_HIGH
10 #define IRQT_NOEDGE (0)
11 #define IRQT_RISING (__IRQT_RISEDGE)
12 #define IRQT_FALLING (__IRQT_FALEDGE)
13 #define IRQT_BOTHEDGE (__IRQT_RISEDGE|__IRQT_FALEDGE)
14 #define IRQT_LOW (__IRQT_LOWLVL)
15 #define IRQT_HIGH (__IRQT_HIGHLVL)
16 #define IRQT_PROBE IRQ_TYPE_PROBE
17 //<++++ Jacky_Xu @ 2008.10.25
关键词: ARM9, S3C2410, CS8900, 驱动程序移植, Linux 2.6.27