@@ -352,9 +352,15 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
352
352
items. push ( struct_) ;
353
353
354
354
for register in registers {
355
+ let access = access ( & register) ;
356
+
355
357
items. extend ( gen_register ( register, d) ) ;
356
- items. extend ( gen_register_r ( register, d) ) ;
357
- items. extend ( gen_register_w ( register, d) ) ;
358
+ if access != Access :: WriteOnly {
359
+ items. extend ( gen_register_r ( register, d) ) ;
360
+ }
361
+ if access != Access :: ReadOnly {
362
+ items. extend ( gen_register_w ( register, d) ) ;
363
+ }
358
364
}
359
365
360
366
items
@@ -436,17 +442,8 @@ fn type_of(r: &Register) -> String {
436
442
( & * ty) . to_pascal_case ( )
437
443
}
438
444
439
- #[ doc( hidden) ]
440
- pub fn gen_register ( r : & Register , d : & Defaults ) -> Vec < Tokens > {
441
- let mut items = vec ! [ ] ;
442
-
443
- let ty = type_of ( r) ;
444
- let name = Ident :: new ( & * ty) ;
445
- let bits_ty = r. size
446
- . or ( d. size )
447
- . expect ( & format ! ( "{:#?} has no `size` field" , r) )
448
- . to_ty ( ) ;
449
- let access = r. access . unwrap_or_else ( || {
445
+ fn access ( r : & Register ) -> Access {
446
+ r. access . unwrap_or_else ( || {
450
447
let fields = r. fields
451
448
. as_ref ( )
452
449
. expect ( & format ! ( "{:#?} has no `fields` field" , r) ) ;
@@ -457,7 +454,20 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
457
454
} else {
458
455
Access :: ReadWrite
459
456
}
460
- } ) ;
457
+ } )
458
+ }
459
+
460
+ #[ doc( hidden) ]
461
+ pub fn gen_register ( r : & Register , d : & Defaults ) -> Vec < Tokens > {
462
+ let mut items = vec ! [ ] ;
463
+
464
+ let ty = type_of ( r) ;
465
+ let name = Ident :: new ( & * ty) ;
466
+ let bits_ty = r. size
467
+ . or ( d. size )
468
+ . expect ( & format ! ( "{:#?} has no `size` field" , r) )
469
+ . to_ty ( ) ;
470
+ let access = access ( r) ;
461
471
462
472
let name_r = Ident :: new ( format ! ( "{}R" , ty) ) ;
463
473
let name_w = Ident :: new ( format ! ( "{}W" , ty) ) ;
0 commit comments