65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: MIT */
 | |
| /*
 | |
|  * Copyright © 2022 Intel Corporation
 | |
|  */
 | |
| 
 | |
| #ifndef _I915_GEM_OBJECT_H_
 | |
| #define _I915_GEM_OBJECT_H_
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| #include "xe_bo.h"
 | |
| 
 | |
| #define i915_gem_object_is_shmem(obj) (0) /* We don't use shmem */
 | |
| 
 | |
| static inline dma_addr_t i915_gem_object_get_dma_address(const struct xe_bo *bo, pgoff_t n)
 | |
| {
 | |
| 	/* Should never be called */
 | |
| 	WARN_ON(1);
 | |
| 	return n;
 | |
| }
 | |
| 
 | |
| static inline bool i915_gem_object_is_tiled(const struct xe_bo *bo)
 | |
| {
 | |
| 	/* legacy tiling is unused */
 | |
| 	return false;
 | |
| }
 | |
| 
 | |
| static inline bool i915_gem_object_is_userptr(const struct xe_bo *bo)
 | |
| {
 | |
| 	/* legacy tiling is unused */
 | |
| 	return false;
 | |
| }
 | |
| 
 | |
| static inline int i915_gem_object_read_from_page(struct xe_bo *bo,
 | |
| 					  u32 ofs, u64 *ptr, u32 size)
 | |
| {
 | |
| 	struct ttm_bo_kmap_obj map;
 | |
| 	void *src;
 | |
| 	bool is_iomem;
 | |
| 	int ret;
 | |
| 
 | |
| 	ret = xe_bo_lock(bo, true);
 | |
| 	if (ret)
 | |
| 		return ret;
 | |
| 
 | |
| 	ret = ttm_bo_kmap(&bo->ttm, ofs >> PAGE_SHIFT, 1, &map);
 | |
| 	if (ret)
 | |
| 		goto out_unlock;
 | |
| 
 | |
| 	ofs &= ~PAGE_MASK;
 | |
| 	src = ttm_kmap_obj_virtual(&map, &is_iomem);
 | |
| 	src += ofs;
 | |
| 	if (is_iomem)
 | |
| 		memcpy_fromio(ptr, (void __iomem *)src, size);
 | |
| 	else
 | |
| 		memcpy(ptr, src, size);
 | |
| 
 | |
| 	ttm_bo_kunmap(&map);
 | |
| out_unlock:
 | |
| 	xe_bo_unlock(bo);
 | |
| 	return ret;
 | |
| }
 | |
| 
 | |
| #endif
 |