一. 硬件情况
DM9000在电路板上的连接中与编程相关的如下:
1)EECS拉高:16bit模式;
2)EECK拉高,INT连接到2440 EINT7:INT脚为低时为有效中断信号,中断线为EINT7
3)cs连接到2440的nGCS2,CMD连接2440地址总线ADDR[2]:INDEX和DATA端口地址分别为0x1000_0000和0x1000_0004。
知道上面这些信息已经足够移植驱动了。
二. Dm9000驱动移植详细过程
1.在arch/arm/mach-s3c2410/devs.c 中添加dm9000的platform_device。
static struct resource eievk_dm9000_resource[] = {
[0]= {
.start = 0x10000000, //this is based on EIEVK board
.end = 0x10000003,
.flags = IORESOURCE_MEM,
},
[1]={
.start = 0x10000004,
.end = 0x10000007,
.flags = IORESOURCE_MEM,
},
[2]={
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ,
}
};
static struct dm9000_plat_data eievk_dm9000_platdata ={
.flags = DM9000_PLATF_16BITONLY,//work in 16bit mode
};
struct platform_device eievk_dm9000_device = {
.name = "dm9000",
.id = -1,
.num_resources = 3,
.resource = eievk_dm9000_resource,
.dev = {
.platform_data = &eievk_dm9000_platdata,
}
};
EXPORT_SYMBOL(eievk_dm9000_device);
3.在arch/arm/mach-s3c2410/devs.h中 声明平台设备 eievk_dm9000_device :
extern struct platform_device eievk_dm9000_device;
4.在arm/arm/mach-s3c2410/mach-smdk2410.c中将eievk_dm9000_device添加到平台设备列表中:
static struct platform_device *smdk2440_devices[] __initdata = {
&eievk_dm9000_device, //add dm9000
};
5.需要做两方面的工作:设置芯片MAC地址,使能DM9000
DM9000在电路板上的连接中与编程相关的如下:
1)EECS拉高:16bit模式;
2)EECK拉高,INT连接到2440 EINT7:INT脚为低时为有效中断信号,中断线为EINT7
3)cs连接到2440的nGCS2,CMD连接2440地址总线ADDR[2]:INDEX和DATA端口地址分别为0x1000_0000和0x1000_0004。
知道上面这些信息已经足够移植驱动了。
二. Dm9000驱动移植详细过程
1.在arch/arm/mach-s3c2410/devs.c 中添加dm9000的platform_device。
static struct resource eievk_dm9000_resource[] = {
[0]= {
.start = 0x10000000, //this is based on EIEVK board
.end = 0x10000003,
.flags = IORESOURCE_MEM,
},
[1]={
.start = 0x10000004,
.end = 0x10000007,
.flags = IORESOURCE_MEM,
},
[2]={
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ,
}
};
static struct dm9000_plat_data eievk_dm9000_platdata ={
.flags = DM9000_PLATF_16BITONLY,//work in 16bit mode
};
struct platform_device eievk_dm9000_device = {
.name = "dm9000",
.id = -1,
.num_resources = 3,
.resource = eievk_dm9000_resource,
.dev = {
.platform_data = &eievk_dm9000_platdata,
}
};
EXPORT_SYMBOL(eievk_dm9000_device);
3.在arch/arm/mach-s3c2410/devs.h中 声明平台设备 eievk_dm9000_device :
extern struct platform_device eievk_dm9000_device;
4.在arm/arm/mach-s3c2410/mach-smdk2410.c中将eievk_dm9000_device添加到平台设备列表中:
static struct platform_device *smdk2440_devices[] __initdata = {
&eievk_dm9000_device, //add dm9000
};
5.需要做两方面的工作:设置芯片MAC地址,使能DM9000