Lines Matching refs:cfi

1879 	struct cfi_private *cfi)  in jedec_read_mfr()  argument
1890 uint32_t ofs = cfi_build_cmd_addr(0 + (bank << 8), map, cfi); in jedec_read_mfr()
1891 mask = (1 << (cfi->device_type * 8)) - 1; in jedec_read_mfr()
1900 struct cfi_private *cfi) in jedec_read_id() argument
1904 u32 ofs = cfi_build_cmd_addr(1, map, cfi); in jedec_read_id()
1905 mask = (1 << (cfi->device_type * 8)) -1; in jedec_read_id()
1910 static void jedec_reset(u32 base, struct map_info *map, struct cfi_private *cfi) in jedec_reset() argument
1920 if (cfi->addr_unlock1) { in jedec_reset()
1922 cfi->addr_unlock1,cfi->addr_unlock2); in jedec_reset()
1923 cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL); in jedec_reset()
1924 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL); in jedec_reset()
1927 cfi_send_gen_cmd(0xF0, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL); in jedec_reset()
1933 cfi_send_gen_cmd(0xFF, 0, base, map, cfi, cfi->device_type, NULL); in jedec_reset()
1938 static int cfi_jedec_setup(struct map_info *map, struct cfi_private *cfi, int index) in cfi_jedec_setup() argument
1943 if (!(jedec_table[index].devtypes & cfi->device_type)) { in cfi_jedec_setup()
1945 jedec_table[index].name, 4 * (1<<cfi->device_type)); in cfi_jedec_setup()
1953 cfi->cfiq = kmalloc(sizeof(struct cfi_ident) + num_erase_regions * 4, GFP_KERNEL); in cfi_jedec_setup()
1954 if (!cfi->cfiq) { in cfi_jedec_setup()
1959 memset(cfi->cfiq, 0, sizeof(struct cfi_ident)); in cfi_jedec_setup()
1961 cfi->cfiq->P_ID = jedec_table[index].cmd_set; in cfi_jedec_setup()
1962 cfi->cfiq->NumEraseRegions = jedec_table[index].nr_regions; in cfi_jedec_setup()
1963 cfi->cfiq->DevSize = jedec_table[index].dev_size; in cfi_jedec_setup()
1964 cfi->cfi_mode = CFI_MODE_JEDEC; in cfi_jedec_setup()
1965 cfi->sector_erase_cmd = CMD(0x30); in cfi_jedec_setup()
1968 cfi->cfiq->EraseRegionInfo[i] = jedec_table[index].regions[i]; in cfi_jedec_setup()
1970 cfi->cmdset_priv = NULL; in cfi_jedec_setup()
1973 cfi->mfr = jedec_table[index].mfr_id; in cfi_jedec_setup()
1974 cfi->id = jedec_table[index].dev_id; in cfi_jedec_setup()
1982 cfi->addr_unlock1 = unlock_addrs[uaddr].addr1 / cfi->device_type; in cfi_jedec_setup()
1983 cfi->addr_unlock2 = unlock_addrs[uaddr].addr2 / cfi->device_type; in cfi_jedec_setup()
1998 struct cfi_private *cfi, in jedec_match() argument
2014 switch (cfi->device_type) { in jedec_match()
2040 __func__, cfi->device_type); in jedec_match()
2043 if ( cfi->mfr != mfr || cfi->id != id ) { in jedec_match()
2050 if ( base + cfi_interleave(cfi) * ( 1 << finfo->dev_size ) > map->size ) { in jedec_match()
2057 if (! (finfo->devtypes & cfi->device_type)) in jedec_match()
2063 __func__, cfi->addr_unlock1, cfi->addr_unlock2 ); in jedec_match()
2065 && ( unlock_addrs[uaddr].addr1 / cfi->device_type != cfi->addr_unlock1 || in jedec_match()
2066 unlock_addrs[uaddr].addr2 / cfi->device_type != cfi->addr_unlock2 ) ) { in jedec_match()
2085 jedec_reset( base, map, cfi ); in jedec_match()
2086 mfr = jedec_read_mfr( map, base, cfi ); in jedec_match()
2087 id = jedec_read_id( map, base, cfi ); in jedec_match()
2088 if ( mfr == cfi->mfr && id == cfi->id ) { in jedec_match()
2091 __func__, cfi->mfr, cfi->id ); in jedec_match()
2103 if (cfi->addr_unlock1) { in jedec_match()
2104 cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL); in jedec_match()
2105 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL); in jedec_match()
2107 cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL); in jedec_match()
2116 unsigned long *chip_map, struct cfi_private *cfi) in jedec_probe_chip() argument
2123 if (!cfi->numchips) { in jedec_probe_chip()
2129 cfi->addr_unlock1 = unlock_addrs[uaddr_idx].addr1 / cfi->device_type; in jedec_probe_chip()
2130 cfi->addr_unlock2 = unlock_addrs[uaddr_idx].addr2 / cfi->device_type; in jedec_probe_chip()
2142 probe_offset1 = cfi_build_cmd_addr(cfi->addr_unlock1, map, cfi); in jedec_probe_chip()
2143 probe_offset2 = cfi_build_cmd_addr(cfi->addr_unlock2, map, cfi); in jedec_probe_chip()
2149 jedec_reset(base, map, cfi); in jedec_probe_chip()
2152 if(cfi->addr_unlock1) { in jedec_probe_chip()
2153 cfi_send_gen_cmd(0xaa, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL); in jedec_probe_chip()
2154 cfi_send_gen_cmd(0x55, cfi->addr_unlock2, base, map, cfi, cfi->device_type, NULL); in jedec_probe_chip()
2156 cfi_send_gen_cmd(0x90, cfi->addr_unlock1, base, map, cfi, cfi->device_type, NULL); in jedec_probe_chip()
2159 if (!cfi->numchips) { in jedec_probe_chip()
2163 cfi->mfr = jedec_read_mfr(map, base, cfi); in jedec_probe_chip()
2164 cfi->id = jedec_read_id(map, base, cfi); in jedec_probe_chip()
2166 cfi->mfr, cfi->id, cfi_interleave(cfi), cfi->device_type); in jedec_probe_chip()
2168 if ( jedec_match( base, map, cfi, &jedec_table[i] ) ) { in jedec_probe_chip()
2170 __func__, cfi->mfr, cfi->id, in jedec_probe_chip()
2171 cfi->addr_unlock1, cfi->addr_unlock2 ); in jedec_probe_chip()
2172 if (!cfi_jedec_setup(map, cfi, i)) in jedec_probe_chip()
2183 mfr = jedec_read_mfr(map, base, cfi); in jedec_probe_chip()
2184 id = jedec_read_id(map, base, cfi); in jedec_probe_chip()
2186 if ((mfr != cfi->mfr) || (id != cfi->id)) { in jedec_probe_chip()
2189 jedec_reset(base, map, cfi); in jedec_probe_chip()
2195 for (i=0; i < (base >> cfi->chipshift); i++) { in jedec_probe_chip()
2200 start = i << cfi->chipshift; in jedec_probe_chip()
2201 if (jedec_read_mfr(map, start, cfi) == cfi->mfr && in jedec_probe_chip()
2202 jedec_read_id(map, start, cfi) == cfi->id) { in jedec_probe_chip()
2205 jedec_reset(start, map, cfi); in jedec_probe_chip()
2208 if (jedec_read_mfr(map, base, cfi) != cfi->mfr || in jedec_probe_chip()
2209 jedec_read_id(map, base, cfi) != cfi->id) { in jedec_probe_chip()
2219 jedec_reset(base, map, cfi); in jedec_probe_chip()
2220 if (jedec_read_mfr(map, base, cfi) == cfi->mfr && in jedec_probe_chip()
2221 jedec_read_id(map, base, cfi) == cfi->id) { in jedec_probe_chip()
2231 set_bit((base >> cfi->chipshift), chip_map); /* Update chip map */ in jedec_probe_chip()
2232 cfi->numchips++; in jedec_probe_chip()
2236 jedec_reset(base, map, cfi); in jedec_probe_chip()
2239 map->name, cfi_interleave(cfi), cfi->device_type*8, base, in jedec_probe_chip()