#!/bin/bash

# Initial Author: D.Bienz
# This script shall be used to prepare the required GPIOs after booting into Linux

########### Export of general GPIOs ###############
#HW Reset (gpio0)
echo 0 > /sys/class/gpio/export
#MODBUS_CPU_MC_SWITCH (gpio2)
echo 2 > /sys/class/gpio/export

#BOARD_DETECTION (gpio10) SOM-pin 169
echo 10 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio10/direction

#BOARD_DETECTION (gpio11) SOM-pin 167
echo 11 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio11/direction

#RESET_CCS_4 (gpio12)
echo 12 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio12/direction

#ENABLE PCA9634 only on controller board >= rev2 (gpio54)
echo 54 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio54/direction

#RESET_CHAdeMO_2 (gpio113)
echo 113 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio113/direction

#RESET_CCS_2 (gpio114)
echo 114 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio114/direction

#RESET_ADE7878_1 (gpio115)
echo 115 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio115/direction

#RESET_ADE7878_2 (gpio120)
echo 120 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio120/direction

#RESET_CHAdeMO_1 (gpio126)
echo 126 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio126/direction

#RESET_CCS_1 (gpio127)
echo 127 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio127/direction

#RESET_AC_1 (gpio133)
echo 133 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio133/direction

#RESET_AC_2 (gpio138)
echo 138 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio138/direction

#RESET_MODEM (gpio139)
echo 139 > /sys/class/gpio/export
# The direction and value of gpio139 is set by the new uboot version in 2.2.22+
# On the first boot after the update, the new uboot is being installed after the old one has booted.
# As a result, the GPIO direction is not set to "out", which causes
# the MobileBroadband service to enter an exception loop.
if [ "$(cat /sys/class/gpio/gpio139/direction)" = out ]; then
    echo "GPIO139 is already set as output — nothing to do."
else
    echo "Setting GPIO139 as output and the value to 1"
    echo out > /sys/class/gpio/gpio139/direction
    echo 1 > /sys/class/gpio/gpio139/value
fi

#RESET_AC_3 (gpio3)
echo 3 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio3/direction
#RESET_AC_4 (gpio4)
echo 4 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio4/direction

#UI_12V_ON (gpio158)
echo 158 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio158/direction

#UI_5V_ON (gpio159)
echo 159 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio159/direction

#RESET_ADE7878_3 (gpio160)
echo 160 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio160/direction

#UI_3V3_ON (gpio161)
echo 161 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio161/direction

#RESET_ADE7878_4 (gpio162)
echo 162 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio162/direction

#BOARD_REVISION_BIT_0 (gpio9)
echo 9 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio9/direction

#BOARD_REVISION_BIT_1 (gpio144)
echo 144 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio144/direction

#BOARD_REVISION_BIT_2 (gpio146)
echo 146 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio146/direction

########### QCA BOOT_FLASH PINS ###############
echo 125 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio125/direction
echo 136 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio136/direction
echo 149 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio149/direction
echo 6 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio6/direction

########### QCA RESET PINS ###############
echo 123 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio123/direction
echo 134 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio134/direction
echo 142 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio142/direction
echo 143 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio143/direction

########### DISPLAYBOARD SPECIFIC  ###############
# Most GPIOs are already exported, because they are mapped to another function on base board
#GPIO_BUTTON_124
echo 124 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio124/direction
