FL2440移植LINUX-3.4.2(五)-- 添加DM9000的支持

1.参考mini2440拷贝:
linux-3.4.2\arch\arm\mach-s3c24xx\mach-mini2440.c
里的
/* DM9000AEP 10/100 ethernet controller */

 1 /* DM9000AEP 10/100 ethernet controller */
 2 
 3 static struct resource mini2440_dm9k_resource[] = {
 4     [0] = {
 5         .start = MACH_MINI2440_DM9K_BASE,
 6         .end   = MACH_MINI2440_DM9K_BASE + 3,
 7         .flags = IORESOURCE_MEM
 8     },
 9     [1] = {
10         .start = MACH_MINI2440_DM9K_BASE + 4,
11         .end   = MACH_MINI2440_DM9K_BASE + 7,
12         .flags = IORESOURCE_MEM
13     },
14     [2] = {
15         .start = IRQ_EINT7,
16         .end   = IRQ_EINT7,
17         .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
18     }
19 };
20 
21 /*
22  * The DM9000 has no eeprom, and it‘s MAC address is set by
23  * the bootloader before starting the kernel.
24  */
25 static struct dm9000_plat_data mini2440_dm9k_pdata = {
26     .flags        = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
27 };
28 
29 static struct platform_device mini2440_device_eth = {
30     .name        = "dm9000",
31     .id        = -1,
32     .num_resources    = ARRAY_SIZE(mini2440_dm9k_resource),
33     .resource    = mini2440_dm9k_resource,
34     .dev        = {
35         .platform_data    = &mini2440_dm9k_pdata,
36     },
37 };

到linux-3.4.2\arch\arm\mach-s3c24xx\mach-smdk2440.c文件里面

2.修改为如下:

 1 #include <linux/dm9000.h>    /* by zhutao 添加头文件*/ 
 2 #define MACH_SMDK2440_DM9K_BASE (S3C2410_CS4 + 0x300) /* by zhutao 添加宏定义*/
 3 
 4 /* DM9000AEP 10/100 ethernet controller */
 5 
 6 static struct resource smdk2440_dm9k_resource[] = {
 7     [0] = {
 8         .start = MACH_SMDK2440_DM9K_BASE,
 9         .end   = MACH_SMDK2440_DM9K_BASE + 3,
10         .flags = IORESOURCE_MEM
11     },
12     [1] = {
13         .start = MACH_SMDK2440_DM9K_BASE + 4,
14         .end   = MACH_SMDK2440_DM9K_BASE + 7,
15         .flags = IORESOURCE_MEM
16     },
17     [2] = {
18         .start = IRQ_EINT7,
19         .end   = IRQ_EINT7,
20         .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
21     }
22 };
23 
24 /*
25  * The DM9000 has no eeprom, and it‘s MAC address is set by
26  * the bootloader before starting the kernel.
27  */
28 static struct dm9000_plat_data smdk2440_dm9k_pdata = {
29     .flags        = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
30 };
31 
32 static struct platform_device smdk2440_device_eth = {
33     .name        = "dm9000",
34     .id        = -1,
35     .num_resources    = ARRAY_SIZE(smdk2440_dm9k_resource),
36     .resource    = smdk2440_dm9k_resource,
37     .dev        = {
38         .platform_data    = &smdk2440_dm9k_pdata,
39     },
40 };
41 
42 /* 增加平台设备 */
43 static struct platform_device *smdk2440_devices[] __initdata = {
44     &s3c_device_ohci,
45     &s3c_device_lcd,
46     &s3c_device_wdt,
47     &s3c_device_i2c0,
48     &s3c_device_iis,
49     &smdk2440_device_eth, /* by zhutao */
50 };

编译启动内核:

nfs挂接网络文件系统:

修改以下根文件系统inittab

1 #s3c2410_serial0::askfirst:-/bin/sh  /* 注释掉 */
2 console::askfirst:-/bin/sh       /* 改成console */

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。