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

matti kaasinen matti.kaasinen at gmail.com
Wed Nov 6 11:00:16 CET 2013


Hi Pekon,
Thanks to Tom Rini's hint I have tried to execute your patch sets (
http://patchwork.ozlabs.org/project/uboot/list/?submitter=17320&state=*) in
order to get Linux and U-Boot working with same NAND flash. Set-up is
pretty much like Mathias has before in this chain. Latest problem I faced
with is that last versions of 1)  "[U-Boot,v8,3/5] mtd: nand: omap:
optimize chip->ecc.calculate() for H/W ECC
schemes<http://patchwork.ozlabs.org/patch/282206/>"
and 2)
"[U-Boot,v2,2/3] mtd: nand: omap: add support for BCH16_ECC - NAND driver
updates" <http://patchwork.ozlabs.org/patch/273769> are not compatible any
more. As I told in
https://groups.google.com/forum/#!topic/beagleboard/7ofbE_Rrn_s versions
v5..v7 of 1) could possibly be compatible.
Regards,
Matti


2013/11/1 Matthias Fuchs <mfuchs at ma-fu.de>

> 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(-)
> >
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>


More information about the U-Boot mailing list