@@ -759,19 +759,6 @@ pub fn register(
759
759
}
760
760
761
761
if access == Access :: WriteOnly || access == Access :: ReadWrite {
762
- reg_impl_items. push ( quote ! {
763
- /// Writes to the register
764
- #[ inline]
765
- pub fn write<F >( & self , f: F )
766
- where
767
- F : FnOnce ( & mut W ) -> & mut W
768
- {
769
- let mut w = W :: reset_value( ) ;
770
- f( & mut w) ;
771
- self . register. set( w. bits) ;
772
- }
773
- } ) ;
774
-
775
762
mod_items. push ( quote ! {
776
763
/// Value to write to the register
777
764
pub struct W {
@@ -782,16 +769,42 @@ pub fn register(
782
769
let rv = register
783
770
. reset_value
784
771
. or ( defs. reset_value )
785
- . map ( |rv| util:: hex ( rv) )
786
- . ok_or_else ( || format ! ( "Register {} has no reset value" , register. name) ) ?;
772
+ . map ( |rv| util:: hex ( rv) ) ;
787
773
788
- w_impl_items. push ( quote ! {
789
- /// Reset value of the register
790
- #[ inline]
791
- pub fn reset_value( ) -> W {
792
- W { bits: #rv }
774
+ if let Some ( rv) = rv {
775
+ reg_impl_items. push ( quote ! {
776
+ /// Writes to the register
777
+ #[ inline]
778
+ pub fn write<F >( & self , f: F )
779
+ where
780
+ F : FnOnce ( & mut W ) -> & mut W
781
+ {
782
+ let mut w = W :: reset_value( ) ;
783
+ f( & mut w) ;
784
+ self . register. set( w. bits) ;
785
+ }
786
+ } ) ;
787
+
788
+ w_impl_items. push ( quote ! {
789
+ /// Reset value of the register
790
+ #[ inline]
791
+ pub fn reset_value( ) -> W {
792
+ W { bits: #rv }
793
+ }
794
+ } ) ;
795
+
796
+ if access == Access :: ReadWrite {
797
+ reg_impl_items. push ( quote ! {
798
+ /// Writes the reset value to the register
799
+ #[ inline]
800
+ pub fn reset( & self ) {
801
+ self . write( |w| w)
802
+ }
803
+ } )
793
804
}
805
+ }
794
806
807
+ w_impl_items. push ( quote ! {
795
808
/// Writes raw bits to the register
796
809
#[ inline]
797
810
pub #unsafety fn bits( & mut self , bits: #rty) -> & mut Self {
@@ -801,16 +814,6 @@ pub fn register(
801
814
} ) ;
802
815
}
803
816
804
- if access == Access :: ReadWrite {
805
- reg_impl_items. push ( quote ! {
806
- /// Writes the reset value to the register
807
- #[ inline]
808
- pub fn reset( & self ) {
809
- self . write( |w| w)
810
- }
811
- } )
812
- }
813
-
814
817
mod_items. push ( quote ! {
815
818
impl super :: #name_pc {
816
819
#( #reg_impl_items) *
0 commit comments