[U-Boot] [PATCH v8 0/5] mtd: nand: omap: optimize and clean-up of OMAP NAND driver

Matthias Fuchs mfuchs at ma-fu.de
Thu Oct 31 23:43:10 CET 2013


Hi Pekon,

should I consider the U-Boot and Linux am335x NAND implementation to be compatible?
So are the ECC schemes in a way identical that I can nandwrite a kernel image from 
Linux and "nand read" it from U-Boot? I tested with the 3.8.13 beaglebone kernel (which
is of course not very representative) and it does not work. If it should work,
do you know it that was already the case before your patches and with which Linux kernel?

Regards,
Matthias

On 10/10/2013 01:00 PM, Pekon Gupta wrote:
> *changes in v8*
> [PATCH 1/5] incorporated following feedbacks from Scott Wood <scottwood at freescale.com>
> 	- using symbolic names (enums) as values of CONFIG_NAND_OMAP_ECCSCHEME
> 	- updated omap_select_ecc_scheme(): perform ecc-scheme compatibility
> 		checks before updating nand_chip.ecc fields. This avoids
> 		corrupting of existing ecc-scheme in case of switching failures.
> 	- code clean-up (removed fall-back on omap_select_ecc_scheme() failures)
> [PATCH 2/5], [PATCH 3/5], [PATCH 4/5] minor code clean-up
> [PATCH 5/5] <no update>
> 
> 
> *changes in v7*
> [PATCH 1/5]
> 	- omap_gpmc.c: fix: free bytes in OOB (ecclayout->oobfree[0].length)
> 	- omap_gpmc.c: cleanup: redundant code added in previous patch versions
> 	- am335x_evm.h: cleanup: redundant code added in previous patch versions
> 	- tricorder.h: fix: CONFIG_NAND_OMAP_ECCSCHEME
> [PATCH 2/5] removed: re-configuration of gpmc.config1[dev_width] added in
> 		previous version of patch
> [PATCH 3/5] <no update>
> [PATCH 4/5] <no update>
> [PATCH 5/5] minor fix: missing '$' in ${loadaddr}
> 
>  
> *changes in v6*
> [PATCH 1/5] incorporated feedbacks from Scott Wood <scottwood at freescale.com>
> 	- renamed CONFIG_SYS_NAND_ECCSCHEME to CONFIG_NAND_OMAP_ECCSCHEME
> 	- updated omap_select_ecc_scheme() to handle error conditions without
> 		depending on caller.
> 	- renamed OMAP_ECC_HAM1_CODE_HW_ROMCODE to OMAP_ECC_HAM1_CODE_HW 
> 		to keep it naming compatible to linux kernel
> 	- updated doc/README.nand and doc/README.omap3
> [PATCH 2/5] minor code clean-up
> [PATCH 3/5] minor code clean-up 
> [PATCH 4/5] <no update>
> [PATCH 5/5] <moved CONFIG_NAND_OMAP_ECCSCHEME description to README.nand>
> 
> 
> *changes in v5*
> This version of patch is tested on am335x-evm with x8 NAND device, and boots
> SPL and u-boot from NAND
> [PATCH 1/5]
> 	- re-added omap_read_page_bch(): needed proper sequence of while reading
> 	DATA and ECC from NAND page, so that calc_ecc generated from GPMC
> 	is understood by ELM.
> 	- added check to see if NAND OOB can accomodate ECC for entire page
> [PATCH 2/5] fixed device-width in GPMC_CONFIG1_X to support x16 devices
> [PATCH 3/5] code clean-up for OMAP_ECC_BCH8_CODE_HW_DETECTION_SW mode
> [PATCH 4/5]
> 	- fixed omap_correct_data_bch() for correcting bit-flips using ELM
> 	- code-cleanup + added omap_reverse_list()
> [PATCH 5/5] incorporated feedbacks from Peter Korsgaard <jacmet at sunsite.dk>
> 
> 
> *changes in v4*
> [PATCH 1/5]
> 	- removed omap_read_page_bch(): chip->ecc.read_page uses default API
> 		nand_read_page_hwecc() in nand_base.c
> 	- updated tricorder.h: added new CONFIGS for ECCSCHEME & ONFI_DETECTION
> 	- converted printf("ECC-SCHEME") to debug("ECC-SCHEME")
> [PATCH 2/5] minor code clean-up
> [PATCH 3/5] <no update>
> [PATCH 4/5] <no update>
> [PATCH 5/5] updated README as per feedbacks from trini at ti.com
> 
> 
> *changes in v3*
> [PATCH 1/5] (complete change) 
> 	- ecc-scheme is selection is controller by s/w, not CONFIG_NAND_xx
> 	- added omap_select_ecc_scheme(), as common function to handle all
> 	  ecc-scheme related configurations for both board_nand_init() &
> 	  omap_nand_switch_ecc().
> 	- removed un-used defines from asm/arch-am33xx/omap_gpmc.h
> 	- updated doc/REAME.nand
> [PATCH 2/5] removed un-used defines from asm/omap_gpmc.h
> [PATCH 3/5] removed omap_calculate_ecc_bch_sw() and omap_calculate_ecc()
> 		and merged their logic into omap_calculate_ecc_bch()
> [PATCH 4/5] updated return error-code in-case of invalid conditions
> [PATCH 5/5] (new) for board/ti/am335x/README
> 
> 
> *changes in v2*
> - added documentation for CONFIG_NAND_OMAP_xx in doc/README.nand
> - added CONFIG_BCH along with CONFIG_NAND_OMAP_ECC_BCH8_CODE_HW_DETECTION_SW
>   to include software library lib/bch.c
> - fixed board_nand_init() and omap_enable_hwecc()
> 
> 
> *original v1*
> This patch series updates BCH8_ECC schemes in mtd/nand/omap_gpmc.c driver
> - adds scalability for higher ECC schemes in future.
> - removes CONFIG_AM335x and it makes it generic for all platforms.
> - optimizes read_data paths
> 
> Pekon Gupta (5):
> [PATCH 1/5] mtd: nand: omap: enable BCH ECC scheme using ELM for generic platform
> [PATCH 2/5] mtd: nand: omap: optimize chip->ecc.hwctl() for H/W ECC schemes
> [PATCH 3/5] mtd: nand: omap: optimize chip->ecc.calculate() for H/W ECC schemes
> [PATCH 4/5] mtd: nand: omap: optimized chip->ecc.correct() for H/W ECC schemes
> [PATCH 5/5] board/ti/am335x/README: update for NAND boot
> 
>  arch/arm/include/asm/arch-am33xx/omap_gpmc.h |  52 +-
>  arch/arm/include/asm/omap_gpmc.h             |   7 -
>  board/ti/am335x/README                       |  53 +-
>  doc/README.nand                              |  38 ++
>  doc/README.omap3                             |   4 +-
>  drivers/mtd/nand/omap_gpmc.c                 | 843 +++++++++++----------------
>  include/configs/am335x_evm.h                 |  11 +-
>  include/configs/tricorder.h                  |   3 +-
>  8 files changed, 446 insertions(+), 565 deletions(-)
> 



More information about the U-Boot mailing list