blob: 81cace30c6774a09fdd44894431aa05cfe53d848 [file] [log] [blame]
Sergey Solomin11d63cf2016-11-28 15:03:24 -06001#!/bin/sh
2# #############################################################
3# script to disable UCD VCS rails.
4# This REQUIRES unaltered/original UCD cfg file.
5# 10/28/16 PGR -
6# 11/10/16 PGR - unbind/bind UCD driver
7
Saqib Khanc8c939e2017-03-13 12:37:16 -05008ucd_retries=5
Andrew Jefferyf1c63222017-03-23 10:54:24 +10309ucd=
Saqib Khanc8c939e2017-03-13 12:37:16 -050010
Sergey Solomin11d63cf2016-11-28 15:03:24 -060011# unbind ucd driver to permit i2cset
12ucdpath="/sys/bus/i2c/drivers/ucd9000"
13if [ -e $ucdpath ]
14then
Andrew Jefferyf1c63222017-03-23 10:54:24 +103015 ucd=`ls -1 $ucdpath | grep 64`
16 if [ -n "$ucd" ]
17 then
18 echo $ucd > $ucdpath/unbind
19 fi
Sergey Solomin11d63cf2016-11-28 15:03:24 -060020fi
21
Andrew Geisslerba9d64a2017-07-29 16:06:05 -050022## program UCD to bypass VCS (DD1 issue)
23## move memory enables to align with VDN (VDN to VDDR leakage issue)
24## remove GPU PGOOD from system reset.
25#GPO_CONFIG_1 (GPIO15)
Sergey Solomin11d63cf2016-11-28 15:03:24 -060026i2cset -y 11 0x64 0xF7 0x00 i
Andrew Geisslerba9d64a2017-07-29 16:06:05 -050027i2cset -y 11 0x64 0xF8 0x15 0x6E 0x80 0x08 0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 i
28#GPO_CONFIG_2 (GPIO7)
Sergey Solomin11d63cf2016-11-28 15:03:24 -060029i2cset -y 11 0x64 0xF7 0x01 i
Andrew Geisslerba9d64a2017-07-29 16:06:05 -050030i2cset -y 11 0x64 0xF8 0x15 0x16 0x80 0x08 0x00 0x00 0x20 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 i
31#SYSTEM_RESET_CONFIG
32i2cset -y 11 0x64 0xD2 0x09 0x3F 0xFF 0x27 0x0A 0x00 0x06 0x00 0x00 0x02 i
33#ON_OFF_CONFIG rail 15
Sergey Solomin11d63cf2016-11-28 15:03:24 -060034i2cset -y 11 0x64 0x00 0x0E i
35i2cset -y 11 0x64 0x02 0x1A i
Andrew Geisslerba9d64a2017-07-29 16:06:05 -050036#ON_OFF_CONFIG rail 16
Sergey Solomin11d63cf2016-11-28 15:03:24 -060037i2cset -y 11 0x64 0x00 0x0F i
38i2cset -y 11 0x64 0x02 0x1A i
Andrew Geisslerba9d64a2017-07-29 16:06:05 -050039# change VDN delays based on UCD MFR_REVISION setting
40REV=`i2cget -y 11 0x64 0x9B i 2|cut -f2 -d' '`
41if [ "$REV" == "0x01" -o "$REV" == "0x02" ] ; then
42 # use 20ms delay for VDN
43 #TON_DELAY rail 8
44 i2cset -y 11 0x64 0x00 0x07 i
45 i2cset -y 11 0x64 0x60 0x80 0xDA i
46 #TON_DELAY rail 9
47 i2cset -y 11 0x64 0x00 0x08 i
48 i2cset -y 11 0x64 0x60 0x80 0xDA i
49else
50 # use 70ms delay for VDN
51 #TON_DELAY rail 8
52 i2cset -y 11 0x64 0x00 0x07 i
53 i2cset -y 11 0x64 0x60 0x30 0xEA i
54 #TON_DELAY rail 9
55 i2cset -y 11 0x64 0x00 0x08 i
56 i2cset -y 11 0x64 0x60 0x30 0xEA i
57fi
Sergey Solomin11d63cf2016-11-28 15:03:24 -060058
Andrew Jefferyf1c63222017-03-23 10:54:24 +103059# re-bind ucd driver only if we unbound it (i.e. ucd has been set with a value)
60if [ -e $ucdpath -a -n "$ucd" ]; then
Saqib Khanc8c939e2017-03-13 12:37:16 -050061 j=0
62 until [ $j -ge $ucd_retries ] || [ -e $ucdpath/$ucd ]; do
63 j=$((j+1))
Saqib Khane71ba0b2017-02-08 10:13:01 -060064 echo $ucd > $ucdpath/bind || ret=$?
Andrew Geisslerba9d64a2017-07-29 16:06:05 -050065 if [ $j -gt 1 ]; then
66 echo "rebinding UCD driver. Retry number $j"
67 sleep 1
Saqib Khanc8c939e2017-03-13 12:37:16 -050068 fi
Saqib Khane71ba0b2017-02-08 10:13:01 -060069 done
70 if [ ! -e $ucdpath/$ucd ]; then exit $ret; fi
Sergey Solomin11d63cf2016-11-28 15:03:24 -060071fi
Saqib Khane71ba0b2017-02-08 10:13:01 -060072