• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/mtd/ubi/

Lines Matching defs:ubi

48  * @ubi->mtd->writesize field. But as an exception, UBI admits of using another
55 * I/O unit for the headers (the @ubi->hdrs_min_io_size field). But it still
56 * reports NAND page size (@ubi->min_io_size) as a minimal I/O unit for the UBI
64 * device, e.g., make @ubi->min_io_size = 512 in the example above?
83 * It always allocates a @ubi->vid_hdr_alsize bytes buffer for the VID header
84 * and returns a pointer to offset @ubi->vid_hdr_shift of this buffer. When the
91 #include "ubi.h"
94 static int paranoid_check_not_bad(const struct ubi_device *ubi, int pnum);
95 static int paranoid_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum);
96 static int paranoid_check_ec_hdr(const struct ubi_device *ubi, int pnum,
98 static int paranoid_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum);
99 static int paranoid_check_vid_hdr(const struct ubi_device *ubi, int pnum,
101 static int paranoid_check_all_ff(const struct ubi_device *ubi, int pnum,
104 #define paranoid_check_not_bad(ubi, pnum) 0
105 #define paranoid_check_peb_ec_hdr(ubi, pnum) 0
106 #define paranoid_check_ec_hdr(ubi, pnum, ec_hdr) 0
107 #define paranoid_check_peb_vid_hdr(ubi, pnum) 0
108 #define paranoid_check_vid_hdr(ubi, pnum, vid_hdr) 0
109 #define paranoid_check_all_ff(ubi, pnum, offset, len) 0
114 * @ubi: UBI device description object
134 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset,
143 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
144 ubi_assert(offset >= 0 && offset + len <= ubi->peb_size);
147 err = paranoid_check_not_bad(ubi, pnum);
151 addr = (loff_t)pnum * ubi->peb_size + offset;
153 err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf);
190 * @ubi: UBI device description object
205 int ubi_io_write(const struct ubi_device *ubi, const void *buf, int pnum,
214 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
215 ubi_assert(offset >= 0 && offset + len <= ubi->peb_size);
216 ubi_assert(offset % ubi->hdrs_min_io_size == 0);
217 ubi_assert(len > 0 && len % ubi->hdrs_min_io_size == 0);
219 if (ubi->ro_mode) {
226 err = paranoid_check_not_bad(ubi, pnum);
231 err = paranoid_check_all_ff(ubi, pnum, offset, len);
235 if (offset >= ubi->leb_start) {
240 err = paranoid_check_peb_ec_hdr(ubi, pnum);
243 err = paranoid_check_peb_vid_hdr(ubi, pnum);
255 addr = (loff_t)pnum * ubi->peb_size + offset;
256 err = ubi->mtd->write(ubi->mtd, addr, len, &written, buf);
281 * @ubi: UBI device description object
288 static int do_sync_erase(const struct ubi_device *ubi, int pnum)
300 ei.mtd = ubi->mtd;
301 ei.addr = pnum * ubi->peb_size;
302 ei.len = ubi->peb_size;
306 err = ubi->mtd->erase(ubi->mtd, &ei);
337 err = paranoid_check_all_ff(ubi, pnum, 0, ubi->peb_size);
373 * @ubi: UBI device description object
380 static int torture_peb(const struct ubi_device *ubi, int pnum)
385 buf = kmalloc(ubi->peb_size, GFP_KERNEL);
393 err = do_sync_erase(ubi, pnum);
398 err = ubi_io_read(ubi, buf, pnum, 0, ubi->peb_size);
402 err = check_pattern(buf, 0xFF, ubi->peb_size);
411 memset(buf, patterns[i], ubi->peb_size);
412 err = ubi_io_write(ubi, buf, pnum, 0, ubi->peb_size);
416 memset(buf, ~patterns[i], ubi->peb_size);
417 err = ubi_io_read(ubi, buf, pnum, 0, ubi->peb_size);
421 err = check_pattern(buf, patterns[i], ubi->peb_size);
446 * @ubi: UBI device description object
460 int ubi_io_sync_erase(const struct ubi_device *ubi, int pnum, int torture)
464 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
466 err = paranoid_check_not_bad(ubi, pnum);
470 if (ubi->ro_mode) {
476 ret = torture_peb(ubi, pnum);
481 err = do_sync_erase(ubi, pnum);
490 * @ubi: UBI device description object
496 int ubi_io_is_bad(const struct ubi_device *ubi, int pnum)
498 struct mtd_info *mtd = ubi->mtd;
500 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
502 if (ubi->bad_allowed) {
505 ret = mtd->block_isbad(mtd, (loff_t)pnum * ubi->peb_size);
519 * @ubi: UBI device description object
525 int ubi_io_mark_bad(const struct ubi_device *ubi, int pnum)
528 struct mtd_info *mtd = ubi->mtd;
530 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
532 if (ubi->ro_mode) {
537 if (!ubi->bad_allowed)
540 err = mtd->block_markbad(mtd, (loff_t)pnum * ubi->peb_size);
548 * @ubi: UBI device description object
554 static int validate_ec_hdr(const struct ubi_device *ubi,
571 if (vid_hdr_offset != ubi->vid_hdr_offset) {
573 vid_hdr_offset, ubi->vid_hdr_offset);
577 if (leb_start != ubi->leb_start) {
579 leb_start, ubi->leb_start);
599 * @ubi: UBI device description object
617 int ubi_io_read_ec_hdr(const struct ubi_device *ubi, int pnum,
624 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
626 err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE);
663 err = paranoid_check_all_ff(ubi, pnum, 0,
664 ubi->peb_size);
699 err = validate_ec_hdr(ubi, ec_hdr);
710 * @ubi: UBI device description object
723 int ubi_io_write_ec_hdr(const struct ubi_device *ubi, int pnum,
730 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
734 ec_hdr->vid_hdr_offset = cpu_to_ubi32(ubi->vid_hdr_offset);
735 ec_hdr->data_offset = cpu_to_ubi32(ubi->leb_start);
739 err = paranoid_check_ec_hdr(ubi, pnum, ec_hdr);
743 err = ubi_io_write(ubi, ec_hdr, pnum, 0, ubi->ec_hdr_alsize);
749 * @ubi: UBI device description object
755 static int validate_vid_hdr(const struct ubi_device *ubi,
767 int usable_leb_size = ubi->leb_size - data_pad;
802 if (data_pad >= ubi->leb_size / 2) {
869 * @ubi: UBI device description object
889 int ubi_io_read_vid_hdr(const struct ubi_device *ubi, int pnum,
897 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
899 p = (char *)vid_hdr - ubi->vid_hdr_shift;
900 err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
901 ubi->vid_hdr_alsize);
936 err = paranoid_check_all_ff(ubi, pnum, ubi->leb_start,
937 ubi->leb_size);
972 err = validate_vid_hdr(ubi, vid_hdr);
983 * @ubi: UBI device description object
996 int ubi_io_write_vid_hdr(const struct ubi_device *ubi, int pnum,
1004 ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
1006 err = paranoid_check_peb_ec_hdr(ubi, pnum);
1015 err = paranoid_check_vid_hdr(ubi, pnum, vid_hdr);
1019 p = (char *)vid_hdr - ubi->vid_hdr_shift;
1020 err = ubi_io_write(ubi, p, pnum, ubi->vid_hdr_aloffset,
1021 ubi->vid_hdr_alsize);
1029 * @ubi: UBI device description object
1035 static int paranoid_check_not_bad(const struct ubi_device *ubi, int pnum)
1039 err = ubi_io_is_bad(ubi, pnum);
1050 * @ubi: UBI device description object
1057 static int paranoid_check_ec_hdr(const struct ubi_device *ubi, int pnum,
1070 err = validate_ec_hdr(ubi, ec_hdr);
1087 * @ubi: UBI device description object
1093 static int paranoid_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum)
1099 ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL);
1103 err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE);
1118 err = paranoid_check_ec_hdr(ubi, pnum, ec_hdr);
1127 * @ubi: UBI device description object
1134 static int paranoid_check_vid_hdr(const struct ubi_device *ubi, int pnum,
1147 err = validate_vid_hdr(ubi, vid_hdr);
1166 * @ubi: UBI device description object
1172 static int paranoid_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum)
1179 vid_hdr = ubi_zalloc_vid_hdr(ubi);
1183 p = (char *)vid_hdr - ubi->vid_hdr_shift;
1184 err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
1185 ubi->vid_hdr_alsize);
1201 err = paranoid_check_vid_hdr(ubi, pnum, vid_hdr);
1204 ubi_free_vid_hdr(ubi, vid_hdr);
1210 * @ubi: UBI device description object
1219 static int paranoid_check_all_ff(const struct ubi_device *ubi, int pnum,
1225 loff_t addr = (loff_t)pnum * ubi->peb_size + offset;
1231 err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf);