首页
登录 | 注册

linux2.6下dm9000网卡驱动移植

第一步:在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   --------hainanyunyu --广州大学

};

//----------------------------------------------------------------

第四步:在内核自带的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);

     

//-----------------------------------------------------------------


相关文章

  • 网卡是用结构体net_device表述的,通过函数register_netdev来注册具体的网卡. mini2440的的网卡放在driver/net/dm9000.c中. 网卡的数据发送 在net_device->netdev_ops ...
  • https://downloadcenter.intel.com/zh-cn/download/22283/-?_ga=2.248537860.2026704752.1555672241-285942944.1503393761&e ...
  • Linux 网卡驱动学习
    1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据.这一层的存在使得上层协议独立于具体的设备. 2).网络设 ...
  • 地址: https://github.com/whitebatman2/rtl8821CU 编译驱动 DRV_NAME=rtl8821CU DRV_VERSION=5.2.5.3 sudo mkdir /usr/src/${DRV_NAME ...
  • 我服务器报错:环境 centos 6.3 _64bit  强氧服务器  less eth0.txt   May 19 03:33:01 media rsyslogd: [origin software="rsyslogd" ...
  • 网络数据包收发流程(一):从驱动到协议栈
    早就想整理网络数据包收发流程了,一直太懒没动笔.今天下决心写了 一.硬件环境 intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大 bcm5461:   PHY芯片,与之对应的MAC是TSEC TSEC:      Thr ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号