/linux/Documentation/driver-api/ |
H A D | mtdnand.rst | 10 The generic NAND driver supports almost all NAND and AG-AND based chips 26 struct member has a short description which is marked with an [XXX] 31 -------------------------- 37 - [MTD Interface] 43 - [NAND Interface] 48 - [GENERIC] 53 - [DEFAULT] 65 ------------------------------- 71 - [INTERN] 77 - [REPLACEABLE] [all …]
|
/linux/Documentation/devicetree/bindings/mtd/ |
H A 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 …]
|
H A 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> 12 - William Zhang <william.zhang@broadcom.com> 15 The Broadcom Set-Top Box NAND controller supports low-level access to raw NAND 16 flash chips. It has a memory-mapped register interface for both control 27 -- Additional SoC-specific NAND controller properties -- 35 interesting ways, sometimes with registers that lump multiple NAND-related [all …]
|
H A D | raw-nand-chip.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/raw-nand-chip.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Miquel Raynal <miquel.raynal@bootlin.com> 13 - $ref: nand-chip.yaml# 16 The ECC strength and ECC step size properties define the user 18 they request the ECC engine to correct {strength} bit errors per 21 The interpretation of these parameters is implementation-defined, so 28 pattern: "^nand@[a-f0-9]$" [all …]
|
H A D | vf610-nfc.txt | 7 - compatible: Should be set to "fsl,vf610-nfc". 8 - reg: address range of the NFC. 9 - interrupts: interrupt of the NFC. 10 - #address-cells: shall be set to 1. Encode the nand CS. 11 - #size-cells : shall be set to 0. 12 - assigned-clocks: main clock from the SoC, for Vybrid <&clks VF610_CLK_NFC>; 13 - assigned-clock-rates: The NAND bus timing is derived from this clock 17 there might be restrictions on maximum rates when using hardware ECC. 19 - #address-cells, #size-cells : Must be present if the device has sub-nodes 27 - compatible: Should be set to "fsl,vf610-nfc-cs". [all …]
|
/linux/drivers/mtd/nand/raw/ |
H A D | nand_micron.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 6 * Author: Boris Brezillon <boris.brezillon@free-electrons.com> 14 * Special Micron status bit 3 indicates that the block has been 15 * corrected by on-die ECC and should be rewritten. 20 * On chips with 8-bit ECC and additional bit can be used to distinguish 24 * ----- ----- ----- ----------- 27 * 0 1 0 4 - 6 errors corrected, recommend rewrite 29 * 1 0 0 1 - 3 errors corrected 31 * 1 1 0 7 - 8 errors corrected, recommend rewrite 66 struct micron_on_die_ecc ecc; member [all …]
|
H A D | marvell_nand.c | 1 // SPDX-License-Identifier: GPL-2.0 6 * Author: Miquel RAYNAL <miquel.raynal@free-electrons.com> 13 * The main visible difference is that NFCv1 only has Hamming ECC 14 * capabilities, while NFCv2 also embeds a BCH ECC engine. Also, DMA 17 * The ECC layouts are depicted in details in Marvell AN-379, but here 21 * or 4) and each chunk will have its own ECC "digest" of 6B at the 28 * +-------------------------------------------------------------+ 29 * | Data 1 | ... | Data N | ECC 1 | ... | ECCN | Free OOB bytes | 30 * +-------------------------------------------------------------+ 33 * ECC) sections and potentially an extra one to deal with [all …]
|
H A D | davinci_nand.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * davinci_nand.c - NAND Flash Driver for DaVinci family chips 8 * Sander Huijsen <Shuijsen@optelecom-nkf.com> 28 /* 4-bit ECC syndrome registers */ 51 * 0-indexed chip-select number of the asynchronous 52 * interface to which the NAND device has been connected. 71 * All DaVinci-family chips support 1-bit hardware ECC. 72 * Newer ones also support 4-bit ECC, but are awkward 95 * The 1-bit ECC hardware is supported, as well as the newer 4-bit ECC 96 * available on chips like the DM355 and OMAP-L137 and needed with the [all …]
|
H A D | nand_base.c | 1 // SPDX-License-Identifier: GPL-2.0-only 8 * http://www.linux-mtd.infradead.org/doc/nand.html 11 * 2002-2006 Thomas Gleixner (tglx@linutronix.de) 21 * Check, if mtd->ecctype should be set to MTD_ECC_HW 22 * if we have HW ECC support. 23 * BBT table is not serialized, has to be fixed 38 #include <linux/mtd/nand-ecc-sw-hamming.h> 39 #include <linux/mtd/nand-ecc-sw-bch.h> 52 int lastpage = (mtd->erasesize / mtd->writesize) - 1; in nand_pairing_dist3_get_info() 59 info->group = 0; in nand_pairing_dist3_get_info() [all …]
|
H A D | lpc32xx_slc.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 24 #include <linux/dma-mapping.h> 30 #define LPC32XX_MODNAME "lpc32xx-nand" 56 #define SLCCTRL_ECC_CLEAR (1 << 1) /* Reset ECC bit */ 63 #define SLCCFG_DMA_ECC (1 << 4) /* Enable DMA ECC bit */ 64 #define SLCCFG_ECC_EN (1 << 3) /* ECC enable bit */ 72 #define SLCSTAT_DMA_FIFO (1 << 2) /* DMA FIFO has data bit */ 73 #define SLCSTAT_SLC_FIFO (1 << 1) /* SLC FIFO has data bit */ 86 #define SLCTAC_CLOCKS(c, n, s) (min_t(u32, DIV_ROUND_UP(c, n) - 1, 0xF) << s) 108 /* ECC line party fetch macro */ [all …]
|
H A D | denali.c | 1 // SPDX-License-Identifier: GPL-2.0 4 * Copyright © 2009-2010, Intel Corporation and its suppliers. 6 * Copyright (c) 2017-2019 Socionext Inc. 12 #include <linux/dma-mapping.h> 23 #define DENALI_NAND_NAME "denali-nand" 31 #define DENALI_MAP10 (2 << 26) /* high-level control plane */ 39 #define DENALI_BANK(denali) ((denali)->active_bank << 24) 41 #define DENALI_INVALID_BANK -1 50 return container_of(chip->controller, struct denali_controller, in to_denali_controller() 55 * Direct Addressing - the slave address forms the control information (command [all …]
|
H A D | fsmc_nand.c | 1 // SPDX-License-Identifier: GPL-2.0 20 #include <linux/dma-direction.h> 21 #include <linux/dma-mapping.h> 29 #include <linux/mtd/nand-ecc-sw-hamming.h> 37 #include <mtd/mtd-abi.h> 99 * TOUDEL = 7ns (Output delay from the flip-flops to the board) 120 * struct fsmc_nand_data - structure for FSMC NAND device state 172 if (section >= chip->ecc.steps) in fsmc_ecc1_ooblayout_ecc() 173 return -ERANGE; in fsmc_ecc1_ooblayout_ecc() 175 oobregion->offset = (section * 16) + 2; in fsmc_ecc1_ooblayout_ecc() [all …]
|
/linux/include/linux/mtd/ |
H A 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 109 * This object is used to pass per-page I/O requests to NAND sub-layers. This [all …]
|
/linux/fs/ocfs2/ |
H A D | blockcheck.c | 1 // SPDX-License-Identifier: GPL-2.0-only 5 * Checksum and ECC codes for the OCFS2 userspace library. 39 * power-of-two bits for parity, the data bit number and the code bit 42 * Recall that bit numbers in hamming code are 1-based. This function 43 * takes the 0-based data bit from the caller. 59 * Data bits are 0-based, but we're talking code bits, which in calc_code_bit() 60 * are 1-based. in calc_code_bit() 105 * 1-based array, but C uses 0-based. So 'i' is for C, and 'b' is in ocfs2_hamming_encode() 164 * If the bit to fix has an hweight of 1, it's a parity bit. One in ocfs2_hamming_fix() 235 debugfs_remove_recursive(stats->b_debug_dir); in ocfs2_blockcheck_debug_remove() [all …]
|
/linux/drivers/edac/ |
H A D | Kconfig | 16 EDAC is a subsystem along with hardware-specific drivers designed to 17 report hardware errors. These are low-level errors that are reported 22 The mailing list for the EDAC project is linux-edac@vger.kernel.org. 40 levels are 0-4 (from low to high) and by default it is set to 2. 44 tristate "Decode MCEs in human-readable form (only on AMD for now)" 49 occurring on your machine in human-readable form. 53 has been initialized. 60 Not all machines support hardware-driven error report. Some of those 61 provide a BIOS-driven error report mechanism via ACPI, using the 65 When this option is enabled, it will disable the hardware-driven [all …]
|
H A D | altera_edac.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Copyright (C) 2017-2018, Intel Corporation. All rights reserved 4 * Copyright Altera Corporation (C) 2014-2016. All rights reserved. 5 * Copyright 2011-2012 Calxeda, Inc. 12 #include <linux/firmware/intel/stratix10-smc.h> 17 #include <linux/mfd/altera-sysmgr.h> 84 struct altr_sdram_mc_data *drvdata = mci->pvt_info; in altr_sdram_mc_err_handler() 85 const struct altr_sdram_prv_data *priv = drvdata->data; in altr_sdram_mc_err_handler() 88 regmap_read(drvdata->mc_vbase, priv->ecc_stat_offset, &status); in altr_sdram_mc_err_handler() 90 if (status & priv->ecc_stat_ue_mask) { in altr_sdram_mc_err_handler() [all …]
|
/linux/arch/sparc/include/asm/ |
H A D | chafsr.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 9 * ch --> cheetah 10 * ch+ --> cheetah plus 11 * jp --> jalapeno 15 * read, write 1 to clear. M_SYNDROME and E_SYNDROME are read-only. 33 /* Hardware corrected E-cache Tag ECC error */ 38 /* SW handled correctable E-cache Tag ECC error */ 43 /* Uncorrectable E-cache Tag ECC error */ 48 /* Uncorrectable system bus data ECC error due to prefetch 64 * This bit is not set when multiple ECC errors happen within a single [all …]
|
/linux/Documentation/devicetree/bindings/memory-controllers/ |
H A D | snps,dw-umctl2-ddrc.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only 3 --- 4 $id: http://devicetree.org/schemas/memory-controllers/snps,dw-umctl2-ddrc.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Synopsys DesignWare Universal Multi-Protocol Memory Controller 10 - Krzysztof Kozlowski <krzk@kernel.org> 11 - Michal Simek <michal.simek@amd.com> 16 be equipped with SEC/DEC ECC feature if DRAM data bus width is either 17 16-bits or 32-bits or 64-bits wide. 20 controller. It has an optional SEC/DEC ECC support in 64- and 32-bits [all …]
|
H A D | xlnx,zynq-ddrc-a05.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/memory-controllers/xlnx,zynq-ddrc-a05.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Krzysztof Kozlowski <krzk@kernel.org> 11 - Michal Simek <michal.simek@amd.com> 14 The Zynq DDR ECC controller has an optional ECC support in half-bus width 15 (16-bit) configuration. It is capable of correcting single bit ECC errors 16 and detecting double bit ECC errors. 20 const: xlnx,zynq-ddrc-a05 [all …]
|
/linux/drivers/crypto/intel/keembay/ |
H A 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 13 #include <crypto/internal/ecc.h> 32 #define DRV_NAME "keembay-ocs-ecc" 52 /* ECC Instruction : for ECC_COMMAND */ 76 * struct ocs_ecc_dev - ECC device context 78 * @dev: OCS ECC device 79 * @base_reg: IO base address of OCS ECC 94 * struct ocs_ecc_ctx - Transformation context. [all …]
|
/linux/drivers/usb/storage/ |
H A D | alauda.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * Driver for Alauda-based card readers 10 * Alauda implements a vendor-specific command set to access two media reader 14 * The driver was developed through reverse-engineering, with the help of the 15 * sddr09 driver which has many similarities, and with some help from the 16 * (very old) vendor-supplied GPL sma03 driver. 34 #define DRV_NAME "ums-alauda" 36 MODULE_DESCRIPTION("Driver for Alauda-based card readers"); 116 #define MEDIA_PORT(us) us->srb->device->lun 117 #define MEDIA_INFO(us) ((struct alauda_info *)us->extra)->port[MEDIA_PORT(us)] [all …]
|
H A D | sddr09.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * Driver for SanDisk SDDR-09 SmartMedia reader 10 * The SanDisk SDDR-09 SmartMedia reader uses the Shuttle EUSB-01 chip. 11 * This chip is a programmable USB controller. In the SDDR-09, it has 13 * This driver translates the "real" SCSI commands to the SDDR-09 SCSI 45 #define DRV_NAME "ums-sddr09" 47 MODULE_DESCRIPTION("Driver for SanDisk SDDR-09 SmartMedia reader"); 114 char pageadrlen; /* length of an address in bytes - 1 */ 142 * remaining data: SSFDC prescribes manufacturer-independent id codes. 144 * 256 MB NAND flash has a 5-byte ID with 2nd byte 0xaa, 0xba, 0xca or 0xda. [all …]
|
/linux/drivers/mtd/nand/ |
H A 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 …]
|
H A 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 …]
|
/linux/include/linux/ |
H A 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. 59 * backlogged) or advancement out of the backlog. If the cmd has 61 * will be -EINPROGRESS. Any other "err" value during callback is 64 * The cmd has been successfully queued if: [all …]
|