| .. | .. |
|---|
| 48 | 48 | unsigned int flags; |
|---|
| 49 | 49 | unsigned long size; |
|---|
| 50 | 50 | unsigned long sram_size; |
|---|
| 51 | + unsigned long nbuf_size; |
|---|
| 51 | 52 | struct rknpu_mm_obj *sram_obj; |
|---|
| 52 | 53 | dma_addr_t iova_start; |
|---|
| 53 | 54 | unsigned long iova_size; |
|---|
| .. | .. |
|---|
| 59 | 60 | struct page **pages; |
|---|
| 60 | 61 | struct sg_table *sgt; |
|---|
| 61 | 62 | struct drm_mm_node mm_node; |
|---|
| 63 | +}; |
|---|
| 64 | + |
|---|
| 65 | +enum rknpu_cache_type { |
|---|
| 66 | + RKNPU_CACHE_SRAM = 1 << 0, |
|---|
| 67 | + RKNPU_CACHE_NBUF = 1 << 1, |
|---|
| 62 | 68 | }; |
|---|
| 63 | 69 | |
|---|
| 64 | 70 | /* create a new buffer with gem object */ |
|---|
| .. | .. |
|---|
| 157 | 163 | int rknpu_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); |
|---|
| 158 | 164 | #endif |
|---|
| 159 | 165 | |
|---|
| 166 | +int rknpu_gem_mmap_obj(struct drm_gem_object *obj, struct vm_area_struct *vma); |
|---|
| 167 | + |
|---|
| 160 | 168 | /* set vm_flags and we can change the vm attribute to other one at here. */ |
|---|
| 161 | 169 | int rknpu_gem_mmap(struct file *filp, struct vm_area_struct *vma); |
|---|
| 162 | 170 | |
|---|
| .. | .. |
|---|
| 170 | 178 | rknpu_gem_prime_import_sg_table(struct drm_device *dev, |
|---|
| 171 | 179 | struct dma_buf_attachment *attach, |
|---|
| 172 | 180 | struct sg_table *sgt); |
|---|
| 181 | +#if KERNEL_VERSION(6, 1, 0) > LINUX_VERSION_CODE |
|---|
| 173 | 182 | void *rknpu_gem_prime_vmap(struct drm_gem_object *obj); |
|---|
| 174 | 183 | void rknpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); |
|---|
| 184 | +#else |
|---|
| 185 | +int rknpu_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map); |
|---|
| 186 | +void rknpu_gem_prime_vunmap(struct drm_gem_object *obj, struct iosys_map *map); |
|---|
| 187 | +#endif |
|---|
| 175 | 188 | int rknpu_gem_prime_mmap(struct drm_gem_object *obj, |
|---|
| 176 | 189 | struct vm_area_struct *vma); |
|---|
| 177 | 190 | |
|---|