2017-03-30 15:45 GMT+09:00 Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>: > This driver was originally written for the Intel MRST platform with > several platform specific parameters hard-coded. Another thing we > need to fix is the hard-coded ECC step size. Currently, it is > defined as follows: > > #define ECC_SECTOR_SIZE 512 > > (somehow, it is defined in both denali.c and denali.h) > > This must be avoided because the Denali IP supports 1024B ECC size > as well. The Denali User's Guide also says supporting both 512B and > 1024B ECC sectors is possible, though it would require instantiation > of two different ECC circuits. So, possible cases are: > > [1] only 512B ECC size is supported > [2] only 1024B ECC size is supported > [3] both 512B and 1024B ECC sizes are supported > > Newer versions of this IP need ecc.size and ecc.steps explicitly > set up via the following registers: > CFG_DATA_BLOCK_SIZE (0x6b0) > CFG_LAST_DATA_BLOCK_SIZE (0x6c0) > CFG_NUM_DATA_BLOCKS (0x6d0) > > Older versions do not have such registers (they were reserved), so > write accesses are safely ignored. > > This commit adds new flags DENALI_CAP_ECC_SIZE_{512,1024}. > > The DT property "nand-ecc-step-size" is still optional; a reasonable > default will be chosen for [1] and [2]. For case [3], users can > force ECC size via DT in case firmware hard-codes ECC settings. > If not specified, the driver will use chip's ECC requirement as a > hint to decide the ECC size. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > Acked-by: Rob Herring <robh@xxxxxxxxxx> > --- > > Changes in v3: > - Move DENALI_CAP_ define out of struct denali_nand_info > - Use chip->ecc_step_ds as a hint to choose chip->ecc.size > where possible > Please hold back this patch until we decide how to handle 14. -- Best Regards Masahiro Yamada -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html