Skip to content

Commit 3310a28

Browse files
committed
Move Resettable impl to top register mod
1 parent 7879ba1 commit 3310a28

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/generate/register.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ pub fn render(
4242
}))
4343
.as_ref(),
4444
);
45+
let res_val = register.reset_value.or(defs.reset_value).map(|v| v as u64);
4546

4647
let mut mod_items = TokenStream::new();
4748
let mut r_impl_items = TokenStream::new();
@@ -50,6 +51,7 @@ pub fn render(
5051

5152
let can_read = [Access::ReadOnly, Access::ReadWriteOnce, Access::ReadWrite].contains(&access);
5253
let can_write = access != Access::ReadOnly;
54+
let can_reset = res_val.is_some();
5355

5456
if can_read {
5557
let desc = format!("Reader of register {}", register.name);
@@ -60,26 +62,17 @@ pub fn render(
6062
methods.push("read");
6163
}
6264

63-
let res_val = register.reset_value.or(defs.reset_value).map(|v| v as u64);
6465
if can_write {
6566
let desc = format!("Writer for register {}", register.name);
6667
mod_items.extend(quote! {
6768
#[doc = #desc]
6869
pub type W = crate::W<super::#u_name_pc>;
6970
});
70-
if let Some(rv) = res_val.map(util::hex) {
71-
let doc = format!("Register {} `reset()`'s with value {}", register.name, &rv);
72-
mod_items.extend(quote! {
73-
#[doc = #doc]
74-
impl crate::Resettable for super::#u_name_pc {
75-
#[inline(always)]
76-
fn reset_value() -> Self::Ux { #rv }
77-
}
78-
});
71+
methods.push("write_with_zero");
72+
if can_reset {
7973
methods.push("reset");
8074
methods.push("write");
8175
}
82-
methods.push("write_with_zero");
8376
}
8477

8578
if can_read && can_write {
@@ -183,6 +176,16 @@ pub fn render(
183176
impl crate::Writable for #u_name_pc {}
184177
});
185178
}
179+
if let Some(rv) = res_val.map(util::hex) {
180+
let doc = format!("Register {} `reset()`'s with value {}", register.name, &rv);
181+
out.extend(quote! {
182+
#[doc = #doc]
183+
impl crate::Resettable for #u_name_pc {
184+
#[inline(always)]
185+
fn reset_value() -> Self::Ux { #rv }
186+
}
187+
});
188+
}
186189

187190
out.extend(quote! {
188191
#[doc = #description]

0 commit comments

Comments
 (0)