Lines Matching +full:0 +full:xdc000
36 #define CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS 0
42 0xfffc8000, 0xfffca000, 0xfffcc000, 0xfffce000,
43 0xfffd0000, 0xfffd2000, 0xfffd4000, 0xfffd6000,
44 0xfffd8000, 0xfffda000, 0xfffdc000, 0xfffde000,
45 0xfffe0000, 0xfffe2000, 0xfffe4000, 0xfffe6000,
46 0xfffe8000, 0xfffea000, 0xfffec000, 0xfffee000,
48 0xc8000, 0xca000, 0xcc000, 0xce000,
49 0xd0000, 0xd2000, 0xd4000, 0xd6000,
50 0xd8000, 0xda000, 0xdc000, 0xde000,
51 0xe0000, 0xe2000, 0xe4000, 0xe6000,
52 0xe8000, 0xea000, 0xec000, 0xee000,
55 0xffffffff };
77 page, one with all 0xff for data. */
78 static u_char empty_write_ecc[6] = { 0x4b, 0x00, 0xe2, 0x0e, 0x93, 0xf7 };
90 static int debug = 0;
91 module_param(debug, int, 0);
94 module_param(try_dword, int, 0);
96 static int no_ecc_failures = 0;
97 module_param(no_ecc_failures, int, 0);
99 static int no_autopart = 0;
100 module_param(no_autopart, int, 0);
102 static int show_firmware_partition = 0;
103 module_param(show_firmware_partition, int, 0);
108 static int inftl_bbt_write = 0;
110 module_param(inftl_bbt_write, int, 0);
113 module_param(doc_config_location, ulong, 0);
143 memset(syn, 0, sizeof(syn)); in doc_ecc_decode()
145 ds[0] = ((ecc[4] & 0xff) >> 0) | ((ecc[5] & 0x03) << 8); in doc_ecc_decode()
146 ds[1] = ((ecc[5] & 0xfc) >> 2) | ((ecc[2] & 0x0f) << 6); in doc_ecc_decode()
147 ds[2] = ((ecc[2] & 0xf0) >> 4) | ((ecc[3] & 0x3f) << 4); in doc_ecc_decode()
148 ds[3] = ((ecc[3] & 0xc0) >> 6) | ((ecc[0] & 0xff) << 2); in doc_ecc_decode()
152 for (i = 0; i < NROOTS; i++) in doc_ecc_decode()
153 s[i] = ds[0]; in doc_ecc_decode()
156 * s[i] = ds[3]x^3 + ds[2]x^2 + ds[1]x^1 + ds[0] in doc_ecc_decode()
160 if (ds[j] == 0) in doc_ecc_decode()
163 for (i = 0; i < NROOTS; i++) in doc_ecc_decode()
168 for (i = 0; i < NROOTS; i++) { in doc_ecc_decode()
173 nerr = decode_rs16(rs, NULL, NULL, 1019, syn, 0, errpos, 0, errval); in doc_ecc_decode()
176 if (nerr < 0) in doc_ecc_decode()
184 for (i = 0; i < nerr; i++) { in doc_ecc_decode()
196 if ((index >= 0 && index < SECTOR_SIZE) || index == (SECTOR_SIZE + 1)) { in doc_ecc_decode()
204 if (bitpos == 0) in doc_ecc_decode()
206 if ((index >= 0 && index < SECTOR_SIZE) || index == (SECTOR_SIZE + 1)) { in doc_ecc_decode()
223 for (i = 0; i < cycles; i++) { in DoC_Delay()
265 return 0; in _DoC_WaitReady()
271 int ret = 0; in DoC_WaitReady()
328 for (i = 0; i < len; i++) { in doc2000_writebuf()
347 for (i = 0; i < len; i++) { in doc2000_readbuf()
363 for (i = 0; i < len; i++) { in doc2000_readbuf_dword()
367 for (i = 0; i < len; i += 4) { in doc2000_readbuf_dword()
382 doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE); in doc200x_ident_chip()
403 doc200x_hwcontrol(mtd, 0, NAND_CTRL_ALE | NAND_CTRL_CHANGE); in doc200x_ident_chip()
410 if (((ident.byte[0] << 8) | ident.byte[1]) == ret) { in doc200x_ident_chip()
430 mfrid = doc200x_ident_chip(mtd, 0); in doc2000_count_chips()
487 for (i = 0; i < len; i++) in doc2001_writebuf()
490 WriteDOC(0x00, docptr, WritePipeTerm); in doc2001_writebuf()
503 for (i = 0; i < len - 1; i++) in doc2001_readbuf()
504 buf[i] = ReadDOC(docptr, Mil_CDSN_IO + (i & 0xff)); in doc2001_readbuf()
534 for (i = 0; i < len; i++) { in doc2001plus_writebuf()
557 for (i = 0; i < len - 2; i++) { in doc2001plus_readbuf()
579 int floor = 0; in doc2001plus_select_chip()
586 WriteDOC(0, docptr, Mplus_FlashSelect); in doc2001plus_select_chip()
606 int floor = 0; in doc200x_select_chip()
618 doc200x_hwcontrol(mtd, NAND_CMD_NONE, 0 | NAND_CTRL_CHANGE); in doc200x_select_chip()
666 WriteDOC(0x00, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
667 WriteDOC(0x00, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
690 WriteDOC(0, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
691 WriteDOC(0, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
703 WriteDOC((unsigned char)(page_addr & 0xff), docptr, Mplus_FlashAddress); in doc2001plus_command()
704 WriteDOC((unsigned char)((page_addr >> 8) & 0xff), docptr, Mplus_FlashAddress); in doc2001plus_command()
706 WriteDOC((unsigned char)((page_addr >> 16) & 0x0f), docptr, Mplus_FlashAddress); in doc2001plus_command()
710 WriteDOC(0, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
711 WriteDOC(0, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
715 WriteDOC(0, docptr, Mplus_FlashControl); in doc2001plus_command()
736 WriteDOC(0, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
737 WriteDOC(0, docptr, Mplus_WritePipeTerm); in doc2001plus_command()
738 while (!(this->read_byte(mtd) & 0x40)) ; in doc2001plus_command()
772 return 0; in doc200x_dev_ready()
783 return 0; in doc200x_dev_ready()
797 return 0; in doc200x_block_bad()
850 WriteDOC(0, docptr, 2k_CDSN_IO); in doc200x_calculate_ecc()
851 WriteDOC(0, docptr, 2k_CDSN_IO); in doc200x_calculate_ecc()
852 WriteDOC(0, docptr, 2k_CDSN_IO); in doc200x_calculate_ecc()
855 WriteDOC(0, docptr, Mplus_NOP); in doc200x_calculate_ecc()
856 WriteDOC(0, docptr, Mplus_NOP); in doc200x_calculate_ecc()
857 WriteDOC(0, docptr, Mplus_NOP); in doc200x_calculate_ecc()
859 WriteDOC(0, docptr, NOP); in doc200x_calculate_ecc()
860 WriteDOC(0, docptr, NOP); in doc200x_calculate_ecc()
861 WriteDOC(0, docptr, NOP); in doc200x_calculate_ecc()
864 for (i = 0; i < 6; i++) { in doc200x_calculate_ecc()
870 emptymatch = 0; in doc200x_calculate_ecc()
876 #if 0 in doc200x_calculate_ecc()
877 /* If emptymatch=1, we might have an all-0xff data buffer. Check. */ in doc200x_calculate_ecc()
882 for (i = 0; i < 512; i++) { in doc200x_calculate_ecc()
883 if (dat[i] == 0xff) in doc200x_calculate_ecc()
885 emptymatch = 0; in doc200x_calculate_ecc()
889 /* If emptymatch still =1, we do have an all-0xff data buffer. in doc200x_calculate_ecc()
890 Return all-0xff ecc value instead of the computed one, so in doc200x_calculate_ecc()
893 memset(ecc_code, 0xff, 6); in doc200x_calculate_ecc()
895 return 0; in doc200x_calculate_ecc()
901 int i, ret = 0; in doc200x_correct_data()
924 if (dummy & 0x80) { in doc200x_correct_data()
925 for (i = 0; i < 6; i++) { in doc200x_correct_data()
933 if (ret > 0) in doc200x_correct_data()
943 ret = 0; in doc200x_correct_data()
956 oobregion->offset = 0; in doc200x_ooblayout_ecc()
959 return 0; in doc200x_ooblayout_ecc()
988 return 0; in doc200x_ooblayout_free()
1010 for (offs = 0; offs < mtd->size; offs += mtd->erasesize) { in find_media_headers()
1015 pr_warn("ECC error scanning DOC at 0x%x\n", offs); in find_media_headers()
1019 pr_info("Found DiskOnChip %s Media Header at 0x%x\n", id, offs); in find_media_headers()
1031 return 0; in find_media_headers()
1040 return 0; in find_media_headers()
1049 int ret = 0; in nftl_partscan()
1053 int numparts = 0; in nftl_partscan()
1059 return 0; in nftl_partscan()
1081 if (mh->UnitSizeFactor == 0x00) { in nftl_partscan()
1087 mh->UnitSizeFactor = 0xff; in nftl_partscan()
1093 …pr_warn("UnitSizeFactor=0x00 detected. Correct value is assumed to be 0x%02x.\n", mh->UnitSizeFac… in nftl_partscan()
1101 if (mh->UnitSizeFactor != 0xff) { in nftl_partscan()
1102 this->bbt_erase_shift += (0xff - mh->UnitSizeFactor); in nftl_partscan()
1103 mtd->erasesize <<= (0xff - mh->UnitSizeFactor); in nftl_partscan()
1110 …pr_err("UnitSizeFactor of 0x%02x is inconsistent with device size. Aborting.\n", mh->UnitSizeFact… in nftl_partscan()
1120 parts[0].name = " DiskOnChip Firmware / Media Header partition"; in nftl_partscan()
1121 parts[0].offset = 0; in nftl_partscan()
1122 parts[0].size = offs; in nftl_partscan()
1151 int ret = 0; in inftl_partscan()
1155 int numparts = 0; in inftl_partscan()
1157 int vshift, lastvunit = 0; in inftl_partscan()
1166 return 0; in inftl_partscan()
1169 if (!find_media_headers(mtd, buf, "BNAND", 0)) in inftl_partscan()
1193 ((unsigned char *) &mh->OsakVersion)[0] & 0xf, in inftl_partscan()
1194 ((unsigned char *) &mh->OsakVersion)[1] & 0xf, in inftl_partscan()
1195 ((unsigned char *) &mh->OsakVersion)[2] & 0xf, in inftl_partscan()
1196 ((unsigned char *) &mh->OsakVersion)[3] & 0xf, in inftl_partscan()
1214 for (i = 0; (i < 4); i++) { in inftl_partscan()
1227 " flags = 0x%x\n" in inftl_partscan()
1234 (i == 0) && (ip->firstUnit > 0)) { in inftl_partscan()
1235 parts[0].name = " DiskOnChip IPL / Media Header partition"; in inftl_partscan()
1236 parts[0].offset = 0; in inftl_partscan()
1237 parts[0].size = mtd->erasesize * ip->firstUnit; in inftl_partscan()
1273 memset((char *)parts, 0, sizeof(parts)); in nftl_scan_bbt()
1283 this->bbt_td->pages[0] = doc->mh0_page + 1; in nftl_scan_bbt()
1289 this->bbt_md->pages[0] = doc->mh1_page + 1; in nftl_scan_bbt()
1298 return mtd_device_register(mtd, parts, no_autopart ? 0 : numparts); in nftl_scan_bbt()
1317 this->bbt_td->pages[0] = 2; in inftl_scan_bbt()
1327 this->bbt_td->reserved_block_code = 0x01; in inftl_scan_bbt()
1337 this->bbt_md->reserved_block_code = 0x01; in inftl_scan_bbt()
1345 memset((char *)parts, 0, sizeof(parts)); in inftl_scan_bbt()
1352 return mtd_device_register(mtd, parts, no_autopart ? 0 : numparts); in inftl_scan_bbt()
1431 int ret = 0; in doc_probe()
1437 pr_err("Diskonchip ioremap failed: 0x%x bytes at 0x%lx\n", in doc_probe()
1472 case 0: in doc_probe()
1475 for (tmp = 0; (tmp < 4); tmp++) in doc_probe()
1513 pr_warn("Possible DiskOnChip at 0x%lx failed TOGGLE test, dropping.\n", physadr); in doc_probe()
1547 pr_debug("Found alias of DOC at 0x%lx to 0x%lx\n", in doc_probe()
1553 pr_notice("DiskOnChip found at 0x%lx\n", physadr); in doc_probe()
1574 doc->rs_decoder = init_rs(10, 0x409, FCR, 1, NROOTS); in doc_probe()
1633 return 0; in doc_probe()
1672 int i, ret = 0; in init_nanddoc()
1675 pr_info("Using configured DiskOnChip probe address 0x%lx\n", in init_nanddoc()
1678 if (ret < 0) in init_nanddoc()
1681 for (i = 0; (doc_locations[i] != 0xffffffff); i++) { in init_nanddoc()