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()
320 static int do_sync_erase(struct ubi_device *ubi, int pnum) in do_sync_erase() argument
325 dbg_io("erase PEB %d", pnum); in do_sync_erase()
326 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in do_sync_erase()
336 ei.addr = (loff_t)pnum * ubi->peb_size; in do_sync_erase()
343 err, pnum); in do_sync_erase()
347 ubi_err(ubi, "cannot erase PEB %d, error %d", pnum, err); in do_sync_erase()
352 err = ubi_self_check_all_ff(ubi, pnum, 0, ubi->peb_size); in do_sync_erase()
357 ubi_err(ubi, "cannot erase PEB %d (emulated)", pnum); in do_sync_erase()
376 static int torture_peb(struct ubi_device *ubi, int pnum) in torture_peb() argument
380 ubi_msg(ubi, "run torture test for PEB %d", pnum); in torture_peb()
386 err = do_sync_erase(ubi, pnum); in torture_peb()
391 err = ubi_io_read(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
398 pnum); in torture_peb()
405 err = ubi_io_write(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
410 err = ubi_io_read(ubi, ubi->peb_buf, pnum, 0, ubi->peb_size); in torture_peb()
418 patterns[i], pnum); in torture_peb()
425 ubi_msg(ubi, "PEB %d passed torture test, do not mark it as bad", pnum); in torture_peb()
436 pnum); in torture_peb()
462 static int nor_erase_prepare(struct ubi_device *ubi, int pnum) in nor_erase_prepare() argument
487 addr = (loff_t)pnum * ubi->peb_size; in nor_erase_prepare()
488 err = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0); in nor_erase_prepare()
499 err = ubi_io_read_vid_hdr(ubi, pnum, &vidb, 0); in nor_erase_prepare()
515 ubi_err(ubi, "cannot invalidate PEB %d, write returned %d", pnum, err); in nor_erase_prepare()
516 ubi_dump_flash(ubi, pnum, 0, ubi->peb_size); in nor_erase_prepare()
536 int ubi_io_sync_erase(struct ubi_device *ubi, int pnum, int torture) in ubi_io_sync_erase() argument
540 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_sync_erase()
542 err = self_check_not_bad(ubi, pnum); in ubi_io_sync_erase()
552 err = nor_erase_prepare(ubi, pnum); in ubi_io_sync_erase()
558 ret = torture_peb(ubi, pnum); in ubi_io_sync_erase()
563 err = do_sync_erase(ubi, pnum); in ubi_io_sync_erase()
578 int ubi_io_is_bad(const struct ubi_device *ubi, int pnum) in ubi_io_is_bad() argument
582 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_is_bad()
587 ret = mtd_block_isbad(mtd, (loff_t)pnum * ubi->peb_size); in ubi_io_is_bad()
590 ret, pnum); in ubi_io_is_bad()
592 dbg_io("PEB %d is bad", pnum); in ubi_io_is_bad()
607 int ubi_io_mark_bad(const struct ubi_device *ubi, int pnum) in ubi_io_mark_bad() argument
612 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_mark_bad()
622 err = mtd_block_markbad(mtd, (loff_t)pnum * ubi->peb_size); in ubi_io_mark_bad()
624 ubi_err(ubi, "cannot mark PEB %d bad, error %d", pnum, err); in ubi_io_mark_bad()
700 int ubi_io_read_ec_hdr(struct ubi_device *ubi, int pnum, in ubi_io_read_ec_hdr() argument
706 dbg_io("read EC header from PEB %d", pnum); in ubi_io_read_ec_hdr()
707 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read_ec_hdr()
709 read_err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE); in ubi_io_read_ec_hdr()
739 pnum); in ubi_io_read_ec_hdr()
741 pnum); in ubi_io_read_ec_hdr()
754 pnum, magic, UBI_EC_HDR_MAGIC); in ubi_io_read_ec_hdr()
758 pnum, magic, UBI_EC_HDR_MAGIC); in ubi_io_read_ec_hdr()
768 pnum, crc, hdr_crc); in ubi_io_read_ec_hdr()
772 pnum, crc, hdr_crc); in ubi_io_read_ec_hdr()
783 ubi_err(ubi, "validation failed for PEB %d", pnum); in ubi_io_read_ec_hdr()
809 int ubi_io_write_ec_hdr(struct ubi_device *ubi, int pnum, in ubi_io_write_ec_hdr() argument
815 dbg_io("write EC header to PEB %d", pnum); in ubi_io_write_ec_hdr()
816 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write_ec_hdr()
826 err = self_check_ec_hdr(ubi, pnum, ec_hdr); in ubi_io_write_ec_hdr()
833 err = ubi_io_write(ubi, ec_hdr, pnum, 0, ubi->ec_hdr_alsize); in ubi_io_write_ec_hdr()
977 int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum, in ubi_io_read_vid_hdr() argument
985 dbg_io("read VID header from PEB %d", pnum); in ubi_io_read_vid_hdr()
986 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read_vid_hdr()
988 read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset, in ubi_io_read_vid_hdr()
1001 pnum); in ubi_io_read_vid_hdr()
1003 pnum); in ubi_io_read_vid_hdr()
1012 pnum, magic, UBI_VID_HDR_MAGIC); in ubi_io_read_vid_hdr()
1016 pnum, magic, UBI_VID_HDR_MAGIC); in ubi_io_read_vid_hdr()
1026 pnum, crc, hdr_crc); in ubi_io_read_vid_hdr()
1030 pnum, crc, hdr_crc); in ubi_io_read_vid_hdr()
1039 ubi_err(ubi, "validation failed for PEB %d", pnum); in ubi_io_read_vid_hdr()
1061 int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum, in ubi_io_write_vid_hdr() argument
1069 dbg_io("write VID header to PEB %d", pnum); in ubi_io_write_vid_hdr()
1070 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_write_vid_hdr()
1072 err = self_check_peb_ec_hdr(ubi, pnum); in ubi_io_write_vid_hdr()
1081 err = self_check_vid_hdr(ubi, pnum, vid_hdr); in ubi_io_write_vid_hdr()
1088 err = ubi_io_write(ubi, p, pnum, ubi->vid_hdr_aloffset, in ubi_io_write_vid_hdr()
1101 static int self_check_not_bad(const struct ubi_device *ubi, int pnum) in self_check_not_bad() argument
1108 err = ubi_io_is_bad(ubi, pnum); in self_check_not_bad()
1112 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_not_bad()
1126 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum, in self_check_ec_hdr() argument
1144 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_ec_hdr()
1164 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum) in self_check_peb_ec_hdr() argument
1177 err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE); in self_check_peb_ec_hdr()
1186 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_peb_ec_hdr()
1193 err = self_check_ec_hdr(ubi, pnum, ec_hdr); in self_check_peb_ec_hdr()
1209 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum, in self_check_vid_hdr() argument
1221 magic, pnum, UBI_VID_HDR_MAGIC); in self_check_vid_hdr()
1227 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_vid_hdr()
1234 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_vid_hdr()
1249 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum) in self_check_peb_vid_hdr() argument
1266 err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset, in self_check_peb_vid_hdr()
1275 pnum, crc, hdr_crc); in self_check_peb_vid_hdr()
1276 ubi_err(ubi, "self-check failed for PEB %d", pnum); in self_check_peb_vid_hdr()
1283 err = self_check_vid_hdr(ubi, pnum, vid_hdr); in self_check_peb_vid_hdr()
1302 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum, in self_check_write() argument
1308 loff_t addr = (loff_t)pnum * ubi->peb_size + offset; in self_check_write()
1332 pnum, offset, len); in self_check_write()
1367 int ubi_self_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len) in ubi_self_check_all_ff() argument
1372 loff_t addr = (loff_t)pnum * ubi->peb_size + offset; in ubi_self_check_all_ff()
1386 err, len, pnum, offset, read); in ubi_self_check_all_ff()
1393 pnum, offset, len); in ubi_self_check_all_ff()
1401 ubi_err(ubi, "self-check failed for PEB %d", pnum); in ubi_self_check_all_ff()