blob: e6f2fa309b1724acf0bd4a4bcb6dfd1c0274e5e9 [file] [log] [blame]
#!/bin/sh
. /etc/utils.sh
MODULE_PATH=/usr/lib/modules
start()
{
# Set up NEXUS first since it applies PINMUX.
echo "Starting nexus"
[ -e ${MODULE_PATH}/nexus.ko ] && insmod ${MODULE_PATH}/nexus.ko
if [ -e ${MODULE_PATH}/bcmdriver.ko ]; then
insmod ${MODULE_PATH}/bcmdriver.ko
mknod /dev/brcm0 c 30 0
chmod 666 /dev/brcm0
# Set up space for multiprocess NEXUS unix sockets
mount -t tmpfs none /shared
fi
# Populate the hardware version
HWVER=$(hnvram -qr HW_VER)
# Chimera yellow board does not set HW_VER, it should be 1.
[ "$PLATFORM" = "GFCH100" ] && [ -z "$HWVER" ] && HWVER=1
[ -n "$HWVER" ] &&
echo "$HWVER" >/etc/hw_ver &&
chmod 444 /etc/hw_ver
# Populate the serial number file.
SERIAL=$(hnvram -br 1st_serial_number)
[ -n "$SERIAL" ] &&
echo "$SERIAL" >/etc/serial &&
chmod 444 /etc/serial
# Use the serial number to generate hostid
serialmd5=$(md5sum /etc/serial)
python -Sc "
import sys
hexstring = \"$serialmd5\"
sys.stdout.write(hexstring[:8].decode(\"hex\"))
" > /etc/hostid
chmod 444 /etc/hostid
# Google Product Number
GPN=$(hnvram -qr GPN)
[ -n "$GPN" ] &&
echo "$GPN" >/tmp/gpn &&
chmod 444 /tmp/gpn
# install driver modules needed early in order to setup GPIOs
if is-ptp -a has_i2c_expander; then
modprobe i2c_mux_pca954x
modprobe gpio_pca953x
echo pca9548 0x70 >/sys/bus/i2c/devices/i2c-0/new_device
echo pca9546 0x70 >/sys/bus/i2c/devices/i2c-1/new_device
echo tca6408 0x20 >/sys/bus/i2c/devices/i2c-9/new_device
echo tca6408 0x20 >/sys/bus/i2c/devices/i2c-4/new_device
fi
# Do this before gpio-mailbox
update-gpio-links
# Start the gpio mailbox ASAP, since it blinks the LEDs to show boot progress.
echo "Starting gpio-mailbox"
mkdir -p /tmp/gpio/ledcontrol
leds 4 0 # blink activity while booting
echo 30 >/tmp/gpio/fanpercent # low fan at first
# is-secure-boot is ran after nexus on TV box
if is-tv-box || is-secure-boot; then
: >/tmp/gpio/ledcontrol/secure_boot
else
rm -f /tmp/gpio/ledcontrol/secure_boot
fi
ulimit -c 49152
if runnable gpio-mailbox; then
reboot-if-fail gpio-mailbox 2>&1 | logos gpio-mailbox &
else
# gpio-mailbox unavailable, but pretend it is so apps won't wait for it
: >/var/run/gpio-mailbox
fi
if is-storage-box; then
hostname GFiberStorage
elif is-tv-box; then
hostname GFiberTV
if is-android-box; then
setprop net.hostname GFiberTV
fi
elif is-network-box; then
hostname GFiberRouter
elif is-ptp; then
hostname GFiberPTP
else
hostname GFiberUnknown
fi
# Don't let SCHED_FIFO / SCHED_RR realtime threads get preempted
echo -1 >/proc/sys/kernel/sched_rt_runtime_us
# populate hdcp key
echo "Getting hdcp key"
hnvram -br HDCP_KEY >/tmp/hdcp_key.tmp
[ -s /tmp/hdcp_key.tmp ] && mv /tmp/hdcp_key.tmp /tmp/hdcp_key
if startswith "$PLATFORM" GFRG2; then
# Mindspeed-based devices can't fall back to GFP_DMA because they
# use the GFP_DMA area for CONFIG_COMCERTO_ZONE_DMA_NCNB. Thus, we
# should preserve more space in main memory to ensure memory is
# available on short notice for GFP_ATOMIC.
echo 32768 >/proc/sys/vm/min_free_kbytes
fi
}
stop()
{
echo "stopping gpio-mailbox forcefully..."
pkill -9 -f gpio-mailbox
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac