Lines Matching refs:cfi

12  * 	  (see include/linux/mtd/cfi.h for selection)
34 #include <linux/mtd/cfi.h>
110 * addresses passed back in cfi are valid as long as the use count of
116 struct cfi_private *cfi = map->fldrv_priv;
119 if (cfi->cfi_mode) {
125 __u16 adr = primary?cfi->cfiq->P_ADR:cfi->cfiq->A_ADR;
152 cfi->cmdset_priv = extp;
155 for (i=0; i< cfi->numchips; i++) {
156 cfi->chips[i].word_write_time = 128;
157 cfi->chips[i].buffer_write_time = 128;
158 cfi->chips[i].erase_time = 1024;
159 cfi->chips[i].ref_point_counter = 0;
160 init_waitqueue_head(&(cfi->chips[i].wq));
169 struct cfi_private *cfi = map->fldrv_priv;
173 unsigned long devsize = (1<<cfi->cfiq->DevSize) * cfi->interleave;
176 //printk(KERN_DEBUG "number of CFI chips: %d\n", cfi->numchips);
179 kfree(cfi->cmdset_priv);
185 mtd->size = devsize * cfi->numchips;
187 mtd->numeraseregions = cfi->cfiq->NumEraseRegions * cfi->numchips;
192 kfree(cfi->cmdset_priv);
197 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
199 ersize = ((cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff) * cfi->interleave;
200 ernum = (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1;
205 for (j=0; j<cfi->numchips; j++) {
206 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].offset = (j*devsize)+offset;
207 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].erasesize = ersize;
208 mtd->eraseregions[(j*cfi->cfiq->NumEraseRegions)+i].numblocks = ernum;
217 kfree(cfi->cmdset_priv);
241 mtd->writebufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
256 struct cfi_private *cfi = map->fldrv_priv;
275 if (!(((struct cfi_pri_intelext *)cfi->cmdset_priv)->FeatureSupport & 2))
387 struct cfi_private *cfi = map->fldrv_priv;
393 chipnum = (from >> cfi->chipshift);
394 ofs = from - (chipnum << cfi->chipshift);
399 if (chipnum >= cfi->numchips)
402 if ((len + ofs -1) >> cfi->chipshift)
403 thislen = (1<<cfi->chipshift) - ofs;
407 ret = do_read_onechip(map, &cfi->chips[chipnum], ofs, thislen, buf);
424 struct cfi_private *cfi = map->fldrv_priv;
434 wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
611 struct cfi_private *cfi = map->fldrv_priv;
612 int wbufsize = cfi_interleave(cfi) << cfi->cfiq->MaxBufWriteSize;
617 chipnum = to >> cfi->chipshift;
618 ofs = to - (chipnum << cfi->chipshift);
634 ret = do_write_buffer(map, &cfi->chips[chipnum],
644 if (ofs >> cfi->chipshift) {
647 if (chipnum == cfi->numchips)
735 struct cfi_private *cfi = map->fldrv_priv;
852 for (i = 0; i<cfi_interleave(cfi); i++) {
853 chipstatus |= status.x[w] >> (cfi->device_type * 8);
894 struct cfi_private *cfi = map->fldrv_priv;
943 chipnum = instr->addr >> cfi->chipshift;
944 adr = instr->addr - (chipnum << cfi->chipshift);
950 ret = do_erase_oneblock(map, &cfi->chips[chipnum], adr);
958 if (adr % (1<< cfi->chipshift) == (((unsigned long)regions[i].offset + (regions[i].erasesize * regions[i].numblocks)) %( 1<< cfi->chipshift)))
961 if (adr >> cfi->chipshift) {
965 if (chipnum >= cfi->numchips)
976 struct cfi_private *cfi = map->fldrv_priv;
982 for (i=0; !ret && i<cfi->numchips; i++) {
983 chip = &cfi->chips[i];
1020 chip = &cfi->chips[i];
1034 struct cfi_private *cfi = map->fldrv_priv;
1130 struct cfi_private *cfi = map->fldrv_priv;
1134 int ofs_factor = cfi->interleave * cfi->device_type;
1143 chipnum = ofs >> cfi->chipshift;
1144 adr = ofs - (chipnum << cfi->chipshift);
1149 cfi_send_gen_cmd(0x90, 0x55, 0, map, cfi, cfi->device_type, NULL);
1151 cfi_send_gen_cmd(0xff, 0x55, 0, map, cfi, cfi->device_type, NULL);
1154 ret = do_lock_oneblock(map, &cfi->chips[chipnum], adr);
1157 cfi_send_gen_cmd(0x90, 0x55, 0, map, cfi, cfi->device_type, NULL);
1159 cfi_send_gen_cmd(0xff, 0x55, 0, map, cfi, cfi->device_type, NULL);
1168 if (adr >> cfi->chipshift) {
1172 if (chipnum >= cfi->numchips)
1180 struct cfi_private *cfi = map->fldrv_priv;
1276 struct cfi_private *cfi = map->fldrv_priv;
1280 int ofs_factor = cfi->interleave * cfi->device_type;
1283 chipnum = ofs >> cfi->chipshift;
1284 adr = ofs - (chipnum << cfi->chipshift);
1291 cfi_send_gen_cmd(0x90, 0x55, 0, map, cfi, cfi->device_type, NULL);
1297 cfi_send_gen_cmd(0xff, 0x55, 0, map, cfi, cfi->device_type, NULL);
1301 ret = do_unlock_oneblock(map, &cfi->chips[chipnum], adr);
1304 cfi_send_gen_cmd(0x90, 0x55, 0, map, cfi, cfi->device_type, NULL);
1306 cfi_send_gen_cmd(0xff, 0x55, 0, map, cfi, cfi->device_type, NULL);
1315 struct cfi_private *cfi = map->fldrv_priv;
1320 for (i=0; !ret && i<cfi->numchips; i++) {
1321 chip = &cfi->chips[i];
1352 chip = &cfi->chips[i];
1373 struct cfi_private *cfi = map->fldrv_priv;
1377 for (i=0; i<cfi->numchips; i++) {
1379 chip = &cfi->chips[i];
1397 struct cfi_private *cfi = map->fldrv_priv;
1398 kfree(cfi->cmdset_priv);
1399 kfree(cfi);