Lines Matching refs:elbc_fcm_ctrl

151 	struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = ctrl->nand;  in set_addr()  local
154 elbc_fcm_ctrl->page = page_addr; in set_addr()
178 elbc_fcm_ctrl->addr = priv->vbase + buf_num * 1024; in set_addr()
179 elbc_fcm_ctrl->index = column; in set_addr()
183 elbc_fcm_ctrl->index += priv->page_size ? 2048 : 512; in set_addr()
188 buf_num, elbc_fcm_ctrl->addr, priv->vbase, in set_addr()
189 elbc_fcm_ctrl->index, in set_addr()
201 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = ctrl->nand; in fsl_elbc_run_command() local
206 if (elbc_fcm_ctrl->use_mdr) in fsl_elbc_run_command()
207 out_be32(&lbc->mdr, elbc_fcm_ctrl->mdr); in fsl_elbc_run_command()
225 elbc_fcm_ctrl->status = ctrl->irq_status; in fsl_elbc_run_command()
227 if (elbc_fcm_ctrl->use_mdr) in fsl_elbc_run_command()
228 elbc_fcm_ctrl->mdr = in_be32(&lbc->mdr); in fsl_elbc_run_command()
230 elbc_fcm_ctrl->use_mdr = 0; in fsl_elbc_run_command()
232 if (elbc_fcm_ctrl->status != LTESR_CC) { in fsl_elbc_run_command()
236 elbc_fcm_ctrl->status, elbc_fcm_ctrl->mdr); in fsl_elbc_run_command()
243 elbc_fcm_ctrl->max_bitflips = 0; in fsl_elbc_run_command()
245 if (elbc_fcm_ctrl->read_bytes == mtd->writesize + mtd->oobsize) { in fsl_elbc_run_command()
262 elbc_fcm_ctrl->max_bitflips = 1; in fsl_elbc_run_command()
306 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = ctrl->nand; in fsl_elbc_cmdfunc() local
309 elbc_fcm_ctrl->use_mdr = 0; in fsl_elbc_cmdfunc()
312 elbc_fcm_ctrl->read_bytes = 0; in fsl_elbc_cmdfunc()
314 elbc_fcm_ctrl->index = 0; in fsl_elbc_cmdfunc()
331 elbc_fcm_ctrl->read_bytes = mtd->writesize + mtd->oobsize; in fsl_elbc_cmdfunc()
332 elbc_fcm_ctrl->index += column; in fsl_elbc_cmdfunc()
347 elbc_fcm_ctrl->read_bytes = mtd->writesize + mtd->oobsize; in fsl_elbc_cmdfunc()
366 elbc_fcm_ctrl->read_bytes = 256; in fsl_elbc_cmdfunc()
367 elbc_fcm_ctrl->use_mdr = 1; in fsl_elbc_cmdfunc()
368 elbc_fcm_ctrl->mdr = column; in fsl_elbc_cmdfunc()
398 elbc_fcm_ctrl->read_bytes = 0; in fsl_elbc_cmdfunc()
399 elbc_fcm_ctrl->use_mdr = 1; in fsl_elbc_cmdfunc()
412 elbc_fcm_ctrl->column = column; in fsl_elbc_cmdfunc()
413 elbc_fcm_ctrl->use_mdr = 1; in fsl_elbc_cmdfunc()
418 elbc_fcm_ctrl->oob = 1; in fsl_elbc_cmdfunc()
421 elbc_fcm_ctrl->oob = 0; in fsl_elbc_cmdfunc()
448 if (elbc_fcm_ctrl->oob) in fsl_elbc_cmdfunc()
457 set_addr(mtd, column, page_addr, elbc_fcm_ctrl->oob); in fsl_elbc_cmdfunc()
465 "writing %d bytes.\n", elbc_fcm_ctrl->index); in fsl_elbc_cmdfunc()
471 if (elbc_fcm_ctrl->oob || elbc_fcm_ctrl->column != 0 || in fsl_elbc_cmdfunc()
472 elbc_fcm_ctrl->index != mtd->writesize + mtd->oobsize) in fsl_elbc_cmdfunc()
474 elbc_fcm_ctrl->index - elbc_fcm_ctrl->column); in fsl_elbc_cmdfunc()
491 elbc_fcm_ctrl->read_bytes = 1; in fsl_elbc_cmdfunc()
498 setbits8(elbc_fcm_ctrl->addr, NAND_STATUS_WP); in fsl_elbc_cmdfunc()
530 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand; in fsl_elbc_write_buf() local
535 elbc_fcm_ctrl->status = 0; in fsl_elbc_write_buf()
539 if ((unsigned int)len > bufsize - elbc_fcm_ctrl->index) { in fsl_elbc_write_buf()
543 len, bufsize - elbc_fcm_ctrl->index); in fsl_elbc_write_buf()
544 len = bufsize - elbc_fcm_ctrl->index; in fsl_elbc_write_buf()
547 memcpy_toio(&elbc_fcm_ctrl->addr[elbc_fcm_ctrl->index], buf, len); in fsl_elbc_write_buf()
555 in_8(&elbc_fcm_ctrl->addr[elbc_fcm_ctrl->index] + len - 1); in fsl_elbc_write_buf()
557 elbc_fcm_ctrl->index += len; in fsl_elbc_write_buf()
568 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand; in fsl_elbc_read_byte() local
571 if (elbc_fcm_ctrl->index < elbc_fcm_ctrl->read_bytes) in fsl_elbc_read_byte()
572 return in_8(&elbc_fcm_ctrl->addr[elbc_fcm_ctrl->index++]); in fsl_elbc_read_byte()
585 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand; in fsl_elbc_read_buf() local
592 elbc_fcm_ctrl->read_bytes - elbc_fcm_ctrl->index); in fsl_elbc_read_buf()
593 memcpy_fromio(buf, &elbc_fcm_ctrl->addr[elbc_fcm_ctrl->index], avail); in fsl_elbc_read_buf()
594 elbc_fcm_ctrl->index += avail; in fsl_elbc_read_buf()
609 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand; in fsl_elbc_wait() local
611 if (elbc_fcm_ctrl->status != LTESR_CC) in fsl_elbc_wait()
617 return (elbc_fcm_ctrl->mdr & 0xff) | NAND_STATUS_WP; in fsl_elbc_wait()
702 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = ctrl->nand; in fsl_elbc_read_page() local
711 return elbc_fcm_ctrl->max_bitflips; in fsl_elbc_read_page()
743 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = ctrl->nand; in fsl_elbc_chip_init() local
772 chip->controller = &elbc_fcm_ctrl->controller; in fsl_elbc_chip_init()
799 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand; in fsl_elbc_chip_remove() local
807 elbc_fcm_ctrl->chips[priv->bank] = NULL; in fsl_elbc_chip_remove()
819 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl; in fsl_elbc_nand_probe() local
861 elbc_fcm_ctrl = kzalloc(sizeof(*elbc_fcm_ctrl), GFP_KERNEL); in fsl_elbc_nand_probe()
862 if (!elbc_fcm_ctrl) { in fsl_elbc_nand_probe()
867 elbc_fcm_ctrl->counter++; in fsl_elbc_nand_probe()
869 spin_lock_init(&elbc_fcm_ctrl->controller.lock); in fsl_elbc_nand_probe()
870 init_waitqueue_head(&elbc_fcm_ctrl->controller.wq); in fsl_elbc_nand_probe()
871 fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl; in fsl_elbc_nand_probe()
873 elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand; in fsl_elbc_nand_probe()
877 elbc_fcm_ctrl->chips[bank] = priv; in fsl_elbc_nand_probe()
928 struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand; in fsl_elbc_nand_remove() local
934 elbc_fcm_ctrl->counter--; in fsl_elbc_nand_remove()
935 if (!elbc_fcm_ctrl->counter) { in fsl_elbc_nand_remove()
937 kfree(elbc_fcm_ctrl); in fsl_elbc_nand_remove()