@@ -4,10 +4,11 @@ import sys
4
4
import os
5
5
import struct
6
6
7
+ PORT_RES = '/dev/port'
7
8
NVRAM_RES = '/dev/nvram'
8
9
COLD_RESET = 0xE # Cold Reset
9
10
WARM_RESET = 0x6 # Warm Reset
10
-
11
+ RESET_REG = 0xCF9
11
12
12
13
def io_reg_write (resource , offset , val ):
13
14
fd = os .open (resource , os .O_RDWR )
@@ -23,39 +24,40 @@ def io_reg_write(resource, offset, val):
23
24
return
24
25
os .close (fd )
25
26
26
-
27
27
def power_reset (val ):
28
28
with open ('/sys/devices/platform/dell-s6000-cpld.0/power_reset' , 'w' ) as p :
29
29
p .write (str (int (val )) + '\n ' )
30
30
p .flush ()
31
31
32
-
33
32
def gpio_direction (pin , direction ):
34
33
kernpath = '/sys/class/gpio/gpio' + str (pin )+ '/direction'
35
34
with open (('kernpath' ), 'w' ) as p :
36
35
p .write (str (direction ) + '\n ' )
37
36
p .flush ()
38
37
39
-
40
38
def gpio_set (pin , value ):
41
39
kernpath = '/sys/class/gpio/gpio' + str (pin )+ '/value'
42
40
with open (('kernpath' ), 'w' ) as p :
43
41
p .write (str (int (value )) + '\n ' )
44
42
p .flush ()
45
43
46
-
47
44
def gpio_export (value ):
48
45
with open ('/sys/class/gpio/export' , 'w' ) as p :
49
46
p .write (str (int (value )) + '\n ' )
50
47
p .flush ()
51
48
52
-
53
49
if __name__ == "__main__" :
50
+
51
+ retry_count = 0
54
52
io_reg_write (NVRAM_RES , 0x49 , COLD_RESET )
55
- if not os .path .isdir ("/sys/class/gpio/gpio10" ):
56
- gpio_export (10 )
57
- gpio_direction ("10" , "out" )
58
- # Toggle GPIO10 pin (to reset MUX)
59
- gpio_set ("10" , 1 )
60
- gpio_set ("10" , 0 )
61
- power_reset (1 )
53
+
54
+ while retry_count < 3 :
55
+ if not os .path .isdir ("/sys/class/gpio/gpio10" ):
56
+ gpio_export (10 )
57
+ gpio_direction ("10" , "out" )
58
+ # Toggle GPIO10 pin (to reset MUX)
59
+ gpio_set ("10" , 1 )
60
+ gpio_set ("10" , 0 )
61
+ power_reset (1 )
62
+ retry_count += 1
63
+ io_reg_write (PORT_RES , RESET_REG , COLD_RESET )
0 commit comments