Lines Matching refs:cfi

12  * 	  (see include/linux/mtd/cfi.h for selection)
37 #include <linux/mtd/cfi.h>
168 struct cfi_private *cfi = map->fldrv_priv;
169 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
201 cfi->cfiq->BufWriteTimeoutTyp = 0;
202 cfi->cfiq->BufWriteTimeoutMax = 0;
208 struct cfi_private *cfi = map->fldrv_priv;
209 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
220 struct cfi_private *cfi = map->fldrv_priv;
221 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
233 struct cfi_private *cfi = map->fldrv_priv;
234 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
246 struct cfi_private *cfi = map->fldrv_priv;
248 cfi->cfiq->BufWriteTimeoutTyp = 0; /* Not supported */
249 cfi->cfiq->BufWriteTimeoutMax = 0; /* Not supported */
255 struct cfi_private *cfi = map->fldrv_priv;
258 cfi->cfiq->EraseRegionInfo[1] =
259 (cfi->cfiq->EraseRegionInfo[1] & 0xffff0000) | 0x3e;
274 struct cfi_private *cfi = map->fldrv_priv;
275 if (cfi->cfiq->BufWriteTimeoutTyp) {
288 struct cfi_private *cfi = map->fldrv_priv;
289 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
334 static void cfi_fixup_major_minor(struct cfi_private *cfi,
337 if (cfi->mfr == CFI_MFR_INTEL &&
338 cfi->id == PF38F4476 && extp->MinorVersion == '3')
345 struct cfi_private *cfi = map->fldrv_priv;
355 cfi_fixup_major_minor(cfi, extp);
433 struct cfi_private *cfi = map->fldrv_priv;
458 mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
462 if (cfi->cfi_mode == CFI_MODE_CFI) {
468 __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
478 cfi->cmdset_priv = extp;
491 else if (cfi->cfi_mode == CFI_MODE_JEDEC) {
498 for (i=0; i< cfi->numchips; i++) {
499 if (cfi->cfiq->WordWriteTimeoutTyp)
500 cfi->chips[i].word_write_time =
501 1<<cfi->cfiq->WordWriteTimeoutTyp;
503 cfi->chips[i].word_write_time = 50000;
505 if (cfi->cfiq->BufWriteTimeoutTyp)
506 cfi->chips[i].buffer_write_time =
507 1<<cfi->cfiq->BufWriteTimeoutTyp;
510 if (cfi->cfiq->BlockEraseTimeoutTyp)
511 cfi->chips[i].erase_time =
512 1000<<cfi->cfiq->BlockEraseTimeoutTyp;
514 cfi->chips[i].erase_time = 2000000;
516 if (cfi->cfiq->WordWriteTimeoutTyp &&
517 cfi->cfiq->WordWriteTimeoutMax)
518 cfi->chips[i].word_write_time_max =
519 1<<(cfi->cfiq->WordWriteTimeoutTyp +
520 cfi->cfiq->WordWriteTimeoutMax);
522 cfi->chips[i].word_write_time_max = 50000 * 8;
524 if (cfi->cfiq->BufWriteTimeoutTyp &&
525 cfi->cfiq->BufWriteTimeoutMax)
526 cfi->chips[i].buffer_write_time_max =
527 1<<(cfi->cfiq->BufWriteTimeoutTyp +
528 cfi->cfiq->BufWriteTimeoutMax);
530 if (cfi->cfiq->BlockEraseTimeoutTyp &&
531 cfi->cfiq->BlockEraseTimeoutMax)
532 cfi->chips[i].erase_time_max =
533 1000<<(cfi->cfiq->BlockEraseTimeoutTyp +
534 cfi->cfiq->BlockEraseTimeoutMax);
536 cfi->chips[i].erase_time_max = 2000000 * 8;
538 cfi->chips[i].ref_point_counter = 0;
539 init_waitqueue_head(&(cfi->chips[i].wq));
555 struct cfi_private *cfi = map->fldrv_priv;
558 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
560 //printk(KERN_DEBUG "number of CFI chips: %d\n", cfi->numchips);
562 mtd->size = devsize * cfi->numchips;
564 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips;
572 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
574 ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave;
575 ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1;
580 for (j=0; j<cfi->numchips; j++) {
581 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset;
582 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize;
583 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum;
584 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].lockmap = kmalloc(ernum / 8 + 1, GFP_KERNEL);
613 if (cfi_intelext_partition_fixup(mtd, &cfi) != 0)
623 kfree(cfi->cmdset_priv);
631 struct cfi_private *cfi = *pcfi;
632 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
685 mtd->writesize = cfi->interleave << prinfo->ProgRegShift;
689 cfi->interleave * prinfo->ControlValid,
690 cfi->interleave * prinfo->ControlInvalid);
698 partshift = cfi->chipshift - __ffs(numparts);
707 numvirtchips = cfi->numchips * numparts;
711 shared = kmalloc(sizeof(struct flchip_shared) * cfi->numchips, GFP_KERNEL);
716 memcpy(newcfi, cfi, sizeof(struct cfi_private));
721 for (i = 0; i < cfi->numchips; i++) {
725 *chip = cfi->chips[i];
738 map->name, cfi->numchips, cfi->interleave,
743 kfree(cfi);
755 struct cfi_private *cfi = map->fldrv_priv;
757 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
958 struct cfi_private *cfi = map->fldrv_priv;
1051 struct cfi_private *cfi = map->fldrv_priv;
1078 struct cfi_private *cfi = map->fldrv_priv;
1079 struct cfi_pri_intelext *cfip = cfi->cmdset_priv;
1095 (cfi_interleave_is_1(cfi) || chip->oldstate == FL_READY)) {
1210 struct cfi_private *cfi = map->fldrv_priv;
1292 struct cfi_private *cfi = map->fldrv_priv;
1320 struct cfi_private *cfi = map->fldrv_priv;
1331 chipnum = (from >> cfi->chipshift);
1332 ofs = from - (chipnum << cfi->chipshift);
1334 *virt = map->virt + cfi->chips[chipnum].start + ofs;
1336 *phys = map->phys + cfi->chips[chipnum].start + ofs;
1341 if (chipnum >= cfi->numchips)
1346 last_end = cfi->chips[chipnum].start;
1347 else if (cfi->chips[chipnum].start != last_end)
1350 if ((len + ofs -1) >> cfi->chipshift)
1351 thislen = (1<<cfi->chipshift) - ofs;
1355 ret = do_point_onechip(map, &cfi->chips[chipnum], ofs, thislen);
1363 last_end += 1 << cfi->chipshift;
1372 struct cfi_private *cfi = map->fldrv_priv;
1379 chipnum = (from >> cfi->chipshift);
1380 ofs = from - (chipnum << cfi->chipshift);
1386 chip = &cfi->chips[chipnum];
1387 if (chipnum >= cfi->numchips)
1390 if ((len + ofs -1) >> cfi->chipshift)
1391 thislen = (1<<cfi->chipshift) - ofs;
1419 struct cfi_private *cfi = map->fldrv_priv;
1451 struct cfi_private *cfi = map->fldrv_priv;
1457 chipnum = (from >> cfi->chipshift);
1458 ofs = from - (chipnum << cfi->chipshift);
1463 if (chipnum >= cfi->numchips)
1466 if ((len + ofs -1) >> cfi->chipshift)
1467 thislen = (1<<cfi->chipshift) - ofs;
1471 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
1488 struct cfi_private *cfi = map->fldrv_priv;
1496 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0x40) : CMD(0x41);
1563 struct cfi_private *cfi = map->fldrv_priv;
1568 chipnum = to >> cfi->chipshift;
1569 ofs = to - (chipnum << cfi->chipshift);
1582 ret = do_write_oneword(map, &cfi->chips[chipnum],
1592 if (ofs >> cfi->chipshift) {
1595 if (chipnum == cfi->numchips)
1603 ret = do_write_oneword(map, &cfi->chips[chipnum],
1613 if (ofs >> cfi->chipshift) {
1616 if (chipnum == cfi->numchips)
1627 ret = do_write_oneword(map, &cfi->chips[chipnum],
1643 struct cfi_private *cfi = map->fldrv_priv;
1652 wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1658 write_cmd = (cfi->cfiq->P_ID != P_ID_INTEL_PERFORMANCE) ? CMD(0xe8) : CMD(0xe9);
1803 struct cfi_private *cfi = map->fldrv_priv;
1804 int wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1816 chipnum = to >> cfi->chipshift;
1817 ofs = to - (chipnum << cfi->chipshift);
1826 ret = do_write_buffer(map, &cfi->chips[chipnum],
1835 if (ofs >> cfi->chipshift) {
1838 if (chipnum == cfi->numchips)
1865 struct cfi_private *cfi = map->fldrv_priv;
1971 struct cfi_private *cfi = map->fldrv_priv;
1976 for (i=0; !ret && i<cfi->numchips; i++) {
1977 chip = &cfi->chips[i];
1996 chip = &cfi->chips[i];
2014 struct cfi_private *cfi = map->fldrv_priv;
2015 int status, ofs_factor = cfi->interleave * cfi->device_type;
2044 struct cfi_private *cfi = map->fldrv_priv;
2045 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2158 struct cfi_private *cfi = map->fldrv_priv;
2216 struct cfi_private *cfi = map->fldrv_priv;
2233 struct cfi_private *cfi = map->fldrv_priv;
2234 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2249 devsize = (1 << cfi->cfiq->DevSize) * cfi->interleave;
2250 chip_step = devsize >> cfi->chipshift;
2255 if (cfi->mfr == CFI_MFR_INTEL) {
2256 switch (cfi->id) {
2264 for ( ; chip_num < cfi->numchips; chip_num += chip_step) {
2265 chip = &cfi->chips[chip_num];
2279 data_offset *= cfi->interleave * cfi->device_type;
2280 reg_prot_offset *= cfi->interleave * cfi->device_type;
2281 reg_fact_size *= cfi->interleave;
2282 reg_user_size *= cfi->interleave;
2445 struct cfi_private *cfi = map->fldrv_priv;
2446 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2455 for (i=0; !ret && i<cfi->numchips; i++) {
2456 chip = &cfi->chips[i];
2467 map_write(map, CMD(0xFF), cfi->chips[i].start);
2497 chip = &cfi->chips[i];
2539 struct cfi_private *cfi = map->fldrv_priv;
2540 struct cfi_pri_intelext *extp = cfi->cmdset_priv;
2544 for (i=0; i<cfi->numchips; i++) {
2546 chip = &cfi->chips[i];
2552 map_write(map, CMD(0xFF), cfi->chips[i].start);
2568 struct cfi_private *cfi = map->fldrv_priv;
2571 for (i=0; i < cfi->numchips; i++) {
2572 struct flchip *chip = &cfi->chips[i];
2603 struct cfi_private *cfi = map->fldrv_priv;
2608 kfree(cfi->cmdset_priv);
2609 kfree(cfi->cfiq);
2610 kfree(cfi->chips[0].priv);
2611 kfree(cfi);