Skip to content

Commit 450b410

Browse files
author
Hugo van der Wijst
committed
Add support for Access::WriteOnce registers
Currently doesn't enforce the write-once nature of the registers, but treats them as write-only.
1 parent 41f1908 commit 450b410

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/generate/register.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ pub fn render(
8282
});
8383
}
8484

85-
if access == Access::WriteOnly || access == Access::ReadWrite {
85+
if [Access::WriteOnly, Access::WriteOnce, Access::ReadWrite].contains(&access) {
8686
reg_impl_items.push(quote! {
8787
/// Writes to the register
8888
#[inline]
@@ -174,7 +174,7 @@ pub fn render(
174174
});
175175
}
176176

177-
if access == Access::WriteOnly || access == Access::ReadWrite {
177+
if [Access::WriteOnly, Access::WriteOnce, Access::ReadWrite].contains(&access) {
178178
mod_items.push(quote! {
179179
impl W {
180180
#(#w_impl_items)*
@@ -569,7 +569,7 @@ pub fn fields(
569569
}
570570
}
571571

572-
if access == Access::WriteOnly || access == Access::ReadWrite {
572+
if [Access::WriteOnly, Access::WriteOnce, Access::ReadWrite].contains(&access) {
573573
for f in &fs {
574574
if f.access == Some(Access::ReadOnly) {
575575
continue;

src/util.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ pub fn access_of(register: &Register) -> Access {
183183
if let Some(ref fields) = register.fields {
184184
if fields.iter().all(|f| f.access == Some(Access::ReadOnly)) {
185185
Access::ReadOnly
186-
} else if fields.iter().all(|f| f.access == Some(Access::WriteOnly)) {
186+
} else if fields.iter().all(|f| f.access == Some(Access::WriteOnce)) {
187+
Access::WriteOnce
188+
} else if fields.iter().all(|f| f.access == Some(Access::WriteOnly) || f.access == Some(Access::WriteOnce)) {
187189
Access::WriteOnly
188190
} else {
189191
Access::ReadWrite

0 commit comments

Comments
 (0)