#!/bin/bash

set_gpio() {
	gpio=$1
	direction=$2
	value=$3

	if [ ! -d /sys/class/gpio/gpio${gpio} ]; then
		echo -n $gpio > /sys/class/gpio/export
	fi

	if [ ! -d /sys/class/gpio/gpio${gpio} ]; then
		echo "Could not export gpio${gpio}"
		return
	fi

	echo -n $direction > /sys/class/gpio/gpio${gpio}/direction

	if [ "$direction" == "out" ]; then
		echo -n $value > /sys/class/gpio/gpio${gpio}/value
	else
		echo -n "gpio${gpio}: "
		cat /sys/class/gpio/gpio${gpio}/value
	fi
}

case $1 in
	start)

	rmmod ehci-omap
	rmmod ohci-omap3

	set_gpio 61 out 1 	# lte_w_disable_b / wrigley_ctrl-disable
	set_gpio 3 in		# lte_reset_mcu / wrigley_ctrl-reset
	set_gpio 4 out 1	# lte_wan_usb_en / ???
	set_gpio 102 out 0 	# lte_force_flash / wrigley_ctrl-flash
	set_gpio 1 out 1 	# lte_power_en / wrigley_ctrl-power_en, takes 10 seconds

	set_gpio 95 out 0	# ipc_usb_susp, managed by nop-phy, enabled low

	# See board-mapphone-modem.c and mdm_ctrl_powerup

        # mdm_ctrl_set_bootmode needs to be output first, 0 is normal mode, remuxed later?
	set_gpio 148 out 0	# ipc_bpwake_trigger / UART wakeup strobe, cmd_gpios.cmd1
	set_gpio 149 out 0 	# ipc_apwake_trigger / BP -> AP IPC trigger, cmd_gpios.cmd2

        set_gpio 49 out 0	# ipc_o_ap_reset_bp / mdm_bp_resin
        set_gpio 54 out 0	# ipc_o_bp_pwron / mdm_bp_pwr_on

	# gpio49 resin 0 = out of reset
	echo -n 0 > /sys/class/gpio/gpio49/value
	sleep 1

	# gpio54 bp_pwron, 0 = enabled
	echo -n 1 > /sys/class/gpio/gpio54/value
	sleep 1
	echo -n 0 > /sys/class/gpio/gpio54/value

	set_gpio 56 out 1	# ipc_o_bp_flash_en / ???
	set_gpio 8 in		# ipc_i_bp_resout / mdm_bp_resout, get_bp_power_status()
	set_gpio 52 in		# ipc_i_bp_ready / mdm_bp_status0, get_bp_status()
	set_gpio 53 in		# ipc_i_bp_ready2 / mdm_bp_status1
	set_gpio 55 in		# ipc_i_bp_ready3 / mdm_bp_status2
	set_gpio 103 out 1	# ipc_o_ap_ready / mdm_ap_status0, set_ap_status()
	set_gpio 104 out 1	# ipc_o_ap_ready2 / mdm_ap_status1
	set_gpio 142 out 0	# ipc_o_ap_ready3 / mdm_ap_status2, default 0 on phone

	modprobe ehci-omap
	modprobe ohci-omap3
	modprobe qmi_wwan

	;;
	stop)
	;;
	restart)
	;;
	*)
	echo "Usage: $0 [start|stop|restart]"
	exit 1
	;;
esac
