xref: /linux/rust/helpers/io.c (revision 3da8c3c8b8fa99505624b65ef590482f48e766b6)
1 // SPDX-License-Identifier: GPL-2.0
2 
3 #include <linux/io.h>
4 #include <linux/ioport.h>
5 
6 #ifdef CONFIG_HAS_IOMEM
rust_helper_ioremap(phys_addr_t offset,size_t size)7 __rust_helper void __iomem *rust_helper_ioremap(phys_addr_t offset, size_t size)
8 {
9 	return ioremap(offset, size);
10 }
11 
rust_helper_ioremap_np(phys_addr_t offset,size_t size)12 __rust_helper void __iomem *rust_helper_ioremap_np(phys_addr_t offset,
13 						   size_t size)
14 {
15 	return ioremap_np(offset, size);
16 }
17 
rust_helper_iounmap(void __iomem * addr)18 __rust_helper void rust_helper_iounmap(void __iomem *addr)
19 {
20 	iounmap(addr);
21 }
22 #endif /* CONFIG_HAS_IOMEM */
23 
rust_helper_memcpy_fromio(void * dst,const volatile void __iomem * src,size_t count)24 __rust_helper void rust_helper_memcpy_fromio(void *dst,
25 					     const volatile void __iomem *src,
26 					     size_t count)
27 {
28 	memcpy_fromio(dst, src, count);
29 }
30 
rust_helper_memcpy_toio(volatile void __iomem * dst,const void * src,size_t count)31 __rust_helper void rust_helper_memcpy_toio(volatile void __iomem *dst,
32 					   const void *src, size_t count)
33 {
34 	memcpy_toio(dst, src, count);
35 }
36 
rust_helper_readb(const void __iomem * addr)37 __rust_helper u8 rust_helper_readb(const void __iomem *addr)
38 {
39 	return readb(addr);
40 }
41 
rust_helper_readw(const void __iomem * addr)42 __rust_helper u16 rust_helper_readw(const void __iomem *addr)
43 {
44 	return readw(addr);
45 }
46 
rust_helper_readl(const void __iomem * addr)47 __rust_helper u32 rust_helper_readl(const void __iomem *addr)
48 {
49 	return readl(addr);
50 }
51 
52 #ifdef CONFIG_64BIT
rust_helper_readq(const void __iomem * addr)53 __rust_helper u64 rust_helper_readq(const void __iomem *addr)
54 {
55 	return readq(addr);
56 }
57 #endif
58 
rust_helper_writeb(u8 value,void __iomem * addr)59 __rust_helper void rust_helper_writeb(u8 value, void __iomem *addr)
60 {
61 	writeb(value, addr);
62 }
63 
rust_helper_writew(u16 value,void __iomem * addr)64 __rust_helper void rust_helper_writew(u16 value, void __iomem *addr)
65 {
66 	writew(value, addr);
67 }
68 
rust_helper_writel(u32 value,void __iomem * addr)69 __rust_helper void rust_helper_writel(u32 value, void __iomem *addr)
70 {
71 	writel(value, addr);
72 }
73 
74 #ifdef CONFIG_64BIT
rust_helper_writeq(u64 value,void __iomem * addr)75 __rust_helper void rust_helper_writeq(u64 value, void __iomem *addr)
76 {
77 	writeq(value, addr);
78 }
79 #endif
80 
rust_helper_readb_relaxed(const void __iomem * addr)81 __rust_helper u8 rust_helper_readb_relaxed(const void __iomem *addr)
82 {
83 	return readb_relaxed(addr);
84 }
85 
rust_helper_readw_relaxed(const void __iomem * addr)86 __rust_helper u16 rust_helper_readw_relaxed(const void __iomem *addr)
87 {
88 	return readw_relaxed(addr);
89 }
90 
rust_helper_readl_relaxed(const void __iomem * addr)91 __rust_helper u32 rust_helper_readl_relaxed(const void __iomem *addr)
92 {
93 	return readl_relaxed(addr);
94 }
95 
96 #ifdef CONFIG_64BIT
rust_helper_readq_relaxed(const void __iomem * addr)97 __rust_helper u64 rust_helper_readq_relaxed(const void __iomem *addr)
98 {
99 	return readq_relaxed(addr);
100 }
101 #endif
102 
rust_helper_writeb_relaxed(u8 value,void __iomem * addr)103 __rust_helper void rust_helper_writeb_relaxed(u8 value, void __iomem *addr)
104 {
105 	writeb_relaxed(value, addr);
106 }
107 
rust_helper_writew_relaxed(u16 value,void __iomem * addr)108 __rust_helper void rust_helper_writew_relaxed(u16 value, void __iomem *addr)
109 {
110 	writew_relaxed(value, addr);
111 }
112 
rust_helper_writel_relaxed(u32 value,void __iomem * addr)113 __rust_helper void rust_helper_writel_relaxed(u32 value, void __iomem *addr)
114 {
115 	writel_relaxed(value, addr);
116 }
117 
118 #ifdef CONFIG_64BIT
rust_helper_writeq_relaxed(u64 value,void __iomem * addr)119 __rust_helper void rust_helper_writeq_relaxed(u64 value, void __iomem *addr)
120 {
121 	writeq_relaxed(value, addr);
122 }
123 #endif
124 
rust_helper_resource_size(struct resource * res)125 __rust_helper resource_size_t rust_helper_resource_size(struct resource *res)
126 {
127 	return resource_size(res);
128 }
129 
130 __rust_helper struct resource *
rust_helper_request_mem_region(resource_size_t start,resource_size_t n,const char * name)131 rust_helper_request_mem_region(resource_size_t start, resource_size_t n,
132 			       const char *name)
133 {
134 	return request_mem_region(start, n, name);
135 }
136 
rust_helper_release_mem_region(resource_size_t start,resource_size_t n)137 __rust_helper void rust_helper_release_mem_region(resource_size_t start,
138 						  resource_size_t n)
139 {
140 	release_mem_region(start, n);
141 }
142 
rust_helper_request_region(resource_size_t start,resource_size_t n,const char * name)143 __rust_helper struct resource *rust_helper_request_region(resource_size_t start,
144 							  resource_size_t n,
145 							  const char *name)
146 {
147 	return request_region(start, n, name);
148 }
149 
150 __rust_helper struct resource *
rust_helper_request_muxed_region(resource_size_t start,resource_size_t n,const char * name)151 rust_helper_request_muxed_region(resource_size_t start, resource_size_t n,
152 				 const char *name)
153 {
154 	return request_muxed_region(start, n, name);
155 }
156 
rust_helper_release_region(resource_size_t start,resource_size_t n)157 __rust_helper void rust_helper_release_region(resource_size_t start,
158 					      resource_size_t n)
159 {
160 	release_region(start, n);
161 }
162