The "legacy" ECC layout used until 3.12-rc1 uses all the OOB area by computing the ECC strength and ECC step size ourselves. Commit 2febcdf84b ("mtd: gpmi: set the BCHs geometry with the ecc info") makes the driver use the ECC info (ECC strength and ECC step size) provided by the MTD code, and creates a different NAND ECC layout for the BCH, and use the new ECC layout. This causes a regression: We can not mount the ubifs which was created by the old NAND ECC layout. This patch fixes this issue by reverting to the legacy ECC layout. We will probably introduce a new device-tree property to indicate that the new ECC layout can be used. For now though, for the imminent 3.12 release, we just unconditionally revert to the 3.11 behaviour. This leaves a harmless cosmetic warning about an unused function. At this point in the cycle I really don't care.
Unified · Split
| @@ -349,7 +349,7 @@ static int legacy_set_geometry(struct gpmi_nand_data *this) · 348 unmodified lines | ||
| 349 | 349 | |
| 350 | 350 | int common_nfc_set_geometry(struct gpmi_nand_data *this) |
| 351 | 351 | { |
| 352 | − return set_geometry_by_ecc_info(this) ? 0 : legacy_set_geometry(this); | |
| 352 | + return legacy_set_geometry(this); | |
| 353 | 353 | } |
| 354 | 354 | |
| 355 | 355 | struct dma_chan *get_dma_chan(struct gpmi_nand_data *this) |