浦发银行信用卡好不好: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 regs-mem.h>

 //#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){
  return -ENODEV;
 }

 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)
为 #if !defined(CONFIG_SH_HICOSH4) && !defined(CONFIG_ARCH_PNX010X) && !defined(CONFIG_ARCH_S3C2410)

1310:

改 #ifndef CONFIG_CS89x0_NONISA_IRQ
为 #if !defined(CONFIG_CS89x0_NONISA_IRQ) && !defined(CONFIG_ARCH_S3C2410)

1325:

改 ret = request_irq(dev->irq, net_interrupt, 0, dev->name, dev);
为 ret = request_irq(dev->irq, net_interrupt, IRQF_TRIGGER_RISING, dev->name, dev);

1394:

改 #ifdef CONFIG_ARCH_PNX010X
为 #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},
};

三、修改arch/arm/mach-s3c2410/include/mach/map.h

加入
/* S3C2410 CS8900a */
#define pSMDK2410_ETH_IO __phys_to_pfn(0x19000000)
#define vSMDK2410_ETH_IO 0xE9000000
#define SMDK2410_ETH_IRQ IRQ_EINT9

四、修改 drivers/net/Kconfig 的 config CS89x0

在 depends on 中加入
 || ARCH_SMDK2410

五、在menu中选中 cs89x0 选项,保存退出

make uImage

生成的uImage就可以用了。