From c8730cb6908b1a92dfe4b966c6c428ac45aaf551 Mon Sep 17 00:00:00 2001 From: Aravind Mani Date: Wed, 3 Feb 2021 12:34:00 +0530 Subject: [PATCH] Fix Dell S6000 reboot failure issue --- .../platform_reboot | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/platform_reboot b/device/dell/x86_64-dell_s6000_s1220-r0/platform_reboot index d973f4f810e1..28f2ec626605 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/platform_reboot +++ b/device/dell/x86_64-dell_s6000_s1220-r0/platform_reboot @@ -4,10 +4,11 @@ import sys import os import struct +PORT_RES = '/dev/port' NVRAM_RES = '/dev/nvram' COLD_RESET = 0xE # Cold Reset WARM_RESET = 0x6 # Warm Reset - +RESET_REG = 0xCF9 def io_reg_write(resource, offset, val): fd = os.open(resource, os.O_RDWR) @@ -23,39 +24,40 @@ def io_reg_write(resource, offset, val): return os.close(fd) - def power_reset(val): with open('/sys/devices/platform/dell-s6000-cpld.0/power_reset', 'w') as p: p.write(str(int(val)) + '\n') p.flush() - def gpio_direction(pin, direction): kernpath = '/sys/class/gpio/gpio'+str(pin)+'/direction' with open(('kernpath'), 'w') as p: p.write(str(direction) + '\n') p.flush() - def gpio_set(pin, value): kernpath = '/sys/class/gpio/gpio'+str(pin)+'/value' with open(('kernpath'), 'w') as p: p.write(str(int(value)) + '\n') p.flush() - def gpio_export(value): with open('/sys/class/gpio/export', 'w') as p: p.write(str(int(value)) + '\n') p.flush() - if __name__ == "__main__": + + retry_count = 0 io_reg_write(NVRAM_RES, 0x49, COLD_RESET) - if not os.path.isdir("/sys/class/gpio/gpio10"): - gpio_export(10) - gpio_direction("10", "out") - # Toggle GPIO10 pin (to reset MUX) - gpio_set("10", 1) - gpio_set("10", 0) - power_reset(1) + + while retry_count < 3: + if not os.path.isdir("/sys/class/gpio/gpio10"): + gpio_export(10) + gpio_direction("10", "out") + # Toggle GPIO10 pin (to reset MUX) + gpio_set("10", 1) + gpio_set("10", 0) + power_reset(1) + retry_count += 1 + io_reg_write(PORT_RES, RESET_REG, COLD_RESET)