基于3c2410的linux2.6.22移植(5)
這塊板使用的是DM9000的網(wǎng)卡芯片,驅(qū)動的源代碼在內(nèi)核源代碼的目錄中可以找到:
arm/%23">$root@host:/home/arm/#
$root@host:/home/arm/kernel/linux-2.6.22# cd drivers/net
$root@host:/home/arm/kernel/linux-2.6.22/drivers/net# ls dm*
dm9000.c
修改dm9000.c:
$root@host:/home/arm/kernel/linux-2.6.22# vi dm9000.c
static int dm9000_probe(struct platform_device *pdev)
{
//添加下面數(shù)組,前6個數(shù)作為網(wǎng)卡的mac地址,注意不能和現(xiàn)有的網(wǎng)卡沖突
退出保存。
修改smdk2410.c:
$root@host:/home/arm/kernel/linux-2.6.22# cd arch/arm/mach-s3c2410
$root@host:/home/arm/kernel/linux-2.6.22/arch/arm/mach-s3c2410#
vi mach-smdk2410.c
在mach-smdk2410.c中添加如下內(nèi)容:
…………
#include
//添加:
#include
…………
………….
#define UCON S3C2410_UCON_DEFAULT
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
//添加:
static struct resource s3c_d9k_resource[]=
{
};
static struct dm9000_plat_data s3c_device_d9k_platdata = {
};
struct platform_device s3c_device_d9k = {
};
………………….
………………….
static struct platform_device *smdk2410_devices[] __initdata = {
};
需要注意的是起始地址和中斷號的選擇。這塊板上DM9000芯片的INT引腳接的是EINT2,CMD引腳接的是A1,CS引腳接的是nGCS2,所以DM9000的index端口地址是0x10000000,data端口地址是0x10000000+0x00000002,據(jù)此設(shè)置結(jié)構(gòu)resource s3c_d9k_resource中的參數(shù)。最后在內(nèi)核編譯時加上對DM9000驅(qū)動的支持就可以了,具體見內(nèi)核配置和編譯。
評論