int __xipram cfi_qry_present(struct map_info *map, __u32 base, struct cfi_private *cfi) { int osf = cfi->interleave * cfi->device_type; /* scale factor */ map_word val[3]; map_word qry[3]; qry[0] = cfi_build_cmd('Q', map, cfi); qry[1] = cfi_build_cmd('R', map, cfi); qry[2] = cfi_build_cmd('Y', map, cfi); val[0] = map_read(map, base + osf*0x10); val[1] = map_read(map, base + osf*0x11); val[2] = map_read(map, base + osf*0x12); if (!map_word_equal(map, qry[0], val[0])) return 0; if (!map_word_equal(map, qry[1], val[1])) return 0; if (!map_word_equal(map, qry[2], val[2])) return 0; return 1; /* "QRY" found */ }
/* check for QRY. in: interleave,type,mode ret: table index, <0 for error */ static inline int qry_present(struct map_info *map, __u32 base, struct cfi_private *cfi) { int osf = cfi->interleave * cfi->device_type; // scale factor if (cfi_read(map,base+osf*0x10)==cfi_build_cmd('Q',map,cfi) && cfi_read(map,base+osf*0x11)==cfi_build_cmd('R',map,cfi) && cfi_read(map,base+osf*0x12)==cfi_build_cmd('Y',map,cfi)) return 1; // ok ! return 0; // nothing found }