mtd: nand: add 'oob_required' argument to NAND {read,write}_page interfaces
New NAND controllers can perform read/write via HW engines which don't expose OOB data in their DMA mode. To reflect this, we should rework the nand_chip / nand_ecc_ctrl interfaces that assume that drivers will always read/write OOB data in the nand_chip.oob_poi buffer. A better interface includes a boolean argument that explicitly tells the callee when OOB data is requested by the calling layer (for reading/writing to/from nand_chip.oob_poi). This patch adds the 'oob_required' parameter to each relevant {read,write}_page interface; all 'oob_required' parameters are left unused for now. The next patch will set the parameter properly in the nand_base.c callers, and follow-up patches will make use of 'oob_required' in some of the callee functions. Note that currently, there is no harm in ignoring the 'oob_required' parameter and *always* utilizing nand_chip.oob_poi, but there can be performance/complexity/design benefits from avoiding filling oob_poi in the common case. I will try to implement this for some drivers which can be ported easily. Note: I couldn't compile-test all of these easily, as some had ARCH dependencies. [dwmw2: Merge later 1/0 vs. true/false cleanup] Signed-off-by:Brian Norris <computersforpeace@gmail.com> Reviewed-by:
Shmulik Ladkani <shmulik.ladkani@gmail.com> Acked-by:
Jiandong Zheng <jdzheng@broadcom.com> Acked-by:
Mike Dunn <mikedunn@newsguy.com> Signed-off-by:
Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by:
David Woodhouse <David.Woodhouse@intel.com>
Showing
- drivers/mtd/nand/atmel_nand.c 3 additions, 2 deletionsdrivers/mtd/nand/atmel_nand.c
- drivers/mtd/nand/bcm_umi_bch.c 6 additions, 4 deletionsdrivers/mtd/nand/bcm_umi_bch.c
- drivers/mtd/nand/bcm_umi_nand.c 1 addition, 1 deletiondrivers/mtd/nand/bcm_umi_nand.c
- drivers/mtd/nand/bf5xx_nand.c 2 additions, 2 deletionsdrivers/mtd/nand/bf5xx_nand.c
- drivers/mtd/nand/cafe_nand.c 8 additions, 5 deletionsdrivers/mtd/nand/cafe_nand.c
- drivers/mtd/nand/denali.c 4 additions, 4 deletionsdrivers/mtd/nand/denali.c
- drivers/mtd/nand/docg4.c 6 additions, 6 deletionsdrivers/mtd/nand/docg4.c
- drivers/mtd/nand/fsl_elbc_nand.c 4 additions, 7 deletionsdrivers/mtd/nand/fsl_elbc_nand.c
- drivers/mtd/nand/fsl_ifc_nand.c 4 additions, 6 deletionsdrivers/mtd/nand/fsl_ifc_nand.c
- drivers/mtd/nand/fsmc_nand.c 2 additions, 1 deletiondrivers/mtd/nand/fsmc_nand.c
- drivers/mtd/nand/gpmi-nand/gpmi-nand.c 4 additions, 4 deletionsdrivers/mtd/nand/gpmi-nand/gpmi-nand.c
- drivers/mtd/nand/nand_base.c 35 additions, 21 deletionsdrivers/mtd/nand/nand_base.c
- drivers/mtd/nand/pxa3xx_nand.c 3 additions, 2 deletionsdrivers/mtd/nand/pxa3xx_nand.c
- drivers/mtd/nand/sh_flctl.c 2 additions, 2 deletionsdrivers/mtd/nand/sh_flctl.c
- include/linux/mtd/nand.h 6 additions, 5 deletionsinclude/linux/mtd/nand.h
Loading
Please register or sign in to comment