免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1114 | 回复: 0
打印 上一主题 下一主题

移植内核之DM9000 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览

移植内核之DM9000


移植步骤: 

SETUP1:修改arch/arm/mach-s3c6410/mach-ut6410.c

1、    添加DM9000头文件

    #include <linux/dm9000.h>

2、    添加网卡地址

#define UT6410_PA_DM9000      (0x18000000)

 

#define UT6410_VA_EXTDEV    S3C_ADDR(0x02000000)

#define UT6410_PA_EXTDEV    (0x30000000)

 

#define UT6410_EN_DM9000     (1<<14)

 

static __u32 ut6410_extdev_status;

 

3、添加必要的代码,支持DM9000驱动

/* DM9000AEP 10/100 ethernet controller */

static void __init ut6410_dm9000_enable(void)

{

       ut6410_extdev_status |= (UT6410_EN_DM9000 << 16);

       __raw_writel(ut6410_extdev_status, UT6410_VA_EXTDEV);

}

 

static struct resource ut6410_dm9000_resource[] = {

       [0] = {

              .start = UT6410_PA_DM9000,

              .end   = UT6410_PA_DM9000 + 3,

              .flags = IORESOURCE_MEM,

       },

       [1] = {

              .start = UT6410_PA_DM9000 + 4,

              .end   = UT6410_PA_DM9000 + 4 + 500,

              .flags = IORESOURCE_MEM,

       },

       [2] = {

              .start = IRQ_EINT(7),            /*根据电路图来的*/

              .end   = IRQ_EINT(7),

              .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,

       },

};

 

static struct dm9000_plat_data ut6410_dm9000_pdata = {

       .flags        = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),

       .dev_addr       = { 0x08, 0x90, 0x90, 0x90, 0x90, 0x90 },     /* MAC addr*/

       /* dev_addr can be set to provide hwaddr. */

};

 

static struct platform_device ut6410_device_eth = {

       .name      = "dm9000",

       .id   = -1,

       .num_resources      = ARRAY_SIZE(ut6410_dm9000_resource),

       .resource = ut6410_dm9000_resource,

       .dev = {

              .platform_data  = &ut6410_dm9000_pdata,

       },

};

 

static struct map_desc ut6410_iodesc[] __initdata = {

       {

              .virtual    = (unsigned long)UT6410_VA_EXTDEV,

              .pfn        = __phys_to_pfn(UT6410_PA_EXTDEV),

              .length           = SZ_64K,

              .type              = MT_DEVICE,

       },

};

/*****************************/

 

3、    platform_device *ut6410_devices[]结构体中添加:

   &ut6410_device_eth,

4、    ut6410_machine_init(void)函数中添加:

    ut6410_dm9000_enable();

 

SETUP2: 配置内核支持网卡

Device Drivers  --->

[*] Network device support  --->

     [*]   Ethernet (10 or 100Mbit)  --->

         <*>   DM9000 support

 

 

OK 编译好,烧写到开发板上,其中可能会遇到很多的问题,同过Google一般的都能解决。

 

参考网址:

http://blog.chinaunix.net/space.php?uid=20543672&do=blog&cuid=400516

http://wenx05124561.blog.163.com/blog/static/1240008052010451177625/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP