Lines Matching defs:cg

120 	struct chip_geom *cg;
122 cg = &chip->chip_geom;
124 init_chip_geom(cg, params->luns, params->blocks_per_lun,
139 struct chip_geom *cg;
142 cg = &chip->chip_geom;
146 init_chip_geom(cg, 1, blocks_per_chip,
164 struct chip_geom *cg;
167 cg = &chip->chip_geom;
168 blks = cg->blks_per_lun * cg->luns;
174 pgs = blks * cg->pgs_per_blk;
197 init_chip_geom(struct chip_geom *cg, uint32_t luns, uint32_t blks_per_lun,
202 if (!cg)
205 cg->luns = luns;
206 cg->blks_per_lun = blks_per_lun;
207 cg->blks_per_chip = blks_per_lun * luns;
208 cg->pgs_per_blk = pgs_per_blk;
210 cg->page_size = pg_size;
211 cg->oob_size = oob_size;
212 cg->block_size = cg->page_size * cg->pgs_per_blk;
213 cg->chip_size = cg->block_size * cg->blks_per_chip;
215 shift = fls(cg->pgs_per_blk - 1);
216 cg->pg_mask = (1 << shift) - 1;
217 cg->blk_shift = shift;
219 if (cg->blks_per_lun > 0) {
220 shift = fls(cg->blks_per_lun - 1);
221 cg->blk_mask = ((1 << shift) - 1) << cg->blk_shift;
224 cg->blk_mask = 0;
227 cg->lun_shift = shift + cg->blk_shift;
228 shift = fls(cg->luns - 1);
229 cg->lun_mask = ((1 << shift) - 1) << cg->lun_shift;
233 cg->lun_mask, cg->blk_mask, cg->pg_mask,
234 cg->lun_shift, cg->blk_shift);
240 nand_row_to_blkpg(struct chip_geom *cg, uint32_t row, uint32_t *lun,
244 if (!cg || !lun || !blk || !pg)
247 if (row & ~(cg->lun_mask | cg->blk_mask | cg->pg_mask)) {
252 *lun = (row & cg->lun_mask) >> cg->lun_shift;
253 *blk = (row & cg->blk_mask) >> cg->blk_shift;
254 *pg = (row & cg->pg_mask);
261 int page_to_row(struct chip_geom *cg, uint32_t page, uint32_t *row)
265 if (!cg || !row)
268 block = page / cg->pgs_per_blk;
269 pg_in_blk = page % cg->pgs_per_blk;
271 lun = block / cg->blks_per_lun;
272 block = block % cg->blks_per_lun;
274 *row = (lun << cg->lun_shift) & cg->lun_mask;
275 *row |= ((block << cg->blk_shift) & cg->blk_mask);
276 *row |= (pg_in_blk & cg->pg_mask);
284 struct chip_geom* cg;
286 cg = &chip->chip_geom;
287 if (page >= (cg->pgs_per_blk * cg->blks_per_lun * cg->luns)) {
299 struct chip_geom *cg;
301 cg = &chip->chip_geom;
302 param->page_size = cg->page_size;
303 param->oob_size = cg->oob_size;
305 param->blocks = cg->blks_per_lun * cg->luns;
306 param->pages_per_block = cg->pgs_per_blk;
459 offset_to_page(struct chip_geom *cg, uint32_t offset)
462 return (offset / cg->page_size);
469 struct chip_geom *cg;
480 cg = &chip->chip_geom;
482 page = offset_to_page(cg, offset);
483 num = len / cg->page_size;
486 steps = cg->page_size / eccd->eccsize;
488 oob = malloc(cg->oob_size, M_NAND, M_WAITOK);
499 if (NAND_READ_PAGE(chip->dev, page, ptr, cg->page_size, 0)) {
518 if (NAND_READ_OOB(chip->dev, page, oob, cg->oob_size,
551 ptr += cg->page_size;
566 struct chip_geom *cg;
572 cg = &chip->chip_geom;
573 page = offset_to_page(cg, offset);
574 begin_off = offset - page * cg->page_size;
576 begin = cg->page_size - begin_off;
579 num = len / cg->page_size;
580 end = len % cg->page_size;
598 if (NAND_READ_PAGE(chip->dev, page, ptr, cg->page_size, 0)) {
604 ptr += cg->page_size;
623 struct chip_geom *cg;
635 cg = &chip->chip_geom;
636 page = offset_to_page(cg, offset);
637 num = len / cg->page_size;
640 steps = cg->page_size / eccd->eccsize;
641 oob = malloc(cg->oob_size, M_NAND, M_WAITOK);
650 if (NAND_PROGRAM_PAGE(chip->dev, page, buf, cg->page_size, 0)) {
669 if (NAND_READ_OOB(chip->dev, page, oob, cg->oob_size,
679 cg->oob_size, 0)) {
690 buf += cg->page_size;
705 struct chip_geom *cg;
711 cg = &chip->chip_geom;
712 page = offset_to_page(cg, offset);
713 begin_off = offset - page * cg->page_size;
715 begin = cg->page_size - begin_off;
718 num = len / cg->page_size;
719 end = len % cg->page_size;
737 if (NAND_PROGRAM_PAGE(chip->dev, page, ptr, cg->page_size, 0)) {
743 ptr += cg->page_size;
795 struct chip_geom *cg;
799 cg = &chip->chip_geom;
800 if ((offset % cg->block_size) || (len % cg->block_size))
803 block = offset / cg->block_size;
804 num_blocks = len / cg->block_size;