Lines Matching refs:pnum
94 static int self_check_not_bad(const struct ubi_device *ubi, int pnum);
95 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum);
96 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum,
98 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum);
99 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum,
101 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum,
126 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset, in ubi_io_read() argument
133 dbg_io("read %d bytes from PEB %d:%d", len, pnum, offset); in ubi_io_read()
135 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read()
139 err = self_check_not_bad(ubi, pnum); in ubi_io_read()
165 addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_io_read()
181 pnum); in ubi_io_read()
188 err, errstr, len, pnum, offset, read); in ubi_io_read()
194 err, errstr, len, pnum, offset, read); in ubi_io_read()
235 int ubi_io_write(struct ubi_device *ubi, const void *buf, int pnum, int offset, in ubi_io_write() argument
242 dbg_io("write %d bytes to PEB %d:%d", len, pnum, offset); in ubi_io_write()
244 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write()
254 err = self_check_not_bad(ubi, pnum); in ubi_io_write()
259 err = ubi_self_check_all_ff(ubi, pnum, offset, len); in ubi_io_write()
268 err = self_check_peb_ec_hdr(ubi, pnum); in ubi_io_write()
271 err = self_check_peb_vid_hdr(ubi, pnum); in ubi_io_write()
278 len, pnum, offset); in ubi_io_write()
283 addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_io_write()
287 err, len, pnum, offset, written); in ubi_io_write()
289 ubi_dump_flash(ubi, pnum, offset, len); in ubi_io_write()
294 err = self_check_write(ubi, buf, pnum, offset, len); in ubi_io_write()
305 err = ubi_self_check_all_ff(ubi, pnum, offset, len); in ubi_io_write()
332 static int do_sync_erase(struct ubi_device *ubi, int pnum) in do_sync_erase() argument
338 dbg_io("erase PEB %d", pnum); in do_sync_erase()
339 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in do_sync_erase()
351 ei.addr = (loff_t)pnum * ubi->peb_size; in do_sync_erase()
360 err, pnum); in do_sync_erase()
364 ubi_err(ubi, "cannot erase PEB %d, error %d", pnum, err); in do_sync_erase()
372 ubi_err(ubi, "interrupted PEB %d erasure", pnum); in do_sync_erase()
379 pnum); in do_sync_erase()
383 ubi_err(ubi, "cannot erase PEB %d", pnum); in do_sync_erase()
388 err = ubi_self_check_all_ff(ubi, pnum, 0, ubi->peb_size); in do_sync_erase()
393 ubi_err(ubi, "cannot erase PEB %d (emulated)", pnum); in do_sync_erase()
412 static int torture_peb(struct ubi_device *ubi, int pnum) in torture_peb() argument
416 ubi_msg(ubi, "run torture test for PEB %d", pnum); in torture_peb()
422 err = do_sync_erase(ubi, pnum); in torture_peb()
427 err = ubi_io_read(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
434 pnum); in torture_peb()
441 err = ubi_io_write(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
446 err = ubi_io_read(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
454 patterns[i], pnum); in torture_peb()
461 ubi_msg(ubi, "PEB %d passed torture test, do not mark it as bad", pnum); in torture_peb()
472 pnum); in torture_peb()
498 static int nor_erase_prepare(struct ubi_device *ubi, int pnum) in nor_erase_prepare() argument
522 addr = (loff_t)pnum * ubi->peb_size; in nor_erase_prepare()
523 err = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0); in nor_erase_prepare()
531 err = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0); in nor_erase_prepare()
547 ubi_err(ubi, "cannot invalidate PEB %d, write returned %d", pnum, err); in nor_erase_prepare()
548 ubi_dump_flash(ubi, pnum, 0, ubi->peb_size); in nor_erase_prepare()
568 int ubi_io_sync_erase(struct ubi_device *ubi, int pnum, int torture) in ubi_io_sync_erase() argument
572 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_sync_erase()
574 err = self_check_not_bad(ubi, pnum); in ubi_io_sync_erase()
584 err = nor_erase_prepare(ubi, pnum); in ubi_io_sync_erase()
590 ret = torture_peb(ubi, pnum); in ubi_io_sync_erase()
595 err = do_sync_erase(ubi, pnum); in ubi_io_sync_erase()
610 int ubi_io_is_bad(const struct ubi_device *ubi, int pnum) in ubi_io_is_bad() argument
614 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_is_bad()
619 ret = mtd_block_isbad(mtd, (loff_t)pnum * ubi->peb_size); in ubi_io_is_bad()
622 ret, pnum); in ubi_io_is_bad()
624 dbg_io("PEB %d is bad", pnum); in ubi_io_is_bad()
639 int ubi_io_mark_bad(const struct ubi_device *ubi, int pnum) in ubi_io_mark_bad() argument
644 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_mark_bad()
654 err = mtd_block_markbad(mtd, (loff_t)pnum * ubi->peb_size); in ubi_io_mark_bad()
656 ubi_err(ubi, "cannot mark PEB %d bad, error %d", pnum, err); in ubi_io_mark_bad()
732 int ubi_io_read_ec_hdr(struct ubi_device *ubi, int pnum, in ubi_io_read_ec_hdr() argument
738 dbg_io("read EC header from PEB %d", pnum); in ubi_io_read_ec_hdr()
739 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read_ec_hdr()
741 read_err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE); in ubi_io_read_ec_hdr()
771 pnum); in ubi_io_read_ec_hdr()
773 pnum); in ubi_io_read_ec_hdr()
786 pnum, magic, UBI_EC_HDR_MAGIC); in ubi_io_read_ec_hdr()
790 pnum, magic, UBI_EC_HDR_MAGIC); in ubi_io_read_ec_hdr()
800 pnum, crc, hdr_crc); in ubi_io_read_ec_hdr()
804 pnum, crc, hdr_crc); in ubi_io_read_ec_hdr()
815 ubi_err(ubi, "validation failed for PEB %d", pnum); in ubi_io_read_ec_hdr()
841 int ubi_io_write_ec_hdr(struct ubi_device *ubi, int pnum, in ubi_io_write_ec_hdr() argument
847 dbg_io("write EC header to PEB %d", pnum); in ubi_io_write_ec_hdr()
848 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write_ec_hdr()
858 err = self_check_ec_hdr(ubi, pnum, ec_hdr); in ubi_io_write_ec_hdr()
865 err = ubi_io_write(ubi, ec_hdr, pnum, 0, ubi->ec_hdr_alsize); in ubi_io_write_ec_hdr()
1010 int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum, in ubi_io_read_vid_hdr() argument
1017 dbg_io("read VID header from PEB %d", pnum); in ubi_io_read_vid_hdr()
1018 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read_vid_hdr()
1021 read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset, in ubi_io_read_vid_hdr()
1034 pnum); in ubi_io_read_vid_hdr()
1036 pnum); in ubi_io_read_vid_hdr()
1045 pnum, magic, UBI_VID_HDR_MAGIC); in ubi_io_read_vid_hdr()
1049 pnum, magic, UBI_VID_HDR_MAGIC); in ubi_io_read_vid_hdr()
1059 pnum, crc, hdr_crc); in ubi_io_read_vid_hdr()
1063 pnum, crc, hdr_crc); in ubi_io_read_vid_hdr()
1072 ubi_err(ubi, "validation failed for PEB %d", pnum); in ubi_io_read_vid_hdr()
1094 int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum, in ubi_io_write_vid_hdr() argument
1101 dbg_io("write VID header to PEB %d", pnum); in ubi_io_write_vid_hdr()
1102 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write_vid_hdr()
1104 err = self_check_peb_ec_hdr(ubi, pnum); in ubi_io_write_vid_hdr()
1113 err = self_check_vid_hdr(ubi, pnum, vid_hdr); in ubi_io_write_vid_hdr()
1121 err = ubi_io_write(ubi, p, pnum, ubi->vid_hdr_aloffset, in ubi_io_write_vid_hdr()
1134 static int self_check_not_bad(const struct ubi_device *ubi, int pnum) in self_check_not_bad() argument
1141 err = ubi_io_is_bad(ubi, pnum); in self_check_not_bad()
1145 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_not_bad()
1159 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum, in self_check_ec_hdr() argument
1177 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_ec_hdr()
1197 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum) in self_check_peb_ec_hdr() argument
1210 err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE); in self_check_peb_ec_hdr()
1219 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_peb_ec_hdr()
1226 err = self_check_ec_hdr(ubi, pnum, ec_hdr); in self_check_peb_ec_hdr()
1242 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum, in self_check_vid_hdr() argument
1254 magic, pnum, UBI_VID_HDR_MAGIC); in self_check_vid_hdr()
1260 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_vid_hdr()
1267 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_vid_hdr()
1282 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum) in self_check_peb_vid_hdr() argument
1297 err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset, in self_check_peb_vid_hdr()
1306 pnum, crc, hdr_crc); in self_check_peb_vid_hdr()
1307 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_peb_vid_hdr()
1314 err = self_check_vid_hdr(ubi, pnum, vid_hdr); in self_check_peb_vid_hdr()
1333 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum, in self_check_write() argument
1339 loff_t addr = (loff_t)pnum * ubi->peb_size + offset; in self_check_write()
1363 pnum, offset, len); in self_check_write()
1398 int ubi_self_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len) in ubi_self_check_all_ff() argument
1403 loff_t addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_self_check_all_ff()
1417 err, len, pnum, offset, read); in ubi_self_check_all_ff()
1424 pnum, offset, len); in ubi_self_check_all_ff()
1432 ubi_err(ubi, "self-check failed for PEB %d", pnum); in ubi_self_check_all_ff()