Lines Matching refs:cfi

13  * 	  (see include/linux/mtd/cfi.h for selection)
37 #include <linux/mtd/cfi.h>
175 struct cfi_private *cfi = map->fldrv_priv;
176 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
208 cfi->cfiq->BufWriteTimeoutTyp = 0;
209 cfi->cfiq->BufWriteTimeoutMax = 0;
215 struct cfi_private *cfi = map->fldrv_priv;
216 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
227 struct cfi_private *cfi = map->fldrv_priv;
228 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
240 struct cfi_private *cfi = map->fldrv_priv;
241 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
253 struct cfi_private *cfi = map->fldrv_priv;
255 cfi->cfiq->BufWriteTimeoutTyp = 0; /* Not supported */
256 cfi->cfiq->BufWriteTimeoutMax = 0; /* Not supported */
262 struct cfi_private *cfi = map->fldrv_priv;
265 cfi->cfiq->EraseRegionInfo[1] =
266 (cfi->cfiq->EraseRegionInfo[1] & 0xffff0000) | 0x3e;
269 static int is_LH28F640BF(struct cfi_private *cfi)
272 if (cfi->mfr == CFI_MFR_SHARP && (
273 cfi->id == LH28F640BFHE_PTTL90 || cfi->id == LH28F640BFHE_PBTL90 ||
274 cfi->id == LH28F640BFHE_PTTL70A || cfi->id == LH28F640BFHE_PBTL70A))
282 struct cfi_private *cfi = map->fldrv_priv;
283 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
287 if (is_LH28F640BF(cfi)) {
311 struct cfi_private *cfi = map->fldrv_priv;
312 if (cfi->cfiq->BufWriteTimeoutTyp) {
325 struct cfi_private *cfi = map->fldrv_priv;
326 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
373 static void cfi_fixup_major_minor(struct cfi_private *cfi,
376 if (cfi->mfr == CFI_MFR_INTEL &&
377 cfi->id == PF38F4476 && extp->MinorVersion == '3')
381 static int cfi_is_micron_28F00AP30(struct cfi_private *cfi, struct flchip *chip)
387 if (cfi->mfr == CFI_MFR_INTEL && cfi->id == M28F00AP30)
395 struct cfi_private *cfi = map->fldrv_priv;
405 cfi_fixup_major_minor(cfi, extp);
500 struct cfi_private *cfi = map->fldrv_priv;
523 mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
527 if (cfi->cfi_mode == CFI_MODE_CFI) {
533 __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
543 cfi->cmdset_priv = extp;
556 else if (cfi->cfi_mode == CFI_MODE_JEDEC) {
563 for (i=0; i< cfi->numchips; i++) {
564 if (cfi->cfiq->WordWriteTimeoutTyp)
565 cfi->chips[i].word_write_time =
566 1<<cfi->cfiq->WordWriteTimeoutTyp;
568 cfi->chips[i].word_write_time = 50000;
570 if (cfi->cfiq->BufWriteTimeoutTyp)
571 cfi->chips[i].buffer_write_time =
572 1<<cfi->cfiq->BufWriteTimeoutTyp;
575 if (cfi->cfiq->BlockEraseTimeoutTyp)
576 cfi->chips[i].erase_time =
577 1000<<cfi->cfiq->BlockEraseTimeoutTyp;
579 cfi->chips[i].erase_time = 2000000;
581 if (cfi->cfiq->WordWriteTimeoutTyp &&
582 cfi->cfiq->WordWriteTimeoutMax)
583 cfi->chips[i].word_write_time_max =
584 1<<(cfi->cfiq->WordWriteTimeoutTyp +
585 cfi->cfiq->WordWriteTimeoutMax);
587 cfi->chips[i].word_write_time_max = 50000 * 8;
589 if (cfi->cfiq->BufWriteTimeoutTyp &&
590 cfi->cfiq->BufWriteTimeoutMax)
591 cfi->chips[i].buffer_write_time_max =
592 1<<(cfi->cfiq->BufWriteTimeoutTyp +
593 cfi->cfiq->BufWriteTimeoutMax);
595 if (cfi->cfiq->BlockEraseTimeoutTyp &&
596 cfi->cfiq->BlockEraseTimeoutMax)
597 cfi->chips[i].erase_time_max =
598 1000<<(cfi->cfiq->BlockEraseTimeoutTyp +
599 cfi->cfiq->BlockEraseTimeoutMax);
601 cfi->chips[i].erase_time_max = 2000000 * 8;
603 cfi->chips[i].ref_point_counter = 0;
604 init_waitqueue_head(&(cfi->chips[i].wq));
620 struct cfi_private *cfi = map->fldrv_priv;
623 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
625 //printk(KERN_DEBUG "number of CFI chips: %d\n", cfi->numchips);
627 mtd->size = devsize * cfi->numchips;
629 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips;
636 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
638 ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave;
639 ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1;
644 for (j=0; j<cfi->numchips; j++) {
645 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset;
646 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize;
647 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum;
648 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap = kmalloc(ernum / 8 + 1, GFP_KERNEL);
649 if (!mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap)
679 if (cfi_intelext_partition_fixup(mtd, &cfi) != 0)
688 for (i=0; i<cfi->cfiq->NumEraseRegions; i++)
689 for (j=0; j<cfi->numchips; j++)
690 kfree(mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap);
693 kfree(cfi->cmdset_priv);
701 struct cfi_private *cfi = *pcfi;
702 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
757 mtd->writesize = cfi->interleave << prinfo->ProgRegShift;
761 cfi->interleave * prinfo->ControlValid,
762 cfi->interleave * prinfo->ControlInvalid);
770 partshift = cfi->chipshift - __ffs(numparts);
779 numvirtchips = cfi->numchips * numparts;
784 shared = kmalloc_array(cfi->numchips,
791 memcpy(newcfi, cfi, sizeof(struct cfi_private));
796 for (i = 0; i < cfi->numchips; i++) {
800 *chip = cfi->chips[i];
813 map->name, cfi->numchips, cfi->interleave,
818 kfree(cfi);
830 struct cfi_private *cfi = map->fldrv_priv;
832 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
877 if (cfi_is_micron_28F00AP30(cfi, chip) &&
1042 struct cfi_private *cfi = map->fldrv_priv;
1135 struct cfi_private *cfi = map->fldrv_priv;
1162 struct cfi_private *cfi = map->fldrv_priv;
1163 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
1179 (cfi_interleave_is_1(cfi) || chip->oldstate == FL_READY)) {
1294 struct cfi_private *cfi = map->fldrv_priv;
1376 struct cfi_private *cfi = map->fldrv_priv;
1404 struct cfi_private *cfi = map->fldrv_priv;
1415 chipnum = (from >> cfi->chipshift);
1416 ofs = from - (chipnum << cfi->chipshift);
1418 *virt = map->virt + cfi->chips[chipnum].start + ofs;
1420 *phys = map->phys + cfi->chips[chipnum].start + ofs;
1425 if (chipnum >= cfi->numchips)
1430 last_end = cfi->chips[chipnum].start;
1431 else if (cfi->chips[chipnum].start != last_end)
1434 if ((len + ofs -1) >> cfi->chipshift)
1435 thislen = (1<<cfi->chipshift) - ofs;
1439 ret = do_point_onechip(map, &cfi->chips[chipnum], ofs, thislen);
1447 last_end += 1 << cfi->chipshift;
1456 struct cfi_private *cfi = map->fldrv_priv;
1463 chipnum = (from >> cfi->chipshift);
1464 ofs = from - (chipnum << cfi->chipshift);
1470 chip = &cfi->chips[chipnum];
1471 if (chipnum >= cfi->numchips)
1474 if ((len + ofs -1) >> cfi->chipshift)
1475 thislen = (1<<cfi->chipshift) - ofs;
1503 struct cfi_private *cfi = map->fldrv_priv;
1535 struct cfi_private *cfi = map->fldrv_priv;
1541 chipnum = (from >> cfi->chipshift);
1542 ofs = from - (chipnum << cfi->chipshift);
1547 if (chipnum >= cfi->numchips)
1550 if ((len + ofs -1) >> cfi->chipshift)
1551 thislen = (1<<cfi->chipshift) - ofs;
1555 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
1572 struct cfi_private *cfi = map->fldrv_priv;
1580 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0x40) : CMD(0x41);
1647 struct cfi_private *cfi = map->fldrv_priv;
1652 chipnum = to >> cfi->chipshift;
1653 ofs = to - (chipnum << cfi->chipshift);
1666 ret = do_write_oneword(map, &cfi->chips[chipnum],
1676 if (ofs >> cfi->chipshift) {
1679 if (chipnum == cfi->numchips)
1687 ret = do_write_oneword(map, &cfi->chips[chipnum],
1697 if (ofs >> cfi->chipshift) {
1700 if (chipnum == cfi->numchips)
1711 ret = do_write_oneword(map, &cfi->chips[chipnum],
1727 struct cfi_private *cfi = map->fldrv_priv;
1736 wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1744 if (is_LH28F640BF(cfi))
1748 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0xe8) : CMD(0xe9);
1893 struct cfi_private *cfi = map->fldrv_priv;
1894 int wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1906 chipnum = to >> cfi->chipshift;
1907 ofs = to - (chipnum << cfi->chipshift);
1916 ret = do_write_buffer(map, &cfi->chips[chipnum],
1925 if (ofs >> cfi->chipshift) {
1928 if (chipnum == cfi->numchips)
1955 struct cfi_private *cfi = map->fldrv_priv;
2051 struct cfi_private *cfi = map->fldrv_priv;
2056 for (i=0; !ret && i<cfi->numchips; i++) {
2057 chip = &cfi->chips[i];
2076 chip = &cfi->chips[i];
2094 struct cfi_private *cfi = map->fldrv_priv;
2095 int status, ofs_factor = cfi->interleave * cfi->device_type;
2124 struct cfi_private *cfi = map->fldrv_priv;
2125 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2246 struct cfi_private *cfi = map->fldrv_priv;
2304 struct cfi_private *cfi = map->fldrv_priv;
2321 struct cfi_private *cfi = map->fldrv_priv;
2322 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2337 devsize = (1 << cfi->cfiq->DevSize) * cfi->interleave;
2338 chip_step = devsize >> cfi->chipshift;
2343 if (cfi->mfr == CFI_MFR_INTEL) {
2344 switch (cfi->id) {
2352 for ( ; chip_num < cfi->numchips; chip_num += chip_step) {
2353 chip = &cfi->chips[chip_num];
2367 data_offset *= cfi->interleave * cfi->device_type;
2368 reg_prot_offset *= cfi->interleave * cfi->device_type;
2369 reg_fact_size *= cfi->interleave;
2370 reg_user_size *= cfi->interleave;
2528 struct cfi_private *cfi = map->fldrv_priv;
2529 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2538 for (i=0; !ret && i<cfi->numchips; i++) {
2539 chip = &cfi->chips[i];
2550 map_write(map, CMD(0xFF), cfi->chips[i].start);
2581 chip = &cfi->chips[i];
2623 struct cfi_private *cfi = map->fldrv_priv;
2624 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2628 for (i=0; i<cfi->numchips; i++) {
2630 chip = &cfi->chips[i];
2638 map_write(map, CMD(0xFF), cfi->chips[i].start);
2654 struct cfi_private *cfi = map->fldrv_priv;
2657 for (i=0; i < cfi->numchips; i++) {
2658 struct flchip *chip = &cfi->chips[i];
2689 struct cfi_private *cfi = map->fldrv_priv;
2694 kfree(cfi->cmdset_priv);
2695 kfree(cfi->cfiq);
2696 kfree(cfi->chips[0].priv);
2697 kfree(cfi);