移植 nand

1. make menuconfig

添加如下选项:

Device Drivers  --->

    <*> Memory Technology Device (MTD) support  --->

        [*]   Command line partition table parsing

        <*>   Caching block device access to MTD devices
       <*>   NAND Device Support  --->
            <*>   NAND Flash support for Samsung S3C SoCs


2.修改 arch/arm/mach-s3c64xx/mach-smdk6410.c

添加头文件:

#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <plat/nand.h>

添加代码:

/*
  nandflash
  add by fatfish
*/
struct mtd_partition smdk6410_nand_part[] = {
    {
        .name        = "Bootloader",
        .offset        = 0,
        .size        = (1 * SZ_1M),
        //.mask_flags    = MTD_CAP_NANDFLASH,
    },
    {
        .name        = "Kernel",
        .offset        = (1 * SZ_1M),
        .size        = (5*SZ_1M) ,
        //.mask_flags    = MTD_CAP_NANDFLASH,
    },

    {
        .name        = "User",
        .offset        = (6 * SZ_1M),
        .size        = (120*SZ_1M) ,
    },

    {
        .name        = "File System",
        .offset        = MTDPART_OFS_APPEND,
        .size        = MTDPART_SIZ_FULL,
    }
};

static struct s3c2410_nand_set smdk6410_nand_sets[] = {
    [0] = {
        .name        = "nand",
        .nr_chips    = 1,
        .nr_partitions    = ARRAY_SIZE(smdk6410_nand_part),
        .partitions    = smdk6410_nand_part,
        .flash_bbt     = 1, /* we use u-boot to create a BBT  fatfish*/
    },
};

static struct s3c2410_platform_nand smdk6410_nand_info = {
    .tacls        = 25,
    .twrph0        = 55,
    .twrph1        = 40,
    .nr_sets    = ARRAY_SIZE(smdk6410_nand_sets),
    .sets        = smdk6410_nand_sets,
};
/*adding end*/


static struct platform_device *smdk6410_devices[] __initdata 中添加

&s3c_device_nand,


static void __init smdk6410_map_io(void) 中添加

s3c_device_nand.dev.platform_data = &smdk6410_nand_info;


static void __init smdk6410_machine_init(void) 中添加

s3c_nand_set_platdata(&smdk6410_nand_info);



3.修改drivers/mtd/nand/nand_base.c

        switch (mtd->oobsize) {
        case 8:
            chip->ecc.layout = &nand_oob_8;
            break;
        case 16:
            chip->ecc.layout = &nand_oob_16;
            break;
        case 64:
            chip->ecc.layout = &nand_oob_64;
            break;
        case 128:
            chip->ecc.layout = &nand_oob_128;
            break;
        /*fatfish add */
        case 218:
            chip->ecc.layout = &nand_oob_128;
            break;
        /*adding end*/
        default:
            pr_warn("No oob scheme defined for oobsize %d\n",
                   mtd->oobsize);
            BUG();


4.修改drivers/mtd/nand/s3c2410.c

chip->ecc.mode        = NAND_ECC_SOFT 改为

chip->ecc.mode        = NAND_ECC_NONE






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值