diff options
Diffstat (limited to 'recipes-connectivity/usb-gadget-mode/files/usb-gadget')
-rwxr-xr-x | recipes-connectivity/usb-gadget-mode/files/usb-gadget | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/recipes-connectivity/usb-gadget-mode/files/usb-gadget b/recipes-connectivity/usb-gadget-mode/files/usb-gadget new file mode 100755 index 0000000..8da88ad --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/files/usb-gadget @@ -0,0 +1,69 @@ +#! /bin/sh +# +# Copyright Matthias Hentges <devel@hentges.net> (c) 2007 +# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license) +# +# Filename: usb-gadget +# Date: 20070606 (YMD) +# +################################################################################# +# +# 20070606 - v0.0.1 - Initial release +# 20070630 - v0.0.2 - Add forgotten host mode +# 20090529 - add support for all gadgets in 2.6.29 (koen) + +CONF_FILE="/etc/default/usb-gadget" + +die() { + echo "ERROR: $1" + exit 1 +} + +go() { + test -e "$CONF_FILE" && . "$CONF_FILE" + + case "$USB_MODE" in + networking) setup_usb g_ether ;; + zero) setup_usb g_zero ;; + midi) setup_usb g_midi ;; + printer) setup_usb g_printer ;; + gadgetfs) setup_usb gadgetfs ;; + composite) setup_usb g_cdc ;; + serial) setup_usb g_serial ;; + storage) setup_usb g_file_storage ;; + hostmode) unload_usb_gadgets + setup_usb ohci_hcd ;; + none) unload_usb_gadgets ;; + esac + +} + +setup_usb() { + + if ! ( lsmod | grep -q "$1" ) + then + unload_usb_gadgets + echo "Loading [$1]" + modprobe "$1" $MODULE_OPTIONS + else + echo "Already loaded: [$1]" + fi +} + +unload_usb_gadgets() { + KERNEL_VERSION="`uname -r`" + GADGET_MODULES="`find /lib/modules/$KERNEL_VERSION/kernel/drivers/usb/gadget -name "*g_*"`" + + for module in $GADGET_MODULES + do + MODULE_NAME="`basename $module | sed "s/\.ko//"`" + + if ( lsmod | grep -q "$MODULE_NAME" ) + then + echo "Unloading [$MODULE_NAME]" + rmmod "$module" + fi + done +} + +go |