From patchwork Fri Jan 17 21:41:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Miquel Raynal X-Patchwork-Id: 1225008 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=c89E1Yxl; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47zvhD1MJYz9sR8 for ; Sat, 18 Jan 2020 08:43:40 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=2qdgDyRR3fTM0YR559hSdcwGetUPTaFTcOJBWZQ3Wa0=; b=c89E1YxlPifq1U dHPqAwXdgvN0bDRfKh3i15YpkCzWpxkYo0OPHCP9TqUJLVd4NK4nImtSHPcsK/Js5ACnM1WM2Om1W +U9bINyoqfyxWEM6WuUu4q8P3w9g0JVctwDwBCf8xc4As+M+3TJ6UnIPibGT6iVsRVs9La0Oez5Ji f+YbhjpNpepdK//sSLO34X0M3aOBWpjr5NbWLM9XRaTW5xMXy97KtZm4viPlYxStXl406GRL2CtF7 BqamoMQwPavU5tv/xOXXbiiJzB6Ypd8OPrfliScP2WVu657OmnxDF8tLdq5oQJf3NP84BmGjywviX jHpWg9gA/S2MA4n8ItOg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1isZOl-0001jV-Uq; Fri, 17 Jan 2020 21:43:24 +0000 Received: from relay10.mail.gandi.net ([217.70.178.230]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1isZNe-0000iJ-GU for linux-mtd@lists.infradead.org; Fri, 17 Jan 2020 21:42:18 +0000 Received: from xps13.lan (unknown [91.224.148.103]) (Authenticated sender: miquel.raynal@bootlin.com) by relay10.mail.gandi.net (Postfix) with ESMTPSA id 6199E240004; Fri, 17 Jan 2020 21:42:01 +0000 (UTC) From: Miquel Raynal To: Richard Weinberger , Vignesh Raghavendra , Tudor Ambarus , Subject: [PATCH v4 00/21] Prepare the introduction of generic ECC engines Date: Fri, 17 Jan 2020 22:41:30 +0100 Message-Id: <20200117214151.20767-1-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200117_134214_825317_4A31E67F X-CRM114-Status: GOOD ( 11.99 ) X-Spam-Score: -0.7 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.7 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [217.70.178.230 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Julien Su , Boris Brezillon , Mason Yang , Thomas Petazzoni , Miquel Raynal Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Already 3 series have been sent on this topic but as they grow over time, I decide to split it arbitrary and take only the preparation patches that are here. The actual ECC machinery will be contributed later when this preparation series will be merged. Cheers, Miquèl Changes in v4 ============= * Rebased on top of a recent kernel version. * Added Boris' reviewed-by. * Added Maxime's Acked-by tag. * Added the missing of_device.h header to ecc.c. * Corrected a 'minimum' comparison by using min_t. * Updated the new Macronix raw NAND controller driver by using the new (ECC related) function names. * Fixed a function call in ndfc.c. * Update brcmnand.c file to fit new enumerations and structures (due to recent Kamal's changes). * Force sm_ftl to depends on the Hamming engine, because by just selecting it the ECC code would be embedded in the NAND core and the NAND core might not be compiled in with sm_ftl. * Fixed a structure field name that I previously added in davinci platform data. * Moved the oob_first placement scheme to Davinci driver. Removed any occurence of it out of the driver (unused). * Simplify structure names as proposed by Boris. * Change enumeration/string names about ECC engine providers/placements. * Change the logic in the of_get_nand_ecc_* helpers to ensure backward compatibility. * Use enums intead of unsigned integers in the core when referring to ECC engine type, placement and algorithm. * Add nand-ecc-placement DT property. * Deprecate hw_syndrome. * Deprecate nand-ecc-mode in favor of nand-ecc-provider. Miquel Raynal (21): mtd: Fix typo in mtd_ooblayout_set_databytes() description mtd: rawnand: Avoid a typedef mtd: rawnand: Drop OOB_FIRST placement scheme dt-bindings: mtd: Deprecate OOB_FIRST mode mtd: rawnand: Return an enum from of_get_nand_ecc_algo() mtd: rawnand: Add an invalid ECC mode to discriminate with valid ones mtd: rawnand: Create a new enumeration to describe OOB placement mtd: rawnand: Separate the ECC engine type and the OOB placement mtd: rawnand: Create a new enumeration to describe properly ECC types mtd: rawnand: Create a helper to retrieve the ECC placement mtd: rawnand: Use the new ECC engine type enumeration mtd: rawnand: Deprecate nand-ecc-mode in favor of nand-ecc-provider mtd: rawnand: Drop the legacy ECC type enumeration dt-bindings: mtd: Add the nand-ecc-placement property dt-bindings: mtd: Deprecate hw_syndrome from the ECC modes dt-bindings: mtd: Deprecate the nand-ecc-mode property mtd: nand: Move nand_device forward declaration to the top mtd: nand: Add an extra level in the Kconfig hierarchy mtd: nand: Drop useless 'depends on' in Kconfig mtd: nand: Add a NAND page I/O request type mtd: nand: Rename a core structure .../devicetree/bindings/mtd/atmel-nand.txt | 3 +- .../bindings/mtd/nand-controller.yaml | 27 +- arch/arm/mach-davinci/board-da830-evm.c | 2 +- arch/arm/mach-davinci/board-da850-evm.c | 2 +- arch/arm/mach-davinci/board-dm355-evm.c | 2 +- arch/arm/mach-davinci/board-dm355-leopard.c | 3 +- arch/arm/mach-davinci/board-dm365-evm.c | 2 +- arch/arm/mach-davinci/board-dm644x-evm.c | 2 +- arch/arm/mach-davinci/board-dm646x-evm.c | 2 +- arch/arm/mach-davinci/board-mityomapl138.c | 2 +- arch/arm/mach-davinci/board-neuros-osd2.c | 2 +- arch/arm/mach-davinci/board-omapl138-hawk.c | 2 +- arch/arm/mach-s3c24xx/common-smdk.c | 2 +- arch/arm/mach-s3c24xx/mach-anubis.c | 2 +- arch/arm/mach-s3c24xx/mach-at2440evb.c | 2 +- arch/arm/mach-s3c24xx/mach-bast.c | 2 +- arch/arm/mach-s3c24xx/mach-gta02.c | 2 +- arch/arm/mach-s3c24xx/mach-jive.c | 2 +- arch/arm/mach-s3c24xx/mach-mini2440.c | 2 +- arch/arm/mach-s3c24xx/mach-osiris.c | 2 +- arch/arm/mach-s3c24xx/mach-qt2410.c | 2 +- arch/arm/mach-s3c24xx/mach-rx1950.c | 2 +- arch/arm/mach-s3c24xx/mach-rx3715.c | 2 +- arch/arm/mach-s3c24xx/mach-vstms.c | 2 +- arch/arm/mach-s3c64xx/mach-hmt.c | 2 +- arch/arm/mach-s3c64xx/mach-mini6410.c | 2 +- arch/arm/mach-s3c64xx/mach-real6410.c | 2 +- drivers/mtd/mtdcore.c | 2 +- drivers/mtd/nand/Kconfig | 5 + drivers/mtd/nand/onenand/Kconfig | 1 - drivers/mtd/nand/raw/Kconfig | 1 - drivers/mtd/nand/raw/ams-delta.c | 2 +- drivers/mtd/nand/raw/atmel/nand-controller.c | 14 +- drivers/mtd/nand/raw/au1550nd.c | 2 +- .../mtd/nand/raw/bcm47xxnflash/ops_bcm4706.c | 3 +- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 8 +- .../mtd/nand/raw/cadence-nand-controller.c | 4 +- drivers/mtd/nand/raw/cafe_nand.c | 3 +- drivers/mtd/nand/raw/cmx270_nand.c | 2 +- drivers/mtd/nand/raw/cs553x_nand.c | 2 +- drivers/mtd/nand/raw/davinci_nand.c | 153 +++++--- drivers/mtd/nand/raw/denali.c | 3 +- drivers/mtd/nand/raw/diskonchip.c | 3 +- drivers/mtd/nand/raw/fsl_elbc_nand.c | 18 +- drivers/mtd/nand/raw/fsl_ifc_nand.c | 10 +- drivers/mtd/nand/raw/fsl_upm.c | 2 +- drivers/mtd/nand/raw/fsmc_nand.c | 12 +- drivers/mtd/nand/raw/gpio.c | 2 +- drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 2 +- drivers/mtd/nand/raw/hisi504_nand.c | 6 +- .../mtd/nand/raw/ingenic/ingenic_nand_drv.c | 14 +- drivers/mtd/nand/raw/lpc32xx_mlc.c | 2 +- drivers/mtd/nand/raw/lpc32xx_slc.c | 3 +- drivers/mtd/nand/raw/marvell_nand.c | 17 +- drivers/mtd/nand/raw/meson_nand.c | 2 +- drivers/mtd/nand/raw/mpc5121_nfc.c | 2 +- drivers/mtd/nand/raw/mtk_nand.c | 6 +- drivers/mtd/nand/raw/mxc_nand.c | 23 +- drivers/mtd/nand/raw/nand_base.c | 330 ++++++++---------- drivers/mtd/nand/raw/nand_micron.c | 4 +- drivers/mtd/nand/raw/nand_toshiba.c | 3 +- drivers/mtd/nand/raw/nandsim.c | 4 +- drivers/mtd/nand/raw/ndfc.c | 2 +- drivers/mtd/nand/raw/omap2.c | 20 +- drivers/mtd/nand/raw/orion_nand.c | 2 +- drivers/mtd/nand/raw/pasemi_nand.c | 2 +- drivers/mtd/nand/raw/plat_nand.c | 2 +- drivers/mtd/nand/raw/qcom_nandc.c | 2 +- drivers/mtd/nand/raw/r852.c | 3 +- drivers/mtd/nand/raw/s3c2410.c | 16 +- drivers/mtd/nand/raw/sh_flctl.c | 4 +- drivers/mtd/nand/raw/sharpsl.c | 2 +- drivers/mtd/nand/raw/socrates_nand.c | 3 +- drivers/mtd/nand/raw/stm32_fmc2_nand.c | 9 +- drivers/mtd/nand/raw/sunxi_nand.c | 18 +- drivers/mtd/nand/raw/tango_nand.c | 2 +- drivers/mtd/nand/raw/tegra_nand.c | 2 +- drivers/mtd/nand/raw/tmio_nand.c | 2 +- drivers/mtd/nand/raw/txx9ndfmc.c | 2 +- drivers/mtd/nand/raw/vf610_nfc.c | 4 +- drivers/mtd/nand/raw/xway_nand.c | 2 +- drivers/mtd/nand/spi/core.c | 4 +- include/linux/mtd/nand.h | 30 +- include/linux/mtd/rawnand.h | 46 ++- include/linux/mtd/spinand.h | 2 +- include/linux/platform_data/mtd-davinci.h | 9 +- .../linux/platform_data/mtd-nand-s3c2410.h | 2 +- 87 files changed, 521 insertions(+), 422 deletions(-)