/Linux-v5.4/drivers/mtd/parsers/ |
D | sharpslpart.c | 35 /* oob structure */ 69 /* verify that the OOB bytes 8 to 15 are free and available for the FTL */ 115 * The logical block number assigned to a physical block is stored in the OOB 128 * ECC BB xyxy oob[8]==oob[10] && oob[9]==oob[11] -> byte0=8 byte1=9 129 * ECC BB xyxy oob[10]==oob[12] && oob[11]==oob[13] -> byte0=10 byte1=11 130 * ECC BB xy xy oob[12]==oob[8] && oob[13]==oob[9] -> byte0=12 byte1=13 132 static int sharpsl_nand_get_logical_num(u8 *oob) in sharpsl_nand_get_logical_num() argument 137 if (oob[NAND_NOOB_LOGADDR_00] == oob[NAND_NOOB_LOGADDR_10] && in sharpsl_nand_get_logical_num() 138 oob[NAND_NOOB_LOGADDR_01] == oob[NAND_NOOB_LOGADDR_11]) { in sharpsl_nand_get_logical_num() 141 } else if (oob[NAND_NOOB_LOGADDR_10] == oob[NAND_NOOB_LOGADDR_20] && in sharpsl_nand_get_logical_num() [all …]
|
/Linux-v5.4/drivers/mtd/nand/raw/ |
D | sm_common.h | 9 /* Full oob structure as written on the flash */ 24 /* oob area is also 16 bytes, but might be from two pages */ 39 static inline int sm_sector_valid(struct sm_oob *oob) in sm_sector_valid() argument 41 return hweight16(oob->data_status) >= 5; in sm_sector_valid() 44 static inline int sm_block_valid(struct sm_oob *oob) in sm_block_valid() argument 46 return hweight16(oob->block_status) >= 7; in sm_block_valid() 49 static inline int sm_block_erased(struct sm_oob *oob) in sm_block_erased() argument 55 if (!memcmp(oob, erased_pattern, sizeof(*oob))) in sm_block_erased()
|
D | nand_base.c | 48 /* Define default oob placement schemes for large and small page devices */ 395 * nand_fill_oob - [INTERN] Transfer client buffer to oob 397 * @oob: oob data buffer 398 * @len: oob data write length 399 * @ops: oob ops structure 401 static uint8_t *nand_fill_oob(struct nand_chip *chip, uint8_t *oob, size_t len, in nand_fill_oob() argument 408 * Initialise to all 0xFF, to avoid the possibility of left over OOB in nand_fill_oob() 409 * data from a previous OOB read. in nand_fill_oob() 417 memcpy(chip->oob_poi + ops->ooboffs, oob, len); in nand_fill_oob() 418 return oob + len; in nand_fill_oob() [all …]
|
D | sunxi_nand.c | 534 * the randomizer engine does internally before de/scrambling OOB data. 716 static void sunxi_nfc_hw_ecc_get_prot_oob_bytes(struct nand_chip *nand, u8 *oob, in sunxi_nfc_hw_ecc_get_prot_oob_bytes() argument 722 oob); in sunxi_nfc_hw_ecc_get_prot_oob_bytes() 726 sunxi_nfc_randomize_bbm(nand, page, oob); in sunxi_nfc_hw_ecc_get_prot_oob_bytes() 730 const u8 *oob, int step, in sunxi_nfc_hw_ecc_set_prot_oob_bytes() argument 738 memcpy(user_data, oob, sizeof(user_data)); in sunxi_nfc_hw_ecc_set_prot_oob_bytes() 740 oob = user_data; in sunxi_nfc_hw_ecc_set_prot_oob_bytes() 743 writel(sunxi_nfc_buf_to_user_data(oob), in sunxi_nfc_hw_ecc_set_prot_oob_bytes() 760 static int sunxi_nfc_hw_ecc_correct(struct nand_chip *nand, u8 *data, u8 *oob, in sunxi_nfc_hw_ecc_correct() argument 785 if (oob) in sunxi_nfc_hw_ecc_correct() [all …]
|
D | tango_nand.c | 359 * oob = | BBM | M | ECC_0 | ... | ECC_N | 366 static void raw_read(struct nand_chip *chip, u8 *buf, u8 *oob) in raw_read() argument 369 u8 *oob_orig = oob; in raw_read() 376 if (oob) in raw_read() 377 oob += BBM_SIZE; in raw_read() 379 aux_read(chip, &oob, METADATA_SIZE, &pos); in raw_read() 383 aux_read(chip, &oob, ecc_size, &pos); in raw_read() 390 aux_read(chip, &oob, ecc_size, &pos); in raw_read() 393 static void raw_write(struct nand_chip *chip, const u8 *buf, const u8 *oob) in raw_write() argument 396 const u8 *oob_orig = oob; in raw_write() [all …]
|
D | fsl_elbc_nand.c | 62 unsigned int oob; /* Non zero if operating on OOB data */ member 119 * ELBC may use HW ECC, so that OOB offsets, that NAND core uses for bbt, 121 * OOB {11, 5}, works for both SP and LP chips, with ECCM = 1 and ECCM = 0. 152 static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob) in set_addr() argument 171 (oob ? FPAR_LP_MS : 0) | column); in set_addr() 181 (oob ? FPAR_SP_MS : 0) | column); in set_addr() 188 /* for OOB data point to the second half of the buffer */ in set_addr() 189 if (oob) in set_addr() 276 static void fsl_elbc_do_read(struct nand_chip *chip, int oob) in fsl_elbc_do_read() argument 299 if (oob) in fsl_elbc_do_read() [all …]
|
D | sm_common.c | 56 /* because the 256 byte devices have page depenent oob layout */ 103 struct sm_oob oob; in sm_block_markbad() local 106 memset(&oob, -1, SM_OOB_SIZE); in sm_block_markbad() 107 oob.block_status = 0x0F; in sm_block_markbad() 114 ops.oobbuf = (void *)&oob; in sm_block_markbad()
|
/Linux-v5.4/drivers/mtd/ |
D | sm_ftl.c | 127 /* ----------------------- oob helpers -------------------------------------- */ 148 static int sm_read_lba(struct sm_oob *oob) in sm_read_lba() argument 157 if (!memcmp(oob, erased_pattern, SM_OOB_SIZE)) in sm_read_lba() 161 lba_test = *(uint16_t *)oob->lba_copy1 ^ *(uint16_t*)oob->lba_copy2; in sm_read_lba() 166 lba = sm_get_lba(oob->lba_copy1); in sm_read_lba() 169 lba = sm_get_lba(oob->lba_copy2); in sm_read_lba() 174 static void sm_write_lba(struct sm_oob *oob, uint16_t lba) in sm_write_lba() argument 186 oob->lba_copy1[0] = oob->lba_copy2[0] = tmp[0]; in sm_write_lba() 187 oob->lba_copy1[1] = oob->lba_copy2[1] = tmp[1]; in sm_write_lba() 217 static int sm_correct_sector(uint8_t *buffer, struct sm_oob *oob) in sm_correct_sector() argument [all …]
|
D | nftlcore.c | 121 * Read oob data from flash 142 * Write oob data to flash 165 * Write data and oob to flash 168 size_t *retlen, uint8_t *buf, uint8_t *oob) in nftl_write() argument 177 ops.oobbuf = oob; in nftl_write() 241 struct nftl_oob oob; in NFTL_foldchain() local 268 (char *)&oob); in NFTL_foldchain() 270 foldmark = oob.u.c.FoldMark | oob.u.c.FoldMark1; in NFTL_foldchain() 281 status = oob.b.Status | oob.b.Status1; in NFTL_foldchain() 380 oob.u.c.FoldMark = oob.u.c.FoldMark1 = cpu_to_le16(FOLD_MARK_IN_PROGRESS); in NFTL_foldchain() [all …]
|
D | inftlcore.c | 134 * Read oob data from flash 154 * Write oob data to flash 174 * Write data and oob to flash 177 size_t *retlen, uint8_t *buf, uint8_t *oob) in inftl_write() argument 185 ops.oobbuf = oob; in inftl_write() 244 struct inftl_oob oob; in INFTL_foldchain() local 274 (char *)&oob) < 0) in INFTL_foldchain() 277 status = oob.b.Status | oob.b.Status1; in INFTL_foldchain() 347 memset(&oob, 0xff, sizeof(struct inftl_oob)); in INFTL_foldchain() 348 oob.b.Status = oob.b.Status1 = SECTOR_USED; in INFTL_foldchain() [all …]
|
D | mtdcore.c | 1299 * mtd_ooblayout_ecc - Get the OOB region definition of a specific ECC section 1305 * @oobecc: OOB region struct filled with the appropriate ECC position 1308 * This function returns ECC section information in the OOB area. If you want 1330 * mtd_ooblayout_free - Get the OOB region definition of a specific free 1337 * @oobfree: OOB region struct filled with the appropriate free position 1340 * This function returns free bytes position in the OOB area. If you want 1417 * @oobregion: OOB region information 1434 * mtd_ooblayout_get_bytes - Extract OOB bytes from the oob buffer 1436 * @buf: destination buffer to store OOB bytes 1437 * @oobbuf: OOB buffer [all …]
|
/Linux-v5.4/include/linux/mtd/ |
D | bbm.h | 24 * @offs: offset of the pattern in the oob area of the page 25 * @veroffs: offset of the bbt version counter in the oob are of the page 38 * that the pattern and the version count are always located in the oob area 73 * unavailable, for example, if the NAND controller has a different data and OOB 84 * Use a flash based bad block table. By default, OOB identifier is saved in 85 * OOB area. This option is passed to the default bad block table function. 89 * Do not store flash based bad block table marker in the OOB area; store it 94 * Do not write new bad block markers to OOB; useful, e.g., when ECC covers
|
D | mtd.h | 43 * struct mtd_oob_ops - oob operation operands 50 * @ooblen: number of oob bytes to write/read 51 * @oobretlen: number of oob bytes written/read 52 * @ooboffs: offset of oob data in the oob area (only relevant when 54 * @datbuf: data buffer - if NULL only oob data are read/written 55 * @oobbuf: oob data buffer 57 * Note, some MTD drivers do not allow you to write more than one OOB area at 77 * struct mtd_oob_region - oob region definition 81 * This structure describes a region of the OOB area, and is used 83 * Each section is defined by an offset within the OOB area and a [all …]
|
/Linux-v5.4/include/uapi/mtd/ |
D | mtd-abi.h | 52 * @MTD_OPS_PLACE_OOB: OOB data are placed at the given offset (default) 53 * @MTD_OPS_AUTO_OOB: OOB data are automatically placed at the free areas 73 * @ooblen: length of OOB buffer 75 * @usr_oob: user-provided OOB buffer 79 * This structure supports ioctl(MEMWRITE) operations, allowing data and/or OOB 80 * writes in various modes. To write to OOB-only, set @usr_data == NULL, and to 133 __u32 oobsize; /* Amount of OOB data per block (e.g. 16) */ 173 /* Get info about OOB modes (e.g., RAW, PLACE, AUTO) - legacy interface */ 195 /* Write data to OOB (64-bit version) */ 197 /* Read data from OOB (64-bit version) */ [all …]
|
/Linux-v5.4/drivers/mtd/tests/ |
D | readtest.c | 63 pr_err("error: read oob failed at " in read_eraseblock_by_page() 83 int pg, oob; in dump_eraseblock() local 98 pr_info("dumping oob from eraseblock %d\n", ebnum); in dump_eraseblock() 101 for (oob = 0; oob < n;) { in dump_eraseblock() 105 for (j = 0; j < 32 && oob < n; j++, oob++, i++) in dump_eraseblock() 149 "eraseblock %u, OOB size %u\n", in mtd_readtest_init()
|
D | oobtest.c | 5 * Test OOB read and write on MTD device. 281 /* read entire block's OOB at one go */ in verify_eraseblock_in_one_go() 293 /* verify one page OOB at a time for bitflip per page limit check */ in verify_eraseblock_in_one_go() 374 "eraseblock %u, OOB size %u\n", in mtd_oobtest_init() 398 /* First test: write all OOB, read it back and verify */ in mtd_oobtest_init() 416 * Second test: write all OOB, a block at a time, read it back and in mtd_oobtest_init() 449 * Third test: write OOB at varying offsets and lengths, read it back in mtd_oobtest_init() 495 /* Attempt to write off end of OOB */ in mtd_oobtest_init() 504 pr_info("attempting to start write past end of OOB\n"); in mtd_oobtest_init() 511 pr_err("error: can write past end of OOB\n"); in mtd_oobtest_init() [all …]
|
/Linux-v5.4/drivers/mtd/devices/ |
D | docg3.c | 40 * - a 1 byte Hamming code stored in the OOB for each page 41 * - a 7 bytes BCH code stored in the OOB for each page 594 * reading OOB only or write status byte). 625 * It's in fact recv_ecc ^ calc_ecc, where recv_ecc was read from OOB 859 * @ops: the mtd oob structure 861 * Reads flash memory OOB area of pages. 888 doc_dbg("doc_read_oob(from=%lld, mode=%d, data=(%p:%zu), oob=(%p:%zu))\n", in doc_read_oob() 928 doc_dbg("OOB - INFO: %*phC\n", 7, oobbuf); in doc_read_oob() 929 doc_dbg("OOB - HAMMING: %02x\n", oobbuf[7]); in doc_read_oob() 930 doc_dbg("OOB - BCH_ECC: %*phC\n", 7, oobbuf + 8); in doc_read_oob() [all …]
|
/Linux-v5.4/drivers/usb/serial/ |
D | digi_acceleport.c | 60 * "OOB": can be used on the out-of-band endpoint 62 #define DIGI_CMD_SET_BAUD_RATE 0 /* INB, OOB */ 63 #define DIGI_CMD_SET_WORD_SIZE 1 /* INB, OOB */ 64 #define DIGI_CMD_SET_PARITY 2 /* INB, OOB */ 65 #define DIGI_CMD_SET_STOP_BITS 3 /* INB, OOB */ 66 #define DIGI_CMD_SET_INPUT_FLOW_CONTROL 4 /* INB, OOB */ 67 #define DIGI_CMD_SET_OUTPUT_FLOW_CONTROL 5 /* INB, OOB */ 68 #define DIGI_CMD_SET_DTR_SIGNAL 6 /* INB, OOB */ 69 #define DIGI_CMD_SET_RTS_SIGNAL 7 /* INB, OOB */ 70 #define DIGI_CMD_READ_INPUT_SIGNALS 8 /* OOB */ [all …]
|
/Linux-v5.4/tools/testing/selftests/bpf/verifier/ |
D | bounds.c | 115 /* r0 = <oob pointer> */ 117 /* access to OOB pointer */ 140 /* r0 = <oob pointer> */ 142 /* access to OOB pointer */ 260 /* no-op or OOB pointer computation */ 262 /* potentially OOB access */ 302 /* no-op or OOB pointer computation */ 304 /* potentially OOB access */ 356 /* computes unknown pointer, potentially OOB */ 358 /* potentially OOB access */ [all …]
|
/Linux-v5.4/Documentation/devicetree/bindings/mtd/ |
D | davinci-nand.txt | 52 - nand-on-flash-bbt: use flash based bad block table support. OOB 53 identifier is saved in OOB area. If not present 66 - ti,davinci-nand-use-bbt: use flash based bad block table support. OOB 67 identifier is saved in OOB area. If not present
|
D | gpmc-nand.txt | 120 Other factor which governs the selection of ecc-scheme is oob-size. 121 Higher ECC schemes require more OOB/Spare area to store ECC syndrome, 122 so the device should have enough free bytes available its OOB/Spare 127 OOBSIZE number of bytes in OOB/spare area 146 which can be accommodated in the OOB/Spare area of this device
|
/Linux-v5.4/drivers/mtd/nand/raw/brcmnand/ |
D | brcmnand.c | 1147 "error: ECC too large for OOB (ECC bytes %d, spare sector %d)\n", in brcmstb_choose_ecc_layout() 1199 /* Helper functions for reading and writing OOB registers */ 1238 * read_oob_from_regs - read data from OOB registers 1241 * @oob: buffer to read to 1242 * @sas: spare area sector size (i.e., OOB size per FLASH_CACHE) 1245 static int read_oob_from_regs(struct brcmnand_controller *ctrl, int i, u8 *oob, in read_oob_from_regs() argument 1251 /* Adjust OOB values for 1K sector size */ in read_oob_from_regs() 1257 oob[j] = oob_reg_read(ctrl, j); in read_oob_from_regs() 1262 * write_oob_to_regs - write data to OOB registers 1264 * @oob: buffer to write from [all …]
|
/Linux-v5.4/Documentation/devicetree/bindings/ata/ |
D | ahci-ceva.txt | 8 - ceva,p0-cominit-params: OOB timing value for COMINIT parameter for port 0. 9 - ceva,p1-cominit-params: OOB timing value for COMINIT parameter for port 1. 16 - ceva,p0-comwake-params: OOB timing value for COMWAKE parameter for port 0. 17 - ceva,p1-comwake-params: OOB timing value for COMWAKE parameter for port 1.
|
/Linux-v5.4/drivers/scsi/isci/ |
D | phy.c | 160 /* Hold OOB state machine in reset */ in sci_phy_link_layer_initialization() 541 /* Release the spinup hold state and reset the OOB state machine */ in sci_phy_consume_power_handler() 550 /* Now restart the OOB operation */ in sci_phy_consume_power_handler() 703 /* Start the oob/sn state machine over again */ in sci_phy_event_handler() 736 * continue OOB/SN as if this were a SATA PHY */ in sci_phy_event_handler() 750 /* Start the oob/sn state machine over again */ in sci_phy_event_handler() 767 * SATA PHY event continue OOB/SN as if this were a in sci_phy_event_handler() 776 /* Start the oob/sn state machine over again */ in sci_phy_event_handler() 783 /* Start the oob/sn state machine over again */ in sci_phy_event_handler() 821 /* There has been a change in the phy type before OOB/SN for the in sci_phy_event_handler() [all …]
|
/Linux-v5.4/drivers/mtd/nand/raw/gpmi-nand/ |
D | gpmi-nand.c | 249 * We may have available oob space in this case. 282 "unsupported nand chip. ecc size: %d, oob size : %d\n", in set_geometry_by_ecc_info() 318 * O : the nand chip's oob size. in set_geometry_by_ecc_info() 319 * O': the free oob. in set_geometry_by_ecc_info() 995 * else we will use all the (page + OOB). 1023 /* The available oob size we have. */ in gpmi_ooblayout_free() 1317 /* Get the byte from the OOB. */ in block_mark_swapping() 1472 * It's time to deliver the OOB bytes. See gpmi_ecc_read_oob() in gpmi_ecc_read_page() 1473 * for details about our policy for delivering the OOB. in gpmi_ecc_read_page() 1597 * There are several places in this driver where we have to handle the OOB and [all …]
|