[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