2440开发板linux,基于飞凌2440开发板的Linux

(3)对128Mflash支持

修改/linux-2.6.28.7/drivers/mtd/nand下面的nand_bbt.c文件: static struct nand_bbt_descr largepage_memorybased = {

.options = 0,

.offs = 0,

.len = 2,           // 支持128M修改为1

.pattern = scan_ff_pattern

};

static struct nand_bbt_descr largepage_flashbased = {

.options = NAND_BBT_SCAN2NDPAGE,

.offs = 0,

.len = 2,           // 支持128M修改为1

.pattern = scan_ff_pattern

};

复制代码(4)修改对dm9000网卡支持

a.修改 drivers/net/dm9000.c 文件:

头文件增加:

#include    //by bai

#include

#include

复制代码在dm9000_probe 函数开始增加:

unsigned char ne_def_eth_mac_addr[]={0x00,0x12,0x34,0x56,0x80,0x49};

static void *bwscon;

static void *gpfcon;

static void *extint0;

static void *intmsk;

#define BWSCON           (0x48000000)

#define GPFCON           (0x56000050)

#define EXTINT0           (0x56000088)

#define INTMSK           (0x4A000008)

bwscon=ioremap_nocache(BWSCON,0x0000004);

gpfcon=ioremap_nocache(GPFCON,0x0000004);

extint0=ioremap_nocache(EXTINT0,0x0000004);

intmsk=ioremap_nocache(INTMSK,0x0000004);

writel(readl(bwscon)|0xc0000,bwscon);

writel( (readl(gpfcon) & ~(0x3 << 14)) | (0x2 << 14), gpfcon);

writel( readl(gpfcon) | (0x1 << 7), gpfcon); // Disable pull-up

writel( (readl(extint0) & ~(0xf << 28)) | (0x4 << 28), extint0); //rising edge

writel( (readl(intmsk))  & ~0x80, intmsk);

复制代码在这个函数的最后需要修改: if (!is_valid_ether_addr(ndev->dev_addr)) {

mac_src = "chip";

for (i = 0; i < 6; i++)

//ndev->dev_addr[i] = ior(db, i+DM9000_PAR);    //by bai

ndev->dev_addr[i] = ne_def_eth_mac_addr[i];

}

复制代码b.修改arch/arm/mach-s3c2410/mach-smdk2410.c

在static struct platform_device *smdk2410_devices[] __initdata中添加: &s3c_device_dm9000,

static struct map_desc smdk2410_iodesc[] __initdata = {

[0] = {

.virtual   = (unsigned long)S3C24XX_VA_DM9000,

.pfn       = __phys_to_pfn(S3C24XX_PA_DM9000),

.length     = SZ_1M,

.type     = MT_DEVICE,

},

};

复制代码c.vi  arch/arm/plat-s3c24xx/devs.c

添加头文件 #include

static struct resource s3c_dm9000_resource[] = {

[0] = {

.start = S3C24XX_PA_DM9000,

.end   = S3C24XX_PA_DM9000+ 0x3,

.flags = IORESOURCE_MEM

},

[1]={

.start = S3C24XX_PA_DM9000 + 0x4, //CMD pin is A2

.end = S3C24XX_PA_DM9000 + 0x4 + 0x7c,

.flags = IORESOURCE_MEM

},

[2] = {

.start = IRQ_EINT7,

.end   = IRQ_EINT7,

.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= 0,

.num_resources= ARRAY_SIZE(s3c_dm9000_resource),

.resource= s3c_dm9000_resource,

.dev= {

.platform_data = &s3c_device_dm9000_platdata,

}

};

EXPORT_SYMBOL(s3c_device_dm9000);

复制代码d.vi arch/arm/plat-s3c24xx/include/mach/devs.h   45行附近,添加 extern struct platform_device s3c_device_dm9000;

复制代码e.vi  /linux-2.6.28.7/arch/arm/mach-s3c2410/include/mach/map.h 文件

#define   S3C24XX_PA_DM9000 0x20000300

#define   S3C24XX_VA_DM9000 0xE0000000

复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值