diff options
Diffstat (limited to 'recipes-connectivity/usb-gadget-mode')
4 files changed, 130 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 diff --git a/recipes-connectivity/usb-gadget-mode/files/usb-gadget.conf b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.conf new file mode 100644 index 0000000..ecf0844 --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.conf @@ -0,0 +1,3 @@ +USB_MODE="serial" +MODULE_OPTIONS="" + diff --git a/recipes-connectivity/usb-gadget-mode/files/usb-gadget.init b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.init new file mode 100755 index 0000000..7bf456b --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/files/usb-gadget.init @@ -0,0 +1,16 @@ +#! /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.init +# Date: 20070606 (YMD) +# +################################################################################# +# +# 20070606 - v0.0.1 - Initial release + +case "$1" in +start) usb-gadget ;; +esac + diff --git a/recipes-connectivity/usb-gadget-mode/usb-gadget-mode.bb b/recipes-connectivity/usb-gadget-mode/usb-gadget-mode.bb new file mode 100644 index 0000000..3b547cb --- /dev/null +++ b/recipes-connectivity/usb-gadget-mode/usb-gadget-mode.bb @@ -0,0 +1,42 @@ +# Copyright Matthias Hentges <devel@hentges.net> (c) 2007 +# License: MIT (see http://www.opensource.org/licenses/mit-license.php +# for a copy of the license) +# +# Filename: usb-gadget-mode.bb +# Date: 20070606 (YMD) + +DESCRIPTION = "Manage the default USB gadget mode" +SECTION = "console/network" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" +PV = "0.0.2" +PR = "r2" + +SRC_URI = "\ + file://usb-gadget.conf \ + file://usb-gadget \ + file://usb-gadget.init \ +" + +do_install() { + install -d ${D}${sysconfdir} + install -d ${D}${sysconfdir}/init.d + install -d ${D}${bindir} + install -d ${D}${sysconfdir}/default + + install -m 0644 ${WORKDIR}/usb-gadget.conf ${D}${sysconfdir}/default/usb-gadget + install -m 0755 ${WORKDIR}/usb-gadget.init ${D}${sysconfdir}/init.d/usb-gadget + install -m 0755 ${WORKDIR}/usb-gadget ${D}${bindir} +} + +pkg_postinst_${PN}() { + test -n "$D" && opt="-r $D" + update-rc.d $opt usb-gadget defaults 50 +} + +pkg_postrm_${PN}() { + update-rc.d -f usb-gadget remove +} + +PACKAGE_ARCH = "${MACHINE_ARCH}" + |