• Home
  • Raw
  • Download

Lines Matching full:oob

379  * nand_fill_oob - [INTERN] Transfer client buffer to oob
381 * @oob: oob data buffer
382 * @len: oob data write length
383 * @ops: oob ops structure
385 static uint8_t *nand_fill_oob(struct nand_chip *chip, uint8_t *oob, size_t len, in nand_fill_oob() argument
392 * Initialise to all 0xFF, to avoid the possibility of left over OOB in nand_fill_oob()
393 * data from a previous OOB read. in nand_fill_oob()
401 memcpy(chip->oob_poi + ops->ooboffs, oob, len); in nand_fill_oob()
402 return oob + len; in nand_fill_oob()
405 ret = mtd_ooblayout_set_databytes(mtd, oob, chip->oob_poi, in nand_fill_oob()
408 return oob + len; in nand_fill_oob()
420 * @ops: oob operation description structure
553 * specify how to write bad block markers to OOB (chip->legacy.block_markbad).
557 * (1) erase the affected block, to allow OOB marker to be written cleanly
558 * (2) write bad block marker to OOB area of affected block (unless flag
573 /* Attempt erase before marking OOB */ in nand_block_markbad_lowlevel()
579 /* Write bad block marker to OOB */ in nand_block_markbad_lowlevel()
1099 * On small page NANDs, there's a dedicated command to access the OOB in nand_fill_column_cycles()
1100 * area, and the column address is relative to the start of the OOB in nand_fill_column_cycles()
1469 * nand_read_oob_op - Do a READ OOB operation
1472 * @offset_in_oob: offset within the OOB area
1476 * This function issues a READ OOB operation.
2821 * @extraoob: extra OOB buffer
2822 * @extraooblen: extra OOB length
2825 * Check if a data buffer and its associated ECC and OOB data contains only
2844 * 3/ The extraoob argument is optional, and should be used if some of your OOB
2847 * extra OOB data to an ECC chunk.
2895 * @oob_required: caller requires OOB data read to chip->oob_poi
2910 * @oob_required: caller requires OOB data read to chip->oob_poi
2913 * Not for syndrome calculating ECC controllers, which use a special oob layout.
2940 * @oob_required: caller requires OOB data read to chip->oob_poi
2945 * eventually OOB) to be loaded in the NAND cache and sent over the
2948 * first reads the main data, and if the OOB data is requested too,
2981 * @oob_required: caller requires OOB data read to chip->oob_poi
2984 * We need a special oob layout and handling even when OOB isn't used.
2992 uint8_t *oob = chip->oob_poi; in nand_read_page_raw_syndrome() local
3007 ret = nand_read_data_op(chip, oob, chip->ecc.prepad, in nand_read_page_raw_syndrome()
3012 oob += chip->ecc.prepad; in nand_read_page_raw_syndrome()
3015 ret = nand_read_data_op(chip, oob, eccbytes, false, false); in nand_read_page_raw_syndrome()
3019 oob += eccbytes; in nand_read_page_raw_syndrome()
3022 ret = nand_read_data_op(chip, oob, chip->ecc.postpad, in nand_read_page_raw_syndrome()
3027 oob += chip->ecc.postpad; in nand_read_page_raw_syndrome()
3031 size = mtd->oobsize - (oob - chip->oob_poi); in nand_read_page_raw_syndrome()
3033 ret = nand_read_data_op(chip, oob, size, false, false); in nand_read_page_raw_syndrome()
3045 * @oob_required: caller requires OOB data read to chip->oob_poi
3202 * @oob_required: caller requires OOB data read to chip->oob_poi
3205 * Not for syndrome calculating ECC controllers which need a special oob layout.
3271 * data read from OOB area
3274 * @oob_required: caller requires OOB data read to chip->oob_poi
3278 * extracted from the OOB before the actual data is read.
3291 /* Read the OOB area first */ in nand_read_page_hwecc_oob_first()
3340 * @oob_required: caller requires OOB data read to chip->oob_poi
3344 * need a special oob layout and handling.
3355 uint8_t *oob = chip->oob_poi; in nand_read_page_syndrome() local
3372 ret = nand_read_data_op(chip, oob, chip->ecc.prepad, in nand_read_page_syndrome()
3377 oob += chip->ecc.prepad; in nand_read_page_syndrome()
3382 ret = nand_read_data_op(chip, oob, eccbytes, false, false); in nand_read_page_syndrome()
3386 stat = chip->ecc.correct(chip, p, oob, NULL); in nand_read_page_syndrome()
3388 oob += eccbytes; in nand_read_page_syndrome()
3391 ret = nand_read_data_op(chip, oob, chip->ecc.postpad, in nand_read_page_syndrome()
3396 oob += chip->ecc.postpad; in nand_read_page_syndrome()
3403 oob - eccpadbytes, in nand_read_page_syndrome()
3417 /* Calculate remaining oob bytes */ in nand_read_page_syndrome()
3418 i = mtd->oobsize - (oob - chip->oob_poi); in nand_read_page_syndrome()
3420 ret = nand_read_data_op(chip, oob, i, false, false); in nand_read_page_syndrome()
3429 * nand_transfer_oob - [INTERN] Transfer oob to client buffer
3431 * @oob: oob destination address
3432 * @ops: oob ops structure
3433 * @len: size of oob to transfer
3435 static uint8_t *nand_transfer_oob(struct nand_chip *chip, uint8_t *oob, in nand_transfer_oob() argument
3445 memcpy(oob, chip->oob_poi + ops->ooboffs, len); in nand_transfer_oob()
3446 return oob + len; in nand_transfer_oob()
3449 ret = mtd_ooblayout_get_databytes(mtd, oob, chip->oob_poi, in nand_transfer_oob()
3452 return oob + len; in nand_transfer_oob()
3539 * @ops: oob ops structure
3553 uint8_t *bufpoi, *oob, *buf; in nand_do_read_ops() local
3572 oob = ops->oobbuf; in nand_do_read_ops()
3573 oob_required = oob ? 1 : 0; in nand_do_read_ops()
3593 if (realpage != chip->pagecache.page || oob) { in nand_do_read_ops()
3610 !oob) in nand_do_read_ops()
3628 if (!NAND_HAS_SUBPAGE_READ(chip) && !oob && in nand_do_read_ops()
3640 if (unlikely(oob)) { in nand_do_read_ops()
3644 oob = nand_transfer_oob(chip, oob, ops, in nand_do_read_ops()
3709 if (oob) in nand_do_read_ops()
3722 * nand_read_oob_std - [REPLACEABLE] the most common OOB data read function
3735 * nand_read_oob_syndrome - [REPLACEABLE] OOB data read function for HW ECC
3789 * nand_write_oob_std - [REPLACEABLE] the most common OOB data write function
3803 * nand_write_oob_syndrome - [REPLACEABLE] OOB data write function for HW ECC
3817 * data-ecc-data-ecc ... ecc-oob in nand_write_oob_syndrome()
3819 * data-pad-ecc-pad-data-pad .... ecc-pad-oob in nand_write_oob_syndrome()
3879 * @ops: oob operations description structure
3961 * @ops: oob operation description structure
4003 * @oob_required: must write chip->oob_poi to OOB
4018 * @oob_required: must write chip->oob_poi to OOB
4021 * Not for syndrome calculating ECC controllers, which use a special oob layout.
4048 * @oob_required: must write chip->oob_poi to OOB
4053 * eventually OOB) to be sent over the bus and effectively programmed
4056 * data, then eventually send the OOB data by latching more data
4084 * @oob_required: must write chip->oob_poi to OOB
4087 * We need a special oob layout and handling even when ECC isn't checked.
4096 uint8_t *oob = chip->oob_poi; in nand_write_page_raw_syndrome() local
4111 ret = nand_write_data_op(chip, oob, chip->ecc.prepad, in nand_write_page_raw_syndrome()
4116 oob += chip->ecc.prepad; in nand_write_page_raw_syndrome()
4119 ret = nand_write_data_op(chip, oob, eccbytes, false); in nand_write_page_raw_syndrome()
4123 oob += eccbytes; in nand_write_page_raw_syndrome()
4126 ret = nand_write_data_op(chip, oob, chip->ecc.postpad, in nand_write_page_raw_syndrome()
4131 oob += chip->ecc.postpad; in nand_write_page_raw_syndrome()
4135 size = mtd->oobsize - (oob - chip->oob_poi); in nand_write_page_raw_syndrome()
4137 ret = nand_write_data_op(chip, oob, size, false); in nand_write_page_raw_syndrome()
4148 * @oob_required: must write chip->oob_poi to OOB
4177 * @oob_required: must write chip->oob_poi to OOB
4223 * @oob_required: must write chip->oob_poi to OOB
4260 /* mask OOB of un-touched subpages by padding 0xFF */ in nand_write_subpage_hwecc()
4261 /* if oob_required, preserve OOB metadata of written subpage */ in nand_write_subpage_hwecc()
4270 /* copy calculated ECC for whole page to chip->buffer->oob */ in nand_write_subpage_hwecc()
4278 /* write OOB buffer to NAND device */ in nand_write_subpage_hwecc()
4291 * @oob_required: must write chip->oob_poi to OOB
4295 * need a special oob layout and handling.
4305 uint8_t *oob = chip->oob_poi; in nand_write_page_syndrome() local
4320 ret = nand_write_data_op(chip, oob, chip->ecc.prepad, in nand_write_page_syndrome()
4325 oob += chip->ecc.prepad; in nand_write_page_syndrome()
4328 chip->ecc.calculate(chip, p, oob); in nand_write_page_syndrome()
4330 ret = nand_write_data_op(chip, oob, eccbytes, false); in nand_write_page_syndrome()
4334 oob += eccbytes; in nand_write_page_syndrome()
4337 ret = nand_write_data_op(chip, oob, chip->ecc.postpad, in nand_write_page_syndrome()
4342 oob += chip->ecc.postpad; in nand_write_page_syndrome()
4346 /* Calculate remaining oob bytes */ in nand_write_page_syndrome()
4347 i = mtd->oobsize - (oob - chip->oob_poi); in nand_write_page_syndrome()
4349 ret = nand_write_data_op(chip, oob, i, false); in nand_write_page_syndrome()
4363 * @oob_required: must write chip->oob_poi to OOB
4401 * @ops: oob operations description structure
4415 uint8_t *oob = ops->oobbuf; in nand_do_write_ops() local
4418 int oob_required = oob ? 1 : 0; in nand_do_write_ops()
4454 /* Don't allow multipage oob writes with offset */ in nand_do_write_ops()
4455 if (oob && ops->ooboffs && (ops->ooboffs + ops->ooblen > oobmaxlen)) { in nand_do_write_ops()
4489 if (unlikely(oob)) { in nand_do_write_ops()
4491 oob = nand_fill_oob(chip, oob, len, ops); in nand_do_write_ops()
4494 /* We still need to erase leftover OOB data */ in nand_do_write_ops()
4522 if (unlikely(oob)) in nand_do_write_ops()
4569 * @ops: oob operation description structure
5377 pr_info("%d MiB, %s, erase size: %d KiB, page size: %d, OOB size: %d\n", in nand_detect()
5970 * @oobavail: OOB size that the ECC engine can use
5973 * by the controller and the calculated ECC bytes fit within the chip's OOB.
6003 pr_err("ECC (step, strength) = (%d, %d) does not fit in OOB", in nand_check_ecc_caps()
6024 * @oobavail: OOB size that the ECC engine can use
6027 * number of ECC bytes (i.e. with the largest number of OOB-free bytes).
6108 * @oobavail: OOB size that the ECC engine can use
6111 * within the chip's OOB. On success, the chosen ECC settings are set.
6178 * @oobavail: OOB size that the ECC engine can use
6187 * to the chip's requirement. If available OOB size can't fit the chip
6272 /* New bad blocks should be marked in OOB, flash-based BBT, or both */ in nand_scan_tail()
6294 /* Set the internal oob buffer location, just after the page data */ in nand_scan_tail()
6317 * Expose the whole OOB area to users if ECC_NONE in nand_scan_tail()
6329 WARN(1, "No oob scheme defined for oobsize %d\n", in nand_scan_tail()
6407 /* For many systems, the standard OOB write also works for raw */ in nand_scan_tail()