@ -89,18 +89,27 @@ static void nand_davinci_select_chip(struct mtd_info *mtd, int chip)
# ifdef CFG_NAND_HW_ECC
# ifdef CFG_NAND_LARGEPAGE
static struct nand_oobinfo davinci_nand_oobinfo = {
static struct nand_ecclayout davinci_nand_ecclayout = {
. useecc = MTD_NANDECC_AUTOPLACE ,
. eccbytes = 12 ,
. eccpos = { 8 , 9 , 10 , 24 , 25 , 26 , 40 , 41 , 42 , 56 , 57 , 58 } ,
. oobfree = { { 2 , 6 } , { 12 , 12 } , { 28 , 12 } , { 44 , 12 } , { 60 , 4 } }
. oobfree = {
{ . offset = 2 , . length = 6 } ,
{ . offset = 12 , . length = 12 } ,
{ . offset = 28 , . length = 12 } ,
{ . offset = 44 , . length = 12 } ,
{ . offset = 60 , . length = 4 }
}
} ;
# elif defined(CFG_NAND_SMALLPAGE)
static struct nand_oobinfo davinci_nand_oobinfo = {
static struct nand_ecclayout davinci_nand_ecclayout = {
. useecc = MTD_NANDECC_AUTOPLACE ,
. eccbytes = 3 ,
. eccpos = { 0 , 1 , 2 } ,
. oobfree = { { 6 , 2 } , { 8 , 8 } }
. oobfree = {
{ . offset = 6 , . length = 2 } ,
{ . offset = 8 , . length = 8 }
}
} ;
# else
# error "Either CFG_NAND_LARGEPAGE or CFG_NAND_SMALLPAGE must be defined!"
@ -373,7 +382,7 @@ int board_nand_init(struct nand_chip *nand)
# else
# error "Either CFG_NAND_LARGEPAGE or CFG_NAND_SMALLPAGE must be defined!"
# endif
/* nand->autooob = &davinci_nand_oobinfo; */
nand - > ecc . layout = & davinci_nand_ecclayout ;
nand - > ecc . calculate = nand_davinci_calculate_ecc ;
nand - > ecc . correct = nand_davinci_correct_data ;
nand - > ecc . hwctl = nand_davinci_enable_hwecc ;