diff options
author | Abdiel Janulgue <abdiel.janulgue@linux.intel.com> | 2019-08-09 23:26:14 +0100 |
---|---|---|
committer | Abdiel Janulgue <abdiel.janulgue@linux.intel.com> | 2019-08-12 11:51:00 +0300 |
commit | aff9854fdee315db202dc98130cabdd3fff0076e (patch) | |
tree | 1d759708eaa4d347849cfe299bebfb107d9fdcc0 | |
parent | 738309451f86f03b90ff8006e9b131ef168bcfd3 (diff) |
drm/i915: setup io-mapping for LMEM
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/intel_region_lmem.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_region_lmem.c b/drivers/gpu/drm/i915/intel_region_lmem.c index ca906d1ff631..7f1543e2759c 100644 --- a/drivers/gpu/drm/i915/intel_region_lmem.c +++ b/drivers/gpu/drm/i915/intel_region_lmem.c @@ -41,8 +41,32 @@ lmem_create_object(struct intel_memory_region *mem, return obj; } +static void +region_lmem_release(struct intel_memory_region *mem) +{ + io_mapping_fini(&mem->iomap); + intel_memory_region_release_buddy(mem); +} + +static int +region_lmem_init(struct intel_memory_region *mem) +{ + int ret; + + if (!io_mapping_init_wc(&mem->iomap, + mem->io_start, + resource_size(&mem->region))) + return -EIO; + + ret = intel_memory_region_init_buddy(mem); + if (ret) + io_mapping_fini(&mem->iomap); + + return ret; +} + const struct intel_memory_region_ops intel_region_lmem_ops = { - .init = intel_memory_region_init_buddy, - .release = intel_memory_region_release_buddy, + .init = region_lmem_init, + .release = region_lmem_release, .create_object = lmem_create_object, }; |