Lines Matching refs:doc
82 #define DoC_is_MillenniumPlus(doc) ((doc)->ChipID == DOC_ChipID_DocMilPlus16 || (doc)->ChipID == DO… argument
83 #define DoC_is_Millennium(doc) ((doc)->ChipID == DOC_ChipID_DocMil) argument
84 #define DoC_is_2000(doc) ((doc)->ChipID == DOC_ChipID_Doc2k) argument
218 static void DoC_Delay(struct doc_priv *doc, unsigned short cycles) in DoC_Delay() argument
224 if (DoC_is_Millennium(doc)) in DoC_Delay()
225 dummy = ReadDOC(doc->virtadr, NOP); in DoC_Delay()
226 else if (DoC_is_MillenniumPlus(doc)) in DoC_Delay()
227 dummy = ReadDOC(doc->virtadr, Mplus_NOP); in DoC_Delay()
229 dummy = ReadDOC(doc->virtadr, DOCStatus); in DoC_Delay()
237 static int _DoC_WaitReady(struct doc_priv *doc) in _DoC_WaitReady() argument
239 void __iomem *docptr = doc->virtadr; in _DoC_WaitReady()
245 if (DoC_is_MillenniumPlus(doc)) { in _DoC_WaitReady()
268 static inline int DoC_WaitReady(struct doc_priv *doc) in DoC_WaitReady() argument
270 void __iomem *docptr = doc->virtadr; in DoC_WaitReady()
273 if (DoC_is_MillenniumPlus(doc)) { in DoC_WaitReady()
274 DoC_Delay(doc, 4); in DoC_WaitReady()
278 ret = _DoC_WaitReady(doc); in DoC_WaitReady()
280 DoC_Delay(doc, 4); in DoC_WaitReady()
284 ret = _DoC_WaitReady(doc); in DoC_WaitReady()
285 DoC_Delay(doc, 2); in DoC_WaitReady()
296 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_write_byte() local
297 void __iomem *docptr = doc->virtadr; in doc2000_write_byte()
308 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_read_byte() local
309 void __iomem *docptr = doc->virtadr; in doc2000_read_byte()
313 DoC_Delay(doc, 2); in doc2000_read_byte()
323 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_writebuf() local
324 void __iomem *docptr = doc->virtadr; in doc2000_writebuf()
340 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_readbuf() local
341 void __iomem *docptr = doc->virtadr; in doc2000_readbuf()
355 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_readbuf_dword() local
356 void __iomem *docptr = doc->virtadr; in doc2000_readbuf_dword()
376 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_ident_chip() local
393 if (doc->ChipID == DOC_ChipID_Doc2k && try_dword && !nr) { in doc200x_ident_chip()
399 void __iomem *docptr = doc->virtadr; in doc200x_ident_chip()
422 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_count_chips() local
427 doc->chips_per_floor = 4; in doc2000_count_chips()
437 doc->chips_per_floor = i; in doc2000_count_chips()
443 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_wait() local
447 DoC_WaitReady(doc); in doc200x_wait()
449 DoC_WaitReady(doc); in doc200x_wait()
458 struct doc_priv *doc = nand_get_controller_data(this); in doc2001_write_byte() local
459 void __iomem *docptr = doc->virtadr; in doc2001_write_byte()
469 struct doc_priv *doc = nand_get_controller_data(this); in doc2001_read_byte() local
470 void __iomem *docptr = doc->virtadr; in doc2001_read_byte()
474 DoC_Delay(doc, 2); in doc2001_read_byte()
483 struct doc_priv *doc = nand_get_controller_data(this); in doc2001_writebuf() local
484 void __iomem *docptr = doc->virtadr; in doc2001_writebuf()
496 struct doc_priv *doc = nand_get_controller_data(this); in doc2001_readbuf() local
497 void __iomem *docptr = doc->virtadr; in doc2001_readbuf()
513 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_read_byte() local
514 void __iomem *docptr = doc->virtadr; in doc2001plus_read_byte()
528 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_writebuf() local
529 void __iomem *docptr = doc->virtadr; in doc2001plus_writebuf()
546 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_readbuf() local
547 void __iomem *docptr = doc->virtadr; in doc2001plus_readbuf()
577 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_select_chip() local
578 void __iomem *docptr = doc->virtadr; in doc2001plus_select_chip()
590 floor = chip / doc->chips_per_floor; in doc2001plus_select_chip()
591 chip -= (floor * doc->chips_per_floor); in doc2001plus_select_chip()
597 doc->curchip = chip; in doc2001plus_select_chip()
598 doc->curfloor = floor; in doc2001plus_select_chip()
604 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_select_chip() local
605 void __iomem *docptr = doc->virtadr; in doc200x_select_chip()
614 floor = chip / doc->chips_per_floor; in doc200x_select_chip()
615 chip -= (floor * doc->chips_per_floor); in doc200x_select_chip()
625 doc->curchip = chip; in doc200x_select_chip()
626 doc->curfloor = floor; in doc200x_select_chip()
635 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_hwcontrol() local
636 void __iomem *docptr = doc->virtadr; in doc200x_hwcontrol()
639 doc->CDSNControl &= ~CDSN_CTRL_MSK; in doc200x_hwcontrol()
640 doc->CDSNControl |= ctrl & CDSN_CTRL_MSK; in doc200x_hwcontrol()
642 printk("hwcontrol(%d): %02x\n", cmd, doc->CDSNControl); in doc200x_hwcontrol()
643 WriteDOC(doc->CDSNControl, docptr, CDSNControl); in doc200x_hwcontrol()
645 DoC_Delay(doc, 4); in doc200x_hwcontrol()
648 if (DoC_is_2000(doc)) in doc200x_hwcontrol()
658 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_command() local
659 void __iomem *docptr = doc->virtadr; in doc2001plus_command()
763 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_dev_ready() local
764 void __iomem *docptr = doc->virtadr; in doc200x_dev_ready()
766 if (DoC_is_MillenniumPlus(doc)) { in doc200x_dev_ready()
768 DoC_Delay(doc, 4); in doc200x_dev_ready()
779 DoC_Delay(doc, 4); in doc200x_dev_ready()
786 DoC_Delay(doc, 2); in doc200x_dev_ready()
803 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_enable_hwecc() local
804 void __iomem *docptr = doc->virtadr; in doc200x_enable_hwecc()
822 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_enable_hwecc() local
823 void __iomem *docptr = doc->virtadr; in doc2001plus_enable_hwecc()
842 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_calculate_ecc() local
843 void __iomem *docptr = doc->virtadr; in doc200x_calculate_ecc()
848 if (DoC_is_2000(doc)) { in doc200x_calculate_ecc()
849 WriteDOC(doc->CDSNControl & ~CDSN_CTRL_FLASH_IO, docptr, CDSNControl); in doc200x_calculate_ecc()
853 WriteDOC(doc->CDSNControl, docptr, CDSNControl); in doc200x_calculate_ecc()
854 } else if (DoC_is_MillenniumPlus(doc)) { in doc200x_calculate_ecc()
865 if (DoC_is_MillenniumPlus(doc)) in doc200x_calculate_ecc()
872 if (DoC_is_MillenniumPlus(doc)) in doc200x_calculate_ecc()
903 struct doc_priv *doc = nand_get_controller_data(this); in doc200x_correct_data() local
904 void __iomem *docptr = doc->virtadr; in doc200x_correct_data()
909 if (DoC_is_2000(doc)) { in doc200x_correct_data()
913 } else if (DoC_is_MillenniumPlus(doc)) { in doc200x_correct_data()
926 if (DoC_is_MillenniumPlus(doc)) in doc200x_correct_data()
932 ret = doc_ecc_decode(doc->rs_decoder, dat, calc_ecc); in doc200x_correct_data()
937 if (DoC_is_MillenniumPlus(doc)) in doc200x_correct_data()
1005 struct doc_priv *doc = nand_get_controller_data(this); in find_media_headers() local
1020 if (doc->mh0_page == -1) { in find_media_headers()
1021 doc->mh0_page = offs >> this->page_shift; in find_media_headers()
1026 doc->mh1_page = offs >> this->page_shift; in find_media_headers()
1029 if (doc->mh0_page == -1) { in find_media_headers()
1035 offs = doc->mh0_page << this->page_shift; in find_media_headers()
1048 struct doc_priv *doc = nand_get_controller_data(this); in nftl_partscan() local
1115 offs = max(doc->mh0_page, doc->mh1_page); in nftl_partscan()
1150 struct doc_priv *doc = nand_get_controller_data(this); in inftl_partscan() local
1171 doc->mh1_page = doc->mh0_page + (4096 >> this->page_shift); in inftl_partscan()
1207 blocks = doc->chips_per_floor << (this->chip_shift - this->phys_erase_shift); in inftl_partscan()
1270 struct doc_priv *doc = nand_get_controller_data(this); in nftl_scan_bbt() local
1283 this->bbt_td->pages[0] = doc->mh0_page + 1; in nftl_scan_bbt()
1284 if (doc->mh1_page != -1) { in nftl_scan_bbt()
1289 this->bbt_md->pages[0] = doc->mh1_page + 1; in nftl_scan_bbt()
1305 struct doc_priv *doc = nand_get_controller_data(this); in inftl_scan_bbt() local
1308 if (this->numchips > doc->chips_per_floor) { in inftl_scan_bbt()
1313 if (DoC_is_MillenniumPlus(doc)) { in inftl_scan_bbt()
1358 struct doc_priv *doc = nand_get_controller_data(this); in doc2000_init() local
1363 doc->late_init = nftl_scan_bbt; in doc2000_init()
1365 doc->CDSNControl = CDSN_CTRL_FLASH_IO | CDSN_CTRL_ECC_IO; in doc2000_init()
1368 return (4 * doc->chips_per_floor); in doc2000_init()
1374 struct doc_priv *doc = nand_get_controller_data(this); in doc2001_init() local
1380 ReadDOC(doc->virtadr, ChipID); in doc2001_init()
1381 ReadDOC(doc->virtadr, ChipID); in doc2001_init()
1382 ReadDOC(doc->virtadr, ChipID); in doc2001_init()
1383 if (ReadDOC(doc->virtadr, ChipID) != DOC_ChipID_DocMil) { in doc2001_init()
1390 doc->late_init = inftl_scan_bbt; in doc2001_init()
1391 return (4 * doc->chips_per_floor); in doc2001_init()
1394 doc->chips_per_floor = 1; in doc2001_init()
1396 doc->late_init = nftl_scan_bbt; in doc2001_init()
1404 struct doc_priv *doc = nand_get_controller_data(this); in doc2001plus_init() local
1409 doc->late_init = inftl_scan_bbt; in doc2001plus_init()
1415 doc->chips_per_floor = 1; in doc2001plus_init()
1424 struct doc_priv *doc = NULL; in doc_probe() local
1518 for (mtd = doclist; mtd; mtd = doc->nextdoc) { in doc_probe()
1522 doc = nand_get_controller_data(nand); in doc_probe()
1528 oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution); in doc_probe()
1531 oldval = ReadDOC(doc->virtadr, AliasResolution); in doc_probe()
1538 oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution); in doc_probe()
1542 oldval = ReadDOC(doc->virtadr, AliasResolution); in doc_probe()
1548 doc->physadr, physadr); in doc_probe()
1573 doc = (struct doc_priv *) (nand + 1); in doc_probe()
1574 doc->rs_decoder = init_rs(10, 0x409, FCR, 1, NROOTS); in doc_probe()
1575 if (!doc->rs_decoder) { in doc_probe()
1582 nand->bbt_td = (struct nand_bbt_descr *) (doc + 1); in doc_probe()
1588 nand_set_controller_data(nand, doc); in doc_probe()
1607 doc->physadr = physadr; in doc_probe()
1608 doc->virtadr = virtadr; in doc_probe()
1609 doc->ChipID = ChipID; in doc_probe()
1610 doc->curfloor = -1; in doc_probe()
1611 doc->curchip = -1; in doc_probe()
1612 doc->mh0_page = -1; in doc_probe()
1613 doc->mh1_page = -1; in doc_probe()
1614 doc->nextdoc = doclist; in doc_probe()
1623 if ((ret = nand_scan(mtd, numchips)) || (ret = doc->late_init(mtd))) { in doc_probe()
1643 if (doc) in doc_probe()
1644 free_rs(doc->rs_decoder); in doc_probe()
1658 struct doc_priv *doc; in release_nanddoc() local
1662 doc = nand_get_controller_data(nand); in release_nanddoc()
1664 nextmtd = doc->nextdoc; in release_nanddoc()
1666 iounmap(doc->virtadr); in release_nanddoc()
1667 release_mem_region(doc->physadr, DOC_IOREMAP_LEN); in release_nanddoc()
1668 free_rs(doc->rs_decoder); in release_nanddoc()