diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem_vma.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem_vma.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c index ee46d8321b05..557360788084 100644 --- a/drivers/gpu/drm/msm/msm_gem_vma.c +++ b/drivers/gpu/drm/msm/msm_gem_vma.c | |||
@@ -159,3 +159,26 @@ msm_gem_address_space_create(struct device *dev, struct iommu_domain *domain, | |||
159 | 159 | ||
160 | return aspace; | 160 | return aspace; |
161 | } | 161 | } |
162 | |||
163 | struct msm_gem_address_space * | ||
164 | msm_gem_address_space_create_a2xx(struct device *dev, struct msm_gpu *gpu, | ||
165 | const char *name, uint64_t va_start, uint64_t va_end) | ||
166 | { | ||
167 | struct msm_gem_address_space *aspace; | ||
168 | u64 size = va_end - va_start; | ||
169 | |||
170 | aspace = kzalloc(sizeof(*aspace), GFP_KERNEL); | ||
171 | if (!aspace) | ||
172 | return ERR_PTR(-ENOMEM); | ||
173 | |||
174 | spin_lock_init(&aspace->lock); | ||
175 | aspace->name = name; | ||
176 | aspace->mmu = msm_gpummu_new(dev, gpu); | ||
177 | |||
178 | drm_mm_init(&aspace->mm, (va_start >> PAGE_SHIFT), | ||
179 | size >> PAGE_SHIFT); | ||
180 | |||
181 | kref_init(&aspace->kref); | ||
182 | |||
183 | return aspace; | ||
184 | } | ||