#!/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 326A
i2cset -y 4 0x70 0x4A 0x08A3 w # A308
#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 326A
i2cset -y 5 0x70 0x4A 0x08A3 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
