!(chip->cellinfo & NAND_CI_CELLTYPE_MSK)) {
switch(chip->ecc.steps) {
case 2:
mtd->subpage_sft = 1;
break;
case 4:
case 8:
case 16:
mtd->subpage_sft = 2;
break;
}
}
chip->subpagesize = mtd->writesize >> mtd->subpage_sft;
可是我已经给options增加了NAND_NO_SUBPAGE_WRITE啊?有些怀疑,我就在此处加了打印log,果然是这里出了问题,
chip->options = 0x10101.
mtd->subpage_sft = 0.
chip->subpagesize = 512.
#define NAND_NO_SUBPAGE_WRITE 0x00000200
可是,这里的options 明明是不对的!那我设置的NAND_NO_SUBPAGE_WRITE在哪里丢掉了?
在下面的函数中有对chip->options赋值改变;
nand_get_flash_type()
printk(KERN_INFO"nand_get_flash_type 1, chip->options = 0x%x.\n",chip->options);
/*Get chip options, preserve non chip based options */
chip->options &= ~NAND_CHIPOPTIONS_MSK;
printk(KERN_INFO"nand_get_flash_type 2, chip->options = 0x%x.\n",chip->options);
chip->options|= type->options & NAND_CHIPOPTIONS_MSK;
printk(KERN_INFO"nand_get_flash_type 3, chip->options = 0x%x.\n",chip->options);
/*
* Set chip as a default. Board drivers canoverride it, if necessary
*/
chip->options|= NAND_NO_AUTOINCR;
/*Check if chip is a not a samsung device. Do not clear the
* options for chips which are not having anextended id.
*/
if(*maf_id != NAND_MFR_SAMSUNG && !type->pagesize)
chip->options&= ~NAND_SAMSUNG_LP_OPTIONS;
printk(KERN_INFO"nand_get_flash_type 4, chip->options = 0x%x.\n",chip->options);
nand_get_flash_type 1,chip->options = 0x10200.
nand_get_flash_type 2,chip->options = 0x10000.
nand_get_flash_type 3,chip->options = 0x1011c.
nand_get_flash_type 4,chip->options = 0x10101.
问题出在这里,红色的代码!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-51076-4.html
有高有低
民进党当选