Commit Message

Implement a new ioctl for writing both page data and OOB to flash at the
same time. This ioctl is intended to be a generic interface that can
replace other ioctls (MEMWRITEOOB and MEMWRITEOOB64) and cover the
functionality of several other old ones, e.g., MEMWRITE can:
* write autoplaced OOB instead of using ECCGETLAYOUT (deprecated) and
working around the reserved areas
* write raw (no ECC) OOB instead of using MTDFILEMODE to set the
per-file-descriptor MTD_FILE_MODE_RAW
* write raw (no ECC) data instead of using MTDFILEMODE
(MTD_FILE_MODE_RAW) and using standard character device "write"
This ioctl is especially useful for MLC NAND, which cannot be written
twice (i.e., we cannot successfully write the page data and OOB in two
separate operations). Instead, MEMWRITE can write both in a single
operation.
Note that this ioctl is not affected by the MTD file mode (i.e.,
MTD_FILE_MODE_RAW vs. MTD_FILE_MODE_NORMAL), since it receives its write
mode as an input parameter.
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
---
RFC -> PATCH "v1": * the ioctl is now named MEMWRITE instead of
MEMWRITEDATAOOB for simplicity and to emphasize its
generic, multi-purpose functionality.
* ioctl functionality was moved inside its own
function to help with readability.
* padding was added to the renamed
`struct mtd_write_req'
* user buffers were split into separate OOB and data
buffers
* other small fixes?
drivers/mtd/mtdchar.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
include/mtd/mtd-abi.h | 11 +++++++++
2 files changed, 67 insertions(+), 0 deletions(-)