• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/mtd/chips/

Lines Matching defs:cfi

38 #include <linux/mtd/cfi.h>
140 struct cfi_private *cfi = map->fldrv_priv;
141 struct cfi_pri_amdstd *extp = cfi->cmdset_priv;
150 map->name, cfi->mfr, cfi->id);
157 if (((cfi->id == 0xBA) || (cfi->id == 0x22BA)) &&
168 (cfi->mfr == CFI_MFR_MACRONIX)) {
174 if (cfi->id & 0x80) {
175 printk(KERN_WARNING "%s: JEDEC Device ID is 0x%02X. Assuming broken CFI table.\n", map->name, cfi->id);
192 struct cfi_private *cfi = map->fldrv_priv;
193 if (cfi->cfiq->BufWriteTimeoutTyp) {
203 struct cfi_private *cfi = map->fldrv_priv;
204 struct cfi_pri_amdstd *extp = cfi->cmdset_priv;
214 if (cfi->id == AT49BV6416) {
227 cfi->cfiq->BufWriteTimeoutTyp = 0;
228 cfi->cfiq->BufWriteTimeoutMax = 0;
241 struct cfi_private *cfi = map->fldrv_priv;
242 if ((cfi->cfiq->NumEraseRegions == 1) &&
243 ((cfi->cfiq->EraseRegionInfo[0] & 0xffff) == 0)) {
263 struct cfi_private *cfi = map->fldrv_priv;
271 cfi->cfiq->NumEraseRegions = 1;
277 struct cfi_private *cfi = map->fldrv_priv;
281 cfi->addr_unlock1 = 0x5555;
282 cfi->addr_unlock2 = 0x2AAA;
288 struct cfi_private *cfi = map->fldrv_priv;
292 cfi->addr_unlock1 = 0x555;
293 cfi->addr_unlock2 = 0x2AA;
299 struct cfi_private *cfi = map->fldrv_priv;
301 if ((cfi->cfiq->EraseRegionInfo[0] & 0xffff) == 0x003f) {
302 cfi->cfiq->EraseRegionInfo[0] |= 0x0040;
310 struct cfi_private *cfi = map->fldrv_priv;
312 if ((cfi->cfiq->EraseRegionInfo[1] & 0xffff) == 0x007e) {
313 cfi->cfiq->EraseRegionInfo[1] &= ~0x0040;
371 static void cfi_fixup_major_minor(struct cfi_private *cfi,
374 if (cfi->mfr == CFI_MFR_SAMSUNG && cfi->id == 0x257e &&
381 struct cfi_private *cfi = map->fldrv_priv;
406 if (cfi->cfi_mode==CFI_MODE_CFI){
408 __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
417 cfi_fixup_major_minor(cfi, extp);
440 cfi->cmdset_priv = extp;
442 /* Apply cfi device specific fixups */
458 if (bootloc == 3 && cfi->cfiq->NumEraseRegions > 1) {
461 for (i=0; i<cfi->cfiq->NumEraseRegions / 2; i++) {
462 int j = (cfi->cfiq->NumEraseRegions-1)-i;
465 swap = cfi->cfiq->EraseRegionInfo[i];
466 cfi->cfiq->EraseRegionInfo[i] = cfi->cfiq->EraseRegionInfo[j];
467 cfi->cfiq->EraseRegionInfo[j] = swap;
471 cfi->addr_unlock1 = 0x555;
472 cfi->addr_unlock2 = 0x2aa;
476 if (!cfi->addr_unlock1 || !cfi->addr_unlock2) {
482 else if (cfi->cfi_mode == CFI_MODE_JEDEC) {
489 for (i=0; i< cfi->numchips; i++) {
490 cfi->chips[i].word_write_time = 1<<cfi->cfiq->WordWriteTimeoutTyp;
491 cfi->chips[i].buffer_write_time = 1<<cfi->cfiq->BufWriteTimeoutTyp;
492 cfi->chips[i].erase_time = 1<<cfi->cfiq->BlockEraseTimeoutTyp;
493 cfi->chips[i].ref_point_counter = 0;
494 init_waitqueue_head(&(cfi->chips[i].wq));
510 struct cfi_private *cfi = map->fldrv_priv;
511 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
516 (cfi->cfi_mode == CFI_MODE_CFI)?"CFI":"JEDEC",cfi->numchips);
518 mtd->size = devsize * cfi->numchips;
520 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips;
528 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
530 ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave;
531 ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1;
536 for (j=0; j<cfi->numchips; j++) {
537 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset;
538 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize;
539 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum;
556 kfree(cfi->cmdset_priv);
557 kfree(cfi->cfiq);
611 struct cfi_private *cfi = map->fldrv_priv;
613 struct cfi_pri_amdstd *cfip = (struct cfi_pri_amdstd *)cfi->cmdset_priv;
716 struct cfi_private *cfi = map->fldrv_priv;
766 struct cfi_private *cfi = map->fldrv_priv;
793 struct cfi_private *cfi = map->fldrv_priv;
794 struct cfi_pri_amdstd *extp = cfi->cmdset_priv;
803 (cfi_interleave_is_1(cfi) || chip->oldstate == FL_READY)) {
938 struct cfi_private *cfi = map->fldrv_priv;
970 struct cfi_private *cfi = map->fldrv_priv;
977 chipnum = (from >> cfi->chipshift);
978 ofs = from - (chipnum << cfi->chipshift);
986 if (chipnum >= cfi->numchips)
989 if ((len + ofs -1) >> cfi->chipshift)
990 thislen = (1<<cfi->chipshift) - ofs;
994 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
1013 struct cfi_private *cfi = map->fldrv_priv;
1035 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1036 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1037 cfi_send_gen_cmd(0x88, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1041 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1042 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1043 cfi_send_gen_cmd(0x90, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1044 cfi_send_gen_cmd(0x00, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1055 struct cfi_private *cfi = map->fldrv_priv;
1073 if (chipnum >= cfi->numchips)
1081 ret = do_read_secsi_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
1098 struct cfi_private *cfi = map->fldrv_priv;
1143 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1144 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1145 cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1207 struct cfi_private *cfi = map->fldrv_priv;
1217 chipnum = to >> cfi->chipshift;
1218 ofs = to - (chipnum << cfi->chipshift);
1219 chipstart = cfi->chips[chipnum].start;
1229 mutex_lock(&cfi->chips[chipnum].mutex);
1231 if (cfi->chips[chipnum].state != FL_READY) {
1233 add_wait_queue(&cfi->chips[chipnum].wq, &wait);
1235 mutex_unlock(&cfi->chips[chipnum].mutex);
1238 remove_wait_queue(&cfi->chips[chipnum].wq, &wait);
1245 mutex_unlock(&cfi->chips[chipnum].mutex);
1252 ret = do_write_oneword(map, &cfi->chips[chipnum],
1262 if (ofs >> cfi->chipshift) {
1265 if (chipnum == cfi->numchips)
1276 ret = do_write_oneword(map, &cfi->chips[chipnum],
1286 if (ofs >> cfi->chipshift) {
1289 if (chipnum == cfi->numchips)
1291 chipstart = cfi->chips[chipnum].start;
1300 mutex_lock(&cfi->chips[chipnum].mutex);
1302 if (cfi->chips[chipnum].state != FL_READY) {
1304 add_wait_queue(&cfi->chips[chipnum].wq, &wait);
1306 mutex_unlock(&cfi->chips[chipnum].mutex);
1309 remove_wait_queue(&cfi->chips[chipnum].wq, &wait);
1315 mutex_unlock(&cfi->chips[chipnum].mutex);
1319 ret = do_write_oneword(map, &cfi->chips[chipnum],
1335 struct cfi_private *cfi = map->fldrv_priv;
1363 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1364 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1365 //cfi_send_gen_cmd(0xA0, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1446 struct cfi_private *cfi = map->fldrv_priv;
1447 int wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
1456 chipnum = to >> cfi->chipshift;
1457 ofs = to - (chipnum << cfi->chipshift);
1464 ret = cfi_amdstd_write_words(mtd, ofs + (chipnum<<cfi->chipshift),
1472 if (ofs >> cfi->chipshift) {
1475 if (chipnum == cfi->numchips)
1490 ret = do_write_buffer(map, &cfi->chips[chipnum],
1500 if (ofs >> cfi->chipshift) {
1503 if (chipnum == cfi->numchips)
1511 ret = cfi_amdstd_write_words(mtd, ofs + (chipnum<<cfi->chipshift),
1528 struct cfi_private *cfi = map->fldrv_priv;
1534 adr = cfi->addr_unlock1;
1550 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1551 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1552 cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1553 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1554 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1555 cfi_send_gen_cmd(0x10, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1616 struct cfi_private *cfi = map->fldrv_priv;
1637 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1638 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1639 cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1640 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi, cfi->device_type, NULL);
1641 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi, cfi->device_type, NULL);
1724 struct cfi_private *cfi = map->fldrv_priv;
1733 ret = do_erase_chip(map, &cfi->chips[0]);
1746 struct cfi_private *cfi = map->fldrv_priv;
1758 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
1759 cfi->device_type, NULL);
1760 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi,
1761 cfi->device_type, NULL);
1762 cfi_send_gen_cmd(0x80, cfi->addr_unlock1, chip->start, map, cfi,
1763 cfi->device_type, NULL);
1764 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
1765 cfi->device_type, NULL);
1766 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, chip->start, map, cfi,
1767 cfi->device_type, NULL);
1782 struct cfi_private *cfi = map->fldrv_priv;
1794 cfi_send_gen_cmd(0xAA, cfi->addr_unlock1, chip->start, map, cfi,
1795 cfi->device_type, NULL);
1821 struct cfi_private *cfi = map->fldrv_priv;
1827 for (i=0; !ret && i<cfi->numchips; i++) {
1828 chip = &cfi->chips[i];
1866 chip = &cfi->chips[i];
1882 struct cfi_private *cfi = map->fldrv_priv;
1887 for (i=0; !ret && i<cfi->numchips; i++) {
1888 chip = &cfi->chips[i];
1917 chip = &cfi->chips[i];
1936 struct cfi_private *cfi = map->fldrv_priv;
1940 for (i=0; i<cfi->numchips; i++) {
1942 chip = &cfi->chips[i];
1968 struct cfi_private *cfi = map->fldrv_priv;
1972 for (i = 0; i < cfi->numchips; i++) {
1974 chip = &cfi->chips[i];
2006 struct cfi_private *cfi = map->fldrv_priv;
2010 kfree(cfi->cmdset_priv);
2011 kfree(cfi->cfiq);
2012 kfree(cfi);