summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuman Anna <s-anna@ti.com>2021-04-20 14:58:48 -0500
committerSuman Anna <s-anna@ti.com>2021-04-20 15:49:01 -0500
commit8c3270d48d6598a7c0ea0e41c03c8e1af6ae1626 (patch)
treeaf944381cd6ea6b69fe5439f76c3fe6fd869e468
parentb17f349923c0cd366867c99634a4c51ab7ef74fc (diff)
downloadlinuxutils-8c3270d48d6598a7c0ea0e41c03c8e1af6ae1626.tar.gz
cmemk: Introduce cmem_dma_offset_configure wrapper
The Keystone2 platforms require the dma_pfn_offset to be configured on the CMEM device. Introduce a new cmem_dma_offset_configure() wrapper function so that the Linux kernel version variations can be localized to a single function. The wrapper is only effective for ARCH_KEYSTONE with LPAE enable (no change in functionality) and is a no-op for all other builds. Signed-off-by: Suman Anna <s-anna@ti.com>
-rw-r--r--src/cmem/module/cmemk.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/cmem/module/cmemk.c b/src/cmem/module/cmemk.c
index 594a7d2..2239c19 100644
--- a/src/cmem/module/cmemk.c
+++ b/src/cmem/module/cmemk.c
@@ -2735,6 +2735,13 @@ fail:
return err;
}
+static void __init cmem_dma_offset_configure(struct device *dev)
+{
+#if IS_ENABLED(CONFIG_ARCH_KEYSTONE) && IS_ENABLED(CONFIG_ARM_LPAE)
+ dev->dma_pfn_offset = KEYSTONE_DMA_PFN_OFFSET;
+#endif
+}
+
int __init cmem_init(void)
{
int bi;
@@ -2787,9 +2794,7 @@ int __init cmem_init(void)
NULL, "cmem");
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
cmem_cma_dev_0->coherent_dma_mask = DMA_BIT_MASK(32);
-#if IS_ENABLED(CONFIG_ARCH_KEYSTONE) && IS_ENABLED(CONFIG_ARM_LPAE)
- cmem_cma_dev_0->dma_pfn_offset = KEYSTONE_DMA_PFN_OFFSET;
-#endif
+ cmem_dma_offset_configure(cmem_cma_dev_0);
#endif
for (bi = 0; bi < NBLOCKS; bi++) {
if (!block_start[bi] || !block_end[bi]) {
@@ -2921,9 +2926,8 @@ int __init cmem_init(void)
p_objs[NBLOCKS][i].numbufs = cmem_cma_p_objs[i].numbufs;
cmem_cma_dev[i].coherent_dma_mask = DMA_BIT_MASK(32);
-#if IS_ENABLED(CONFIG_ARCH_KEYSTONE) && IS_ENABLED(CONFIG_ARM_LPAE) \
- && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
- cmem_cma_dev[i].dma_pfn_offset = KEYSTONE_DMA_PFN_OFFSET;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
+ cmem_dma_offset_configure(&cmem_cma_dev[i]);
#endif
__D(" pool %d: size=%#llx numbufs=%d\n", i,
p_objs[NBLOCKS][i].size, p_objs[NBLOCKS][i].numbufs);