Lines Matching refs:cfi

174 	struct cfi_private *cfi = map->fldrv_priv;  in fixup_convert_atmel_pri()  local
175 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in fixup_convert_atmel_pri()
207 cfi->cfiq->BufWriteTimeoutTyp = 0; in fixup_convert_atmel_pri()
208 cfi->cfiq->BufWriteTimeoutMax = 0; in fixup_convert_atmel_pri()
214 struct cfi_private *cfi = map->fldrv_priv; in fixup_at49bv640dx_lock() local
215 struct cfi_pri_intelext *cfip = cfi->cmdset_priv; in fixup_at49bv640dx_lock()
226 struct cfi_private *cfi = map->fldrv_priv; in fixup_intel_strataflash() local
227 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in fixup_intel_strataflash()
239 struct cfi_private *cfi = map->fldrv_priv; in fixup_no_write_suspend() local
240 struct cfi_pri_intelext *cfip = cfi->cmdset_priv; in fixup_no_write_suspend()
252 struct cfi_private *cfi = map->fldrv_priv; in fixup_st_m28w320ct() local
254 cfi->cfiq->BufWriteTimeoutTyp = 0; /* Not supported */ in fixup_st_m28w320ct()
255 cfi->cfiq->BufWriteTimeoutMax = 0; /* Not supported */ in fixup_st_m28w320ct()
261 struct cfi_private *cfi = map->fldrv_priv; in fixup_st_m28w320cb() local
264 cfi->cfiq->EraseRegionInfo[1] = in fixup_st_m28w320cb()
265 (cfi->cfiq->EraseRegionInfo[1] & 0xffff0000) | 0x3e; in fixup_st_m28w320cb()
268 static int is_LH28F640BF(struct cfi_private *cfi) in is_LH28F640BF() argument
271 if (cfi->mfr == CFI_MFR_SHARP && ( in is_LH28F640BF()
272 cfi->id == LH28F640BFHE_PTTL90 || cfi->id == LH28F640BFHE_PBTL90 || in is_LH28F640BF()
273 cfi->id == LH28F640BFHE_PTTL70A || cfi->id == LH28F640BFHE_PBTL70A)) in is_LH28F640BF()
281 struct cfi_private *cfi = map->fldrv_priv; in fixup_LH28F640BF() local
282 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in fixup_LH28F640BF()
286 if (is_LH28F640BF(cfi)) { in fixup_LH28F640BF()
310 struct cfi_private *cfi = map->fldrv_priv; in fixup_use_write_buffers() local
311 if (cfi->cfiq->BufWriteTimeoutTyp) { in fixup_use_write_buffers()
324 struct cfi_private *cfi = map->fldrv_priv; in fixup_unlock_powerup_lock() local
325 struct cfi_pri_intelext *cfip = cfi->cmdset_priv; in fixup_unlock_powerup_lock()
372 static void cfi_fixup_major_minor(struct cfi_private *cfi, in cfi_fixup_major_minor() argument
375 if (cfi->mfr == CFI_MFR_INTEL && in cfi_fixup_major_minor()
376 cfi->id == PF38F4476 && extp->MinorVersion == '3') in cfi_fixup_major_minor()
380 static int cfi_is_micron_28F00AP30(struct cfi_private *cfi, struct flchip *chip) in cfi_is_micron_28F00AP30() argument
386 if (cfi->mfr == CFI_MFR_INTEL && cfi->id == M28F00AP30) in cfi_is_micron_28F00AP30()
394 struct cfi_private *cfi = map->fldrv_priv; in read_pri_intelext() local
404 cfi_fixup_major_minor(cfi, extp); in read_pri_intelext()
483 struct cfi_private *cfi = map->fldrv_priv; in cfi_cmdset_0001() local
506 mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize; in cfi_cmdset_0001()
510 if (cfi->cfi_mode == CFI_MODE_CFI) { in cfi_cmdset_0001()
516 __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR; in cfi_cmdset_0001()
526 cfi->cmdset_priv = extp; in cfi_cmdset_0001()
539 else if (cfi->cfi_mode == CFI_MODE_JEDEC) { in cfi_cmdset_0001()
546 for (i=0; i< cfi->numchips; i++) { in cfi_cmdset_0001()
547 if (cfi->cfiq->WordWriteTimeoutTyp) in cfi_cmdset_0001()
548 cfi->chips[i].word_write_time = in cfi_cmdset_0001()
549 1<<cfi->cfiq->WordWriteTimeoutTyp; in cfi_cmdset_0001()
551 cfi->chips[i].word_write_time = 50000; in cfi_cmdset_0001()
553 if (cfi->cfiq->BufWriteTimeoutTyp) in cfi_cmdset_0001()
554 cfi->chips[i].buffer_write_time = in cfi_cmdset_0001()
555 1<<cfi->cfiq->BufWriteTimeoutTyp; in cfi_cmdset_0001()
558 if (cfi->cfiq->BlockEraseTimeoutTyp) in cfi_cmdset_0001()
559 cfi->chips[i].erase_time = in cfi_cmdset_0001()
560 1000<<cfi->cfiq->BlockEraseTimeoutTyp; in cfi_cmdset_0001()
562 cfi->chips[i].erase_time = 2000000; in cfi_cmdset_0001()
564 if (cfi->cfiq->WordWriteTimeoutTyp && in cfi_cmdset_0001()
565 cfi->cfiq->WordWriteTimeoutMax) in cfi_cmdset_0001()
566 cfi->chips[i].word_write_time_max = in cfi_cmdset_0001()
567 1<<(cfi->cfiq->WordWriteTimeoutTyp + in cfi_cmdset_0001()
568 cfi->cfiq->WordWriteTimeoutMax); in cfi_cmdset_0001()
570 cfi->chips[i].word_write_time_max = 50000 * 8; in cfi_cmdset_0001()
572 if (cfi->cfiq->BufWriteTimeoutTyp && in cfi_cmdset_0001()
573 cfi->cfiq->BufWriteTimeoutMax) in cfi_cmdset_0001()
574 cfi->chips[i].buffer_write_time_max = in cfi_cmdset_0001()
575 1<<(cfi->cfiq->BufWriteTimeoutTyp + in cfi_cmdset_0001()
576 cfi->cfiq->BufWriteTimeoutMax); in cfi_cmdset_0001()
578 if (cfi->cfiq->BlockEraseTimeoutTyp && in cfi_cmdset_0001()
579 cfi->cfiq->BlockEraseTimeoutMax) in cfi_cmdset_0001()
580 cfi->chips[i].erase_time_max = in cfi_cmdset_0001()
581 1000<<(cfi->cfiq->BlockEraseTimeoutTyp + in cfi_cmdset_0001()
582 cfi->cfiq->BlockEraseTimeoutMax); in cfi_cmdset_0001()
584 cfi->chips[i].erase_time_max = 2000000 * 8; in cfi_cmdset_0001()
586 cfi->chips[i].ref_point_counter = 0; in cfi_cmdset_0001()
587 init_waitqueue_head(&(cfi->chips[i].wq)); in cfi_cmdset_0001()
603 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_setup() local
606 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave; in cfi_intelext_setup()
610 mtd->size = devsize * cfi->numchips; in cfi_intelext_setup()
612 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips; in cfi_intelext_setup()
619 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) { in cfi_intelext_setup()
621 ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave; in cfi_intelext_setup()
622 ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1; in cfi_intelext_setup()
627 for (j=0; j<cfi->numchips; j++) { in cfi_intelext_setup()
628 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset; in cfi_intelext_setup()
629 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize; in cfi_intelext_setup()
630 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum; in cfi_intelext_setup()
631 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap = kmalloc(ernum / 8 + 1, GFP_KERNEL); in cfi_intelext_setup()
632 if (!mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap) in cfi_intelext_setup()
662 if (cfi_intelext_partition_fixup(mtd, &cfi) != 0) in cfi_intelext_setup()
671 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) in cfi_intelext_setup()
672 for (j=0; j<cfi->numchips; j++) in cfi_intelext_setup()
673 kfree(mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap); in cfi_intelext_setup()
676 kfree(cfi->cmdset_priv); in cfi_intelext_setup()
684 struct cfi_private *cfi = *pcfi; in cfi_intelext_partition_fixup() local
685 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in cfi_intelext_partition_fixup()
740 mtd->writesize = cfi->interleave << prinfo->ProgRegShift; in cfi_intelext_partition_fixup()
744 cfi->interleave * prinfo->ControlValid, in cfi_intelext_partition_fixup()
745 cfi->interleave * prinfo->ControlInvalid); in cfi_intelext_partition_fixup()
753 partshift = cfi->chipshift - __ffs(numparts); in cfi_intelext_partition_fixup()
762 numvirtchips = cfi->numchips * numparts; in cfi_intelext_partition_fixup()
767 shared = kmalloc_array(cfi->numchips, in cfi_intelext_partition_fixup()
774 memcpy(newcfi, cfi, sizeof(struct cfi_private)); in cfi_intelext_partition_fixup()
779 for (i = 0; i < cfi->numchips; i++) { in cfi_intelext_partition_fixup()
783 *chip = cfi->chips[i]; in cfi_intelext_partition_fixup()
796 map->name, cfi->numchips, cfi->interleave, in cfi_intelext_partition_fixup()
801 kfree(cfi); in cfi_intelext_partition_fixup()
813 struct cfi_private *cfi = map->fldrv_priv; in chip_ready() local
815 struct cfi_pri_intelext *cfip = cfi->cmdset_priv; in chip_ready()
860 if (cfi_is_micron_28F00AP30(cfi, chip) && in chip_ready()
1025 struct cfi_private *cfi = map->fldrv_priv; in put_chip() local
1118 struct cfi_private *cfi = map->fldrv_priv; in xip_enable() local
1145 struct cfi_private *cfi = map->fldrv_priv; in xip_wait_for_operation() local
1146 struct cfi_pri_intelext *cfip = cfi->cmdset_priv; in xip_wait_for_operation()
1162 (cfi_interleave_is_1(cfi) || chip->oldstate == FL_READY)) { in xip_wait_for_operation()
1277 struct cfi_private *cfi = map->fldrv_priv; in inval_cache_and_wait_for_operation() local
1359 struct cfi_private *cfi = map->fldrv_priv; in do_point_onechip() local
1387 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_point() local
1398 chipnum = (from >> cfi->chipshift); in cfi_intelext_point()
1399 ofs = from - (chipnum << cfi->chipshift); in cfi_intelext_point()
1401 *virt = map->virt + cfi->chips[chipnum].start + ofs; in cfi_intelext_point()
1403 *phys = map->phys + cfi->chips[chipnum].start + ofs; in cfi_intelext_point()
1408 if (chipnum >= cfi->numchips) in cfi_intelext_point()
1413 last_end = cfi->chips[chipnum].start; in cfi_intelext_point()
1414 else if (cfi->chips[chipnum].start != last_end) in cfi_intelext_point()
1417 if ((len + ofs -1) >> cfi->chipshift) in cfi_intelext_point()
1418 thislen = (1<<cfi->chipshift) - ofs; in cfi_intelext_point()
1422 ret = do_point_onechip(map, &cfi->chips[chipnum], ofs, thislen); in cfi_intelext_point()
1430 last_end += 1 << cfi->chipshift; in cfi_intelext_point()
1439 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_unpoint() local
1446 chipnum = (from >> cfi->chipshift); in cfi_intelext_unpoint()
1447 ofs = from - (chipnum << cfi->chipshift); in cfi_intelext_unpoint()
1453 chip = &cfi->chips[chipnum]; in cfi_intelext_unpoint()
1454 if (chipnum >= cfi->numchips) in cfi_intelext_unpoint()
1457 if ((len + ofs -1) >> cfi->chipshift) in cfi_intelext_unpoint()
1458 thislen = (1<<cfi->chipshift) - ofs; in cfi_intelext_unpoint()
1486 struct cfi_private *cfi = map->fldrv_priv; in do_read_onechip() local
1518 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_read() local
1524 chipnum = (from >> cfi->chipshift); in cfi_intelext_read()
1525 ofs = from - (chipnum << cfi->chipshift); in cfi_intelext_read()
1530 if (chipnum >= cfi->numchips) in cfi_intelext_read()
1533 if ((len + ofs -1) >> cfi->chipshift) in cfi_intelext_read()
1534 thislen = (1<<cfi->chipshift) - ofs; in cfi_intelext_read()
1538 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf); in cfi_intelext_read()
1555 struct cfi_private *cfi = map->fldrv_priv; in do_write_oneword() local
1563 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0x40) : CMD(0x41); in do_write_oneword()
1630 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_write_words() local
1635 chipnum = to >> cfi->chipshift; in cfi_intelext_write_words()
1636 ofs = to - (chipnum << cfi->chipshift); in cfi_intelext_write_words()
1649 ret = do_write_oneword(map, &cfi->chips[chipnum], in cfi_intelext_write_words()
1659 if (ofs >> cfi->chipshift) { in cfi_intelext_write_words()
1662 if (chipnum == cfi->numchips) in cfi_intelext_write_words()
1670 ret = do_write_oneword(map, &cfi->chips[chipnum], in cfi_intelext_write_words()
1680 if (ofs >> cfi->chipshift) { in cfi_intelext_write_words()
1683 if (chipnum == cfi->numchips) in cfi_intelext_write_words()
1694 ret = do_write_oneword(map, &cfi->chips[chipnum], in cfi_intelext_write_words()
1710 struct cfi_private *cfi = map->fldrv_priv; in do_write_buffer() local
1719 wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize; in do_write_buffer()
1727 if (is_LH28F640BF(cfi)) in do_write_buffer()
1731 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0xe8) : CMD(0xe9); in do_write_buffer()
1876 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_writev() local
1877 int wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize; in cfi_intelext_writev()
1889 chipnum = to >> cfi->chipshift; in cfi_intelext_writev()
1890 ofs = to - (chipnum << cfi->chipshift); in cfi_intelext_writev()
1899 ret = do_write_buffer(map, &cfi->chips[chipnum], in cfi_intelext_writev()
1908 if (ofs >> cfi->chipshift) { in cfi_intelext_writev()
1911 if (chipnum == cfi->numchips) in cfi_intelext_writev()
1938 struct cfi_private *cfi = map->fldrv_priv; in do_erase_oneblock() local
2034 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_sync() local
2039 for (i=0; !ret && i<cfi->numchips; i++) { in cfi_intelext_sync()
2040 chip = &cfi->chips[i]; in cfi_intelext_sync()
2059 chip = &cfi->chips[i]; in cfi_intelext_sync()
2077 struct cfi_private *cfi = map->fldrv_priv; in do_getlockstatus_oneblock() local
2078 int status, ofs_factor = cfi->interleave * cfi->device_type; in do_getlockstatus_oneblock()
2107 struct cfi_private *cfi = map->fldrv_priv; in do_xxlock_oneblock() local
2108 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in do_xxlock_oneblock()
2229 struct cfi_private *cfi = map->fldrv_priv; in do_otp_read() local
2287 struct cfi_private *cfi = map->fldrv_priv; in do_otp_lock() local
2304 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_otp_walk() local
2305 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in cfi_intelext_otp_walk()
2320 devsize = (1 << cfi->cfiq->DevSize) * cfi->interleave; in cfi_intelext_otp_walk()
2321 chip_step = devsize >> cfi->chipshift; in cfi_intelext_otp_walk()
2326 if (cfi->mfr == CFI_MFR_INTEL) { in cfi_intelext_otp_walk()
2327 switch (cfi->id) { in cfi_intelext_otp_walk()
2335 for ( ; chip_num < cfi->numchips; chip_num += chip_step) { in cfi_intelext_otp_walk()
2336 chip = &cfi->chips[chip_num]; in cfi_intelext_otp_walk()
2350 data_offset *= cfi->interleave * cfi->device_type; in cfi_intelext_otp_walk()
2351 reg_prot_offset *= cfi->interleave * cfi->device_type; in cfi_intelext_otp_walk()
2352 reg_fact_size *= cfi->interleave; in cfi_intelext_otp_walk()
2353 reg_user_size *= cfi->interleave; in cfi_intelext_otp_walk()
2511 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_suspend() local
2512 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in cfi_intelext_suspend()
2521 for (i=0; !ret && i<cfi->numchips; i++) { in cfi_intelext_suspend()
2522 chip = &cfi->chips[i]; in cfi_intelext_suspend()
2533 map_write(map, CMD(0xFF), cfi->chips[i].start); in cfi_intelext_suspend()
2564 chip = &cfi->chips[i]; in cfi_intelext_suspend()
2606 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_resume() local
2607 struct cfi_pri_intelext *extp = cfi->cmdset_priv; in cfi_intelext_resume()
2611 for (i=0; i<cfi->numchips; i++) { in cfi_intelext_resume()
2613 chip = &cfi->chips[i]; in cfi_intelext_resume()
2621 map_write(map, CMD(0xFF), cfi->chips[i].start); in cfi_intelext_resume()
2637 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_reset() local
2640 for (i=0; i < cfi->numchips; i++) { in cfi_intelext_reset()
2641 struct flchip *chip = &cfi->chips[i]; in cfi_intelext_reset()
2672 struct cfi_private *cfi = map->fldrv_priv; in cfi_intelext_destroy() local
2677 kfree(cfi->cmdset_priv); in cfi_intelext_destroy()
2678 kfree(cfi->cfiq); in cfi_intelext_destroy()
2679 kfree(cfi->chips[0].priv); in cfi_intelext_destroy()
2680 kfree(cfi); in cfi_intelext_destroy()