Lines Matching defs:geo

200 	struct bch_geometry *geo = &this->bch_geometry;
229 geo->gf_len,
230 geo->ecc_strength,
231 geo->page_size,
232 geo->metadata_size,
233 geo->ecc0_chunk_size,
234 geo->eccn_chunk_size,
235 geo->ecc_chunk_count,
236 geo->payload_size,
237 geo->auxiliary_size,
238 geo->auxiliary_status_offset,
239 geo->block_mark_byte_offset,
240 geo->block_mark_bit_offset);
246 struct bch_geometry *geo = &this->bch_geometry;
250 conf->step_size = geo->eccn_chunk_size;
251 conf->strength = geo->ecc_strength;
256 if (geo->gf_len == 14)
260 if (geo->ecc_strength > this->devdata->bch_max_ecc_strength)
273 struct bch_geometry *geo = &this->bch_geometry;
278 if (geo->ecc0_chunk_size != geo->eccn_chunk_size) {
284 i = (mtd->writesize * 8 - geo->metadata_size * 8) /
285 (geo->gf_len * geo->ecc_strength +
286 geo->eccn_chunk_size * 8);
288 j = (mtd->writesize * 8 - geo->metadata_size * 8) -
289 (geo->gf_len * geo->ecc_strength +
290 geo->eccn_chunk_size * 8) * i;
292 if (j < geo->eccn_chunk_size * 8) {
295 geo->ecc_strength, *chunk_num);
312 struct bch_geometry *geo = &this->bch_geometry;
319 geo->gf_len = 13;
322 geo->gf_len = 14;
331 geo->ecc0_chunk_size = ecc_step;
332 geo->eccn_chunk_size = ecc_step;
333 geo->ecc_strength = round_up(ecc_strength, 2);
338 if (geo->eccn_chunk_size < mtd->oobsize) {
346 geo->metadata_size = 10;
348 geo->ecc_chunk_count = mtd->writesize / geo->eccn_chunk_size;
398 geo->page_size = mtd->writesize + geo->metadata_size +
399 (geo->gf_len * geo->ecc_strength * geo->ecc_chunk_count) / 8;
401 geo->payload_size = mtd->writesize;
403 geo->auxiliary_status_offset = ALIGN(geo->metadata_size, 4);
404 geo->auxiliary_size = ALIGN(geo->metadata_size, 4)
405 + ALIGN(geo->ecc_chunk_count, 4);
412 (geo->ecc_strength * geo->gf_len * (geo->ecc_chunk_count - 1)
413 + geo->metadata_size * 8);
415 geo->block_mark_byte_offset = block_mark_bit_offset / 8;
416 geo->block_mark_bit_offset = block_mark_bit_offset % 8;
440 struct bch_geometry *geo = &this->bch_geometry;
444 ecc_strength = ((mtd->oobsize - geo->metadata_size) * 8)
445 / (geo->gf_len * geo->ecc_chunk_count);
453 struct bch_geometry *geo = &this->bch_geometry;
467 geo->ecc_strength = requirements->strength;
473 geo->ecc_strength);
478 geo->metadata_size = 10;
479 geo->gf_len = 14;
480 geo->ecc0_chunk_size = 1024;
481 geo->eccn_chunk_size = 1024;
482 geo->ecc_chunk_count = mtd->writesize / geo->eccn_chunk_size;
490 geo->ecc_strength = max_ecc;
491 while (!(geo->ecc_strength < requirements->strength)) {
494 geo->ecc_strength -= 2;
499 geo->ecc_strength = requirements->strength;
501 geo->ecc0_chunk_size = 0;
502 geo->ecc_chunk_count = (mtd->writesize / geo->eccn_chunk_size) + 1;
503 geo->ecc_for_meta = 1;
505 if (mtd->oobsize * 8 < geo->metadata_size * 8 +
506 geo->gf_len * geo->ecc_strength * geo->ecc_chunk_count) {
512 bbm_chunk = (mtd->writesize * 8 - geo->metadata_size * 8 -
513 geo->gf_len * geo->ecc_strength) /
514 (geo->gf_len * geo->ecc_strength +
515 geo->eccn_chunk_size * 8) + 1;
519 geo->page_size = mtd->writesize + geo->metadata_size +
520 (geo->gf_len * geo->ecc_strength * geo->ecc_chunk_count) / 8;
521 geo->payload_size = mtd->writesize;
529 geo->auxiliary_status_offset = ALIGN(geo->metadata_size, 4);
530 geo->auxiliary_size = ALIGN(geo->metadata_size, 4)
531 + ALIGN(geo->ecc_chunk_count, 4);
537 i = (mtd->writesize / geo->eccn_chunk_size) - bbm_chunk + 1;
540 (geo->ecc_strength * geo->gf_len * (geo->ecc_chunk_count - i)
541 + geo->metadata_size * 8);
543 geo->block_mark_byte_offset = block_mark_bit_offset / 8;
544 geo->block_mark_bit_offset = block_mark_bit_offset % 8;
561 geo->gf_len,
562 geo->ecc_strength,
563 geo->page_size,
564 geo->metadata_size,
565 geo->ecc0_chunk_size,
566 geo->eccn_chunk_size,
567 geo->ecc_chunk_count,
568 geo->payload_size,
569 geo->auxiliary_size,
570 geo->auxiliary_status_offset,
571 geo->block_mark_byte_offset,
572 geo->block_mark_bit_offset,
574 geo->ecc_for_meta);
581 struct bch_geometry *geo = &this->bch_geometry;
592 geo->metadata_size = 10;
595 geo->gf_len = 13;
598 geo->ecc0_chunk_size = 512;
599 geo->eccn_chunk_size = 512;
600 while (geo->eccn_chunk_size < mtd->oobsize) {
601 geo->ecc0_chunk_size *= 2; /* keep C >= O */
602 geo->eccn_chunk_size *= 2; /* keep C >= O */
603 geo->gf_len = 14;
606 geo->ecc_chunk_count = mtd->writesize / geo->eccn_chunk_size;
609 geo->ecc_strength = get_ecc_strength(this);
614 geo->ecc_strength,
619 geo->page_size = mtd->writesize + geo->metadata_size +
620 (geo->gf_len * geo->ecc_strength * geo->ecc_chunk_count) / 8;
621 geo->payload_size = mtd->writesize;
629 metadata_size = ALIGN(geo->metadata_size, 4);
630 status_size = ALIGN(geo->ecc_chunk_count, 4);
632 geo->auxiliary_size = metadata_size + status_size;
633 geo->auxiliary_status_offset = metadata_size;
685 (geo->ecc_strength * geo->gf_len * (geo->ecc_chunk_count - 1)
686 + geo->metadata_size * 8);
688 geo->block_mark_byte_offset = block_mark_bit_offset / 8;
689 geo->block_mark_bit_offset = block_mark_bit_offset % 8;
1095 struct bch_geometry *geo = &this->bch_geometry;
1101 oobregion->length = geo->page_size - mtd->writesize;
1111 struct bch_geometry *geo = &this->bch_geometry;
1117 if (geo->page_size < mtd->writesize + mtd->oobsize) {
1118 oobregion->offset = geo->page_size - mtd->writesize;
1328 struct bch_geometry *geo = &this->bch_geometry;
1331 dma_free_coherent(dev, geo->auxiliary_size,
1344 struct bch_geometry *geo = &this->bch_geometry;
1361 this->auxiliary_virt = dma_alloc_coherent(dev, geo->auxiliary_size,
1523 struct bch_geometry *geo = &this->bch_geometry;
1524 unsigned int ecc_strength = geo->ecc_strength >> 1;
1525 unsigned int gf_len = geo->gf_len;
1526 unsigned int block0_size = geo->ecc0_chunk_size;
1527 unsigned int blockn_size = geo->eccn_chunk_size;
1530 BF_BCH_FLASH0LAYOUT0_NBLOCKS(geo->ecc_chunk_count - 1) |
1531 BF_BCH_FLASH0LAYOUT0_META_SIZE(geo->metadata_size) |
1537 BF_BCH_FLASH0LAYOUT1_PAGE_SIZE(geo->page_size) |
1548 struct bch_geometry *geo = &this->bch_geometry;
1555 ret = nand_read_page_op(chip, page, 0, buf, geo->page_size);
1560 geo->ecc_chunk_count,
1561 geo->auxiliary_status_offset);
1589 struct bch_geometry *geo = &this->bch_geometry;
1600 ecc_parity_size = geo->gf_len * geo->ecc_strength / 8;
1614 marker_pos = geo->block_mark_byte_offset / size;
1631 meta = geo->metadata_size;
1633 if (geo->ecc_for_meta)
1643 ecc_parity_size = geo->gf_len * geo->ecc_strength / 8;
1646 if (geo->ecc_for_meta && meta)
1652 ecc_strength = geo->ecc_strength >> 1;
1655 (geo->ecc_for_meta ? n : n - 1)) |
1658 BF_BCH_FLASH0LAYOUT0_GF(geo->gf_len, this) |
1659 BF_BCH_FLASH0LAYOUT0_DATA0_SIZE((geo->ecc_for_meta ?
1660 0 : geo->ecc0_chunk_size), this);
1664 BF_BCH_FLASH0LAYOUT1_GF(geo->gf_len, this) |
1665 BF_BCH_FLASH0LAYOUT1_DATAN_SIZE(geo->eccn_chunk_size, this);