Lines Matching refs:pnum
81 static int self_check_not_bad(const struct ubi_device *ubi, int pnum);
82 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum);
83 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum,
85 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum);
86 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum,
88 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum,
113 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset, in ubi_io_read() argument
120 dbg_io("read %d bytes from PEB %d:%d", len, pnum, offset); in ubi_io_read()
122 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read()
126 err = self_check_not_bad(ubi, pnum); in ubi_io_read()
152 addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_io_read()
168 pnum); in ubi_io_read()
175 err, errstr, len, pnum, offset, read); in ubi_io_read()
181 err, errstr, len, pnum, offset, read); in ubi_io_read()
222 int ubi_io_write(struct ubi_device *ubi, const void *buf, int pnum, int offset, in ubi_io_write() argument
229 dbg_io("write %d bytes to PEB %d:%d", len, pnum, offset); in ubi_io_write()
231 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write()
241 err = self_check_not_bad(ubi, pnum); in ubi_io_write()
246 err = ubi_self_check_all_ff(ubi, pnum, offset, len); in ubi_io_write()
255 err = self_check_peb_ec_hdr(ubi, pnum); in ubi_io_write()
258 err = self_check_peb_vid_hdr(ubi, pnum); in ubi_io_write()
265 len, pnum, offset); in ubi_io_write()
270 addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_io_write()
274 err, len, pnum, offset, written); in ubi_io_write()
276 ubi_dump_flash(ubi, pnum, offset, len); in ubi_io_write()
281 err = self_check_write(ubi, buf, pnum, offset, len); in ubi_io_write()
292 err = ubi_self_check_all_ff(ubi, pnum, offset, len); in ubi_io_write()
307 static int do_sync_erase(struct ubi_device *ubi, int pnum) in do_sync_erase() argument
312 dbg_io("erase PEB %d", pnum); in do_sync_erase()
313 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in do_sync_erase()
323 ei.addr = (loff_t)pnum * ubi->peb_size; in do_sync_erase()
330 err, pnum); in do_sync_erase()
334 ubi_err(ubi, "cannot erase PEB %d, error %d", pnum, err); in do_sync_erase()
339 err = ubi_self_check_all_ff(ubi, pnum, 0, ubi->peb_size); in do_sync_erase()
344 ubi_err(ubi, "cannot erase PEB %d (emulated)", pnum); in do_sync_erase()
363 static int torture_peb(struct ubi_device *ubi, int pnum) in torture_peb() argument
367 ubi_msg(ubi, "run torture test for PEB %d", pnum); in torture_peb()
373 err = do_sync_erase(ubi, pnum); in torture_peb()
378 err = ubi_io_read(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
385 pnum); in torture_peb()
392 err = ubi_io_write(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
397 err = ubi_io_read(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
405 patterns[i], pnum); in torture_peb()
412 ubi_msg(ubi, "PEB %d passed torture test, do not mark it as bad", pnum); in torture_peb()
423 pnum); in torture_peb()
449 static int nor_erase_prepare(struct ubi_device *ubi, int pnum) in nor_erase_prepare() argument
474 addr = (loff_t)pnum * ubi->peb_size; in nor_erase_prepare()
475 err = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0); in nor_erase_prepare()
486 err = ubi_io_read_vid_hdr(ubi, pnum, &vidb, 0); in nor_erase_prepare()
502 ubi_err(ubi, "cannot invalidate PEB %d, write returned %d", pnum, err); in nor_erase_prepare()
503 ubi_dump_flash(ubi, pnum, 0, ubi->peb_size); in nor_erase_prepare()
523 int ubi_io_sync_erase(struct ubi_device *ubi, int pnum, int torture) in ubi_io_sync_erase() argument
527 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_sync_erase()
529 err = self_check_not_bad(ubi, pnum); in ubi_io_sync_erase()
539 err = nor_erase_prepare(ubi, pnum); in ubi_io_sync_erase()
545 ret = torture_peb(ubi, pnum); in ubi_io_sync_erase()
550 err = do_sync_erase(ubi, pnum); in ubi_io_sync_erase()
565 int ubi_io_is_bad(const struct ubi_device *ubi, int pnum) in ubi_io_is_bad() argument
569 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_is_bad()
574 ret = mtd_block_isbad(mtd, (loff_t)pnum * ubi->peb_size); in ubi_io_is_bad()
577 ret, pnum); in ubi_io_is_bad()
579 dbg_io("PEB %d is bad", pnum); in ubi_io_is_bad()
594 int ubi_io_mark_bad(const struct ubi_device *ubi, int pnum) in ubi_io_mark_bad() argument
599 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_mark_bad()
609 err = mtd_block_markbad(mtd, (loff_t)pnum * ubi->peb_size); in ubi_io_mark_bad()
611 ubi_err(ubi, "cannot mark PEB %d bad, error %d", pnum, err); in ubi_io_mark_bad()
687 int ubi_io_read_ec_hdr(struct ubi_device *ubi, int pnum, in ubi_io_read_ec_hdr() argument
693 dbg_io("read EC header from PEB %d", pnum); in ubi_io_read_ec_hdr()
694 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read_ec_hdr()
696 read_err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE); in ubi_io_read_ec_hdr()
726 pnum); in ubi_io_read_ec_hdr()
728 pnum); in ubi_io_read_ec_hdr()
741 pnum, magic, UBI_EC_HDR_MAGIC); in ubi_io_read_ec_hdr()
745 pnum, magic, UBI_EC_HDR_MAGIC); in ubi_io_read_ec_hdr()
755 pnum, crc, hdr_crc); in ubi_io_read_ec_hdr()
759 pnum, crc, hdr_crc); in ubi_io_read_ec_hdr()
770 ubi_err(ubi, "validation failed for PEB %d", pnum); in ubi_io_read_ec_hdr()
796 int ubi_io_write_ec_hdr(struct ubi_device *ubi, int pnum, in ubi_io_write_ec_hdr() argument
802 dbg_io("write EC header to PEB %d", pnum); in ubi_io_write_ec_hdr()
803 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write_ec_hdr()
813 err = self_check_ec_hdr(ubi, pnum, ec_hdr); in ubi_io_write_ec_hdr()
820 err = ubi_io_write(ubi, ec_hdr, pnum, 0, ubi->ec_hdr_alsize); in ubi_io_write_ec_hdr()
964 int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum, in ubi_io_read_vid_hdr() argument
972 dbg_io("read VID header from PEB %d", pnum); in ubi_io_read_vid_hdr()
973 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read_vid_hdr()
975 read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset, in ubi_io_read_vid_hdr()
988 pnum); in ubi_io_read_vid_hdr()
990 pnum); in ubi_io_read_vid_hdr()
999 pnum, magic, UBI_VID_HDR_MAGIC); in ubi_io_read_vid_hdr()
1003 pnum, magic, UBI_VID_HDR_MAGIC); in ubi_io_read_vid_hdr()
1013 pnum, crc, hdr_crc); in ubi_io_read_vid_hdr()
1017 pnum, crc, hdr_crc); in ubi_io_read_vid_hdr()
1026 ubi_err(ubi, "validation failed for PEB %d", pnum); in ubi_io_read_vid_hdr()
1048 int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum, in ubi_io_write_vid_hdr() argument
1056 dbg_io("write VID header to PEB %d", pnum); in ubi_io_write_vid_hdr()
1057 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write_vid_hdr()
1059 err = self_check_peb_ec_hdr(ubi, pnum); in ubi_io_write_vid_hdr()
1068 err = self_check_vid_hdr(ubi, pnum, vid_hdr); in ubi_io_write_vid_hdr()
1075 err = ubi_io_write(ubi, p, pnum, ubi->vid_hdr_aloffset, in ubi_io_write_vid_hdr()
1088 static int self_check_not_bad(const struct ubi_device *ubi, int pnum) in self_check_not_bad() argument
1095 err = ubi_io_is_bad(ubi, pnum); in self_check_not_bad()
1099 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_not_bad()
1113 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum, in self_check_ec_hdr() argument
1131 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_ec_hdr()
1151 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum) in self_check_peb_ec_hdr() argument
1164 err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE); in self_check_peb_ec_hdr()
1173 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_peb_ec_hdr()
1180 err = self_check_ec_hdr(ubi, pnum, ec_hdr); in self_check_peb_ec_hdr()
1196 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum, in self_check_vid_hdr() argument
1208 magic, pnum, UBI_VID_HDR_MAGIC); in self_check_vid_hdr()
1214 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_vid_hdr()
1221 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_vid_hdr()
1236 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum) in self_check_peb_vid_hdr() argument
1253 err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset, in self_check_peb_vid_hdr()
1262 pnum, crc, hdr_crc); in self_check_peb_vid_hdr()
1263 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_peb_vid_hdr()
1270 err = self_check_vid_hdr(ubi, pnum, vid_hdr); in self_check_peb_vid_hdr()
1289 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum, in self_check_write() argument
1295 loff_t addr = (loff_t)pnum * ubi->peb_size + offset; in self_check_write()
1319 pnum, offset, len); in self_check_write()
1354 int ubi_self_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len) in ubi_self_check_all_ff() argument
1359 loff_t addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_self_check_all_ff()
1373 err, len, pnum, offset, read); in ubi_self_check_all_ff()
1380 pnum, offset, len); in ubi_self_check_all_ff()
1388 ubi_err(ubi, "self-check failed for PEB %d", pnum); in ubi_self_check_all_ff()