#!/bin/sh

if ! runnable glaser; then
  # TODO(apenwarr): /etc should be readonly.
  echo "Switching to GPON mode."
  serial=$(serial)
  if [ ! -z "$serial" ]; then
    # simple py script to replace the placeholder serial with the real serial.
    subst_script="
import sys
import re
sys.stdout.write(re.sub(r'SERIALXXYYZZ', '$serial', sys.stdin.read()))
"
    # Do the replace.
    cat /etc/xml_params/gpon_xml_cfg_file.xml | \
      python -c "$subst_script" >/etc/xml_params/pon_xml_cfg_file.xml
  else
  cp -sf /etc/xml_params/gpon_xml_cfg_file.xml \
         /etc/xml_params/pon_xml_cfg_file.xml
  fi
  cp -sf /etc/xml_params/pon_type_xml_cfg_file_gpon.xml \
    /etc/xml_params/pon_type_xml_cfg_file.xml
  cp -sf /etc/xml_params/tpm_xml_cfg_file_gpon.xml \
         /etc/xml_params/tpm_xml_cfg_file.xml
fi

case "$1" in
  start)
    echo "Starting data configuration."
    # Clean BM's cause register
    devmem2 0xf10d0050 w 0

    ipg_set=0

    # Set PNC_AGING_LO_THRESH_REGISTERS to maximum value
    devmem2 0xf10c802c w 0x3FFFFFF
    devmem2 0xf10c8030 w 0x3FFFFFF
    devmem2 0xf10c8034 w 0x3FFFFFF
    devmem2 0xf10c8038 w 0x3FFFFFF

    # Double PnC buffers for ports PMAC/GMAC0
    devmem2 0xf10c8000 w 0x377777

    if [ "$ipg_set" = 1 ]; then
      cd /sys/devices/platform/neta/switch &&
      echo 3 26 2 0x0834 >reg_w &&
      sleep 1 &&
      echo 2 26 2 0xb402 >reg_w &&
      sleep 1
      cd /
      devmem2 0xf1072c00 w 0x8c00
      devmem2 0xf1072c48 w 0x281
      devmem2 0xf1072c00 w 0x8c01
    fi

    cd /sys/devices/platform/neta/gbe &&
    echo 0 0x2F00 >mh_2B &&
    echo 1 0x1F00 >mh_2B
    ;;
  stop)
    ;;
  restart|reload)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac
