kernel 支持网卡dm9000 开发板s3c2410

kernel 2.6.30.4   支持网卡dm9000  开发板s3c2410

1.
gedit arch/arm/plat-s3c24xx/common-smdk.c
#include <linux/dm9000.h>

/* DM9000 */
static struct resource s3c_dm9k_resource[] = {
      [0] = {
           .start = S3C2410_CS2,         /* ADDR2=0,发送地址时使用这个地址 */
           .end = S3C2410_CS2 + 3,
           .flags = IORESOURCE_MEM,
      },
      [1] = {
           .start = S3C2410_CS2 + 4,       /* ADDR2=1,传输数据时使用这个地址 */
           .end = S3C2410_CS2 + 4 + 3,
           .flags = IORESOURCE_MEM,
      },
      [2] = {
                                            /* 中断号 */
           .start = IRQ_EINT2,
           .end = IRQ_EINT2,
           .flags = IORESOURCE_IRQ,
      }
};
/* for the moment we limit ourselves to 16bit IO until some
 * better IO routines can be written and tested
*/
static struct dm9000_plat_data s3c_dm9k_platdata = {
      .flags         = DM9000_PLATF_32BITONLY,
};
static struct platform_device s3c_device_dm9k = {
      .name           = "dm9000",
      .id       = 0,
      .num_resources = ARRAY_SIZE(s3c_dm9k_resource),
      .resource = s3c_dm9k_resource,
      .dev            ={
           .platform_data = &s3c_dm9k_platdata,
      }
};

static struct platform_device __initdata *smdk_devs[] = {
    &s3c_device_nand,
    &smdk_led4,
    &smdk_led5,
    &smdk_led6,
    &smdk_led7,
    &s3c_device_dm9k,
};

2.
gedit drivers/net/dm9000.c

#if defined(CONFIG_ARCH_S3C2410)
#include <mach/regs-mem.h>
#endif

1194行,添加
#if defined(CONFIG_ARCH_S3C2410)
     unsigned int oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON;
     unsigned int oldval_bankcon2 = *(volatile unsigned int *)S3C2410_BANKCON2;
#endif

在修改后的1209行加入:
#if defined(CONFIG_ARCH_S3C2410)
    *((volatile unsigned int *)S3C2410_BWSCON) = (oldval_bwscon & ~(3<<16)) | S3C2410_BWSCON_DW2_32 | S3C2410_BWSCON_WS2 | S3C2410_BWSCON_ST2;
    *((volatile unsigned int *)S3C2410_BANKCON2) = 0x1f7c;
#endif

在修改后的1378行加入:
#if defined(CONFIG_ARCH_S3C2410)
     printk("Now use the default MAC address: 10:23:45:67:89:ab/n");
     mac_src = "EmbedSky";
     ndev->dev_addr[0] = 0x10;
     ndev->dev_addr[1] = 0x23;
     ndev->dev_addr[2] = 0x45;
     ndev->dev_addr[3] = 0x67;
     ndev->dev_addr[4] = 0x89;
     ndev->dev_addr[5] = 0xab;
#else
……
1411行
#endif
在修改后的1423行加入:
#if defined(CONFIG_ARCH_S3C2410)
     *(volatile unsigned int *)S3C2410_BWSCON = oldval_bwscon;
     *(volatile unsigned int *)S3C2410_BANKCON2 = oldval_bankcon2;
#endif

你可能感兴趣的:(kernel 支持网卡dm9000 开发板s3c2410)