/linux/Documentation/devicetree/bindings/mtd/ |
H A D | hisi504-nand.txt | 1 Hisilicon Hip04 Soc NAND controller DT binding 5 - compatible: Should be "hisilicon,504-nfc". 6 - reg: The first contains base physical address and size of 7 NAND controller's registers. The second contains base 8 physical address and size of NAND controller's buffer. 9 - interrupts: Interrupt number for nfc. 10 - nand-bus-width: See nand-controller.yaml. 11 - nand-ecc-mode: Support none and hw ecc mode. 12 - #address-cells: Partition address, should be set 1. 13 - #size-cells: Partition size, should be set 1. [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# 7 title: Raw NAND Chip Common Properties 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 19 {size} bytes for a particular raw NAND chip. [all …]
|
H A D | rockchip,nand-controller.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/rockchip,nand-controller.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Rockchip SoCs NAND FLASH Controller (NFC) 10 - $ref: nand-controller.yaml# 13 - Heiko Stuebner <heiko@sntech.de> 18 - const: rockchip,px30-nfc 19 - const: rockchip,rk2928-nfc 20 - const: rockchip,rv1108-nfc [all …]
|
H A D | nvidia-tegra20-nand.txt | 1 NVIDIA Tegra NAND Flash controller 4 - compatible: Must be one of: 5 - "nvidia,tegra20-nand" 6 - reg: MMIO address range 7 - interrupts: interrupt output of the NFC controller 8 - clocks: Must contain an entry for each entry in clock-names. 9 See ../clocks/clock-bindings.txt for details. 10 - clock-names: Must include the following entries: 11 - nand 12 - resets: Must contain an entry for each entry in reset-names. [all …]
|
H A D | mediatek,mtk-nfc.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/mediatek,mtk-nfc.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: MediaTek(MTK) SoCs raw NAND FLASH controller (NFC) 10 - Xiangsheng Hou <xiangsheng.hou@mediatek.com> 15 - mediatek,mt2701-nfc 16 - mediatek,mt2712-nfc 17 - mediatek,mt7622-nfc 21 - description: Base physical address and size of NFI. [all …]
|
H A D | denali,nand.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/mtd/denali,nand.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Denali NAND controller 10 - Masahiro Yamada <yamada.masahiro@socionext.com> 15 - altr,socfpga-denali-nand 16 - socionext,uniphier-denali-nand-v5a 17 - socionext,uniphier-denali-nand-v5b 19 reg-names: [all …]
|
H A D | amlogic,meson-nand.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/amlogic,meson-nand.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Amlogic NAND Flash Controller (NFC) for GXBB/GXL/AXG family SoCs 10 - $ref: nand-controller.yaml 13 - liang.yang@amlogic.com 18 - amlogic,meson-gxl-nfc 19 - amlogic,meson-axg-nfc 24 reg-names: [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# 7 title: Broadcom STB NAND Controller 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 -- [all …]
|
H A D | marvell,nand-controller.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/mtd/marvell,nand-controller.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Marvell NAND Flash Controller (NFC) 10 - Miquel Raynal <miquel.raynal@bootlin.com> 15 - items: 16 - const: marvell,armada-8k-nand-controller 17 - const: marvell,armada370-nand-controller 18 - enum: [all …]
|
H A 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# 7 title: NAND Chip Common Properties 10 - Miquel Raynal <miquel.raynal@bootlin.com> 13 - $ref: mtd.yaml# 16 This file covers the generic description of a NAND chip. It implies that the 17 bus interface should not be taken into account: both raw NAND devices and 18 SPI-NAND devices are concerned by this description. [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, 14 #include <linux/mtd/nand.h> 15 #include <linux/mtd/nand-ecc-sw-bch.h> 18 * nand_ecc_sw_bch_calculate - Calculate the ECC corresponding to a data block 19 * @nand: NAND device 21 * @code: Output buffer with ECC 23 int nand_ecc_sw_bch_calculate(struct nand_device *nand, in nand_ecc_sw_bch_calculate() argument 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() [all …]
|
H A 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 17 * outside the NAND controller pipeline. 18 * - pipelined: The ECC engine is inside the NAND pipeline, ie. on the 19 * controller's side. This is the case of most of the raw NAND [all …]
|
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 3 menu "NAND" menu 8 source "drivers/mtd/nand/onenand/Kconfig" 9 source "drivers/mtd/nand/raw/Kconfig" 10 source "drivers/mtd/nand/spi/Kconfig" 12 menu "ECC engine support" 19 bool "Software Hamming ECC engine" 26 widely used with old parts, newer NAND chips usually require 27 more strength correction and in this case BCH or RS will be 31 bool "NAND ECC Smart Media byte order" [all …]
|
/linux/drivers/mtd/nand/raw/ |
H A D | tegra_nand.c | 1 // SPDX-License-Identifier: GPL-2.0 4 * Copyright (C) 2014-2015 Lucas Stach <dev@lynxeye.de> 10 #include <linux/dma-mapping.h> 34 #define COMMAND_TRANS_SIZE(size) ((((size) - 1) & 0xf) << 20) 40 #define COMMAND_CLE_SIZE(size) ((((size) - 1) & 0x3) << 4) 41 #define COMMAND_ALE_SIZE(size) ((((size) - 1) & 0xf) << 0) 156 #define OFFSET(val, off) ((val) < (off) ? 0 : (val) - (off)) 185 struct mtd_oob_region ecc; member 207 int bytes_per_step = DIV_ROUND_UP(BITS_PER_STEP_RS * chip->ecc.strength, in tegra_nand_ooblayout_rs_ecc() 211 return -ERANGE; in tegra_nand_ooblayout_rs_ecc() [all …]
|
H A D | mtk_nand.c | 1 // SPDX-License-Identifier: GPL-2.0 OR MIT 3 * MTK NAND Flash controller driver. 6 * Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org> 10 #include <linux/dma-mapping.h> 19 #include <linux/mtd/nand-ecc-mtk.h> 21 /* NAND controller register definition */ 89 #define MTK_NAME "mtk-nand" 126 struct nand_chip nand; member 146 struct mtk_ecc *ecc; member 178 static inline struct mtk_nfc_nand_chip *to_mtk_nand(struct nand_chip *nand) in to_mtk_nand() argument [all …]
|
H A D | stm32_fmc2_nand.c | 1 // SPDX-License-Identifier: GPL-2.0 10 #include <linux/dma-mapping.h> 28 /* ECC step size */ 37 /* Max requests done for a 8k nand page size */ 43 /* Max ECC buffer length */ 256 struct stm32_fmc2_nand nand; member 294 struct stm32_fmc2_nfc *nfc = to_stm32_nfc(chip->controller); in stm32_fmc2_nfc_timings_init() 295 struct stm32_fmc2_nand *nand = to_fmc2_nand(chip); in stm32_fmc2_nfc_timings_init() local 296 struct stm32_fmc2_timings *timings = &nand->timings; in stm32_fmc2_nfc_timings_init() 300 regmap_update_bits(nfc->regmap, FMC2_PCR, in stm32_fmc2_nfc_timings_init() [all …]
|
H A D | meson_nand.c | 1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 3 * Amlogic Meson Nand Flash Controller Driver 10 #include <linux/dma-mapping.h> 13 #include <linux/clk-provider.h> 84 #define ECC_CHECK_RETURN_FF (-1) 101 /* nand flash controller delay 3 ns */ 124 struct nand_chip nand; member 143 u32 strength; member 209 #define MESON_ECC_DATA(b, s, sz) { .bch = (b), .strength = (s), .size = (sz) } 221 static int meson_nand_calc_ecc_bytes(int step_size, int strength) in meson_nand_calc_ecc_bytes() argument [all …]
|
H A D | rockchip-nand-controller.c | 1 // SPDX-License-Identifier: GPL-2.0 OR MIT 3 * Rockchip NAND Flash controller driver. 5 * Author: Yifeng Zhao <yifeng.zhao@rock-chips.com> 10 #include <linux/dma-mapping.h> 23 * 1024 bytes data + 4Bytes sys data + 28Bytes~124Bytes ECC data + 24 * 1024 bytes data + 4Bytes sys data + 28Bytes~124Bytes ECC data + 26 * NAND Page Data Layout: 30 * nand_chip->oob_poi data layout: 31 * 4Bytes sys data + .... + 4Bytes sys data + ECC data. 34 /* NAND controller register definition */ [all …]
|
H A D | arasan-nand-controller.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Arasan NAND Flash Controller Driver 5 * Copyright (C) 2014 - 2020 Xilinx, Inc. 17 #include <linux/dma-mapping.h> 114 #define ANFC_MAX_PKT_SIZE (SZ_2K - 1) 124 * struct anfc_op - Defines how to execute an operation 150 * struct anand - Defines the NAND chip related information 151 * @node: Used to store NAND chips into a list 152 * @chip: NAND chip information structure 153 * @rb: Ready-busy line [all …]
|
H A D | marvell_nand.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Marvell NAND flash controller driver 6 * Author: Miquel RAYNAL <miquel.raynal@free-electrons.com> 9 * This NAND controller driver handles two versions of the hardware, 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 | [all …]
|
H A D | nand_micron.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 6 * Author: Boris Brezillon <boris.brezillon@free-electrons.com> 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 77 * Configure chip properties from Micron vendor-specific ONFI table [all …]
|
/linux/drivers/mtd/nand/raw/ingenic/ |
H A D | ingenic_nand_drv.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Ingenic JZ47xx NAND driver 23 #include <linux/jz4780-nemc.h> 27 #define DRV_NAME "ingenic-nand" 44 struct ingenic_ecc *ecc; member 75 struct nand_ecc_ctrl *ecc = &chip->ecc; in qi_lb60_ooblayout_ecc() local 77 if (section || !ecc->total) in qi_lb60_ooblayout_ecc() 78 return -ERANGE; in qi_lb60_ooblayout_ecc() 80 oobregion->length = ecc->total; in qi_lb60_ooblayout_ecc() 81 oobregion->offset = 12; in qi_lb60_ooblayout_ecc() [all …]
|
/linux/drivers/mtd/nand/raw/atmel/ |
H A D | pmecc.c | 1 // SPDX-License-Identifier: GPL-2.0 6 * Author: Boris Brezillon <boris.brezillon@free-electrons.com> 13 * Derived from drivers/mtd/nand/autcpu12.c (removed in v3.8) 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 29 * Add Nand Flash Controller support for SAMA5 SoC 33 * ECC algorithm is left to the software. The hardware/software repartition 37 * sub-section. [all …]
|
/linux/arch/arm/boot/dts/broadcom/ |
H A D | bcm5301x-nand-cs0-bch8.dtsi | 1 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT 3 * Broadcom BCM470X / BCM5301X Nand chip defaults. 5 * This should be included if the NAND controller is on chip select 0 6 * and uses 8 bit ECC. 8 * Copyright (C) 2015 Hauke Mehrtens <hauke@hauke-m.de> 11 #include "bcm5301x-nand-cs0.dtsi" 14 nand-ecc-algo = "bch"; 15 nand-ecc-strength = <8>; 16 nand-ecc-step-size = <512>;
|
/linux/arch/arm64/boot/dts/qcom/ |
H A D | ipq6018-cp01-c1.dts | 1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 8 /dts-v1/; 10 #include "ipq6018-mp5496.dtsi" 13 model = "Qualcomm Technologies, Inc. IPQ6018/AP-CP01-C1"; 14 compatible = "qcom,ipq6018-cp01", "qcom,ipq6018"; 21 stdout-path = "serial0:115200n8"; 26 pinctrl-0 = <&serial_3_pins>; 27 pinctrl-names = "default"; 32 pinctrl-0 = <&i2c_1_pins>; 33 pinctrl-names = "default"; [all …]
|