#!/bin/bash
if [ -e /sys/devices/platform/bone_capemgr/slots ]
then
   CAPE=/sys/devices/platform/bone_capemgr/slots
else
   CAPE=/sys/devices/bone_capemgr.*/slots
   # Enable A/D
   echo cape-bone-iio > $CAPE
fi

# Depending up default pullup since we haven't loaded the overlay
echo 61 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio61/direction
REV=`cat /sys/class/gpio/gpio61/value`
if [ $REV == '0' ]; then
   echo Rev C Board
   /usr/bin/dtc -O dtb -o emu-00C0.dtbo -b 0 -@ emu-00C0.dts
   cp emu-00C0.dtbo /lib/firmware
   echo emu:00C0 > $CAPE
   # 31 drive1 select/recovery, 51 write fault(C)
   # 60 emulation xcvr en
   # 48 testing(C)
   pins_low="31 48 51 60"
   # 14,30(C) drive selected LEDS
   # 50 mfm read xcvr en
   pins_high="14 30 50"
else
   /usr/bin/dtc -O dtb -o emu-00A0.dtbo -b 0 -@ emu-00A0.dts
   cp emu-00A0.dtbo /lib/firmware
   echo emu:00A0 > $CAPE
   # 30 track0(B), 31 drive1 select/recovery, 51 write fault(C)
   # 60 emulation xcvr en
   # 61 testing(B)
   pins_low="30 31 51 60"
   # 14,15(B) drive selected LEDS
   # 50 mfm read xcvr en
   pins_high="14 15 50"
   # Detect A/B PIN
   echo 46 > /sys/class/gpio/export
   echo in > /sys/class/gpio/gpio46/direction
   REV=`cat /sys/class/gpio/gpio46/value`
   if [ $REV == '0' ]; then
      echo Rev B Board
   else
      echo Rev A Board
   fi
fi

# 2-5, 22,23,26,27 Drive select and head select
pins="2 3 4 5 22 23 26 27 8 9 10 11"
for pin in $pins; do
   echo $pin > /sys/class/gpio/export
   echo in > /sys/class/gpio/gpio$pin/direction
done

for pin in $pins_low; do
   echo $pin > /sys/class/gpio/export
   echo low > /sys/class/gpio/gpio$pin/direction
done

for pin in $pins_high; do
   echo $pin > /sys/class/gpio/export
   echo high > /sys/class/gpio/gpio$pin/direction
done

