第一步:在arm/arm/mach-s3c2410/devs.c 文件中添加如下代码
//-----------------------------------------------------------
static struct resource s3c_dm9000_resource[] = {
[0] = {
.start = 0x08000000 + 0x300,
.end = 0x08000000 + 0x300 + 0x03,
.flags = IORESOURCE_MEM
},
[1] = {
.start = 0x08000000 + 0x300 + 0x04,
.end = 0x08000000 + 0x300 + 0x04 + 0x3, // 0x3f
.flags = IORESOURCE_MEM
},
[2] = {
.start = IRQ_EINT0,
.end = IRQ_EINT0,
.flags = IORESOURCE_IRQ
}
};
static struct dm9000_plat_data s3c_device_dm9000_platdata = {
.flags= DM9000_PLATF_16BITONLY
};
struct platform_device s3c_device_dm9000 = {
.name= "dm9000",
.id= -1,
.num_resources= ARRAY_SIZE(s3c_dm9000_resource),
.resource= s3c_dm9000_resource,
.dev= {
.platform_data = &s3c_device_dm9000_platdata,
}
};
EXPORT_SYMBOL(s3c_device_dm9000);
//-----------------------------------------------------
第二步:在 arm/arm/mach-s3c2410/devs.h 文件中 添加如下一行
extern struct platform_device s3c_device_dm9000; //for dm9000 --------hainanyunyu --广州大学
//----------------------------------------------------------------
第三步:在 arm/arm/mach-s3c2410/mach-smdk2410.c
文件中的*smdk2410_devices[] __initdata
添加&s3c_device_dm9000,//for dm9000 --------hainanyunyu --广州大学
如下所示:
static struct platform_device *smdk2410_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_iis,
&s3c_device_dm9000,//for dm9000
};
//----------------------------------------------------------------
第四步:在内核自带的dm9000网卡驱动源码driver/net/dm9000.c中添加下面两行 定义
#define INTMOD (0x4A000004)
static void *intmod;
在driver/net/dm9000.c 的
static int dm9000_probe(struct device *dev) 函数中添加下面两行:
intmod="ioremap"_nocache(INTMOD,0x0000004);
writel(0x0,intmod);
//-----------------------------------------------------------------
阅读(1162) | 评论(1) | 转发(0) |