Lines Matching refs:doc
87 #define DoC_is_MillenniumPlus(doc) ((doc)->ChipID == DOC_ChipID_DocMilPlus16 || (doc)->ChipID == DO… argument
88 #define DoC_is_Millennium(doc) ((doc)->ChipID == DOC_ChipID_DocMil) argument
89 #define DoC_is_2000(doc) ((doc)->ChipID == DOC_ChipID_Doc2k) argument
225 static void DoC_Delay(struct doc_priv *doc, unsigned short cycles) in DoC_Delay() argument
231 if (DoC_is_Millennium(doc)) in DoC_Delay()
232 dummy = ReadDOC(doc->virtadr, NOP); in DoC_Delay()
233 else if (DoC_is_MillenniumPlus(doc)) in DoC_Delay()
234 dummy = ReadDOC(doc->virtadr, Mplus_NOP); in DoC_Delay()
236 dummy = ReadDOC(doc->virtadr, DOCStatus); in DoC_Delay()
244 static int _DoC_WaitReady(struct doc_priv *doc) in _DoC_WaitReady() argument
246 void __iomem *docptr = doc->virtadr; in _DoC_WaitReady()
252 if (DoC_is_MillenniumPlus(doc)) { in _DoC_WaitReady()
275 static inline int DoC_WaitReady(struct doc_priv *doc) in DoC_WaitReady() argument
277 void __iomem *docptr = doc->virtadr; in DoC_WaitReady()
280 if (DoC_is_MillenniumPlus(doc)) { in DoC_WaitReady()
281 DoC_Delay(doc, 4); in DoC_WaitReady()
285 ret = _DoC_WaitReady(doc); in DoC_WaitReady()
287 DoC_Delay(doc, 4); in DoC_WaitReady()
291 ret = _DoC_WaitReady(doc); in DoC_WaitReady()
292 DoC_Delay(doc, 2); in DoC_WaitReady()
303 struct doc_priv *doc = this->priv; in doc2000_write_byte() local
304 void __iomem *docptr = doc->virtadr; in doc2000_write_byte()
315 struct doc_priv *doc = this->priv; in doc2000_read_byte() local
316 void __iomem *docptr = doc->virtadr; in doc2000_read_byte()
320 DoC_Delay(doc, 2); in doc2000_read_byte()
330 struct doc_priv *doc = this->priv; in doc2000_writebuf() local
331 void __iomem *docptr = doc->virtadr; in doc2000_writebuf()
347 struct doc_priv *doc = this->priv; in doc2000_readbuf() local
348 void __iomem *docptr = doc->virtadr; in doc2000_readbuf()
362 struct doc_priv *doc = this->priv; in doc2000_readbuf_dword() local
363 void __iomem *docptr = doc->virtadr; in doc2000_readbuf_dword()
383 struct doc_priv *doc = this->priv; in doc200x_ident_chip() local
400 if (doc->ChipID == DOC_ChipID_Doc2k && try_dword && !nr) { in doc200x_ident_chip()
406 void __iomem *docptr = doc->virtadr; in doc200x_ident_chip()
429 struct doc_priv *doc = this->priv; in doc2000_count_chips() local
434 doc->chips_per_floor = 4; in doc2000_count_chips()
444 doc->chips_per_floor = i; in doc2000_count_chips()
450 struct doc_priv *doc = this->priv; in doc200x_wait() local
454 DoC_WaitReady(doc); in doc200x_wait()
456 DoC_WaitReady(doc); in doc200x_wait()
465 struct doc_priv *doc = this->priv; in doc2001_write_byte() local
466 void __iomem *docptr = doc->virtadr; in doc2001_write_byte()
476 struct doc_priv *doc = this->priv; in doc2001_read_byte() local
477 void __iomem *docptr = doc->virtadr; in doc2001_read_byte()
481 DoC_Delay(doc, 2); in doc2001_read_byte()
490 struct doc_priv *doc = this->priv; in doc2001_writebuf() local
491 void __iomem *docptr = doc->virtadr; in doc2001_writebuf()
503 struct doc_priv *doc = this->priv; in doc2001_readbuf() local
504 void __iomem *docptr = doc->virtadr; in doc2001_readbuf()
520 struct doc_priv *doc = this->priv; in doc2001plus_read_byte() local
521 void __iomem *docptr = doc->virtadr; in doc2001plus_read_byte()
535 struct doc_priv *doc = this->priv; in doc2001plus_writebuf() local
536 void __iomem *docptr = doc->virtadr; in doc2001plus_writebuf()
553 struct doc_priv *doc = this->priv; in doc2001plus_readbuf() local
554 void __iomem *docptr = doc->virtadr; in doc2001plus_readbuf()
584 struct doc_priv *doc = this->priv; in doc2001plus_select_chip() local
585 void __iomem *docptr = doc->virtadr; in doc2001plus_select_chip()
597 floor = chip / doc->chips_per_floor; in doc2001plus_select_chip()
598 chip -= (floor * doc->chips_per_floor); in doc2001plus_select_chip()
604 doc->curchip = chip; in doc2001plus_select_chip()
605 doc->curfloor = floor; in doc2001plus_select_chip()
611 struct doc_priv *doc = this->priv; in doc200x_select_chip() local
612 void __iomem *docptr = doc->virtadr; in doc200x_select_chip()
621 floor = chip / doc->chips_per_floor; in doc200x_select_chip()
622 chip -= (floor * doc->chips_per_floor); in doc200x_select_chip()
632 doc->curchip = chip; in doc200x_select_chip()
633 doc->curfloor = floor; in doc200x_select_chip()
642 struct doc_priv *doc = this->priv; in doc200x_hwcontrol() local
643 void __iomem *docptr = doc->virtadr; in doc200x_hwcontrol()
646 doc->CDSNControl &= ~CDSN_CTRL_MSK; in doc200x_hwcontrol()
647 doc->CDSNControl |= ctrl & CDSN_CTRL_MSK; in doc200x_hwcontrol()
649 printk("hwcontrol(%d): %02x\n", cmd, doc->CDSNControl); in doc200x_hwcontrol()
650 WriteDOC(doc->CDSNControl, docptr, CDSNControl); in doc200x_hwcontrol()
652 DoC_Delay(doc, 4); in doc200x_hwcontrol()
655 if (DoC_is_2000(doc)) in doc200x_hwcontrol()
665 struct doc_priv *doc = this->priv; in doc2001plus_command() local
666 void __iomem *docptr = doc->virtadr; in doc2001plus_command()
771 struct doc_priv *doc = this->priv; in doc200x_dev_ready() local
772 void __iomem *docptr = doc->virtadr; in doc200x_dev_ready()
774 if (DoC_is_MillenniumPlus(doc)) { in doc200x_dev_ready()
776 DoC_Delay(doc, 4); in doc200x_dev_ready()
787 DoC_Delay(doc, 4); in doc200x_dev_ready()
794 DoC_Delay(doc, 2); in doc200x_dev_ready()
811 struct doc_priv *doc = this->priv; in doc200x_enable_hwecc() local
812 void __iomem *docptr = doc->virtadr; in doc200x_enable_hwecc()
830 struct doc_priv *doc = this->priv; in doc2001plus_enable_hwecc() local
831 void __iomem *docptr = doc->virtadr; in doc2001plus_enable_hwecc()
850 struct doc_priv *doc = this->priv; in doc200x_calculate_ecc() local
851 void __iomem *docptr = doc->virtadr; in doc200x_calculate_ecc()
856 if (DoC_is_2000(doc)) { in doc200x_calculate_ecc()
857 WriteDOC(doc->CDSNControl & ~CDSN_CTRL_FLASH_IO, docptr, CDSNControl); in doc200x_calculate_ecc()
861 WriteDOC(doc->CDSNControl, docptr, CDSNControl); in doc200x_calculate_ecc()
862 } else if (DoC_is_MillenniumPlus(doc)) { in doc200x_calculate_ecc()
873 if (DoC_is_MillenniumPlus(doc)) in doc200x_calculate_ecc()
880 if (DoC_is_MillenniumPlus(doc)) in doc200x_calculate_ecc()
911 struct doc_priv *doc = this->priv; in doc200x_correct_data() local
912 void __iomem *docptr = doc->virtadr; in doc200x_correct_data()
918 if (DoC_is_2000(doc)) { in doc200x_correct_data()
922 } else if (DoC_is_MillenniumPlus(doc)) { in doc200x_correct_data()
935 if (DoC_is_MillenniumPlus(doc)) in doc200x_correct_data()
973 if (DoC_is_MillenniumPlus(doc)) in doc200x_correct_data()
1011 struct doc_priv *doc = this->priv; in find_media_headers() local
1026 if (doc->mh0_page == -1) { in find_media_headers()
1027 doc->mh0_page = offs >> this->page_shift; in find_media_headers()
1032 doc->mh1_page = offs >> this->page_shift; in find_media_headers()
1035 if (doc->mh0_page == -1) { in find_media_headers()
1041 offs = doc->mh0_page << this->page_shift; in find_media_headers()
1054 struct doc_priv *doc = this->priv; in nftl_partscan() local
1121 offs = max(doc->mh0_page, doc->mh1_page); in nftl_partscan()
1156 struct doc_priv *doc = this->priv; in inftl_partscan() local
1177 doc->mh1_page = doc->mh0_page + (4096 >> this->page_shift); in inftl_partscan()
1213 blocks = doc->chips_per_floor << (this->chip_shift - this->phys_erase_shift); in inftl_partscan()
1276 struct doc_priv *doc = this->priv; in nftl_scan_bbt() local
1289 this->bbt_td->pages[0] = doc->mh0_page + 1; in nftl_scan_bbt()
1290 if (doc->mh1_page != -1) { in nftl_scan_bbt()
1295 this->bbt_md->pages[0] = doc->mh1_page + 1; in nftl_scan_bbt()
1311 struct doc_priv *doc = this->priv; in inftl_scan_bbt() local
1314 if (this->numchips > doc->chips_per_floor) { in inftl_scan_bbt()
1319 if (DoC_is_MillenniumPlus(doc)) { in inftl_scan_bbt()
1364 struct doc_priv *doc = this->priv; in doc2000_init() local
1369 doc->late_init = nftl_scan_bbt; in doc2000_init()
1371 doc->CDSNControl = CDSN_CTRL_FLASH_IO | CDSN_CTRL_ECC_IO; in doc2000_init()
1374 return (4 * doc->chips_per_floor); in doc2000_init()
1380 struct doc_priv *doc = this->priv; in doc2001_init() local
1386 ReadDOC(doc->virtadr, ChipID); in doc2001_init()
1387 ReadDOC(doc->virtadr, ChipID); in doc2001_init()
1388 ReadDOC(doc->virtadr, ChipID); in doc2001_init()
1389 if (ReadDOC(doc->virtadr, ChipID) != DOC_ChipID_DocMil) { in doc2001_init()
1396 doc->late_init = inftl_scan_bbt; in doc2001_init()
1397 return (4 * doc->chips_per_floor); in doc2001_init()
1400 doc->chips_per_floor = 1; in doc2001_init()
1402 doc->late_init = nftl_scan_bbt; in doc2001_init()
1410 struct doc_priv *doc = this->priv; in doc2001plus_init() local
1415 doc->late_init = inftl_scan_bbt; in doc2001plus_init()
1421 doc->chips_per_floor = 1; in doc2001plus_init()
1432 struct doc_priv *doc; in doc_probe() local
1523 for (mtd = doclist; mtd; mtd = doc->nextdoc) { in doc_probe()
1527 doc = nand->priv; in doc_probe()
1533 oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution); in doc_probe()
1536 oldval = ReadDOC(doc->virtadr, AliasResolution); in doc_probe()
1543 oldval = ReadDOC(doc->virtadr, Mplus_AliasResolution); in doc_probe()
1547 oldval = ReadDOC(doc->virtadr, AliasResolution); in doc_probe()
1552 printk(KERN_DEBUG "Found alias of DOC at 0x%lx to 0x%lx\n", doc->physadr, physadr); in doc_probe()
1568 doc = (struct doc_priv *) (nand + 1); in doc_probe()
1569 nand->bbt_td = (struct nand_bbt_descr *) (doc + 1); in doc_probe()
1575 nand->priv = doc; in doc_probe()
1594 doc->physadr = physadr; in doc_probe()
1595 doc->virtadr = virtadr; in doc_probe()
1596 doc->ChipID = ChipID; in doc_probe()
1597 doc->curfloor = -1; in doc_probe()
1598 doc->curchip = -1; in doc_probe()
1599 doc->mh0_page = -1; in doc_probe()
1600 doc->mh1_page = -1; in doc_probe()
1601 doc->nextdoc = doclist; in doc_probe()
1610 if ((ret = nand_scan(mtd, numchips)) || (ret = doc->late_init(mtd))) { in doc_probe()
1643 struct doc_priv *doc; in release_nanddoc() local
1647 doc = nand->priv; in release_nanddoc()
1649 nextmtd = doc->nextdoc; in release_nanddoc()
1651 iounmap(doc->virtadr); in release_nanddoc()
1652 release_mem_region(doc->physadr, DOC_IOREMAP_LEN); in release_nanddoc()