summaryrefslogtreecommitdiff
path: root/kernels/linux-libre-arm64/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kernels/linux-libre-arm64/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch')
-rw-r--r--kernels/linux-libre-arm64/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/kernels/linux-libre-arm64/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch b/kernels/linux-libre-arm64/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch
new file mode 100644
index 000000000..cf03b7a6b
--- /dev/null
+++ b/kernels/linux-libre-arm64/0002-lib-devres-add-a-helper-function-for-ioremap_uc.patch
@@ -0,0 +1,79 @@
+From 54dd8abeea02e5ea426a83f0a924d874a9c6e617 Mon Sep 17 00:00:00 2001
+From: Tuowen Zhao <ztuowen@gmail.com>
+Date: Wed, 16 Oct 2019 15:06:28 -0600
+Subject: [PATCH 02/13] lib: devres: add a helper function for ioremap_uc
+
+Implement a resource managed strongly uncachable ioremap function.
+
+Cc: <stable@vger.kernel.org> # v4.19+
+Tested-by: AceLan Kao <acelan.kao@canonical.com>
+Signed-off-by: Tuowen Zhao <ztuowen@gmail.com>
+Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Acked-by: Luis Chamberlain <mcgrof@kernel.org>
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+---
+ include/linux/io.h | 2 ++
+ lib/devres.c | 19 +++++++++++++++++++
+ 2 files changed, 21 insertions(+)
+
+diff --git a/include/linux/io.h b/include/linux/io.h
+index accac822336a..a59834bc0a11 100644
+--- a/include/linux/io.h
++++ b/include/linux/io.h
+@@ -64,6 +64,8 @@ static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr)
+
+ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset,
+ resource_size_t size);
++void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset,
++ resource_size_t size);
+ void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
+ resource_size_t size);
+ void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
+diff --git a/lib/devres.c b/lib/devres.c
+index 6a0e9bd6524a..17624d35e82d 100644
+--- a/lib/devres.c
++++ b/lib/devres.c
+@@ -9,6 +9,7 @@
+ enum devm_ioremap_type {
+ DEVM_IOREMAP = 0,
+ DEVM_IOREMAP_NC,
++ DEVM_IOREMAP_UC,
+ DEVM_IOREMAP_WC,
+ };
+
+@@ -39,6 +40,9 @@ static void __iomem *__devm_ioremap(struct device *dev, resource_size_t offset,
+ case DEVM_IOREMAP_NC:
+ addr = ioremap_nocache(offset, size);
+ break;
++ case DEVM_IOREMAP_UC:
++ addr = ioremap_uc(offset, size);
++ break;
+ case DEVM_IOREMAP_WC:
+ addr = ioremap_wc(offset, size);
+ break;
+@@ -68,6 +72,21 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset,
+ }
+ EXPORT_SYMBOL(devm_ioremap);
+
++/**
++ * devm_ioremap_uc - Managed ioremap_uc()
++ * @dev: Generic device to remap IO address for
++ * @offset: Resource address to map
++ * @size: Size of map
++ *
++ * Managed ioremap_uc(). Map is automatically unmapped on driver detach.
++ */
++void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset,
++ resource_size_t size)
++{
++ return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_UC);
++}
++EXPORT_SYMBOL_GPL(devm_ioremap_uc);
++
+ /**
+ * devm_ioremap_nocache - Managed ioremap_nocache()
+ * @dev: Generic device to remap IO address for
+--
+2.24.1
+