ttm_kmap_iter.h (1882B)
1/* SPDX-License-Identifier: MIT */ 2/* 3 * Copyright © 2021 Intel Corporation 4 */ 5#ifndef __TTM_KMAP_ITER_H__ 6#define __TTM_KMAP_ITER_H__ 7 8#include <linux/types.h> 9 10struct ttm_kmap_iter; 11struct iosys_map; 12 13/** 14 * struct ttm_kmap_iter_ops - Ops structure for a struct 15 * ttm_kmap_iter. 16 * @maps_tt: Whether the iterator maps TT memory directly, as opposed 17 * mapping a TT through an aperture. Both these modes have 18 * struct ttm_resource_manager::use_tt set, but the latter typically 19 * returns is_iomem == true from ttm_mem_io_reserve. 20 */ 21struct ttm_kmap_iter_ops { 22 /** 23 * kmap_local() - Map a PAGE_SIZE part of the resource using 24 * kmap_local semantics. 25 * @res_iter: Pointer to the struct ttm_kmap_iter representing 26 * the resource. 27 * @dmap: The struct iosys_map holding the virtual address after 28 * the operation. 29 * @i: The location within the resource to map. PAGE_SIZE granularity. 30 */ 31 void (*map_local)(struct ttm_kmap_iter *res_iter, 32 struct iosys_map *dmap, pgoff_t i); 33 /** 34 * unmap_local() - Unmap a PAGE_SIZE part of the resource previously 35 * mapped using kmap_local. 36 * @res_iter: Pointer to the struct ttm_kmap_iter representing 37 * the resource. 38 * @dmap: The struct iosys_map holding the virtual address after 39 * the operation. 40 */ 41 void (*unmap_local)(struct ttm_kmap_iter *res_iter, 42 struct iosys_map *dmap); 43 bool maps_tt; 44}; 45 46/** 47 * struct ttm_kmap_iter - Iterator for kmap_local type operations on a 48 * resource. 49 * @ops: Pointer to the operations struct. 50 * 51 * This struct is intended to be embedded in a resource-specific specialization 52 * implementing operations for the resource. 53 * 54 * Nothing stops us from extending the operations to vmap, vmap_pfn etc, 55 * replacing some or parts of the ttm_bo_util. cpu-map functionality. 56 */ 57struct ttm_kmap_iter { 58 const struct ttm_kmap_iter_ops *ops; 59}; 60 61#endif /* __TTM_KMAP_ITER_H__ */