添加 一个nandflash 需要修改的地方

已经有nandflash controller的驱动了,但是要添加一个新的nandflash,尤其是本来是8bit, 新加的是16bit时,需要注意如下:

1. board.c 中:

static struct platform_nand_data cartesio_nand_mlc_data = {
        .chip = {
                .nr_chips       = 1,    /* 1 NAND chip per FSMC NAND-Flash slot */
                .chip_offset    = 0,    /* using FSMC PC-Card/NAND-Flash slot 0 */
                .nr_partitions  = ARRAY_SIZE(cartesio_nand_mlc_partitions),
                .partitions     = cartesio_nand_mlc_partitions,
                .ecclayout      = &cartesio_nand_mlc_ecclayout,
                .chip_delay     = 20,
                .options        = NAND_BUSWIDTH_16,   //这里8bit时是0,使用16bit时,应该修改 
        },
#ifdef CONFIG_CARTESIO_NAND_DMA
        .ctrl = {
                .priv = &cartesio_dma_nand,
        }
#endif
};
这里的 chip->option 需要注意.

同时需要注意下面的 .name 和 .id, nand_base.c 中的驱动会用到。

static struct platform_device cartesio_nand_mlc_flash = {
        .name           = "CARTESIO-NAND", // 这个会用来判断是不是NULL
        .id             = 0,                // id会用来比较 chip id
        .dev = {
                .platform_data = &cartesio_nand_mlc_data,
                .parent = &fsmc_device.dev,
        },
        .num_resources  = ARRAY_SIZE(cartesio_nand_mlc_resource),
        .resource       = cartesio_nand_mlc_resource,
};
2. drivers/mtd/nand/nand_ids.c

这里有个表 nand_flash_ids[], 定义如下:

/*
*       Chip ID list
*
*       Name. ID code, pagesize, chipsize in MegaByte, eraseblock size,
*       options
*
*       Pagesize; 0, 256, 512
*       0       get this information from the extended chip ID
+       256     256 Byte page size
*       512     512 Byte page size
*/
struct nand_flash_dev nand_flash_ids[] = {

#ifdef CONFIG_MTD_NAND_MUSEUM_IDS
        {"NAND 1MiB 5V 8-bit",          0x6e, 256, 1, 0x1000, 0},
        {"NAND 2MiB 5V 8-bit",          0x64, 256, 2, 0x1000, 0},
        {"NAND 4MiB 5V 8-bit",          0x6b, 512, 4, 0x2000, 0},
        {"NAND 1MiB 3,3V 8-bit",        0xe8, 256, 1, 0x1000, 0},
        {"NAND 1MiB 3,3V 8-bit",        0xec, 256, 1, 0x1000, 0},
        {"NAND 2MiB 3,3V 8-bit",        0xea, 256, 2, 0x1000, 0},
        {"NAND 4MiB 3,3V 8-bit",        0xd5, 512, 4, 0x2000, 0},
        {"NAND 4MiB 3,3V 8-bit",        0xe3, 512, 4, 0x2000, 0},
        {"NAND 4MiB 3,3V 8-bit",        0xe5, 512, 4, 0x2000, 0},
        {"NAND 8MiB 3,3V 8-bit",        0xd6, 512, 8, 0x2000, 0},

        {"NAND 8MiB 1,8V 8-bit",        0x39, 512, 8, 0x2000, 0},
        {"NAND 8MiB 3,3V 8-bit",        0xe6, 512, 8, 0x2000, 0},
        {"NAND 8MiB 1,8V 16-bit",       0x49, 512, 8, 0x2000, NAND_BUSWIDTH_16},
        {"NAND 8MiB 3,3V 16-bit",       0x59, 512, 8, 0x2000, NAND_BUSWIDTH_16},
#endif

        {"NAND 16MiB 1,8V 8-bit",       0x33, 512, 16, 0x4000, 0},
        {"NAND 16MiB 3,3V 8-bit",       0x73, 512, 16, 0x4000, 0},
        {"NAND 16MiB 1,8V 16-bit",      0x43, 512, 16, 0x4000, NAND_BUSWIDTH_16},
        {"NAND 16MiB 3,3V 16-bit",      0x53, 512, 16, 0x4000, NAND_BUSWIDTH_16},

        {"NAND 32MiB 1,8V 8-bit",       0x35, 512, 32, 0x4000, 0},
        {"NAND 32MiB 3,3V 8-bit",       0x75, 512, 32, 0x4000, 0},
        {"NAND 32MiB 1,8V 16-bit",      0x45, 512, 32, 0x4000, NAND_BUSWIDTH_16},
        {"NAND 32MiB 3,3V 16-bit",      0x55, 512, 32, 0x4000, NAND_BUSWIDTH_16},

        {"NAND 64MiB 1,8V 8-bit",       0x36, 512, 64, 0x4000, 0},
        {"NAND 64MiB 3,3V 8-bit",       0x76, 512, 64, 0x4000, 0},
        {"NAND 64MiB 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值