public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] lib: devres: add a helper function for ioremap_wc
@ 2014-12-11  2:58 Abhilash Kesavan
  2014-12-11  2:58 ` [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap Abhilash Kesavan
  2015-01-10  3:30 ` [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
  0 siblings, 2 replies; 15+ messages in thread
From: Abhilash Kesavan @ 2014-12-11  2:58 UTC (permalink / raw)
  To: catalin.marinas, Will.Deacon, heiko, Li.Xiubo, shc_work, p.zabel,
	nicoleotsuka, arnd, gregkh, robh+dt, grant.likely, linux-kernel,
	corbet
  Cc: padma.v, alsa-devel, shawn.guo, bcousson, tony, kernel, kgene,
	kesavan.abhilash, pawel.moll

Implement a resource managed writecombine ioremap function.

Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
---
 Documentation/driver-model/devres.txt |    1 +
 include/linux/io.h                    |    2 ++
 lib/devres.c                          |   28 ++++++++++++++++++++++++++++
 3 files changed, 31 insertions(+)

diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt
index b5ab416..0f80cee 100644
--- a/Documentation/driver-model/devres.txt
+++ b/Documentation/driver-model/devres.txt
@@ -274,6 +274,7 @@ IOMAP
   devm_ioport_unmap()
   devm_ioremap()
   devm_ioremap_nocache()
+  devm_ioremap_wc()
   devm_ioremap_resource() : checks resource, requests memory region, ioremaps
   devm_iounmap()
   pcim_iomap()
diff --git a/include/linux/io.h b/include/linux/io.h
index fa02e55..42b33f0 100644
--- a/include/linux/io.h
+++ b/include/linux/io.h
@@ -64,6 +64,8 @@ void __iomem *devm_ioremap(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,
+				   resource_size_t size);
 void devm_iounmap(struct device *dev, void __iomem *addr);
 int check_signature(const volatile void __iomem *io_addr,
 			const unsigned char *signature, int length);
diff --git a/lib/devres.c b/lib/devres.c
index 0f1dd2e..e8e1738 100644
--- a/lib/devres.c
+++ b/lib/devres.c
@@ -72,6 +72,34 @@ void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset,
 EXPORT_SYMBOL(devm_ioremap_nocache);
 
 /**
+ * devm_ioremap_wc - Managed ioremap_wc()
+ * @dev: Generic device to remap IO address for
+ * @offset: BUS offset to map
+ * @size: Size of map
+ *
+ * Managed ioremap_wc().  Map is automatically unmapped on driver detach.
+ */
+void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset,
+			   resource_size_t size)
+{
+	void __iomem **ptr, *addr;
+
+	ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL);
+	if (!ptr)
+		return NULL;
+
+	addr = ioremap_wc(offset, size);
+	if (addr) {
+		*ptr = addr;
+		devres_add(dev, ptr);
+	} else
+		devres_free(ptr);
+
+	return addr;
+}
+EXPORT_SYMBOL(devm_ioremap_wc);
+
+/**
  * devm_iounmap - Managed iounmap()
  * @dev: Generic device to unmap for
  * @addr: Address to unmap
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2015-01-12 13:05 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-11  2:58 [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
2014-12-11  2:58 ` [PATCH 2/2] misc: sram: switch to ioremap_wc from ioremap Abhilash Kesavan
2014-12-11 10:08   ` Philipp Zabel
2014-12-11 10:39     ` Will Deacon
2014-12-11 11:40       ` Philipp Zabel
2014-12-11 14:58         ` Catalin Marinas
2014-12-17 12:35           ` Abhilash Kesavan
2015-01-05 18:18             ` Tony Lindgren
2015-01-06 14:27               ` Abhilash Kesavan
2015-01-06 16:54                 ` Philipp Zabel
2015-01-06 17:27                   ` Rob Herring
2015-01-08 15:30                     ` Abhilash Kesavan
2015-01-08 20:56                       ` Heiko Stübner
2015-01-10  3:30 ` [PATCH 1/2] lib: devres: add a helper function for ioremap_wc Abhilash Kesavan
2015-01-12 13:05   ` gregkh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox