@@ -145,38 +145,39 @@ pub fn parse_ec_version_str(version: &str) -> Option<ImageVersionDetails> {
145
145
146
146
/// Parse version information from EC FW image buffer
147
147
pub fn read_ec_version ( data : & [ u8 ] , ro : bool ) -> Option < ImageVersionData > {
148
+ // First try to find the legacy EC version
148
149
let offset = if ro {
149
150
EC_RO_VER_OFFSET
150
151
} else {
151
152
EC_RW_VER_OFFSET
152
153
} ;
153
- let offset_zephyr = if ro {
154
- EC_RO_VER_OFFSET_ZEPHYR
155
- } else {
156
- EC_RW_VER_OFFSET_ZEPHYR
157
- } ;
158
-
159
154
if data. len ( ) < offset + core:: mem:: size_of :: < _ImageVersionData > ( ) {
160
155
return None ;
161
156
}
162
157
let v: _ImageVersionData = unsafe { std:: ptr:: read ( data[ offset..] . as_ptr ( ) as * const _ ) } ;
163
158
if v. cookie1 != CROS_EC_IMAGE_DATA_COOKIE1 {
164
- debug ! ( "Failed to find Cookie 1. Found: {:X?}" , { v. cookie1 } ) ;
159
+ debug ! ( "Failed to find legacy Cookie 1. Found: {:X?}" , { v. cookie1 } ) ;
165
160
} else if v. cookie2 != CROS_EC_IMAGE_DATA_COOKIE2 {
166
- debug ! ( "Failed to find Cookie 2. Found: {:X?}" , { v. cookie2 } ) ;
161
+ debug ! ( "Failed to find legacy Cookie 2. Found: {:X?}" , { v. cookie2 } ) ;
167
162
} else {
168
163
return parse_ec_version ( & v) ;
169
164
}
170
165
166
+ // If not present, find Zephyr EC version
167
+ let offset_zephyr = if ro {
168
+ EC_RO_VER_OFFSET_ZEPHYR
169
+ } else {
170
+ EC_RW_VER_OFFSET_ZEPHYR
171
+ } ;
171
172
if data. len ( ) < offset_zephyr + core:: mem:: size_of :: < _ImageVersionData > ( ) {
172
173
return None ;
173
174
}
174
175
let v: _ImageVersionData =
175
176
unsafe { std:: ptr:: read ( data[ offset_zephyr..] . as_ptr ( ) as * const _ ) } ;
176
177
if v. cookie1 != CROS_EC_IMAGE_DATA_COOKIE1 {
177
- debug ! ( "Failed to find Cookie 1. Found: {:X?}" , { v. cookie1 } ) ;
178
+ debug ! ( "Failed to find Zephyr Cookie 1. Found: {:X?}" , { v. cookie1 } ) ;
178
179
} else if v. cookie2 != CROS_EC_IMAGE_DATA_COOKIE2 {
179
- debug ! ( "Failed to find Cookie 2. Found: {:X?}" , { v. cookie2 } ) ;
180
+ debug ! ( "Failed to find Zephyr Cookie 2. Found: {:X?}" , { v. cookie2 } ) ;
180
181
} else {
181
182
return parse_ec_version ( & v) ;
182
183
}
0 commit comments