aboutsummaryrefslogtreecommitdiff
path: root/firmware_uevent.sh
diff options
context:
space:
mode:
authortoni <matzeton@googlemail.com>2013-04-15 15:04:30 +0200
committertoni <matzeton@googlemail.com>2013-04-15 15:04:30 +0200
commite33b5930923a439f4c73b6dd64253578c4131420 (patch)
treef3d9d1c359603174bb75fb2394ddb33a315dcd88 /firmware_uevent.sh
initial commit
Diffstat (limited to 'firmware_uevent.sh')
-rw-r--r--firmware_uevent.sh61
1 files changed, 61 insertions, 0 deletions
diff --git a/firmware_uevent.sh b/firmware_uevent.sh
new file mode 100644
index 0000000..60bb187
--- /dev/null
+++ b/firmware_uevent.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+if [ -x /bin/cat ]; then
+ cat="/bin/cat"
+else
+ exit 3
+fi
+
+if [ -x /usr/bin/logger ]; then
+ out="/usr/bin/logger"
+else
+ out="echo"
+fi
+
+if [ -z "${SUBSYSTEM}" -o -z "${ACTION}" -o -z "${FIRMWARE}" -o -z "${DEVPATH}" ]; then
+ $out "$0: Missing essential enviroment variable(s)"
+ exit 1
+fi
+
+$out "$0: Running firmware script"
+$out "$0: FIRMWARE(${FIRMWARE}) ACTION(${ACTION}) SUBSYSTEM(${SUBSYSTEM})"
+FW_NAME=${FIRMWARE}
+FW_PATH=
+
+case $FW_NAME in
+ /lib/firmware/*)
+ break;;
+
+ *.bin|*.hex)
+ FW_PATH="/lib/firmware/${FW_NAME}"
+ break;;
+
+ *)
+ FW_PATH="/lib/firmware/${FW_NAME}.bin"
+ break;;
+esac
+
+if [ ! -r ${FW_PATH} ]; then
+ $out "$0: Firmware ${FW_PATH} does not exist"
+ exit 2
+fi
+
+
+case $SUBSYSTEM in
+ firmware)
+ break;;
+ *)
+ exit 1
+ break;;
+esac
+
+case $ACTION in
+ add)
+ $out "$0: Loading ${FW_PATH} -> /sys${DEVPATH} .."
+ echo 1 > /sys${DEVPATH}/loading
+ $cat ${FW_PATH} > /sys${DEVPATH}/data
+ echo 0 > /sys${DEVPATH}/loading
+ break;;
+esac
+
+exit 0 \ No newline at end of file