Lines Matching refs:state
63 static void gf_set_gpios(struct async_state *state, unsigned long ofs) in gf_set_gpios() argument
67 ofs /= state->win_size; in gf_set_gpios()
70 if (state->gpio_values[i] != value) { in gf_set_gpios()
71 gpio_set_value(state->gpio_addrs[i], value); in gf_set_gpios()
72 state->gpio_values[i] = value; in gf_set_gpios()
74 } while (++i < state->gpio_count); in gf_set_gpios()
84 struct async_state *state = gf_map_info_to_state(map); in gf_read() local
88 gf_set_gpios(state, ofs); in gf_read()
90 word = readw(map->virt + (ofs % state->win_size)); in gf_read()
107 struct async_state *state = gf_map_info_to_state(map); in gf_copy_from() local
112 if ((from % state->win_size) + len > state->win_size) in gf_copy_from()
113 this_len = state->win_size - (from % state->win_size); in gf_copy_from()
117 gf_set_gpios(state, from); in gf_copy_from()
118 memcpy_fromio(to, map->virt + (from % state->win_size), in gf_copy_from()
133 struct async_state *state = gf_map_info_to_state(map); in gf_write() local
136 gf_set_gpios(state, ofs); in gf_write()
139 writew(d, map->virt + (ofs % state->win_size)); in gf_write()
154 struct async_state *state = gf_map_info_to_state(map); in gf_copy_to() local
159 if ((to % state->win_size) + len > state->win_size) in gf_copy_to()
160 this_len = state->win_size - (to % state->win_size); in gf_copy_to()
164 gf_set_gpios(state, to); in gf_copy_to()
165 memcpy_toio(map->virt + (to % state->win_size), from, len); in gf_copy_to()
210 struct async_state *state; in gpio_flash_probe() local
220 state = kzalloc(sizeof(*state) + arr_size, GFP_KERNEL); in gpio_flash_probe()
221 if (!state) in gpio_flash_probe()
228 state->gpio_count = gpios->end; in gpio_flash_probe()
229 state->gpio_addrs = (void *)(unsigned long)gpios->start; in gpio_flash_probe()
230 state->gpio_values = (void *)(state + 1); in gpio_flash_probe()
231 state->win_size = resource_size(memory); in gpio_flash_probe()
232 memset(state->gpio_values, 0xff, arr_size); in gpio_flash_probe()
234 state->map.name = DRIVER_NAME; in gpio_flash_probe()
235 state->map.read = gf_read; in gpio_flash_probe()
236 state->map.copy_from = gf_copy_from; in gpio_flash_probe()
237 state->map.write = gf_write; in gpio_flash_probe()
238 state->map.copy_to = gf_copy_to; in gpio_flash_probe()
239 state->map.bankwidth = pdata->width; in gpio_flash_probe()
240 state->map.size = state->win_size * (1 << state->gpio_count); in gpio_flash_probe()
241 state->map.virt = ioremap_nocache(memory->start, state->map.size); in gpio_flash_probe()
242 state->map.phys = NO_XIP; in gpio_flash_probe()
243 state->map.map_priv_1 = (unsigned long)state; in gpio_flash_probe()
245 platform_set_drvdata(pdev, state); in gpio_flash_probe()
249 if (gpio_request(state->gpio_addrs[i], DRIVER_NAME)) { in gpio_flash_probe()
251 state->gpio_addrs[i]); in gpio_flash_probe()
253 gpio_free(state->gpio_addrs[i]); in gpio_flash_probe()
254 kfree(state); in gpio_flash_probe()
257 gpio_direction_output(state->gpio_addrs[i], 0); in gpio_flash_probe()
258 } while (++i < state->gpio_count); in gpio_flash_probe()
261 state->map.bankwidth * 8); in gpio_flash_probe()
262 state->mtd = do_map_probe(memory->name, &state->map); in gpio_flash_probe()
263 if (!state->mtd) { in gpio_flash_probe()
264 for (i = 0; i < state->gpio_count; ++i) in gpio_flash_probe()
265 gpio_free(state->gpio_addrs[i]); in gpio_flash_probe()
266 kfree(state); in gpio_flash_probe()
271 mtd_device_parse_register(state->mtd, part_probe_types, NULL, in gpio_flash_probe()
279 struct async_state *state = platform_get_drvdata(pdev); in gpio_flash_remove() local
282 gpio_free(state->gpio_addrs[i]); in gpio_flash_remove()
283 } while (++i < state->gpio_count); in gpio_flash_remove()
284 mtd_device_unregister(state->mtd); in gpio_flash_remove()
285 map_destroy(state->mtd); in gpio_flash_remove()
286 kfree(state); in gpio_flash_remove()