內核linux-3.0移植到fl2440-----添加DM9000網卡驅動

主要修改內容如下:

1.vim arch/arm/mach-s3c2440/mach-smdk2440.c

#include <linux/dm9000.h>  //添加DM9000網卡的頭文件

添加如下代碼

/* add DM9000 ethernet drivers ,whitch is bodify by liuchengdeng */
#define DM9000_BASE    (S3C2410_CS4 + 0x300)
static struct resource s3c_dm9000_resource[] = {
     [0] = {
        .start = DM9000_BASE,
        .end   = DM9000_BASE + 3,
        .flags = IORESOURCE_MEM
    },
    [1] = {
        .start = DM9000_BASE + 4,
        .end   = DM9000_BASE + 7,
        .flags = IORESOURCE_MEM
    },
    [2] = {
        .start = IRQ_EINT7,
        .end   = IRQ_EINT7,
        .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
    }
};

/*        
 * The DM9000 has no eeprom, and it's MAC address is set by
 * the bootloader before starting the kernel.
 */
static struct dm9000_plat_data s3c_dm9000_pdata = {
    .flags      = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
};

static 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_dm9000_pdata,
    },
};
/* modify end  */

2.修改platform_device *smdk2440_devices[] __initdata結構體爲如下,在其中添加啓動DM9000

static struct platform_device *smdk2440_devices[] __initdata = {
    &s3c_device_ohci,
    &s3c_device_lcd,
    &s3c_device_wdt,
    &s3c_device_i2c0,
    &s3c_device_iis,
    &s3c_device_dm9000,
};

3.vim include/linux/dm9000.h  添加如下頭文件

#include <linux/io.h>

重新make之後,這樣我們的鏡像文件就能支持DM9000網絡了,系統跑起來的時候,就可以用tftp下載文件到我們的最小系統裏。然後ping 192.168.1.83 就可以通了。



發佈了39 篇原創文章 · 獲贊 16 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章