-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy paththmc50.sh
executable file
·144 lines (116 loc) · 4 KB
/
thmc50.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/bin/bash
i2c_addr=2e
dir=$(dirname $0)
. ${dir}/common.sh
modprobe -r i2c-stub 2>/dev/null
modprobe i2c-stub chip_addr=0x${i2c_addr}
if [ $? -ne 0 ]
then
echo must be root
exit 1
fi
adapter=$(grep "SMBus stub driver" /sys/class/i2c-adapter/*/name | cut -f1 -d: | cut -f5 -d/ | cut -f2 -d-)
i2cset -f -y ${adapter} 0x${i2c_addr} 0x13 0x4e b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x14 0x4e b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x15 0x00 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x17 0x64 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x18 0x64 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x19 0x00 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x20 0x20 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x26 0x27 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x27 0x37 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x2b 0x35 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x2c 0x81 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x37 0x35 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x38 0x81 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x39 0x35 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x3a 0x81 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x3e 0x49 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x3f 0xd2 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x40 0x2b b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x41 0x10 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x43 0x96 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x4b 0x00 b
i2cset -f -y ${adapter} 0x${i2c_addr} 0x4c 0x02 b
echo thmc50 0x${i2c_addr} > /sys/class/i2c-adapter/i2c-${adapter}/new_device 2>/dev/null
base=$(getbase ${adapter} 00${i2c_addr})
if [ "${base}" = "" -o ! -d "${base}" ]
then
echo fail: No hwmon device
exit 1
fi
cd ${base}
attrs=(name pwm1 pwm1_mode
temp1_alarm temp1_crit temp1_input temp1_max temp1_min
temp2_alarm temp2_crit temp2_fault temp2_input temp2_max temp2_min
)
vals=(thmc50 1 0 0 78000 55000 53000 -127000 0 78000 0 39000 53000 -127000)
dotest attrs[@] vals[@]
rv=$?
for t in $(seq 1 2)
do
check_range -b ${base} -d 1000 -r -q temp${t}_min
rv=$(($? + ${rv}))
check_range -b ${base} -d 1000 -r -q temp${t}_max
rv=$(($? + ${rv}))
done
check_range -b ${base} -l 0 -u 255 -d 0 -r -q pwm1
rv=$(($? + ${rv}))
if [ ${rv} -ne 0 ]
then
exit ${rv}
fi
echo 0x${i2c_addr} > /sys/class/i2c-adapter/i2c-${adapter}/delete_device 2>/dev/null
# Now test with adm1022 register set
regs=(ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 5a 5a 02 ff 46 64 01 ff ff ff ff ff ff
21 ff ff ff ff ff 20 25 ff ff ff 7f 00 ff ff ff
ff ff ff ff ff ff ff 7f 00 7f 80 ff ff ff 41 c9
ad 00 ff d5 04 ff ff 50 ff ff 01 ff 00 ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff 5a 5a 02 ff 46 64 01 ff ff ff ff ff ff
21 ff ff ff ff ff 20 25 ff ff ff 7f 00 ff ff ff
ff ff ff ff ff ff ff 7f 00 7f 80 ff ff ff ff c9
ad 00 ff d5 04 ff ff 50 ff ff 01 ff 00 ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
)
i=0
while [ $i -lt ${#regs[*]} ]
do
i2cset -f -y ${adapter} 0x${i2c_addr} $i 0x${regs[$i]} b
i=$(($i + 1))
done
echo adm1022 0x${i2c_addr} > /sys/class/i2c-adapter/i2c-${adapter}/new_device 2>/dev/null
base=$(getbase ${adapter} 00${i2c_addr})
if [ "${base}" = "" -o ! -d "${base}" ]
then
echo fail: No hwmon device
exit 1
fi
cd ${base}
attrs=(name pwm1 pwm1_mode
temp1_alarm temp1_crit temp1_input temp1_max temp1_min
temp2_alarm temp2_crit temp2_fault temp2_input temp2_max temp2_min
temp3_alarm temp3_crit temp3_fault temp3_input temp3_max temp3_min
)
vals=(adm1022 1 0 0 90000 37000 127000 -128000 0 90000 0 32000 127000 0 0 90000 0
33000 127000 0)
dotest attrs[@] vals[@]
rv=$?
for t in $(seq 1 3)
do
check_range -b ${base} -d 1000 -r -q temp${t}_min
rv=$(($? + ${rv}))
check_range -b ${base} -d 1000 -r -q temp${t}_max
rv=$(($? + ${rv}))
done
check_range -b ${base} -l 0 -u 255 -d 0 -r -q pwm1
rv=$(($? + ${rv}))
modprobe -r i2c-stub 2>/dev/null
modprobe -r thmc50
exit ${rv}