Lines Matching refs:map
286 struct acpi_ioremap *map; in acpi_map_lookup() local
288 list_for_each_entry_rcu(map, &acpi_ioremaps, list) in acpi_map_lookup()
289 if (map->phys <= phys && in acpi_map_lookup()
290 phys + size <= map->phys + map->size) in acpi_map_lookup()
291 return map; in acpi_map_lookup()
300 struct acpi_ioremap *map; in acpi_map_vaddr_lookup() local
302 map = acpi_map_lookup(phys, size); in acpi_map_vaddr_lookup()
303 if (map) in acpi_map_vaddr_lookup()
304 return map->virt + (phys - map->phys); in acpi_map_vaddr_lookup()
311 struct acpi_ioremap *map; in acpi_os_get_iomem() local
315 map = acpi_map_lookup(phys, size); in acpi_os_get_iomem()
316 if (map) { in acpi_os_get_iomem()
317 virt = map->virt + (phys - map->phys); in acpi_os_get_iomem()
318 map->refcount++; in acpi_os_get_iomem()
329 struct acpi_ioremap *map; in acpi_map_lookup_virt() local
331 list_for_each_entry_rcu(map, &acpi_ioremaps, list) in acpi_map_lookup_virt()
332 if (map->virt <= virt && in acpi_map_lookup_virt()
333 virt + size <= map->virt + map->size) in acpi_map_lookup_virt()
334 return map; in acpi_map_lookup_virt()
373 struct acpi_ioremap *map; in acpi_os_map_iomem() local
388 map = acpi_map_lookup(phys, size); in acpi_os_map_iomem()
389 if (map) { in acpi_os_map_iomem()
390 map->refcount++; in acpi_os_map_iomem()
394 map = kzalloc(sizeof(*map), GFP_KERNEL); in acpi_os_map_iomem()
395 if (!map) { in acpi_os_map_iomem()
405 kfree(map); in acpi_os_map_iomem()
409 INIT_LIST_HEAD(&map->list); in acpi_os_map_iomem()
410 map->virt = virt; in acpi_os_map_iomem()
411 map->phys = pg_off; in acpi_os_map_iomem()
412 map->size = pg_sz; in acpi_os_map_iomem()
413 map->refcount = 1; in acpi_os_map_iomem()
415 list_add_tail_rcu(&map->list, &acpi_ioremaps); in acpi_os_map_iomem()
419 return map->virt + (phys - map->phys); in acpi_os_map_iomem()
430 static void acpi_os_drop_map_ref(struct acpi_ioremap *map) in acpi_os_drop_map_ref() argument
432 if (!--map->refcount) in acpi_os_drop_map_ref()
433 list_del_rcu(&map->list); in acpi_os_drop_map_ref()
436 static void acpi_os_map_cleanup(struct acpi_ioremap *map) in acpi_os_map_cleanup() argument
438 if (!map->refcount) { in acpi_os_map_cleanup()
440 acpi_unmap(map->phys, map->virt); in acpi_os_map_cleanup()
441 kfree(map); in acpi_os_map_cleanup()
447 struct acpi_ioremap *map; in acpi_os_unmap_iomem() local
455 map = acpi_map_lookup_virt(virt, size); in acpi_os_unmap_iomem()
456 if (!map) { in acpi_os_unmap_iomem()
461 acpi_os_drop_map_ref(map); in acpi_os_unmap_iomem()
464 acpi_os_map_cleanup(map); in acpi_os_unmap_iomem()
504 struct acpi_ioremap *map; in acpi_os_unmap_generic_address() local
515 map = acpi_map_lookup(addr, gas->bit_width / 8); in acpi_os_unmap_generic_address()
516 if (!map) { in acpi_os_unmap_generic_address()
520 acpi_os_drop_map_ref(map); in acpi_os_unmap_generic_address()
523 acpi_os_map_cleanup(map); in acpi_os_unmap_generic_address()