summaryrefslogtreecommitdiffstats
path: root/woferclock
diff options
context:
space:
mode:
authorRaptor Engineering Development Team <support@raptorengineering.com>2018-06-03 19:27:51 +0000
committerRaptor Engineering Development Team <support@raptorengineering.com>2018-06-03 19:27:51 +0000
commit257b47cc072d5ac64cb2cafdde3f9de26246c747 (patch)
tree1a17ef8fdafbd6433daacb10f8e90b5e42528e60 /woferclock
parent2e0db9d4b90ba1567f2a78739996d247a359d272 (diff)
downloadvpdtools-257b47cc072d5ac64cb2cafdde3f9de26246c747.tar.gz
vpdtools-257b47cc072d5ac64cb2cafdde3f9de26246c747.zip
Suppress transient I2C failure messages
Diffstat (limited to 'woferclock')
-rw-r--r--woferclock/README3
-rwxr-xr-xwoferclock/write_vpd22
2 files changed, 13 insertions, 12 deletions
diff --git a/woferclock/README b/woferclock/README
index 910ca47..be4bb6b 100644
--- a/woferclock/README
+++ b/woferclock/README
@@ -10,6 +10,3 @@ python
To overclock:
./woferclock_cpu
-
-Known issues:
-Depending on system version and/or kernel version, the VPD write step may spew write errors. This is normal, and the VPD is successfully updated if no VPD mismatch error is printed at the end of the update process.
diff --git a/woferclock/write_vpd b/woferclock/write_vpd
index 0105d83..225d32a 100755
--- a/woferclock/write_vpd
+++ b/woferclock/write_vpd
@@ -5,7 +5,9 @@
import sys
import os
+import time
import binascii
+import subprocess
eeprom_bus = int(sys.argv[1])
if sys.argv[2].startswith("0x") or sys.argv[2].startswith("0X"):
@@ -48,15 +50,17 @@ for i in range(0, vpd_length, 2):
address_low = hex(address & 255)
command = "i2cset -y " + str(eeprom_bus) + " 0x" + format(eeprom_address, '02x') + " " + address_high + " " + address_low + " 0x" + raw_data[i:(i+2)] + " i"
i2c_ret = os.system(command)
- exit_code = os.WEXITSTATUS(i2c_ret)
- if exit_code != 0:
- # Retry
- i2c_ret = os.system(command)
- exit_code = os.WEXITSTATUS(i2c_ret)
- if exit_code != 0:
- print "[ERROR] Write failed!"
- print "\tCommand was: " + command
- sys.exit(1)
+ try:
+ subprocess.check_call(command, stderr=subprocess.STDOUT, shell=True)
+ except:
+ # Retry, giving the SEEPROM some time to recover
+ time.sleep(0.1)
+ try:
+ subprocess.check_call(command, shell=True)
+ except:
+ print "[ERROR] Write failed!"
+ print "\tCommand was: " + command
+ sys.exit(1)
address = address + 1
sys.stdout.write(format(address, '05d') + " / " + format((vpd_length / 2), '05d') + "\r")
sys.stdout.flush()
OpenPOWER on IntegriCloud