/Linux-v6.1/drivers/mtd/nand/ |
D | ecc.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * Generic Error-Correcting Code (ECC) engine 10 * This file describes the abstraction of any NAND ECC engine. It has been 11 * designed to fit most cases, including parallel NANDs and SPI-NANDs. 13 * There are three main situations where instantiating this ECC engine makes 15 * - external: The ECC engine is outside the NAND pipeline, typically this 16 * is a software ECC engine, or an hardware engine that is 18 * - pipelined: The ECC engine is inside the NAND pipeline, ie. on the 20 * controllers. In the pipeline case, the ECC bytes are 23 * - ondie: The ECC engine is inside the NAND pipeline, on the chip's side. [all …]
|
D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 12 menu "ECC engine support" 19 bool "Software Hamming ECC engine" 31 bool "NAND ECC Smart Media byte order" 35 Software ECC according to the Smart Media Specification. 39 bool "Software BCH ECC engine" 46 ECC codes. They are used with NAND devices requiring more than 1 bit 50 bool "Macronix external hardware ECC engine" 54 This enables support for the hardware ECC engine from Macronix. 57 tristate "Mediatek hardware ECC engine" [all …]
|
D | core.c | 1 // SPDX-License-Identifier: GPL-2.0 6 * Boris Brezillon <boris.brezillon@free-electrons.com> 16 * nanddev_isbad() - Check if a block is bad 35 if (nand->ops->isbad(nand, pos)) in nanddev_isbad() 50 return nand->ops->isbad(nand, pos); in nanddev_isbad() 55 * nanddev_markbad() - Mark a block as bad 60 * calls the low-level markbad hook (nand->ops->markbad()). 73 ret = nand->ops->markbad(nand, pos); in nanddev_markbad() 90 mtd->ecc_stats.badblocks++; in nanddev_markbad() 97 * nanddev_isreserved() - Check whether an eraseblock is reserved or not [all …]
|
D | ecc-mxic.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Support for Macronix external hardware ECC engine for NAND devices, also 4 * called DPE for Data Processing Engine. 10 #include <linux/dma-mapping.h> 19 #include <linux/mtd/nand-ecc-mxic.h> 53 /* ECC Chunk Size */ 63 /* ECC Chunk Count */ 98 /* ECC machinery */ 126 struct nand_ecc_engine *eng = nand->ecc.engine; in nand_to_mxic() 128 if (eng->integration == NAND_ECC_ENGINE_INTEGRATION_EXTERNAL) in nand_to_mxic() [all …]
|
D | ecc-sw-bch.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * This file provides ECC correction for more than 1 bit per block of data, 15 #include <linux/mtd/nand-ecc-sw-bch.h> 18 * nand_ecc_sw_bch_calculate - Calculate the ECC corresponding to a data block 21 * @code: Output buffer with ECC 26 struct nand_ecc_sw_bch_conf *engine_conf = nand->ecc.ctx.priv; in nand_ecc_sw_bch_calculate() 29 memset(code, 0, engine_conf->code_size); in nand_ecc_sw_bch_calculate() 30 bch_encode(engine_conf->bch, buf, nand->ecc.ctx.conf.step_size, code); in nand_ecc_sw_bch_calculate() 33 for (i = 0; i < engine_conf->code_size; i++) in nand_ecc_sw_bch_calculate() 34 code[i] ^= engine_conf->eccmask[i]; in nand_ecc_sw_bch_calculate() [all …]
|
D | ecc-mtk.c | 1 // SPDX-License-Identifier: GPL-2.0 OR MIT 3 * MTK ECC controller driver. 6 * Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org> 10 #include <linux/dma-mapping.h> 18 #include <linux/mtd/nand-ecc-mtk.h> 67 /* ecc strength that each IP supports */ 118 static inline void mtk_ecc_wait_idle(struct mtk_ecc *ecc, in mtk_ecc_wait_idle() argument 121 struct device *dev = ecc->dev; in mtk_ecc_wait_idle() 125 ret = readl_poll_timeout_atomic(ecc->regs + ECC_IDLE_REG(op), val, in mtk_ecc_wait_idle() 135 struct mtk_ecc *ecc = id; in mtk_ecc_irq() local [all …]
|
/Linux-v6.1/Documentation/devicetree/bindings/mtd/ |
D | nand-chip.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/nand-chip.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Miquel Raynal <miquel.raynal@bootlin.com> 15 SPI-NAND devices are concerned by this description. 20 Contains the chip-select IDs. 22 nand-ecc-engine: 24 A phandle on the hardware ECC engine if any. There are 26 1/ The ECC engine is part of the NAND controller, in this [all …]
|
D | mxicy,nand-ecc-engine.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/mxicy,nand-ecc-engine.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Macronix NAND ECC engine 10 - Miquel Raynal <miquel.raynal@bootlin.com> 14 const: mxicy,nand-ecc-engine-rev3 26 - compatible 27 - reg 32 - | [all …]
|
D | mtk-nand.txt | 5 the nand controller interface driver and the ECC engine driver. 15 - compatible: Should be one of 16 "mediatek,mt2701-nfc", 17 "mediatek,mt2712-nfc", 18 "mediatek,mt7622-nfc". 19 - reg: Base physical address and size of NFI. 20 - interrupts: Interrupts of NFI. 21 - clocks: NFI required clocks. 22 - clock-names: NFI clocks internal name. 23 - ecc-engine: Required ECC Engine node. [all …]
|
D | atmel-nand.txt | 4 Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt). 6 The NAND controller might be connected to an ECC engine. 11 - compatible: should be one of the following 12 "atmel,at91rm9200-nand-controller" 13 "atmel,at91sam9260-nand-controller" 14 "atmel,at91sam9261-nand-controller" 15 "atmel,at91sam9g45-nand-controller" 16 "atmel,sama5d3-nand-controller" 17 "microchip,sam9x60-nand-controller" 18 - ranges: empty ranges property to forward EBI ranges definitions. [all …]
|
D | nand-controller.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/mtd/nand-controller.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Miquel Raynal <miquel.raynal@bootlin.com> 11 - Richard Weinberger <richard@nod.at> 19 The ECC strength and ECC step size properties define the user 21 they request the ECC engine to correct {strength} bit errors per 24 The interpretation of these parameters is implementation-defined, so 31 pattern: "^nand-controller(@.*)?" [all …]
|
D | ingenic,nand.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Paul Cercueil <paul@crapouillou.net> 13 - $ref: nand-controller.yaml# 14 - $ref: /schemas/memory-controllers/ingenic,nemc-peripherals.yaml# 19 - ingenic,jz4740-nand 20 - ingenic,jz4725b-nand 21 - ingenic,jz4780-nand 25 - description: Bank number, offset and size of first attached NAND chip [all …]
|
D | brcm,brcmnand.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Brian Norris <computersforpeace@gmail.com> 11 - Kamal Dasu <kdasu.kdev@gmail.com> 14 The Broadcom Set-Top Box NAND controller supports low-level access to raw NAND 15 flash chips. It has a memory-mapped register interface for both control 17 is paired with a custom DMA engine (inventively named "Flash DMA") which 25 -- Additional SoC-specific NAND controller properties -- 33 interesting ways, sometimes with registers that lump multiple NAND-related [all …]
|
/Linux-v6.1/drivers/mtd/nand/raw/ingenic/ |
D | ingenic_ecc.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * JZ47xx ECC common code 18 * ingenic_ecc_calculate() - calculate ECC for a data buffer 19 * @ecc: ECC device. 20 * @params: ECC parameters. 22 * @ecc_code: output buffer with ECC. 24 * Return: 0 on success, -ETIMEDOUT if timed out while waiting for ECC 27 int ingenic_ecc_calculate(struct ingenic_ecc *ecc, in ingenic_ecc_calculate() argument 31 return ecc->ops->calculate(ecc, params, buf, ecc_code); in ingenic_ecc_calculate() 35 * ingenic_ecc_correct() - detect and correct bit errors [all …]
|
/Linux-v6.1/include/linux/mtd/ |
D | nand.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 3 * Copyright 2017 - Free Electrons 6 * Boris Brezillon <boris.brezillon@free-electrons.com> 18 * struct nand_memory_organization - Memory organization structure 55 * struct nand_row_converter - Information needed to convert an absolute offset 67 * struct nand_pos - NAND position object 74 * These information are usually used by specific sub-layers to select the 86 * enum nand_page_io_req_type - Direction of an I/O request 96 * struct nand_page_io_req - NAND I/O request object 107 * This object is used to pass per-page I/O requests to NAND sub-layers. This [all …]
|
D | nand-ecc-sw-bch.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 5 * This file is the header for the NAND BCH ECC implementation. 15 * struct nand_ecc_sw_bch_conf - private software BCH ECC engine structure 17 * engine needs 19 * @calc_buf: Buffer to use when calculating ECC bytes 20 * @code_buf: Buffer to use when reading (raw) ECC bytes from the chip 23 * @eccmask: XOR ecc mask, allows erased pages to be decoded as valid 51 return -ENOTSUPP; in nand_ecc_sw_bch_calculate() 59 return -ENOTSUPP; in nand_ecc_sw_bch_correct() 64 return -ENOTSUPP; in nand_ecc_sw_bch_init_ctx()
|
D | nand-ecc-sw-hamming.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 3 * Copyright (C) 2000-2010 Steven J. Hill <sjhill@realitydiluted.com> 7 * This file is the header for the NAND Hamming ECC implementation. 16 * struct nand_ecc_sw_hamming_conf - private software Hamming ECC engine structure 18 * engine needs 20 * @calc_buf: Buffer to use when calculating ECC bytes 21 * @code_buf: Buffer to use when reading (raw) ECC bytes from the chip 52 return -ENOTSUPP; in nand_ecc_sw_hamming_init_ctx() 61 return -ENOTSUPP; in ecc_sw_hamming_calculate() 68 return -ENOTSUPP; in nand_ecc_sw_hamming_calculate() [all …]
|
/Linux-v6.1/Documentation/devicetree/bindings/spi/ |
D | mediatek,spi-mtk-snfi.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/spi/mediatek,spi-mtk-snfi.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: SPI-NAND flash controller for MediaTek ARM SoCs 10 - Chuanhong Guo <gch981213@gmail.com> 13 The Mediatek SPI-NAND flash controller is an extended version of 15 instructions with one continuous write and one read for up-to 0xa0 16 bytes. It also supports typical SPI-NAND page cache operations 17 in single, dual or quad IO mode with pipelined ECC encoding/decoding [all …]
|
D | mxicy,mx25f0a-spi.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/spi/mxicy,mx25f0a-spi.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Miquel Raynal <miquel.raynal@bootlin.com> 13 - $ref: "spi-controller.yaml#" 17 const: mxicy,mx25f0a-spi 23 reg-names: 25 - const: regs 26 - const: dirmap [all …]
|
/Linux-v6.1/drivers/crypto/keembay/ |
D | keembay-ocs-ecc.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Intel Keem Bay OCS ECC Crypto Driver. 5 * Copyright (C) 2019-2021 Intel Corporation 28 #include <crypto/engine.h> 32 #include <crypto/internal/ecc.h> 35 #define DRV_NAME "keembay-ocs-ecc" 55 /* ECC Instruction : for ECC_COMMAND */ 79 * struct ocs_ecc_dev - ECC device context 81 * @dev: OCS ECC device 82 * @base_reg: IO base address of OCS ECC [all …]
|
/Linux-v6.1/drivers/mtd/nand/raw/ |
D | omap2.c | 1 // SPDX-License-Identifier: GPL-2.0-only 10 #include <linux/dma-mapping.h> 18 #include <linux/mtd/nand-ecc-sw-bch.h> 21 #include <linux/omap-dma.h> 29 #include <linux/omap-gpmc.h> 30 #include <linux/platform_data/mtd-nand-omap2.h> 32 #define DRIVER_NAME "omap2-nand" 122 /* GPMC ecc engine settings for read */ 129 /* GPMC ecc engine settings for write */ 170 /* fields specific for BCHx_HW ECC scheme */ [all …]
|
D | pl35x-nand-controller.c | 1 // SPDX-License-Identifier: GPL-2.0 33 #define PL35X_NANDC_DRIVER_NAME "pl35x-nand-controller" 60 /* SMC ECC status register (RO) */ 63 /* SMC ECC configuration register */ 70 /* SMC ECC command 1 register */ 76 /* SMC ECC command 2 register */ 82 /* SMC ECC value registers (RO) */ 128 * struct pl35x_nandc - NAND flash controller driver structure 136 * @ecc_buf: Temporary buffer to extract ECC bytes 164 if (section >= chip->ecc.steps) in pl35x_ecc_ooblayout16_ecc() [all …]
|
/Linux-v6.1/include/linux/ |
D | ccp.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 27 * ccp_present - check if a CCP device is present 29 * Returns zero if a CCP device is present, -ENODEV otherwise. 34 #define CCP_VMASK ((unsigned int)((1 << CCP_VSIZE) - 1)) 39 * ccp_version - get the version of the CCP 46 * ccp_enqueue_cmd - queue an operation for processing by the CCP 55 * result in a return code of -EBUSY. 61 * will be -EINPROGRESS. Any other "err" value during callback is 65 * the return code is -EINPROGRESS or 66 * the return code is -EBUSY and CCP_CMD_MAY_BACKLOG flag is set [all …]
|
/Linux-v6.1/drivers/crypto/ccp/ |
D | ccp-ops.c | 1 // SPDX-License-Identifier: GPL-2.0-only 5 * Copyright (C) 2013-2019 Advanced Micro Devices, Inc. 11 #include <linux/dma-mapping.h> 19 #include "ccp-dev.h" 56 #define CCP_NEW_JOBID(ccp) ((ccp->vdata->version == CCP_VERSION(3, 0)) ? \ 61 return atomic_inc_return(&ccp->current_id) & CCP_JOBID_MASK; in ccp_gen_jobid() 66 if (wa->dma_count) in ccp_sg_free() 67 dma_unmap_sg(wa->dma_dev, wa->dma_sg_head, wa->nents, wa->dma_dir); in ccp_sg_free() 69 wa->dma_count = 0; in ccp_sg_free() 78 wa->sg = sg; in ccp_init_sg_workarea() [all …]
|
/Linux-v6.1/drivers/mtd/nand/raw/atmel/ |
D | pmecc.c | 1 // SPDX-License-Identifier: GPL-2.0 6 * Author: Boris Brezillon <boris.brezillon@free-electrons.com> 19 * Add Hardware ECC support for AT91SAM9260 / AT91SAM9263 22 * Derived from Das U-Boot source code 23 * (u-boot-1.1.5/board/atmel/at91sam9263ek/nand.c) 26 * Add Programmable Multibit ECC support for various AT91 SoC 32 * The PMECC is an hardware assisted BCH engine, which means part of the 33 * ECC algorithm is left to the software. The hardware/software repartition 37 * sub-section. 41 * to expose the needed lib/bch.c helpers/functions and re-use them here. [all …]
|