Lines Matching defs:geom

199 #define NS_IS_INITIALIZED(ns) ((ns)->geom.totsz != 0)
209 (((ns)->regs.row << (ns)->geom.pgshift) + ((ns)->regs.row * (ns)->geom.oobsz) + (ns)->regs.column)
212 #define NS_RAW_OFFSET_OOB(ns) (NS_RAW_OFFSET(ns) + ns->geom.pgsz)
342 } geom;
478 ns->pages_written = vzalloc(ns->geom.pgnum);
484 ns->file_buf = kmalloc(ns->geom.pgszoob, GFP_KERNEL);
494 ns->pages = vmalloc(ns->geom.pgnum * sizeof(union ns_mem));
499 for (i = 0; i < ns->geom.pgnum; i++) {
503 ns->geom.pgszoob, 0, 0, NULL);
533 for (i = 0; i < ns->geom.pgnum; i++) {
579 ns->geom.totsz = mtd->size;
580 ns->geom.pgsz = mtd->writesize;
581 ns->geom.oobsz = mtd->oobsize;
582 ns->geom.secsz = mtd->erasesize;
583 ns->geom.pgszoob = ns->geom.pgsz + ns->geom.oobsz;
584 ns->geom.pgnum = divide(ns->geom.totsz, ns->geom.pgsz);
585 ns->geom.totszoob = ns->geom.totsz + (uint64_t)ns->geom.pgnum * ns->geom.oobsz;
586 ns->geom.secshift = ffs(ns->geom.secsz) - 1;
587 ns->geom.pgshift = chip->page_shift;
588 ns->geom.oobshift = ffs(ns->geom.oobsz) - 1;
589 ns->geom.pgsec = ns->geom.secsz / ns->geom.pgsz;
590 ns->geom.secszoob = ns->geom.secsz + ns->geom.oobsz * ns->geom.pgsec;
593 if (ns->geom.pgsz == 256) {
596 else if (ns->geom.pgsz == 512) {
600 } else if (ns->geom.pgsz == 2048) {
602 } else if (ns->geom.pgsz == 4096) {
605 NS_ERR("init_nandsim: unknown page size %u\n", ns->geom.pgsz);
610 if (ns->geom.totsz <= (32 << 20)) {
611 ns->geom.pgaddrbytes = 3;
612 ns->geom.secaddrbytes = 2;
614 ns->geom.pgaddrbytes = 4;
615 ns->geom.secaddrbytes = 3;
618 if (ns->geom.totsz <= (128 << 20)) {
619 ns->geom.pgaddrbytes = 4;
620 ns->geom.secaddrbytes = 2;
622 ns->geom.pgaddrbytes = 5;
623 ns->geom.secaddrbytes = 3;
633 remains = ns->geom.totsz;
636 uint64_t part_sz = (uint64_t)parts[i] * ns->geom.secsz;
674 (unsigned long long)ns->geom.totsz >> 20);
675 printk("page size: %u bytes\n", ns->geom.pgsz);
676 printk("OOB area size: %u bytes\n", ns->geom.oobsz);
677 printk("sector size: %u KiB\n", ns->geom.secsz >> 10);
678 printk("pages number: %u\n", ns->geom.pgnum);
679 printk("pages per sector: %u\n", ns->geom.pgsec);
681 printk("bits in sector size: %u\n", ns->geom.secshift);
682 printk("bits in page size: %u\n", ns->geom.pgshift);
683 printk("bits in OOB size: %u\n", ns->geom.oobshift);
685 (unsigned long long)ns->geom.totszoob >> 10);
686 printk("page address bytes: %u\n", ns->geom.pgaddrbytes);
687 printk("sector address bytes: %u\n", ns->geom.secaddrbytes);
694 ns->buf.byte = kmalloc(ns->geom.pgszoob, GFP_KERNEL);
697 ns->geom.pgszoob);
701 memset(ns->buf.byte, 0xFF, ns->geom.pgszoob);
739 offset = erase_block_no * ns->geom.secsz;
1142 if (ns->regs.count < (ns->geom.pgaddrbytes - ns->geom.secaddrbytes))
1146 ns->geom.pgaddrbytes +
1147 ns->geom.secaddrbytes));
1457 pos = (loff_t)ns->regs.row * ns->geom.pgszoob + ns->regs.column + ns->regs.off;
1491 for (i = 0; i < ns->geom.pgsec; i++)
1500 for (i = 0; i < ns->geom.pgsec; i++) {
1526 off = (loff_t)ns->regs.row * ns->geom.pgszoob + ns->regs.column + ns->regs.off;
1529 memset(ns->file_buf, 0xff, ns->geom.pgszoob);
1542 pos = (loff_t)ns->regs.row * ns->geom.pgszoob;
1543 tx = write_file(ns, ns->cfile, ns->file_buf, ns->geom.pgszoob, &pos);
1544 if (tx != ns->geom.pgszoob) {
1574 memset(mypage->byte, 0xFF, ns->geom.pgszoob);
1598 if (action != ACTION_SECERASE && ns->regs.row >= ns->geom.pgnum) {
1611 if (ns->regs.column >= (ns->geom.pgszoob - ns->regs.off)) {
1615 num = ns->geom.pgszoob - ns->regs.off - ns->regs.column;
1623 else if (ns->regs.off < ns->geom.pgsz)
1629 NS_UDELAY(input_cycle * ns->geom.pgsz / 1000 / busdiv);
1643 if (ns->regs.row >= ns->geom.pgnum - ns->geom.pgsec
1644 || (ns->regs.row & ~(ns->geom.secsz - 1))) {
1650 8 * (ns->geom.pgaddrbytes - ns->geom.secaddrbytes)) | ns->regs.column;
1653 erase_block_no = ns->regs.row >> (ns->geom.secshift - ns->geom.pgshift);
1683 num = ns->geom.pgszoob - ns->regs.off - ns->regs.column;
1700 NS_UDELAY(output_cycle * ns->geom.pgsz / 1000 / busdiv);
1720 NS_DBG("do_state_action: set internal offset to %d\n", ns->geom.pgsz/2);
1721 ns->regs.off = ns->geom.pgsz/2;
1725 NS_DBG("do_state_action: set internal offset to %d\n", ns->geom.pgsz);
1726 ns->regs.off = ns->geom.pgsz;
1830 ns->regs.num = ns->geom.pgszoob - ns->regs.off - ns->regs.column;
1834 ns->regs.num = ns->geom.idbytes;
1856 ns->regs.num = ns->geom.pgaddrbytes;
1860 ns->regs.num = ns->geom.secaddrbytes;
1869 ns->regs.num = ns->geom.pgaddrbytes - ns->geom.secaddrbytes;
1945 if (ns->regs.row + 1 < ns->geom.pgnum)
2040 ns->regs.num = ns->geom.pgaddrbytes;
2043 ns->regs.num = ns->geom.secaddrbytes;
2208 if (ns->regs.row + 1 < ns->geom.pgnum)
2291 nand->geom.idbytes = 4;
2293 nand->geom.idbytes = 2;