#!/bin/sh

# ensure VCS ON_OFF_CONFIG set correctly from prior FW drivers
# A side
i2cset -y 4 0x70 0x00 0x01 b
i2cset -y 4 0x70 0x02 0x16 b #respond to ENABLE pin
i2cset -y 4 0x70 0x00 0x00 b
# B side
i2cset -y 5 0x70 0x00 0x01 b
i2cset -y 5 0x70 0x02 0x16 b #respond to ENABLE pin
i2cset -y 5 0x70 0x00 0x00 b

# vddio = 1.0V, mdat/sdat PU enabled
i2cset -y 4 0x12 0xFF 0x00 b # VDD/VCS 0
i2cset -y 4 0x12 0x2E 0x03 b # VDD/VCS 0
i2cset -y 4 0x13 0xFF 0x00 b # VDN 0
i2cset -y 4 0x13 0x2E 0x03 b # VDN 0
i2cset -y 5 0x12 0xFF 0x00 b # VDD/VCS 1
i2cset -y 5 0x12 0x2E 0x03 b # VDD/VCS 1
i2cset -y 5 0x13 0xFF 0x00 b # VDN 1
i2cset -y 5 0x13 0x2E 0x03 b # VDN 1

# A side VDDR - set to 1.23V
i2cset -y 4 0x71 0x00 0x01
i2cset -y 4 0x71 0x21 0x3B 0x01 i
i2cset -y 4 0x71 0x00 0x00

# B side VDDR - set to 1.23V
i2cset -y 5 0x71 0x00 0x01
i2cset -y 5 0x71 0x21 0x3B 0x01 i
i2cset -y 5 0x71 0x00 0x00

# VDN A - PGOOD_ON threshold
i2cset -y 4 0x71 0x00 0x00 b # PAGE
i2cset -y 4 0x71 0x5E 0xCD 0x00 i # set to 0.8V

# VDN B - PGOOD_ON threshold
i2cset -y 5 0x71 0x00 0x00 b # PAGE
i2cset -y 5 0x71 0x5E 0xCD 0x00 i # set to 0.8V

# unbind ucd driver to permit i2cset
ucd_retries=5
ucd=

ucdpath="/sys/bus/i2c/drivers/ucd9000"
if [ -e $ucdpath ]
then
  ucd=`ls -1 $ucdpath | grep 64`
  if [ -n "$ucd" ]
  then
    echo $ucd > $ucdpath/unbind
  fi
fi

# make sure VCS ON_OFF_CONFIG set correctly from old FW releases
i2cset -y 11 0x64 0x00 0x0E i
i2cset -y 11 0x64 0x02 0x16 i
i2cset -y 11 0x64 0x00 0x0F i
i2cset -y 11 0x64 0x02 0x16 i

## move memory enables to align with VDN (VDN to VDDR leakage issue)
#GPO_CONFIG_1 (GPIO15) : mem 0 reg enables
i2cset -y 11 0x64 0xF7 0x00 i
i2cset -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
#GPO_CONFIG_2 (GPIO7) : mem 1 reg enables
i2cset -y 11 0x64 0xF7 0x01 i
i2cset -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

# change VDN delays based on UCD MFR_REVISION setting
REV=`i2cget -y 11 0x64 0x9B i 2|cut -f2 -d' '`
if [ "$REV" == "0x01" -o "$REV" == "0x02" ] ; then
  # use 20ms delay for VDN
  #TON_DELAY rail 8
  i2cset -y 11 0x64 0x00 0x07 i
  i2cset -y 11 0x64 0x60 0x80 0xDA i
  #TON_DELAY rail 9
  i2cset -y 11 0x64 0x00 0x08 i
  i2cset -y 11 0x64 0x60 0x80 0xDA i
else
  # use 70ms delay for VDN
  #TON_DELAY rail 8
  i2cset -y 11 0x64 0x00 0x07 i
  i2cset -y 11 0x64 0x60 0x30 0xEA i
  #TON_DELAY rail 9
  i2cset -y 11 0x64 0x00 0x08 i
  i2cset -y 11 0x64 0x60 0x30 0xEA i
fi

# Raise AVDD +100mV
i2cset -y 11 0x64 0x00 0x09 i # set PAGE
i2cset -y 11 0x64 0xF5 0x81 i # set margin_config
i2cset -y 11 0x64 0x21 0x85 0x33 i # set VOUT_COMMAND

# Increase over-current settings
#VDD A phase current
i2cset -y 4 0x12 0xFF 0x04 b    # set window register high byte to 4
i2cset -y 4 0x12 0x3C 0x80 b    # Set to 64A
#VDD B phase current
i2cset -y 5 0x12 0xFF 0x04 b    # set window register high byte to 4
i2cset -y 5 0x12 0x3C 0x80 b    # Set to 64A
#VDD A master OC fault to 445A
i2cset -y 4 0x70 0x00 0x00 b    # PAGE
i2cset -y 4 0x70 0x46 0x08DE w
# VDD A master OC warn to 384A
i2cset -y 4 0x70 0x4A 0x08C0 w
#VDD B master OC fault to 445A
i2cset -y 5 0x70 0x00 0x00 b    # PAGE
i2cset -y 5 0x70 0x46 0x08DE w
# VDD B master OC warn to 384A
i2cset -y 5 0x70 0x4A 0x08C0 w
#VCS phase current to 30A C/C
i2cset -y 4 0x12 0xFF 0x08 b    # set window register to 8
i2cset -y 4 0x12 0x3C 0x3C b    # 30A
i2cset -y 5 0x12 0xFF 0x08 b    # set window register to 8
i2cset -y 5 0x12 0x3C 0x3C b    # 30A
#VCS master OC to 43A
i2cset -y 4 0x70 0x00 0x01 # PAGE 1
i2cset -y 4 0x70 0x46 0x0816 w # OC to 43A
i2cset -y 5 0x70 0x00 0x01 # PAGE 1
i2cset -y 5 0x70 0x46 0x0816 w # OC to 43A

# re-bind ucd driver only if we unbound it (i.e. ucd has been set with a value)
if [ -e $ucdpath -a -n "$ucd" ]; then
  j=0
  until [ $j -ge $ucd_retries ] || [ -e $ucdpath/$ucd ]; do
    j=$((j+1))
    echo $ucd > $ucdpath/bind || ret=$?
    if [ $j -gt 1 ]; then
      echo "rebinding UCD driver. Retry number $j"
      sleep 1
    fi
  done
  if [ ! -e $ucdpath/$ucd ]; then exit $ret; fi
fi
