2440开发板和dm9000的联系
片选信号AEN使用了nGCS4,所以网卡的内存区域在BANK4,也就是从地址0x20000000开始。DM9000的TXD[2:0]作为strap pin在电路图中是空接的,所以IO base是300H。中断使用了EINT7。
所以要对arch/arm/mach-s3c2440/mach-smdk2440.c进行修改,修改如下:
9 #include <linux/dm9000.h> //add DM9000 net support 括号里边不能有空格!!!
50
51
52 #define DM9000_BASE (S3C2410_CS4 + 0x300)
50
51
52 #define DM9000_BASE (S3C2410_CS4 + 0x300)
53 static struct resource s3c_dm9000_resource[] = {
54
55
56 [0]={
57 .start=DM9000_BASE,
58 .end=DM9000_BASE+3,
59 .flags=IORESOURCE_MEM
60 },
61
62 [1]={
63 .start=DM9000_BASE+4,
64 .end=DM9000_BASE+7,
65 .flags=IORESOURCE_MEM,
66 },
67
68 [2]={
69 .start=IRQ_EINT7,
70 .end= IRQ_EINT7,
71 .flags=IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
72 }
73
74
75 };
54
55
56 [0]={
57 .start=DM9000_BASE,
58 .end=DM9000_BASE+3,
59 .flags=IORESOURCE_MEM
60 },
61
62 [1]={
63 .start=DM9000_BASE+4,
64 .end=DM9000_BASE+7,
65 .flags=IORESOURCE_MEM,
66 },
67
68 [2]={
69 .start=IRQ_EINT7,
70 .end= IRQ_EINT7,
71 .flags=IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
72 }
73
74
75 };
82 static struct dm9000_plat_data s3c_dm9000_pdata = {
83
84 .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
85 };
86
87
88 static struct platform_device s3c_device_dm9000 = {
89
90 .name = "dm9000",
91 .id = -1,
92 .num_resources = ARRAY_SIZE(s3c_dm9000_resource),
93 .resource = s3c_dm9000_resource,
94 .dev = {
95 .platform_data = &s3c_dm9000_pdata,
96 },
97 };
83
84 .flags = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
85 };
86
87
88 static struct platform_device s3c_device_dm9000 = {
89
90 .name = "dm9000",
91 .id = -1,
92 .num_resources = ARRAY_SIZE(s3c_dm9000_resource),
93 .resource = s3c_dm9000_resource,
94 .dev = {
95 .platform_data = &s3c_dm9000_pdata,
96 },
97 };
203 static struct platform_device *smdk2440_devices[] __initdata = {
204 &s3c_device_ohci,
205 &s3c_device_lcd,
206 &s3c_device_wdt,
207 &s3c_device_i2c0,
208 &s3c_device_iis,
209 &s3c_device_dm9000, //这是要添加的
210 };
211
204 &s3c_device_ohci,
205 &s3c_device_lcd,
206 &s3c_device_wdt,
207 &s3c_device_i2c0,
208 &s3c_device_iis,
209 &s3c_device_dm9000, //这是要添加的
210 };
211
修改好之后保存退出。返回自己内核所在的目录make 。生成的linuxrom-s3c2440.bin烧录到自己的开发板上,这时候就可以用ifconfig这个命令了。