@@ -98,17 +98,17 @@ impl<const SIZE: usize> IoRaw<SIZE> {
98
98
///# fn no_run() -> Result<(), Error> {
99
99
/// // SAFETY: Invalid usage for example purposes.
100
100
/// let iomem = unsafe { IoMem::<{ core::mem::size_of::<u32>() }>::new(0xBAAAAAAD)? };
101
- /// iomem.writel (0x42, 0x0);
102
- /// assert!(iomem.try_writel (0x42, 0x0).is_ok());
103
- /// assert!(iomem.try_writel (0x42, 0x4).is_err());
101
+ /// iomem.write32 (0x42, 0x0);
102
+ /// assert!(iomem.try_write32 (0x42, 0x0).is_ok());
103
+ /// assert!(iomem.try_write32 (0x42, 0x4).is_err());
104
104
/// # Ok(())
105
105
/// # }
106
106
/// ```
107
107
#[ repr( transparent) ]
108
108
pub struct Io < const SIZE : usize = 0 > ( IoRaw < SIZE > ) ;
109
109
110
110
macro_rules! define_read {
111
- ( $( #[ $attr: meta] ) * $name: ident, $try_name: ident, $type_name: ty) => {
111
+ ( $( #[ $attr: meta] ) * $name: ident, $try_name: ident, $c_fn : ident -> $ type_name: ty) => {
112
112
/// Read IO data from a given offset known at compile time.
113
113
///
114
114
/// Bound checks are performed on compile time, hence if the offset is not known at compile
@@ -119,7 +119,7 @@ macro_rules! define_read {
119
119
let addr = self . io_addr_assert:: <$type_name>( offset) ;
120
120
121
121
// SAFETY: By the type invariant `addr` is a valid address for MMIO operations.
122
- unsafe { bindings:: $name ( addr as _) }
122
+ unsafe { bindings:: $c_fn ( addr as _) }
123
123
}
124
124
125
125
/// Read IO data from a given offset.
@@ -131,13 +131,13 @@ macro_rules! define_read {
131
131
let addr = self . io_addr:: <$type_name>( offset) ?;
132
132
133
133
// SAFETY: By the type invariant `addr` is a valid address for MMIO operations.
134
- Ok ( unsafe { bindings:: $name ( addr as _) } )
134
+ Ok ( unsafe { bindings:: $c_fn ( addr as _) } )
135
135
}
136
136
} ;
137
137
}
138
138
139
139
macro_rules! define_write {
140
- ( $( #[ $attr: meta] ) * $name: ident, $try_name: ident, $type_name: ty) => {
140
+ ( $( #[ $attr: meta] ) * $name: ident, $try_name: ident, $c_fn : ident <- $ type_name: ty) => {
141
141
/// Write IO data from a given offset known at compile time.
142
142
///
143
143
/// Bound checks are performed on compile time, hence if the offset is not known at compile
@@ -148,7 +148,7 @@ macro_rules! define_write {
148
148
let addr = self . io_addr_assert:: <$type_name>( offset) ;
149
149
150
150
// SAFETY: By the type invariant `addr` is a valid address for MMIO operations.
151
- unsafe { bindings:: $name ( value, addr as _, ) }
151
+ unsafe { bindings:: $c_fn ( value, addr as _, ) }
152
152
}
153
153
154
154
/// Write IO data from a given offset.
@@ -160,7 +160,7 @@ macro_rules! define_write {
160
160
let addr = self . io_addr:: <$type_name>( offset) ?;
161
161
162
162
// SAFETY: By the type invariant `addr` is a valid address for MMIO operations.
163
- unsafe { bindings:: $name ( value, addr as _) }
163
+ unsafe { bindings:: $c_fn ( value, addr as _) }
164
164
Ok ( ( ) )
165
165
}
166
166
} ;
@@ -218,43 +218,43 @@ impl<const SIZE: usize> Io<SIZE> {
218
218
self . addr ( ) + offset
219
219
}
220
220
221
- define_read ! ( readb , try_readb , u8 ) ;
222
- define_read ! ( readw , try_readw , u16 ) ;
223
- define_read ! ( readl , try_readl , u32 ) ;
221
+ define_read ! ( read8 , try_read8 , readb -> u8 ) ;
222
+ define_read ! ( read16 , try_read16 , readw -> u16 ) ;
223
+ define_read ! ( read32 , try_read32 , readl -> u32 ) ;
224
224
define_read ! (
225
225
#[ cfg( CONFIG_64BIT ) ]
226
- readq ,
227
- try_readq ,
228
- u64
226
+ read64 ,
227
+ try_read64 ,
228
+ readq -> u64
229
229
) ;
230
230
231
- define_read ! ( readb_relaxed , try_readb_relaxed , u8 ) ;
232
- define_read ! ( readw_relaxed , try_readw_relaxed , u16 ) ;
233
- define_read ! ( readl_relaxed , try_readl_relaxed , u32 ) ;
231
+ define_read ! ( read8_relaxed , try_read8_relaxed , readb_relaxed -> u8 ) ;
232
+ define_read ! ( read16_relaxed , try_read16_relaxed , readw_relaxed -> u16 ) ;
233
+ define_read ! ( read32_relaxed , try_read32_relaxed , readl_relaxed -> u32 ) ;
234
234
define_read ! (
235
235
#[ cfg( CONFIG_64BIT ) ]
236
- readq_relaxed ,
237
- try_readq_relaxed ,
238
- u64
236
+ read64_relaxed ,
237
+ try_read64_relaxed ,
238
+ readq_relaxed -> u64
239
239
) ;
240
240
241
- define_write ! ( writeb , try_writeb , u8 ) ;
242
- define_write ! ( writew , try_writew , u16 ) ;
243
- define_write ! ( writel , try_writel , u32 ) ;
241
+ define_write ! ( write8 , try_write8 , writeb <- u8 ) ;
242
+ define_write ! ( write16 , try_write16 , writew <- u16 ) ;
243
+ define_write ! ( write32 , try_write32 , writel <- u32 ) ;
244
244
define_write ! (
245
245
#[ cfg( CONFIG_64BIT ) ]
246
- writeq ,
247
- try_writeq ,
248
- u64
246
+ write64 ,
247
+ try_write64 ,
248
+ writeq <- u64
249
249
) ;
250
250
251
- define_write ! ( writeb_relaxed , try_writeb_relaxed , u8 ) ;
252
- define_write ! ( writew_relaxed , try_writew_relaxed , u16 ) ;
253
- define_write ! ( writel_relaxed , try_writel_relaxed , u32 ) ;
251
+ define_write ! ( write8_relaxed , try_write8_relaxed , writeb_relaxed <- u8 ) ;
252
+ define_write ! ( write16_relaxed , try_write16_relaxed , writew_relaxed <- u16 ) ;
253
+ define_write ! ( write32_relaxed , try_write32_relaxed , writel_relaxed <- u32 ) ;
254
254
define_write ! (
255
255
#[ cfg( CONFIG_64BIT ) ]
256
- writeq_relaxed ,
257
- try_writeq_relaxed ,
258
- u64
256
+ write64_relaxed ,
257
+ try_write64_relaxed ,
258
+ writeq_relaxed <- u64
259
259
) ;
260
260
}
0 commit comments