• M
    mtd: rawnand: omap: Use BCH private fields in the specific OOB layout · b135b335
    Miquel Raynal 提交于
    The OMAP driver may leverage software BCH logic to locate errors while
    using its own hardware to detect the presence of errors. This is
    achieved with a "mixed" mode which initializes manually the software
    BCH internal logic while providing its own OOB layout.
    
    The issue here comes from the fact that the BCH driver has been
    updated to only use generic NAND objects, and no longer depend on raw
    NAND structures as it is usable from SPI-NAND as well. However, at the
    end of the BCH context initialization, the driver checks the validity
    of the OOB layout. At this stage, the raw NAND fields have not been
    populated yet while being used by the layout helpers, leading to an
    invalid layout.
    
    The chosen solution here is to include the BCH structure definition
    and to refer to the BCH fields directly (de-referenced as a const
    pointer here) to know as early as possible the number of steps and ECC
    bytes which have been chosen.
    
    Note: I don't know which commit exactly triggered the error, but the
    entire migration to a generic BCH driver got merged in one go, so this
    should not be a problem for stable backports.
    Reported-by: NAdam Ford <aford173@gmail.com>
    Fixes: 80fe6031 ("mtd: nand: ecc-bch: Stop using raw NAND structures")
    Signed-off-by: NMiquel Raynal <miquel.raynal@bootlin.com>
    Tested-by: Adam Ford <aford173@gmail.com> #logicpd-torpedo-37xx-devkit-28.dts
    Link: https://lore.kernel.org/linux-mtd/20210119155510.5655-1-miquel.raynal@bootlin.com
    b135b335
omap2.c 63.6 KB