Lines Matching defs:doc

85 #define DoC_is_MillenniumPlus(doc) ((doc)->ChipID == DOC_ChipID_DocMilPlus16 || (doc)->ChipID == DOC_ChipID_DocMilPlus32)
86 #define DoC_is_Millennium(doc) ((doc)->ChipID == DOC_ChipID_DocMil)
87 #define DoC_is_2000(doc) ((doc)->ChipID == DOC_ChipID_Doc2k)
217 static void DoC_Delay(struct doc_priv *doc, unsigned short cycles)
223 if (DoC_is_Millennium(doc))
224 dummy = ReadDOC(doc->virtadr, NOP);
225 else if (DoC_is_MillenniumPlus(doc))
226 dummy = ReadDOC(doc->virtadr, Mplus_NOP);
228 dummy = ReadDOC(doc->virtadr, DOCStatus);
236 static int _DoC_WaitReady(struct doc_priv *doc)
238 void __iomem *docptr = doc->virtadr;
244 if (DoC_is_MillenniumPlus(doc)) {
267 static inline int DoC_WaitReady(struct doc_priv *doc)
269 void __iomem *docptr = doc->virtadr;
272 if (DoC_is_MillenniumPlus(doc)) {
273 DoC_Delay(doc, 4);
277 ret = _DoC_WaitReady(doc);
279 DoC_Delay(doc, 4);
283 ret = _DoC_WaitReady(doc);
284 DoC_Delay(doc, 2);
294 struct doc_priv *doc = nand_get_controller_data(this);
295 void __iomem *docptr = doc->virtadr;
306 struct doc_priv *doc = nand_get_controller_data(this);
307 void __iomem *docptr = doc->virtadr;
322 struct doc_priv *doc = nand_get_controller_data(this);
323 void __iomem *docptr = doc->virtadr;
330 if (!doc->supports_32b_reads ||
365 struct doc_priv *doc = nand_get_controller_data(this);
373 if (doc->ChipID == DOC_ChipID_Doc2k && try_dword && !nr) {
379 void __iomem *docptr = doc->virtadr;
386 doc->supports_32b_reads = true;
396 struct doc_priv *doc = nand_get_controller_data(this);
401 doc->chips_per_floor = 4;
411 doc->chips_per_floor = i;
417 struct doc_priv *doc = nand_get_controller_data(this);
418 void __iomem *docptr = doc->virtadr;
427 struct doc_priv *doc = nand_get_controller_data(this);
428 void __iomem *docptr = doc->virtadr;
439 struct doc_priv *doc = nand_get_controller_data(this);
440 void __iomem *docptr = doc->virtadr;
455 struct doc_priv *doc = nand_get_controller_data(this);
456 void __iomem *docptr = doc->virtadr;
472 struct doc_priv *doc = nand_get_controller_data(this);
473 void __iomem *docptr = doc->virtadr;
503 static void doc200x_write_control(struct doc_priv *doc, u8 value)
505 WriteDOC(value, doc->virtadr, CDSNControl);
507 DoC_Delay(doc, 4);
513 struct doc_priv *doc = nand_get_controller_data(this);
518 doc200x_write_control(doc, CDSN_CTRL_CE | CDSN_CTRL_CLE);
523 doc200x_write_control(doc, CDSN_CTRL_CE | CDSN_CTRL_ALE);
527 if (DoC_is_2000(doc))
535 doc200x_write_control(doc, CDSN_CTRL_CE);
536 if (DoC_is_2000(doc))
545 doc200x_write_control(doc, CDSN_CTRL_CE);
546 if (DoC_is_2000(doc))
555 DoC_WaitReady(doc);
567 struct doc_priv *doc = nand_get_controller_data(this);
573 doc->curchip = op->cs % doc->chips_per_floor;
574 doc->curfloor = op->cs / doc->chips_per_floor;
576 WriteDOC(doc->curfloor, doc->virtadr, FloorSelect);
577 WriteDOC(doc->curchip, doc->virtadr, CDSNDeviceSelect);
580 doc200x_write_control(doc, CDSN_CTRL_CE);
586 doc200x_write_control(doc, 0);
591 static void doc2001plus_write_pipe_term(struct doc_priv *doc)
593 WriteDOC(0x00, doc->virtadr, Mplus_WritePipeTerm);
594 WriteDOC(0x00, doc->virtadr, Mplus_WritePipeTerm);
600 struct doc_priv *doc = nand_get_controller_data(this);
605 WriteDOC(instr->ctx.cmd.opcode, doc->virtadr, Mplus_FlashCmd);
606 doc2001plus_write_pipe_term(doc);
613 WriteDOC(addr, doc->virtadr, Mplus_FlashAddress);
615 doc2001plus_write_pipe_term(doc);
617 WriteDOC(0, doc->virtadr, Mplus_FlashControl);
627 doc2001plus_write_pipe_term(doc);
630 DoC_WaitReady(doc);
642 struct doc_priv *doc = nand_get_controller_data(this);
648 doc->curchip = op->cs % doc->chips_per_floor;
649 doc->curfloor = op->cs / doc->chips_per_floor;
652 WriteDOC(DOC_FLASH_CE, doc->virtadr, Mplus_FlashSelect);
658 WriteDOC(0, doc->virtadr, Mplus_FlashSelect);
665 struct doc_priv *doc = nand_get_controller_data(this);
666 void __iomem *docptr = doc->virtadr;
683 struct doc_priv *doc = nand_get_controller_data(this);
684 void __iomem *docptr = doc->virtadr;
703 struct doc_priv *doc = nand_get_controller_data(this);
704 void __iomem *docptr = doc->virtadr;
709 if (DoC_is_2000(doc)) {
710 WriteDOC(doc->CDSNControl & ~CDSN_CTRL_FLASH_IO, docptr, CDSNControl);
714 WriteDOC(doc->CDSNControl, docptr, CDSNControl);
715 } else if (DoC_is_MillenniumPlus(doc)) {
726 if (DoC_is_MillenniumPlus(doc))
733 if (DoC_is_MillenniumPlus(doc))
763 struct doc_priv *doc = nand_get_controller_data(this);
764 void __iomem *docptr = doc->virtadr;
769 if (DoC_is_2000(doc)) {
773 } else if (DoC_is_MillenniumPlus(doc)) {
786 if (DoC_is_MillenniumPlus(doc))
792 ret = doc_ecc_decode(doc->rs_decoder, dat, calc_ecc);
797 if (DoC_is_MillenniumPlus(doc))
865 struct doc_priv *doc = nand_get_controller_data(this);
880 if (doc->mh0_page == -1) {
881 doc->mh0_page = offs >> this->page_shift;
886 doc->mh1_page = offs >> this->page_shift;
889 if (doc->mh0_page == -1) {
895 offs = doc->mh0_page << this->page_shift;
908 struct doc_priv *doc = nand_get_controller_data(this);
979 offs = max(doc->mh0_page, doc->mh1_page);
1014 struct doc_priv *doc = nand_get_controller_data(this);
1035 doc->mh1_page = doc->mh0_page + (4096 >> this->page_shift);
1071 blocks = doc->chips_per_floor << (this->chip_shift - this->phys_erase_shift);
1134 struct doc_priv *doc = nand_get_controller_data(this);
1147 this->bbt_td->pages[0] = doc->mh0_page + 1;
1148 if (doc->mh1_page != -1) {
1153 this->bbt_md->pages[0] = doc->mh1_page + 1;
1169 struct doc_priv *doc = nand_get_controller_data(this);
1172 if (nanddev_ntargets(&this->base) > doc->chips_per_floor) {
1177 if (DoC_is_MillenniumPlus(doc)) {
1222 struct doc_priv *doc = nand_get_controller_data(this);
1224 doc->late_init = nftl_scan_bbt;
1226 doc->CDSNControl = CDSN_CTRL_FLASH_IO | CDSN_CTRL_ECC_IO;
1229 return (4 * doc->chips_per_floor);
1235 struct doc_priv *doc = nand_get_controller_data(this);
1237 ReadDOC(doc->virtadr, ChipID);
1238 ReadDOC(doc->virtadr, ChipID);
1239 ReadDOC(doc->virtadr, ChipID);
1240 if (ReadDOC(doc->virtadr, ChipID) != DOC_ChipID_DocMil) {
1247 doc->late_init = inftl_scan_bbt;
1248 return (4 * doc->chips_per_floor);
1251 doc->chips_per_floor = 1;
1253 doc->late_init = nftl_scan_bbt;
1261 struct doc_priv *doc = nand_get_controller_data(this);
1263 doc->late_init = inftl_scan_bbt;
1266 doc->chips_per_floor = 1;
1302 struct doc_priv *doc = NULL;
1397 for (mtd = doclist; mtd; mtd = doc->nextdoc) {
1401 doc = nand_get_controller_data(nand);
1407 oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution);
1410 oldval = ReadDOC(doc->virtadr, AliasResolution);
1417 oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution);
1421 oldval = ReadDOC(doc->virtadr, AliasResolution);
1427 doc->physadr, physadr);
1451 doc = (struct doc_priv *) (nand + 1);
1452 doc->rs_decoder = init_rs(10, 0x409, FCR, 1, NROOTS);
1453 if (!doc->rs_decoder) {
1459 nand_controller_init(&doc->base);
1461 doc->base.ops = &doc2001plus_ops;
1463 doc->base.ops = &doc200x_ops;
1466 nand->bbt_td = (struct nand_bbt_descr *) (doc + 1);
1472 nand->controller = &doc->base;
1473 nand_set_controller_data(nand, doc);
1478 doc->physadr = physadr;
1479 doc->virtadr = virtadr;
1480 doc->ChipID = ChipID;
1481 doc->curfloor = -1;
1482 doc->curchip = -1;
1483 doc->mh0_page = -1;
1484 doc->mh1_page = -1;
1485 doc->nextdoc = doclist;
1498 ret = doc->late_init(mtd);
1513 if (doc)
1514 free_rs(doc->rs_decoder);
1528 struct doc_priv *doc;
1533 doc = nand_get_controller_data(nand);
1535 nextmtd = doc->nextdoc;
1539 iounmap(doc->virtadr);
1540 release_mem_region(doc->physadr, DOC_IOREMAP_LEN);
1541 free_rs(doc->rs_decoder);