Skip to content
  • Miquel Raynal's avatar
    mtd: nand: add ->exec_op() implementation · 8878b126
    Miquel Raynal authored
    
    
    Introduce a new interface to instruct NAND controllers to send specific
    NAND operations. The new interface takes the form of a single method
    called ->exec_op(). This method is designed to replace ->cmd_ctrl(),
    ->cmdfunc() and ->read/write_byte/word/buf() hooks.
    
    ->exec_op() is passed a set of instructions describing the operation
    to execute. Each instruction has a type (ADDR, CMD, DATA, WAITRDY)
    and delay. The delay is here to help simple controllers wait enough
    time between each instruction, advanced controllers with integrated
    timings control can ignore these delays.
    
    Controllers that natively support complex operations (operations
    formed of several instructions) can use the NAND op parser
    infrastructure. This infrastructure allows controller drivers to
    describe the sequence of instructions they support (called
    nand_op_pattern) and a hook for each of these supported sequences. The
    core then tries to find the best match for a given NAND operation, and
    calls the associated hook.
    
    Various other helpers are also added to ease NAND controller drivers
    writing.
    
    This new interface should ease support of vendor specific operations
    in that NAND manufacturer drivers now have a way to check if the
    controller they are connected to supports a specific operation, and
    complain or refuse to probe the NAND chip when that's not the case.
    
    Suggested-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: default avatarMiquel Raynal <miquel.raynal@free-electrons.com>
    Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
    8878b126