13dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 23dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao# Use of this source code is governed by a BSD-style license that can be 33dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao# found in the LICENSE file. 43dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 5039dee0560d0bf5526fdde42dd4595db7ddd0e87Tan Gaoimport datetime 63dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gaofrom autotest_lib.client.bin import test 7039dee0560d0bf5526fdde42dd4595db7ddd0e87Tan Gaofrom autotest_lib.client.common_lib import error, smogcheck_tpm, smogcheck_util 83dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 93dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 103dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gaoclass hardware_TPMtspi(test.test): 113dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao version = 1 123dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 133dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao def setup(self): 14039dee0560d0bf5526fdde42dd4595db7ddd0e87Tan Gao smogcheck_util.enableI2C() 153dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 163dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao def _prepareTpmController(self): 173dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao """Prepare a TpmController instance for use. 183dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 193dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao Returns: 203dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao an operational TpmControler instance, ready to use. 213dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao """ 223dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao try: 233dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao return smogcheck_tpm.TpmController() 243dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao except smogcheck_tpm.SmogcheckError, e: 253dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao raise error.TestFail('Error creating a TpmController: %s', e) 263dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 273dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao def run_once(self): 283dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao self.tpm_obj = self._prepareTpmController() 293dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 303dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao start_time = datetime.datetime.now() 313dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao try: 323dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao self.tpm_obj.setupContext() 333dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao self.tpm_obj.getTpmVersion() 343dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao self.tpm_obj.runTpmSelfTest() 353dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 363dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 373dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.takeTpmOwnership() 383dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 393dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 403dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.clearTpm() 413dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 423dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 433dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmActive('status') 443dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 453dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 463dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmActive('deactivate') 473dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 483dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 493dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmActive('activate') 503dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 513dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 523dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmActive('temp') 533dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 543dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 553dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmClearable('status') 563dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 573dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 583dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmClearable('owner') 593dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 603dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # TODO(tgao): uncomment to enable. 613dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao #self.tpm_obj.setTpmClearable('force') 623dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 633dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao except smogcheck_tpm.SmogcheckError, e: 643dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao raise error.TestFail('Error: %r' % e) 653dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao finally: 663dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao # Close TPM context 673dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao if self.tpm_obj.closeContext(): 683dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao raise error.TestFail('Error closing tspi context') 693dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao 703dc542c25031637adcdfe164d04502c6c5cea0d2Tan Gao end_time = datetime.datetime.now() 71039dee0560d0bf5526fdde42dd4595db7ddd0e87Tan Gao smogcheck_util.computeTimeElapsed(end_time, start_time) 72