aboutsummaryrefslogtreecommitdiffstats
path: root/rust/helpers/io.c
diff options
context:
space:
mode:
authorDaniel Almeida <[email protected]>2025-07-17 15:55:22 +0000
committerDanilo Krummrich <[email protected]>2025-07-20 17:43:04 +0000
commit493fc33ec25294cb2e444dfa77c105aa774c83f2 (patch)
treecc3402f763e4847a0b6ce05a9363b8169467972f /rust/helpers/io.c
parentrust: samples: dma: set DMA mask (diff)
downloadkernel-493fc33ec25294cb2e444dfa77c105aa774c83f2.tar.gz
kernel-493fc33ec25294cb2e444dfa77c105aa774c83f2.zip
rust: io: add resource abstraction
In preparation for ioremap support, add a Rust abstraction for struct resource. A future commit will introduce the Rust API to ioremap a resource from a platform device. The current abstraction, therefore, adds only the minimum API needed to get that done. Acked-by: Miguel Ojeda <[email protected]> Reviewed-by: Alice Ryhl <[email protected]> Co-developed-by: Fiona Behrens <[email protected]> Signed-off-by: Fiona Behrens <[email protected]> Signed-off-by: Daniel Almeida <[email protected]> Link: https://lore.kernel.org/r/20250717-topics-tyr-platform_iomem-v15-1-beca780b77e3@collabora.com [ Capitalize safety comments and end it with a period. - Danilo ] Signed-off-by: Danilo Krummrich <[email protected]>
Diffstat (limited to 'rust/helpers/io.c')
-rw-r--r--rust/helpers/io.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/rust/helpers/io.c b/rust/helpers/io.c
index 15ea187c5466..404776cf6717 100644
--- a/rust/helpers/io.c
+++ b/rust/helpers/io.c
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
#include <linux/io.h>
+#include <linux/ioport.h>
void __iomem *rust_helper_ioremap(phys_addr_t offset, size_t size)
{
@@ -99,3 +100,38 @@ void rust_helper_writeq_relaxed(u64 value, void __iomem *addr)
writeq_relaxed(value, addr);
}
#endif
+
+resource_size_t rust_helper_resource_size(struct resource *res)
+{
+ return resource_size(res);
+}
+
+struct resource *rust_helper_request_mem_region(resource_size_t start,
+ resource_size_t n,
+ const char *name)
+{
+ return request_mem_region(start, n, name);
+}
+
+void rust_helper_release_mem_region(resource_size_t start, resource_size_t n)
+{
+ release_mem_region(start, n);
+}
+
+struct resource *rust_helper_request_region(resource_size_t start,
+ resource_size_t n, const char *name)
+{
+ return request_region(start, n, name);
+}
+
+struct resource *rust_helper_request_muxed_region(resource_size_t start,
+ resource_size_t n,
+ const char *name)
+{
+ return request_muxed_region(start, n, name);
+}
+
+void rust_helper_release_region(resource_size_t start, resource_size_t n)
+{
+ release_region(start, n);
+}