@@ -29,7 +29,9 @@ impl<'a> Fel<'a> {
2929 }
3030 }
3131 let ( Some ( endpoint_in) , Some ( endpoint_out) ) = ( endpoint_in, endpoint_out) else {
32- error ! ( "Malformed device. Allwinner USB FEL device should include exactly one bulk in and one bulk out endpoint." ) ;
32+ error ! (
33+ "Malformed device. Allwinner USB FEL device should include exactly one bulk in and one bulk out endpoint."
34+ ) ;
3335 return Err ( ( ) ) ;
3436 } ;
3537 debug ! (
@@ -50,7 +52,7 @@ impl<'a> Fel<'a> {
5052 self . send_fel_request ( FelRequest :: get_version ( ) ) ;
5153 self . usb_read ( & mut buf) ;
5254 self . read_fel_status ( ) ;
53- unsafe { core :: mem :: transmute ( buf) }
55+ buf. into ( )
5456 } )
5557 }
5658
@@ -76,7 +78,7 @@ impl<'a> Fel<'a> {
7678
7779 fn send_fel_request ( & self , request : FelRequest ) {
7880 trace ! ( "send_fel_request" ) ;
79- let buf: [ u8 ; 16 ] = unsafe { core :: mem :: transmute ( request) } ;
81+ let buf: [ u8 ; 16 ] = request. into ( ) ;
8082 self . usb_write ( & buf) ;
8183 }
8284
@@ -88,8 +90,7 @@ impl<'a> Fel<'a> {
8890
8991 fn usb_read ( & self , buf : & mut [ u8 ] ) {
9092 trace ! ( "usb_read" ) ;
91- let buf_1: [ u8 ; 36 ] =
92- unsafe { core:: mem:: transmute ( UsbRequest :: usb_read ( buf. len ( ) as u32 ) ) } ;
93+ let buf_1: [ u8 ; 36 ] = UsbRequest :: usb_read ( buf. len ( ) as u32 ) . into ( ) ;
9394 block_on ( self . iface . bulk_out ( self . endpoint_out , buf_1. to_vec ( ) ) )
9495 . status
9596 . expect ( "send_usb_request on usb_read transfer" ) ;
@@ -109,8 +110,7 @@ impl<'a> Fel<'a> {
109110
110111 fn usb_write ( & self , buf : & [ u8 ] ) {
111112 trace ! ( "usb_write" ) ;
112- let buf_1: [ u8 ; 36 ] =
113- unsafe { core:: mem:: transmute ( UsbRequest :: usb_write ( buf. len ( ) as u32 ) ) } ;
113+ let buf_1: [ u8 ; 36 ] = UsbRequest :: usb_write ( buf. len ( ) as u32 ) . into ( ) ;
114114 block_on ( self . iface . bulk_out ( self . endpoint_out , buf_1. to_vec ( ) ) )
115115 . status
116116 . expect ( "send_usb_request on usb_write transfer" ) ;
@@ -164,6 +164,13 @@ impl UsbRequest {
164164 }
165165}
166166
167+ impl From < UsbRequest > for [ u8 ; 36 ] {
168+ #[ inline]
169+ fn from ( value : UsbRequest ) -> Self {
170+ unsafe { core:: mem:: transmute ( src) }
171+ }
172+ }
173+
167174/// FEL request.
168175#[ repr( C ) ]
169176struct FelRequest {
@@ -203,6 +210,13 @@ impl FelRequest {
203210 }
204211}
205212
213+ impl From < FelRequest > for [ u8 ; 16 ] {
214+ #[ inline]
215+ fn from ( value : FelRequest ) -> Self {
216+ unsafe { core:: mem:: transmute ( value) }
217+ }
218+ }
219+
206220#[ derive( Copy , Clone ) ]
207221#[ repr( C ) ]
208222pub struct Version {
@@ -241,6 +255,13 @@ impl fmt::Debug for Version {
241255 }
242256}
243257
258+ impl From < [ u8 ; 32 ] > for Version {
259+ #[ inline]
260+ fn from ( value : [ u8 ; 32 ] ) -> Self {
261+ unsafe { core:: mem:: transmute ( value) }
262+ }
263+ }
264+
244265#[ derive( Debug ) ]
245266#[ repr( u32 ) ]
246267pub enum Chip {
0 commit comments