/linux-5.19.10/drivers/mtd/nand/ |
D | core.c | 22 bool nanddev_isbad(struct nand_device *nand, const struct nand_pos *pos) in nanddev_isbad() argument 27 if (nanddev_bbt_is_initialized(nand)) { in nanddev_isbad() 31 entry = nanddev_bbt_pos_to_entry(nand, pos); in nanddev_isbad() 32 status = nanddev_bbt_get_block_status(nand, entry); in nanddev_isbad() 35 if (nand->ops->isbad(nand, pos)) in nanddev_isbad() 40 nanddev_bbt_set_block_status(nand, entry, status); in nanddev_isbad() 50 return nand->ops->isbad(nand, pos); in nanddev_isbad() 64 int nanddev_markbad(struct nand_device *nand, const struct nand_pos *pos) in nanddev_markbad() argument 66 struct mtd_info *mtd = nanddev_to_mtd(nand); in nanddev_markbad() 70 if (nanddev_isbad(nand, pos)) in nanddev_markbad() [all …]
|
D | ecc.c | 112 int nand_ecc_init_ctx(struct nand_device *nand) in nand_ecc_init_ctx() argument 114 if (!nand->ecc.engine || !nand->ecc.engine->ops->init_ctx) in nand_ecc_init_ctx() 117 return nand->ecc.engine->ops->init_ctx(nand); in nand_ecc_init_ctx() 125 void nand_ecc_cleanup_ctx(struct nand_device *nand) in nand_ecc_cleanup_ctx() argument 127 if (nand->ecc.engine && nand->ecc.engine->ops->cleanup_ctx) in nand_ecc_cleanup_ctx() 128 nand->ecc.engine->ops->cleanup_ctx(nand); in nand_ecc_cleanup_ctx() 137 int nand_ecc_prepare_io_req(struct nand_device *nand, in nand_ecc_prepare_io_req() argument 140 if (!nand->ecc.engine || !nand->ecc.engine->ops->prepare_io_req) in nand_ecc_prepare_io_req() 143 return nand->ecc.engine->ops->prepare_io_req(nand, req); in nand_ecc_prepare_io_req() 152 int nand_ecc_finish_io_req(struct nand_device *nand, in nand_ecc_finish_io_req() argument [all …]
|
D | ecc-sw-bch.c | 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() 30 bch_encode(engine_conf->bch, buf, nand->ecc.ctx.conf.step_size, code); in nand_ecc_sw_bch_calculate() 49 int nand_ecc_sw_bch_correct(struct nand_device *nand, unsigned char *buf, in nand_ecc_sw_bch_correct() argument 52 struct nand_ecc_sw_bch_conf *engine_conf = nand->ecc.ctx.priv; in nand_ecc_sw_bch_correct() 53 unsigned int step_size = nand->ecc.ctx.conf.step_size; in nand_ecc_sw_bch_correct() 82 static void nand_ecc_sw_bch_cleanup(struct nand_device *nand) in nand_ecc_sw_bch_cleanup() argument 84 struct nand_ecc_sw_bch_conf *engine_conf = nand->ecc.ctx.priv; in nand_ecc_sw_bch_cleanup() 108 static int nand_ecc_sw_bch_init(struct nand_device *nand) in nand_ecc_sw_bch_init() argument 110 struct nand_ecc_sw_bch_conf *engine_conf = nand->ecc.ctx.priv; in nand_ecc_sw_bch_init() [all …]
|
D | bbt.c | 23 int nanddev_bbt_init(struct nand_device *nand) in nanddev_bbt_init() argument 26 unsigned int nblocks = nanddev_neraseblocks(nand); in nanddev_bbt_init() 30 nand->bbt.cache = kcalloc(nwords, sizeof(*nand->bbt.cache), in nanddev_bbt_init() 32 if (!nand->bbt.cache) in nanddev_bbt_init() 45 void nanddev_bbt_cleanup(struct nand_device *nand) in nanddev_bbt_cleanup() argument 47 kfree(nand->bbt.cache); in nanddev_bbt_cleanup() 60 int nanddev_bbt_update(struct nand_device *nand) in nanddev_bbt_update() argument 74 int nanddev_bbt_get_block_status(const struct nand_device *nand, in nanddev_bbt_get_block_status() argument 78 unsigned long *pos = nand->bbt.cache + in nanddev_bbt_get_block_status() 83 if (entry >= nanddev_neraseblocks(nand)) in nanddev_bbt_get_block_status() [all …]
|
D | ecc-sw-hamming.c | 362 int nand_ecc_sw_hamming_calculate(struct nand_device *nand, in nand_ecc_sw_hamming_calculate() argument 365 struct nand_ecc_sw_hamming_conf *engine_conf = nand->ecc.ctx.priv; in nand_ecc_sw_hamming_calculate() 366 unsigned int step_size = nand->ecc.ctx.conf.step_size; in nand_ecc_sw_hamming_calculate() 454 int nand_ecc_sw_hamming_correct(struct nand_device *nand, unsigned char *buf, in nand_ecc_sw_hamming_correct() argument 458 struct nand_ecc_sw_hamming_conf *engine_conf = nand->ecc.ctx.priv; in nand_ecc_sw_hamming_correct() 459 unsigned int step_size = nand->ecc.ctx.conf.step_size; in nand_ecc_sw_hamming_correct() 467 int nand_ecc_sw_hamming_init_ctx(struct nand_device *nand) in nand_ecc_sw_hamming_init_ctx() argument 469 struct nand_ecc_props *conf = &nand->ecc.ctx.conf; in nand_ecc_sw_hamming_init_ctx() 471 struct mtd_info *mtd = nanddev_to_mtd(nand); in nand_ecc_sw_hamming_init_ctx() 492 conf->step_size = nand->ecc.user_conf.step_size; in nand_ecc_sw_hamming_init_ctx() [all …]
|
/linux-5.19.10/include/linux/mtd/ |
D | nand.h | 226 int (*erase)(struct nand_device *nand, const struct nand_pos *pos); 227 int (*markbad)(struct nand_device *nand, const struct nand_pos *pos); 228 bool (*isbad)(struct nand_device *nand, const struct nand_pos *pos); 258 int (*init_ctx)(struct nand_device *nand); 259 void (*cleanup_ctx)(struct nand_device *nand); 260 int (*prepare_io_req)(struct nand_device *nand, 262 int (*finish_io_req)(struct nand_device *nand, 298 void of_get_nand_ecc_user_config(struct nand_device *nand); 299 int nand_ecc_init_ctx(struct nand_device *nand); 300 void nand_ecc_cleanup_ctx(struct nand_device *nand); [all …]
|
D | nand-ecc-sw-bch.h | 37 int nand_ecc_sw_bch_calculate(struct nand_device *nand, 39 int nand_ecc_sw_bch_correct(struct nand_device *nand, unsigned char *buf, 41 int nand_ecc_sw_bch_init_ctx(struct nand_device *nand); 42 void nand_ecc_sw_bch_cleanup_ctx(struct nand_device *nand); 47 static inline int nand_ecc_sw_bch_calculate(struct nand_device *nand, in nand_ecc_sw_bch_calculate() argument 54 static inline int nand_ecc_sw_bch_correct(struct nand_device *nand, in nand_ecc_sw_bch_correct() argument 62 static inline int nand_ecc_sw_bch_init_ctx(struct nand_device *nand) in nand_ecc_sw_bch_init_ctx() argument 67 static inline void nand_ecc_sw_bch_cleanup_ctx(struct nand_device *nand) {} in nand_ecc_sw_bch_cleanup_ctx() argument
|
D | nand-ecc-sw-hamming.h | 34 int nand_ecc_sw_hamming_init_ctx(struct nand_device *nand); 35 void nand_ecc_sw_hamming_cleanup_ctx(struct nand_device *nand); 38 int nand_ecc_sw_hamming_calculate(struct nand_device *nand, 44 int nand_ecc_sw_hamming_correct(struct nand_device *nand, unsigned char *buf, 50 static inline int nand_ecc_sw_hamming_init_ctx(struct nand_device *nand) in nand_ecc_sw_hamming_init_ctx() argument 55 static inline void nand_ecc_sw_hamming_cleanup_ctx(struct nand_device *nand) {} in nand_ecc_sw_hamming_cleanup_ctx() argument 64 static inline int nand_ecc_sw_hamming_calculate(struct nand_device *nand, in nand_ecc_sw_hamming_calculate() argument 79 static inline int nand_ecc_sw_hamming_correct(struct nand_device *nand, in nand_ecc_sw_hamming_correct() argument
|
/linux-5.19.10/drivers/mtd/nand/raw/ |
D | meson_nand.c | 109 struct nand_chip nand; member 217 static struct meson_nfc_nand_chip *to_meson_nand(struct nand_chip *nand) in to_meson_nand() argument 219 return container_of(nand, struct meson_nfc_nand_chip, nand); in to_meson_nand() 222 static void meson_nfc_select_chip(struct nand_chip *nand, int chip) in meson_nfc_select_chip() argument 224 struct meson_nfc_nand_chip *meson_chip = to_meson_nand(nand); in meson_nfc_select_chip() 225 struct meson_nfc *nfc = nand_get_controller_data(nand); in meson_nfc_select_chip() 265 static void meson_nfc_cmd_access(struct nand_chip *nand, int raw, bool dir, in meson_nfc_cmd_access() argument 268 struct mtd_info *mtd = nand_to_mtd(nand); in meson_nfc_cmd_access() 270 struct meson_nfc_nand_chip *meson_chip = to_meson_nand(nand); in meson_nfc_cmd_access() 274 pagesize = nand->ecc.size; in meson_nfc_cmd_access() [all …]
|
D | sunxi_nand.c | 195 struct nand_chip nand; member 204 static inline struct sunxi_nand_chip *to_sunxi_nand(struct nand_chip *nand) in to_sunxi_nand() argument 206 return container_of(nand, struct sunxi_nand_chip, nand); in to_sunxi_nand() 416 static void sunxi_nfc_select_chip(struct nand_chip *nand, unsigned int cs) in sunxi_nfc_select_chip() argument 418 struct mtd_info *mtd = nand_to_mtd(nand); in sunxi_nfc_select_chip() 419 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand); in sunxi_nfc_select_chip() 420 struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller); in sunxi_nfc_select_chip() 431 ctl |= NFC_CE_SEL(sel->cs) | NFC_EN | NFC_PAGE_SHIFT(nand->page_shift); in sunxi_nfc_select_chip() 447 static void sunxi_nfc_read_buf(struct nand_chip *nand, uint8_t *buf, int len) in sunxi_nfc_read_buf() argument 449 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand); in sunxi_nfc_read_buf() [all …]
|
D | Makefile | 3 obj-$(CONFIG_MTD_RAW_NAND) += nand.o 44 obj-$(CONFIG_MTD_NAND_GPMI_NAND) += gpmi-nand/ 56 obj-$(CONFIG_MTD_NAND_CADENCE) += cadence-nand-controller.o 57 obj-$(CONFIG_MTD_NAND_ARASAN) += arasan-nand-controller.o 58 obj-$(CONFIG_MTD_NAND_INTEL_LGM) += intel-nand-controller.o 59 obj-$(CONFIG_MTD_NAND_ROCKCHIP) += rockchip-nand-controller.o 60 obj-$(CONFIG_MTD_NAND_PL35X) += pl35x-nand-controller.o 61 obj-$(CONFIG_MTD_NAND_RENESAS) += renesas-nand-controller.o 63 nand-objs := nand_base.o nand_legacy.o nand_bbt.o nand_timings.o nand_ids.o 64 nand-objs += nand_onfi.o [all …]
|
/linux-5.19.10/Documentation/devicetree/bindings/mtd/ |
D | denali,nand.yaml | 4 $id: http://devicetree.org/schemas/mtd/denali,nand.yaml# 15 - altr,socfpga-denali-nand 16 - socionext,uniphier-denali-nand-v5a 17 - socionext,uniphier-denali-nand-v5b 38 nand: controller core clock 42 - const: nand 53 nand: controller core reset 57 - const: nand 59 - const: nand 67 - $ref: nand-controller.yaml [all …]
|
D | qcom,nandc.yaml | 15 - qcom,ipq806x-nand 16 - qcom,ipq4019-nand 17 - qcom,ipq6018-nand 18 - qcom,ipq8074-nand 19 - qcom,sdx55-nand 38 "^nand@[a-f0-9]$": 41 nand-bus-width: 44 nand-ecc-strength: 47 nand-ecc-step-size: 52 - $ref: "nand-controller.yaml#" [all …]
|
D | marvell-nand.txt | 5 * "marvell,armada-8k-nand-controller" 6 * "marvell,armada370-nand-controller" 7 * "marvell,pxa3xx-nand-controller" 8 * "marvell,armada-8k-nand" (deprecated) 9 * "marvell,armada370-nand" (deprecated) 10 * "marvell,pxa3xx-nand" (deprecated) 23 "marvell,armada-8k-nand[-controller]" compatibles). 28 This property is only used with "marvell,pxa3xx-nand[-controller]" 31 This property is only used with "marvell,pxa3xx-nand[-controller]" 39 - nand-rb: see nand-controller.yaml (0-1). [all …]
|
D | samsung-s3c2410.txt | 5 "samsung,s3c2410-nand" 6 "samsung,s3c2412-nand" 7 "samsung,s3c2440-nand" 9 - #address-cells, #size-cells : see nand-controller.yaml 10 - clocks : phandle to the nand controller clock 11 - clock-names : must contain "nand" 14 Child nodes representing the available nand chips. 17 - nand-ecc-mode : see nand-controller.yaml 18 - nand-on-flash-bbt : see nand-controller.yaml 26 nand-controller@4e000000 { [all …]
|
D | nvidia-tegra20-nand.txt | 5 - "nvidia,tegra20-nand" 11 - nand 15 - nand 25 - nand-ecc-mode: String, operation mode of the NAND ecc mode. Currently only 27 - nand-ecc-algo: string, algorithm of NAND ECC. 29 - nand-bus-width : See nand-controller.yaml 30 - nand-on-flash-bbt: See nand-controller.yaml 31 - nand-ecc-strength: integer representing the number of bits to correct 36 - nand-ecc-maximize: See nand-controller.yaml 37 - nand-is-boot-medium: Makes sure only ECC strengths supported by the boot ROM [all …]
|
D | brcm,brcmnand.yaml | 58 - const: brcm,nand-bcm63138 65 - const: brcm,nand-iproc 70 - const: brcm,nand-bcm63168 71 - const: brcm,nand-bcm6368 83 enum: [ nand, flash-dma, flash-edu, nand-cache, nand-int-base, iproc-idm, iproc-ext ] 104 const: nand 106 brcm,nand-has-wp: 115 "^nand@[a-f0-9]$": 121 nand-ecc-step-size: 124 brcm,nand-oob-sector-size: [all …]
|
D | vf610-nfc.txt | 10 - #address-cells: shall be set to 1. Encode the nand CS. 23 Children nodes represent the available nand chips. Currently the driver can 28 - nand-bus-width: see nand-controller.yaml 29 - nand-ecc-mode: see nand-controller.yaml 32 - nand-ecc-strength: supported strengths are 24 and 32 bit (see nand-controller.yaml) 33 - nand-ecc-step-size: step size equals page size, currently only 2k pages are 35 - nand-on-flash-bbt: see nand-controller.yaml 39 nfc: nand@400e0000 { 50 nand@0 { 53 nand-bus-width = <8>; [all …]
|
D | hisi504-nand.txt | 10 - nand-bus-width: See nand-controller.yaml. 11 - nand-ecc-mode: Support none and hw ecc mode. 17 - nand-ecc-strength: Number of bits to correct per ECC step. 18 - nand-ecc-step-size: Number of data bytes covered by a single ECC step. 22 - nand-ecc-strength = <16>, nand-ecc-step-size = <1024> 29 nand: nand@4020000 { 33 nand-bus-width = <8>; 34 nand-ecc-mode = "hw"; 35 nand-ecc-strength = <16>; 36 nand-ecc-step-size = <1024>;
|
D | gpmi-nand.yaml | 4 $id: http://devicetree.org/schemas/mtd/gpmi-nand.yaml# 13 The GPMI nand controller provides an interface to control the NAND 22 - fsl,imx23-gpmi-nand 23 - fsl,imx28-gpmi-nand 24 - fsl,imx6q-gpmi-nand 25 - fsl,imx6sx-gpmi-nand 26 - fsl,imx7d-gpmi-nand 29 - fsl,imx8mm-gpmi-nand 30 - fsl,imx8mn-gpmi-nand 31 - const: fsl,imx7d-gpmi-nand [all …]
|
D | rockchip,nand-controller.yaml | 4 $id: http://devicetree.org/schemas/mtd/rockchip,nand-controller.yaml# 10 - $ref: "nand-controller.yaml#" 56 "^nand@[0-7]$": 63 nand-ecc-mode: 66 nand-ecc-step-size: 69 nand-ecc-strength: 85 nand-bus-width: 95 Only used in combination with 'nand-is-boot-medium'. 115 Only used in combination with 'nand-is-boot-medium'. 130 nfc: nand-controller@ff4b0000 { [all …]
|
D | atmel-nand.txt | 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" 49 Documentation/devicetree/bindings/mtd/{common,nand}.txt also apply to the NAND 99 nand_controller: nand-controller { 100 compatible = "atmel,sama5d3-nand-controller"; 108 nand@3 { [all …]
|
/linux-5.19.10/drivers/mtd/nand/spi/ |
D | core.c | 53 struct nand_device *nand = spinand_to_nand(spinand); in spinand_get_cfg() local 56 spinand->cur_target >= nand->memorg.ntargets)) in spinand_get_cfg() 65 struct nand_device *nand = spinand_to_nand(spinand); in spinand_set_cfg() local 69 spinand->cur_target >= nand->memorg.ntargets)) in spinand_set_cfg() 119 struct nand_device *nand = spinand_to_nand(spinand); in spinand_select_target() local 122 if (WARN_ON(target >= nand->memorg.ntargets)) in spinand_select_target() 128 if (nand->memorg.ntargets == 1) { in spinand_select_target() 143 struct nand_device *nand = spinand_to_nand(spinand); in spinand_read_cfg() local 147 for (target = 0; target < nand->memorg.ntargets; target++) { in spinand_read_cfg() 167 struct nand_device *nand = spinand_to_nand(spinand); in spinand_init_cfg_cache() local [all …]
|
/linux-5.19.10/drivers/mtd/nand/raw/atmel/ |
D | nand-controller.c | 201 struct atmel_nand *nand); 203 int (*setup_interface)(struct atmel_nand *nand, int csline, 205 int (*exec_op)(struct atmel_nand *nand, 470 static void atmel_nand_data_in(struct atmel_nand *nand, void *buf, in atmel_nand_data_in() argument 475 nc = to_nand_controller(nand->base.controller); in atmel_nand_data_in() 484 !atmel_nand_dma_transfer(nc, buf, nand->activecs->io.dma, len, in atmel_nand_data_in() 488 if ((nand->base.options & NAND_BUSWIDTH_16) && !force_8bit) in atmel_nand_data_in() 489 ioread16_rep(nand->activecs->io.virt, buf, len / 2); in atmel_nand_data_in() 491 ioread8_rep(nand->activecs->io.virt, buf, len); in atmel_nand_data_in() 494 static void atmel_nand_data_out(struct atmel_nand *nand, const void *buf, in atmel_nand_data_out() argument [all …]
|
/linux-5.19.10/drivers/mtd/nand/raw/ingenic/ |
D | ingenic_nand_drv.c | 144 struct ingenic_nand *nand = to_ingenic_nand(nand_to_mtd(chip)); in ingenic_nand_ecc_hwctl() local 146 nand->reading = (mode == NAND_ECC_READ); in ingenic_nand_ecc_hwctl() 152 struct ingenic_nand *nand = to_ingenic_nand(nand_to_mtd(chip)); in ingenic_nand_ecc_calculate() local 153 struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); in ingenic_nand_ecc_calculate() 160 if (nand->reading) in ingenic_nand_ecc_calculate() 163 params.size = nand->chip.ecc.size; in ingenic_nand_ecc_calculate() 164 params.bytes = nand->chip.ecc.bytes; in ingenic_nand_ecc_calculate() 165 params.strength = nand->chip.ecc.strength; in ingenic_nand_ecc_calculate() 173 struct ingenic_nand *nand = to_ingenic_nand(nand_to_mtd(chip)); in ingenic_nand_ecc_correct() local 174 struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); in ingenic_nand_ecc_correct() [all …]
|