• 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

18 #include <linux/mtd/cfi.h>
28 unsigned long *chip_map, struct cfi_private *cfi);
29 static int cfi_chip_setup(struct map_info *map, struct cfi_private *cfi);
45 #define xip_enable(base, map, cfi) \
47 cfi_qry_mode_off(base, map, cfi); \
51 #define xip_disable_qry(base, map, cfi) \
54 cfi_qry_mode_on(base, map, cfi); \
61 #define xip_enable(base, map, cfi) do { } while (0)
62 #define xip_disable_qry(base, map, cfi) do { } while (0)
72 unsigned long *chip_map, struct cfi_private *cfi)
90 if (!cfi_qry_mode_on(base, map, cfi)) {
91 xip_enable(base, map, cfi);
95 if (!cfi->numchips) {
98 return cfi_chip_setup(map, cfi);
102 for (i=0; i < (base >> cfi->chipshift); i++) {
108 start = i << cfi->chipshift;
111 if (cfi_qry_present(map, start, cfi)) {
114 cfi_qry_mode_off(start, map, cfi);
117 if (!cfi_qry_present(map, start, cfi)) {
126 cfi_qry_mode_off(base, map, cfi);
128 if (cfi_qry_present(map, base, cfi)) {
139 set_bit((base >> cfi->chipshift), chip_map); /* Update chip map */
140 cfi->numchips++;
143 cfi_qry_mode_off(base, map, cfi);
147 map->name, cfi->interleave, cfi->device_type*8, base,
154 struct cfi_private *cfi)
156 int ofs_factor = cfi->interleave*cfi->device_type;
162 xip_enable(base, map, cfi);
169 cfi->cfiq = kmalloc(sizeof(struct cfi_ident) + num_erase_regions * 4, GFP_KERNEL);
170 if (!cfi->cfiq) {
175 memset(cfi->cfiq,0,sizeof(struct cfi_ident));
177 cfi->cfi_mode = CFI_MODE_CFI;
180 xip_disable_qry(base, map, cfi);
182 ((unsigned char *)cfi->cfiq)[i] = cfi_read_query(map,base + (0x10 + i)*ofs_factor);
185 cfi->cfiq->P_ID = le16_to_cpu(cfi->cfiq->P_ID);
187 cfi->cfiq->P_ADR = le16_to_cpu(cfi->cfiq->P_ADR);
188 cfi->cfiq->A_ID = le16_to_cpu(cfi->cfiq->A_ID);
189 cfi->cfiq->A_ADR = le16_to_cpu(cfi->cfiq->A_ADR);
190 cfi->cfiq->InterfaceDesc = le16_to_cpu(cfi->cfiq->InterfaceDesc);
191 cfi->cfiq->MaxBufWriteSize = le16_to_cpu(cfi->cfiq->MaxBufWriteSize);
195 print_cfi_ident(cfi->cfiq);
198 for (i=0; i<cfi->cfiq->NumEraseRegions; i++) {
199 cfi->cfiq->EraseRegionInfo[i] = le32_to_cpu(cfi->cfiq->EraseRegionInfo[i]);
203 i, (cfi->cfiq->EraseRegionInfo[i] >> 8) & ~0xff,
204 (cfi->cfiq->EraseRegionInfo[i] & 0xffff) + 1);
208 if (cfi->cfiq->P_ID == P_ID_SST_OLD) {
221 cfi_send_gen_cmd(0xf0, 0, base, map, cfi, cfi->device_type, NULL);
222 cfi_send_gen_cmd(0xaa, addr_unlock1, base, map, cfi, cfi->device_type, NULL);
223 cfi_send_gen_cmd(0x55, addr_unlock2, base, map, cfi, cfi->device_type, NULL);
224 cfi_send_gen_cmd(0x90, addr_unlock1, base, map, cfi, cfi->device_type, NULL);
225 cfi->mfr = cfi_read_query16(map, base);
226 cfi->id = cfi_read_query16(map, base + ofs_factor);
229 if (cfi->mfr == CFI_MFR_AMD && (cfi->id & 0xff) == 0x7e)
230 cfi->id = cfi_read_query(map, base + 0xe * ofs_factor) << 8 |
234 cfi_qry_mode_off(base, map, cfi);
238 map->name, cfi->interleave, cfi->device_type*8, base,
239 map->bankwidth*8, cfi->mfr, cfi->id);