OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # | 2 # |
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """ | 7 """ |
8 gooftool: Google Factory Tool, providing all Google Required Test | 8 gooftool: Google Factory Tool, providing all Google Required Test |
9 functionality. | 9 functionality. |
10 """ | 10 """ |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 VerboseMsg('MatchComponentsDatabases: Matching current system by %s' % db) | 99 VerboseMsg('MatchComponentsDatabases: Matching current system by %s' % db) |
100 (matched, failure) = hwcomp.match_current_system(db) | 100 (matched, failure) = hwcomp.match_current_system(db) |
101 if failure: | 101 if failure: |
102 DebugMsg('Unmatched for %s:%s\n' % (db, hwcomp.pformat(failure))) | 102 DebugMsg('Unmatched for %s:%s\n' % (db, hwcomp.pformat(failure))) |
103 else: | 103 else: |
104 matched_list[db] = matched | 104 matched_list[db] = matched |
105 VerboseMsg('Matched: %s' % db) | 105 VerboseMsg('Matched: %s' % db) |
106 return matched_list | 106 return matched_list |
107 | 107 |
108 | 108 |
109 def EnableWriteProtect(target): | 109 def EnableWriteProtect(target, image): |
110 """ Enables and verifies firmware write protection. """ | 110 """ Enables and verifies firmware write protection. """ |
111 return gft_wpfw.EnableWriteProtect(target) | 111 return gft_wpfw.EnableWriteProtect(target, image) |
112 | 112 |
113 | 113 |
114 def WriteGBB(db_file): | 114 def WriteGBB(db_file): |
115 """ Writes a prepared GBB data to system main firwmare. """ | 115 """ Writes a prepared GBB data to system main firwmare. """ |
116 flashrom = flashrom_util.flashrom_util(verbose_msg=VerboseMsg, | 116 flashrom = flashrom_util.flashrom_util(verbose_msg=VerboseMsg, |
117 exception_type=gft_common.GFTError) | 117 exception_type=gft_common.GFTError) |
118 flashrom.select_target('bios') | 118 flashrom.select_target('bios') |
119 image_file = gft_common.GetTemporaryFileName('wgbb') | 119 image_file = gft_common.GetTemporaryFileName('wgbb') |
120 if not flashrom.read_whole_to_file(image_file): | 120 if not flashrom.read_whole_to_file(image_file): |
121 ErrorDie('WriteGBB: failed to read current firmware.') | 121 ErrorDie('WriteGBB: failed to read current firmware.') |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 ErrorDie('upload_report: failed to upload.') | 305 ErrorDie('upload_report: failed to upload.') |
306 return True | 306 return True |
307 | 307 |
308 | 308 |
309 @GFTLogCommand | 309 @GFTLogCommand |
310 def wpfw(): | 310 def wpfw(): |
311 """ Enables and verifies firmware write protection. """ | 311 """ Enables and verifies firmware write protection. """ |
312 if g_options.debug_dryrun_wpfw: | 312 if g_options.debug_dryrun_wpfw: |
313 ErrorMsg('wpfw is by-passed. This device CANNOT be qualified.') | 313 ErrorMsg('wpfw is by-passed. This device CANNOT be qualified.') |
314 return True | 314 return True |
315 if EnableWriteProtect('ec') and EnableWriteProtect('bios'): | 315 hwcomp = InitializeHardwareComponents(do_probe=False) |
316 return True | 316 # TODO(hungte) chrome-os-partner:3023 We need a cleaner way for EC detection, |
317 ErrorDie('wpfw: failed to enable firmware write protection.') | 317 # for examing using crossystem. Currently we only know there is no EC on arm. |
| 318 with os.popen("uname -m") as uname_process: |
| 319 arch = uname_process.read().strip() |
| 320 read_binary = gft_common.ReadBinaryFile |
| 321 target_set = [('ec', hwcomp.load_ec_firmware), |
| 322 ('bios', hwcomp.load_main_firmware)] |
| 323 if arch.startswith('arm'): |
| 324 VerboseMsg('wpfw: ARM platform detected, ignore EC.') |
| 325 assert target_set[0][0] == 'ec' |
| 326 target_set = target_set[1:] |
| 327 assert len(target_set) |
| 328 for target_name, loader_api in target_set: |
| 329 if not EnableWriteProtect(target_name, read_binary(loader_api())): |
| 330 ErrorDie('wpfw: failed to enable firmware write protection.') |
| 331 return True |
318 | 332 |
319 | 333 |
320 @GFTLogCommand | 334 @GFTLogCommand |
321 def prepare_wipe(): | 335 def prepare_wipe(): |
322 """ Prepares system to reboot for transitioning to release state. """ | 336 """ Prepares system to reboot for transitioning to release state. """ |
323 if g_options.debug_dryrun_prepare_wipe: | 337 if g_options.debug_dryrun_prepare_wipe: |
324 ErrorMsg('prepare_wipe is by-passed. This device CANNOT be qualified.') | 338 ErrorMsg('prepare_wipe is by-passed. This device CANNOT be qualified.') |
325 return True | 339 return True |
326 wipe_script = os.path.join(os.path.split(sys.argv[0])[0], | 340 wipe_script = os.path.join(os.path.split(sys.argv[0])[0], |
327 'gft_prepare_wipe.sh') | 341 'gft_prepare_wipe.sh') |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 return_value = 1 | 491 return_value = 1 |
478 executed_commands = executed_commands + 1 | 492 executed_commands = executed_commands + 1 |
479 | 493 |
480 if executed_commands == 0: | 494 if executed_commands == 0: |
481 parser.print_help() | 495 parser.print_help() |
482 return return_value | 496 return return_value |
483 | 497 |
484 | 498 |
485 if __name__ == '__main__': | 499 if __name__ == '__main__': |
486 sys.exit(_main()) | 500 sys.exit(_main()) |
OLD | NEW |