[PATCH v9 5/9] mtd:nand:omap2: clean-up BCHx_HW and BCHx_SW ECC configurations in device_probe
Brian Norris
computersforpeace at gmail.com
Wed Oct 16 18:58:54 PDT 2013
On Tue, Oct 15, 2013 at 11:19:53AM +0530, Pekon Gupta wrote:
> current implementation in omap3_init_bch() has some redundant code like:
> (1) omap3_init_bch() re-probes the DT-binding to detect presence of ELM h/w
> engine on SoC. And based on that it selects implemetation of ecc-scheme.
> However, this is already done as part of GPMC DT parsing.
> (2) As omap3_init_bch() serves as common function for configuring all types of
> BCHx ecc-schemes, so there are multiple levels of redudant if..then..else
> checks while populating nand_chip->ecc.
>
> This patch make following changes to OMAP NAND driver:
> (1) removes omap3_init_bch(): each ecc-scheme is individually configured in
> omap_nand_probe() there by removing redundant if..then..else checks.
> (2) adds is_elm_present(): re-probing of ELM device via DT is not required as
> it's done in GPMC driver probe. Thus is_elm_present() just initializes ELM
> driver with NAND probe data, when ecc-scheme with h/w based error-detection
> is used.
> (3) separates out configuration of different flavours of "BCH4" and "BCH8"
> ecc-schemes as given in below table
> (4) conditionally compiles callbacks implementations of ecc.hwctl(),
> ecc.calculate(), ecc.correct() to avoid warning of un-used functions.
>
> +---------------------------------------+---------------+---------------+
> | ECC scheme |ECC calculation|Error detection|
> +---------------------------------------+---------------+---------------+
> |OMAP_ECC_HAM1_CODE_HW |H/W (GPMC) |S/W |
> +---------------------------------------+---------------+---------------+
> |OMAP_ECC_BCH4_CODE_HW_DETECTION_SW |H/W (GPMC) |S/W (lib/bch.c)|
> | (needs CONFIG_MTD_NAND_ECC_BCH) | | |
> | | | |
> |OMAP_ECC_BCH4_CODE_HW |H/W (GPMC) |H/W (ELM) |
> | (needs CONFIG_MTD_NAND_OMAP_BCH && | | |
> | ti,elm-id) | | |
> +---------------------------------------+---------------+---------------+
> |OMAP_ECC_BCH8_CODE_HW_DETECTION_SW |H/W (GPMC) |S/W (lib/bch.c)|
> | (needs CONFIG_MTD_NAND_ECC_BCH) | | |
> | | | |
> |OMAP_ECC_BCH8_CODE_HW |H/W (GPMC) |H/W (ELM) |
> | (needs CONFIG_MTD_NAND_OMAP_BCH && | | |
> | ti,elm-id) | | |
> +---------------------------------------+---------------+---------------+
>
> - 'CONFIG_MTD_NAND_ECC_BCH' is generic KConfig required to build lib/bch.c
> which is required for ECC error detection done in software.
> (mainly used for legacy platforms which do not have on-chip ELM engine)
>
> - 'CONFIG_MTD_NAND_OMAP_BCH' is OMAP specific Kconfig to detemine presence
> on ELM h/w engine on SoC.
>
> Signed-off-by: Pekon Gupta <pekon at ti.com>
This patch looks good to me.
Brian
More information about the linux-mtd
mailing list