Lines Matching refs:cfi

23 #include <linux/mtd/cfi.h>
1912 struct cfi_private *cfi)
1923 uint32_t ofs = cfi_build_cmd_addr(0 + (bank << 8), map, cfi);
1924 mask = (1 << (cfi->device_type * 8)) - 1;
1935 struct cfi_private *cfi)
1939 u32 ofs = cfi_build_cmd_addr(1, map, cfi);
1940 mask = (1 << (cfi->device_type * 8)) -1;
1945 static void jedec_reset(u32 base, struct map_info *map, struct cfi_private *cfi)
1955 if (cfi->addr_unlock1) {
1957 cfi->addr_unlock1,cfi->addr_unlock2);
1958 cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);
1959 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL);
1962 cfi_send_gen_cmd(0xF0, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);
1968 cfi_send_gen_cmd(0xFF, 0, base, map, cfi, cfi->device_type, NULL);
1973 static int cfi_jedec_setup(struct map_info *map, struct cfi_private *cfi, int index)
1978 if (!(jedec_table[index].devtypes & cfi->device_type)) {
1980 jedec_table[index].name, 4 * (1<<cfi->device_type));
1988 cfi->cfiq = kmalloc(sizeof(struct cfi_ident) + num_erase_regions * 4, GFP_KERNEL);
1989 if (!cfi->cfiq) {
1994 memset(cfi->cfiq, 0, sizeof(struct cfi_ident));
1996 cfi->cfiq->P_ID = jedec_table[index].cmd_set;
1997 cfi->cfiq->NumEraseRegions = jedec_table[index].nr_regions;
1998 cfi->cfiq->DevSize = jedec_table[index].dev_size;
1999 cfi->cfi_mode = CFI_MODE_JEDEC;
2000 cfi->sector_erase_cmd = CMD(0x30);
2003 cfi->cfiq->EraseRegionInfo[i] = jedec_table[index].regions[i];
2005 cfi->cmdset_priv = NULL;
2008 cfi->mfr = jedec_table[index].mfr_id;
2009 cfi->id = jedec_table[index].dev_id;
2017 cfi->addr_unlock1 = unlock_addrs[uaddr].addr1 / cfi->device_type;
2018 cfi->addr_unlock2 = unlock_addrs[uaddr].addr2 / cfi->device_type;
2033 struct cfi_private *cfi,
2049 switch (cfi->device_type) {
2075 __func__, cfi->device_type);
2078 if ( cfi->mfr != mfr || cfi->id != id ) {
2085 if ( base + cfi_interleave(cfi) * ( 1 << finfo->dev_size ) > map->size ) {
2092 if (! (finfo->devtypes & cfi->device_type))
2098 __func__, cfi->addr_unlock1, cfi->addr_unlock2 );
2100 && ( unlock_addrs[uaddr].addr1 / cfi->device_type != cfi->addr_unlock1 ||
2101 unlock_addrs[uaddr].addr2 / cfi->device_type != cfi->addr_unlock2 ) ) {
2120 jedec_reset( base, map, cfi );
2121 mfr = jedec_read_mfr( map, base, cfi );
2122 id = jedec_read_id( map, base, cfi );
2123 if ( mfr == cfi->mfr && id == cfi->id ) {
2126 __func__, cfi->mfr, cfi->id );
2138 if (cfi->addr_unlock1) {
2139 cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);
2140 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL);
2142 cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);
2151 unsigned long *chip_map, struct cfi_private *cfi)
2158 if (!cfi->numchips) {
2164 cfi->addr_unlock1 = unlock_addrs[uaddr_idx].addr1 / cfi->device_type;
2165 cfi->addr_unlock2 = unlock_addrs[uaddr_idx].addr2 / cfi->device_type;
2177 probe_offset1 = cfi_build_cmd_addr(cfi->addr_unlock1, map, cfi);
2178 probe_offset2 = cfi_build_cmd_addr(cfi->addr_unlock2, map, cfi);
2184 jedec_reset(base, map, cfi);
2187 if(cfi->addr_unlock1) {
2188 cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);
2189 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL);
2191 cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL);
2194 if (!cfi->numchips) {
2198 cfi->mfr = jedec_read_mfr(map, base, cfi);
2199 cfi->id = jedec_read_id(map, base, cfi);
2201 cfi->mfr, cfi->id, cfi_interleave(cfi), cfi->device_type);
2203 if ( jedec_match( base, map, cfi, &jedec_table[i] ) ) {
2205 __func__, cfi->mfr, cfi->id,
2206 cfi->addr_unlock1, cfi->addr_unlock2 );
2207 if (!cfi_jedec_setup(map, cfi, i))
2218 mfr = jedec_read_mfr(map, base, cfi);
2219 id = jedec_read_id(map, base, cfi);
2221 if ((mfr != cfi->mfr) || (id != cfi->id)) {
2224 jedec_reset(base, map, cfi);
2230 for (i=0; i < (base >> cfi->chipshift); i++) {
2235 start = i << cfi->chipshift;
2236 if (jedec_read_mfr(map, start, cfi) == cfi->mfr &&
2237 jedec_read_id(map, start, cfi) == cfi->id) {
2240 jedec_reset(start, map, cfi);
2243 if (jedec_read_mfr(map, base, cfi) != cfi->mfr ||
2244 jedec_read_id(map, base, cfi) != cfi->id) {
2254 jedec_reset(base, map, cfi);
2255 if (jedec_read_mfr(map, base, cfi) == cfi->mfr &&
2256 jedec_read_id(map, base, cfi) == cfi->id) {
2266 set_bit((base >> cfi->chipshift), chip_map); /* Update chip map */
2267 cfi->numchips++;
2271 jedec_reset(base, map, cfi);
2274 map->name, cfi_interleave(cfi), cfi->device_type*8, base,