Lines Matching refs:cfi

12  * 	  (see include/linux/mtd/cfi.h for selection)
36 #include <linux/mtd/cfi.h>
173 struct cfi_private *cfi = map->fldrv_priv;
174 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
206 cfi->cfiq->BufWriteTimeoutTyp = 0;
207 cfi->cfiq->BufWriteTimeoutMax = 0;
213 struct cfi_private *cfi = map->fldrv_priv;
214 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
225 struct cfi_private *cfi = map->fldrv_priv;
226 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
238 struct cfi_private *cfi = map->fldrv_priv;
239 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
251 struct cfi_private *cfi = map->fldrv_priv;
253 cfi->cfiq->BufWriteTimeoutTyp = 0; /* Not supported */
254 cfi->cfiq->BufWriteTimeoutMax = 0; /* Not supported */
260 struct cfi_private *cfi = map->fldrv_priv;
263 cfi->cfiq->EraseRegionInfo[1] =
264 (cfi->cfiq->EraseRegionInfo[1] & 0xffff0000) | 0x3e;
267 static int is_LH28F640BF(struct cfi_private *cfi)
270 if (cfi->mfr == CFI_MFR_SHARP && (
271 cfi->id == LH28F640BFHE_PTTL90 || cfi->id == LH28F640BFHE_PBTL90 ||
272 cfi->id == LH28F640BFHE_PTTL70A || cfi->id == LH28F640BFHE_PBTL70A))
280 struct cfi_private *cfi = map->fldrv_priv;
281 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
285 if (is_LH28F640BF(cfi)) {
309 struct cfi_private *cfi = map->fldrv_priv;
310 if (cfi->cfiq->BufWriteTimeoutTyp) {
323 struct cfi_private *cfi = map->fldrv_priv;
324 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
371 static void cfi_fixup_major_minor(struct cfi_private *cfi,
374 if (cfi->mfr == CFI_MFR_INTEL &&
375 cfi->id == PF38F4476 && extp->MinorVersion == '3')
379 static int cfi_is_micron_28F00AP30(struct cfi_private *cfi, struct flchip *chip)
385 if (cfi->mfr == CFI_MFR_INTEL && cfi->id == M28F00AP30)
393 struct cfi_private *cfi = map->fldrv_priv;
403 cfi_fixup_major_minor(cfi, extp);
498 struct cfi_private *cfi = map->fldrv_priv;
521 mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
525 if (cfi->cfi_mode == CFI_MODE_CFI) {
531 __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
541 cfi->cmdset_priv = extp;
554 else if (cfi->cfi_mode == CFI_MODE_JEDEC) {
561 for (i=0; i< cfi->numchips; i++) {
562 if (cfi->cfiq->WordWriteTimeoutTyp)
563 cfi->chips[i].word_write_time =
564 1<<cfi->cfiq->WordWriteTimeoutTyp;
566 cfi->chips[i].word_write_time = 50000;
568 if (cfi->cfiq->BufWriteTimeoutTyp)
569 cfi->chips[i].buffer_write_time =
570 1<<cfi->cfiq->BufWriteTimeoutTyp;
573 if (cfi->cfiq->BlockEraseTimeoutTyp)
574 cfi->chips[i].erase_time =
575 1000<<cfi->cfiq->BlockEraseTimeoutTyp;
577 cfi->chips[i].erase_time = 2000000;
579 if (cfi->cfiq->WordWriteTimeoutTyp &&
580 cfi->cfiq->WordWriteTimeoutMax)
581 cfi->chips[i].word_write_time_max =
582 1<<(cfi->cfiq->WordWriteTimeoutTyp +
583 cfi->cfiq->WordWriteTimeoutMax);
585 cfi->chips[i].word_write_time_max = 50000 * 8;
587 if (cfi->cfiq->BufWriteTimeoutTyp &&
588 cfi->cfiq->BufWriteTimeoutMax)
589 cfi->chips[i].buffer_write_time_max =
590 1<<(cfi->cfiq->BufWriteTimeoutTyp +
591 cfi->cfiq->BufWriteTimeoutMax);
593 if (cfi->cfiq->BlockEraseTimeoutTyp &&
594 cfi->cfiq->BlockEraseTimeoutMax)
595 cfi->chips[i].erase_time_max =
596 1000<<(cfi->cfiq->BlockEraseTimeoutTyp +
597 cfi->cfiq->BlockEraseTimeoutMax);
599 cfi->chips[i].erase_time_max = 2000000 * 8;
601 cfi->chips[i].ref_point_counter = 0;
602 init_waitqueue_head(&(cfi->chips[i].wq));
618 struct cfi_private *cfi = map->fldrv_priv;
621 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
623 //printk(KERN_DEBUG "number of CFI chips: %d\n", cfi->numchips);
625 mtd->size = devsize * cfi->numchips;
627 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips;
634 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
636 ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave;
637 ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1;
642 for (j=0; j<cfi->numchips; j++) {
643 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset;
644 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize;
645 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum;
646 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap = kmalloc(ernum / 8 + 1, GFP_KERNEL);
647 if (!mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap)
677 if (cfi_intelext_partition_fixup(mtd, &cfi) != 0)
686 for (i=0; i<cfi->cfiq->NumEraseRegions; i++)
687 for (j=0; j<cfi->numchips; j++)
688 kfree(mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap);
691 kfree(cfi->cmdset_priv);
699 struct cfi_private *cfi = *pcfi;
700 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
755 mtd->writesize = cfi->interleave << prinfo->ProgRegShift;
759 cfi->interleave * prinfo->ControlValid,
760 cfi->interleave * prinfo->ControlInvalid);
768 partshift = cfi->chipshift - __ffs(numparts);
777 numvirtchips = cfi->numchips * numparts;
782 shared = kmalloc_array(cfi->numchips,
789 memcpy(newcfi, cfi, sizeof(struct cfi_private));
794 for (i = 0; i < cfi->numchips; i++) {
798 *chip = cfi->chips[i];
811 map->name, cfi->numchips, cfi->interleave,
816 kfree(cfi);
828 struct cfi_private *cfi = map->fldrv_priv;
830 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
875 if (cfi_is_micron_28F00AP30(cfi, chip) &&
1040 struct cfi_private *cfi = map->fldrv_priv;
1133 struct cfi_private *cfi = map->fldrv_priv;
1160 struct cfi_private *cfi = map->fldrv_priv;
1161 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
1177 (cfi_interleave_is_1(cfi) || chip->oldstate == FL_READY)) {
1292 struct cfi_private *cfi = map->fldrv_priv;
1374 struct cfi_private *cfi = map->fldrv_priv;
1402 struct cfi_private *cfi = map->fldrv_priv;
1413 chipnum = (from >> cfi->chipshift);
1414 ofs = from - (chipnum << cfi->chipshift);
1416 *virt = map->virt + cfi->chips[chipnum].start + ofs;
1418 *phys = map->phys + cfi->chips[chipnum].start + ofs;
1423 if (chipnum >= cfi->numchips)
1428 last_end = cfi->chips[chipnum].start;
1429 else if (cfi->chips[chipnum].start != last_end)
1432 if ((len + ofs -1) >> cfi->chipshift)
1433 thislen = (1<<cfi->chipshift) - ofs;
1437 ret = do_point_onechip(map, &cfi->chips[chipnum], ofs, thislen);
1445 last_end += 1 << cfi->chipshift;
1454 struct cfi_private *cfi = map->fldrv_priv;
1461 chipnum = (from >> cfi->chipshift);
1462 ofs = from - (chipnum << cfi->chipshift);
1468 chip = &cfi->chips[chipnum];
1469 if (chipnum >= cfi->numchips)
1472 if ((len + ofs -1) >> cfi->chipshift)
1473 thislen = (1<<cfi->chipshift) - ofs;
1501 struct cfi_private *cfi = map->fldrv_priv;
1533 struct cfi_private *cfi = map->fldrv_priv;
1539 chipnum = (from >> cfi->chipshift);
1540 ofs = from - (chipnum << cfi->chipshift);
1545 if (chipnum >= cfi->numchips)
1548 if ((len + ofs -1) >> cfi->chipshift)
1549 thislen = (1<<cfi->chipshift) - ofs;
1553 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
1570 struct cfi_private *cfi = map->fldrv_priv;
1578 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0x40) : CMD(0x41);
1645 struct cfi_private *cfi = map->fldrv_priv;
1650 chipnum = to >> cfi->chipshift;
1651 ofs = to - (chipnum << cfi->chipshift);
1664 ret = do_write_oneword(map, &cfi->chips[chipnum],
1674 if (ofs >> cfi->chipshift) {
1677 if (chipnum == cfi->numchips)
1685 ret = do_write_oneword(map, &cfi->chips[chipnum],
1695 if (ofs >> cfi->chipshift) {
1698 if (chipnum == cfi->numchips)
1709 ret = do_write_oneword(map, &cfi->chips[chipnum],
1725 struct cfi_private *cfi = map->fldrv_priv;
1734 wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1742 if (is_LH28F640BF(cfi))
1746 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0xe8) : CMD(0xe9);
1891 struct cfi_private *cfi = map->fldrv_priv;
1892 int wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1904 chipnum = to >> cfi->chipshift;
1905 ofs = to - (chipnum << cfi->chipshift);
1914 ret = do_write_buffer(map, &cfi->chips[chipnum],
1923 if (ofs >> cfi->chipshift) {
1926 if (chipnum == cfi->numchips)
1953 struct cfi_private *cfi = map->fldrv_priv;
2049 struct cfi_private *cfi = map->fldrv_priv;
2054 for (i=0; !ret && i<cfi->numchips; i++) {
2055 chip = &cfi->chips[i];
2074 chip = &cfi->chips[i];
2092 struct cfi_private *cfi = map->fldrv_priv;
2093 int status, ofs_factor = cfi->interleave * cfi->device_type;
2122 struct cfi_private *cfi = map->fldrv_priv;
2123 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2244 struct cfi_private *cfi = map->fldrv_priv;
2302 struct cfi_private *cfi = map->fldrv_priv;
2319 struct cfi_private *cfi = map->fldrv_priv;
2320 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2335 devsize = (1 << cfi->cfiq->DevSize) * cfi->interleave;
2336 chip_step = devsize >> cfi->chipshift;
2341 if (cfi->mfr == CFI_MFR_INTEL) {
2342 switch (cfi->id) {
2350 for ( ; chip_num < cfi->numchips; chip_num += chip_step) {
2351 chip = &cfi->chips[chip_num];
2365 data_offset *= cfi->interleave * cfi->device_type;
2366 reg_prot_offset *= cfi->interleave * cfi->device_type;
2367 reg_fact_size *= cfi->interleave;
2368 reg_user_size *= cfi->interleave;
2526 struct cfi_private *cfi = map->fldrv_priv;
2527 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2536 for (i=0; !ret && i<cfi->numchips; i++) {
2537 chip = &cfi->chips[i];
2548 map_write(map, CMD(0xFF), cfi->chips[i].start);
2578 chip = &cfi->chips[i];
2620 struct cfi_private *cfi = map->fldrv_priv;
2621 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2625 for (i=0; i<cfi->numchips; i++) {
2627 chip = &cfi->chips[i];
2635 map_write(map, CMD(0xFF), cfi->chips[i].start);
2651 struct cfi_private *cfi = map->fldrv_priv;
2654 for (i=0; i < cfi->numchips; i++) {
2655 struct flchip *chip = &cfi->chips[i];
2686 struct cfi_private *cfi = map->fldrv_priv;
2691 kfree(cfi->cmdset_priv);
2692 kfree(cfi->cfiq);
2693 kfree(cfi->chips[0].priv);
2694 kfree(cfi);