Lines Matching refs:doc
286 static int poll_status(struct docg4_priv *doc) in poll_status() argument
296 void __iomem *docptr = doc->virtadr; in poll_status()
298 dev_dbg(doc->dev, "%s...\n", __func__); in poll_status()
311 dev_err(doc->dev, "%s: timed out!\n", __func__); in poll_status()
322 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_wait() local
324 dev_dbg(doc->dev, "%s...\n", __func__); in docg4_wait()
327 if (doc->status) { in docg4_wait()
328 status |= doc->status; in docg4_wait()
329 doc->status = 0; in docg4_wait()
333 status |= poll_status(doc); in docg4_wait()
344 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_select_chip() local
345 void __iomem *docptr = doc->virtadr; in docg4_select_chip()
347 dev_dbg(doc->dev, "%s: chip %d\n", __func__, chip); in docg4_select_chip()
353 dev_warn(doc->dev, "multiple floors currently unsupported\n"); in docg4_select_chip()
363 struct docg4_priv *doc = nand_get_controller_data(nand); in reset() local
364 void __iomem *docptr = doc->virtadr; in reset()
379 poll_status(doc); in reset()
401 struct docg4_priv *doc = nand_get_controller_data(nand); in correct_data() local
402 void __iomem *docptr = doc->virtadr; in correct_data()
407 read_hw_ecc(docptr, doc->ecc_buf); /* read 7 hw-generated ecc bytes */ in correct_data()
410 if (!memcmp(doc->ecc_buf, blank_read_hwecc, 7)) in correct_data()
431 dev_warn(doc->dev, in correct_data()
448 doc->ecc_buf[i] = bitrev8(doc->ecc_buf[i]); in correct_data()
450 numerrs = decode_bch(doc->bch, NULL, DOCG4_USERDATA_LEN, NULL, in correct_data()
451 doc->ecc_buf, NULL, errpos); in correct_data()
454 dev_warn(doc->dev, "uncorrectable errors at offset %08x\n", in correct_data()
481 dev_notice(doc->dev, "%d error(s) corrected at offset %08x\n", in correct_data()
490 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_read_byte() local
492 dev_dbg(doc->dev, "%s\n", __func__); in docg4_read_byte()
494 if (doc->last_command.command == NAND_CMD_STATUS) { in docg4_read_byte()
502 doc->last_command.command = 0; in docg4_read_byte()
504 if (doc->status) { in docg4_read_byte()
505 status = doc->status; in docg4_read_byte()
506 doc->status = 0; in docg4_read_byte()
516 dev_warn(doc->dev, "unexpected call to read_byte()\n"); in docg4_read_byte()
521 static void write_addr(struct docg4_priv *doc, uint32_t docg4_addr) in write_addr() argument
525 void __iomem *docptr = doc->virtadr; in write_addr()
535 static int read_progstatus(struct docg4_priv *doc) in read_progstatus() argument
542 void __iomem *docptr = doc->virtadr; in read_progstatus()
549 dev_dbg(doc->dev, "docg4: %s: %02x %02x %02x\n", in read_progstatus()
555 doc->status = NAND_STATUS_FAIL; in read_progstatus()
556 dev_warn(doc->dev, "read_progstatus failed: " in read_progstatus()
571 struct docg4_priv *doc = nand_get_controller_data(nand); in pageprog() local
572 void __iomem *docptr = doc->virtadr; in pageprog()
575 dev_dbg(doc->dev, "docg4: %s\n", __func__); in pageprog()
583 poll_status(doc); in pageprog()
594 retval = read_progstatus(doc); in pageprog()
597 poll_status(doc); in pageprog()
608 struct docg4_priv *doc = nand_get_controller_data(nand); in sequence_reset() local
609 void __iomem *docptr = doc->virtadr; in sequence_reset()
616 poll_status(doc); in sequence_reset()
625 struct docg4_priv *doc = nand_get_controller_data(nand); in read_page_prologue() local
626 void __iomem *docptr = doc->virtadr; in read_page_prologue()
628 dev_dbg(doc->dev, in read_page_prologue()
637 write_addr(doc, docg4_addr); in read_page_prologue()
644 poll_status(doc); in read_page_prologue()
652 struct docg4_priv *doc = nand_get_controller_data(nand); in write_page_prologue() local
653 void __iomem *docptr = doc->virtadr; in write_page_prologue()
655 dev_dbg(doc->dev, in write_page_prologue()
669 write_addr(doc, docg4_addr); in write_page_prologue()
672 poll_status(doc); in write_page_prologue()
717 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_command() local
720 dev_dbg(doc->dev, "%s %x, page_addr=%x, column=%x\n", in docg4_command()
727 doc->last_command.command = command; in docg4_command()
728 doc->last_command.column = column; in docg4_command()
729 doc->last_command.page = page_addr; in docg4_command()
751 dev_warn(doc->dev, in docg4_command()
758 if (doc->oob_page == page_addr) in docg4_command()
759 memcpy(nand->oob_poi, doc->oob_buf, 16); in docg4_command()
771 dev_warn(doc->dev, "docg4_command: " in docg4_command()
781 struct docg4_priv *doc = nand_get_controller_data(nand); in read_page() local
782 void __iomem *docptr = doc->virtadr; in read_page()
786 dev_dbg(doc->dev, "%s: page %08x\n", __func__, page); in read_page()
804 dev_err(doc->dev, in read_page()
810 dev_dbg(doc->dev, "%s: status = 0x%x\n", __func__, status); in read_page()
829 dev_dbg(doc->dev, "%s: edc_err = 0x%02x\n", __func__, edc_err); in read_page()
863 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_read_oob() local
864 void __iomem *docptr = doc->virtadr; in docg4_read_oob()
867 dev_dbg(doc->dev, "%s: page %x\n", __func__, page); in docg4_read_oob()
881 dev_warn(doc->dev, in docg4_read_oob()
886 dev_dbg(doc->dev, "%s: status = 0x%x\n", __func__, status); in docg4_read_oob()
902 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_erase_block() local
903 void __iomem *docptr = doc->virtadr; in docg4_erase_block()
907 dev_dbg(doc->dev, "%s: page %04x\n", __func__, page); in docg4_erase_block()
928 poll_status(doc); in docg4_erase_block()
938 read_progstatus(doc); in docg4_erase_block()
942 poll_status(doc); in docg4_erase_block()
955 struct docg4_priv *doc = nand_get_controller_data(nand); in write_page() local
956 void __iomem *docptr = doc->virtadr; in write_page()
959 dev_dbg(doc->dev, "%s...\n", __func__); in write_page()
1037 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_write_oob() local
1038 doc->oob_page = page; in docg4_write_oob()
1039 memcpy(doc->oob_buf, nand->oob_poi, 16); in docg4_write_oob()
1051 struct docg4_priv *doc = nand_get_controller_data(nand); in read_factory_bbt() local
1082 dev_warn(doc->dev, in read_factory_bbt()
1101 dev_notice(doc->dev, "factory-marked bad block: %d\n", in read_factory_bbt()
1124 struct docg4_priv *doc = nand_get_controller_data(nand); in docg4_block_markbad() local
1129 dev_dbg(doc->dev, "%s: %08llx\n", __func__, ofs); in docg4_block_markbad()
1132 dev_warn(doc->dev, "%s: ofs %llx not start of block!\n", in docg4_block_markbad()
1172 struct docg4_priv *doc = platform_get_drvdata(pdev); in docg4_suspend() local
1173 void __iomem *docptr = doc->virtadr; in docg4_suspend()
1175 dev_dbg(doc->dev, "%s...\n", __func__); in docg4_suspend()
1186 dev_err(doc->dev, "suspend failed; " in docg4_suspend()
1209 struct docg4_priv *doc = platform_get_drvdata(pdev); in docg4_resume() local
1210 void __iomem *docptr = doc->virtadr; in docg4_resume()
1213 dev_dbg(doc->dev, "%s...\n", __func__); in docg4_resume()
1236 struct docg4_priv *doc = nand_get_controller_data(nand); in init_mtd_structs() local
1258 nand->IO_ADDR_R = nand->IO_ADDR_W = doc->virtadr + DOC_IOSPACE_DATA; in init_mtd_structs()
1296 struct docg4_priv *doc = nand_get_controller_data(nand); in read_id_reg() local
1297 void __iomem *docptr = doc->virtadr; in read_id_reg()
1307 dev_info(doc->dev, in read_id_reg()
1320 struct docg4_priv *doc = (struct docg4_priv *)(chip + 1); in docg4_attach_chip() local
1326 doc->bch = init_bch(DOCG4_M, DOCG4_T, DOCG4_PRIMITIVE_POLY); in docg4_attach_chip()
1327 if (!doc->bch) in docg4_attach_chip()
1334 free_bch(doc->bch); in docg4_attach_chip()
1341 struct docg4_priv *doc = (struct docg4_priv *)(chip + 1); in docg4_detach_chip() local
1343 free_bch(doc->bch); in docg4_detach_chip()
1356 struct docg4_priv *doc; in probe_docg4() local
1381 doc = (struct docg4_priv *) (nand + 1); in probe_docg4()
1382 nand_set_controller_data(nand, doc); in probe_docg4()
1384 doc->virtadr = virtadr; in probe_docg4()
1385 doc->dev = dev; in probe_docg4()
1386 platform_set_drvdata(pdev, doc); in probe_docg4()
1406 doc->mtd = mtd; in probe_docg4()
1422 struct docg4_priv *doc = platform_get_drvdata(pdev); in cleanup_docg4() local
1423 nand_release(doc->mtd); in cleanup_docg4()
1424 kfree(mtd_to_nand(doc->mtd)); in cleanup_docg4()
1425 iounmap(doc->virtadr); in cleanup_docg4()