summaryrefslogtreecommitdiff
path: root/meta/packages/linux-hotplug
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2006-07-21 10:10:31 +0000
committerRichard Purdie <richard@openedhand.com>2006-07-21 10:10:31 +0000
commitb2f192faabe412adce79534e22efe9fb69ee40e2 (patch)
tree7076c49d4286f8a1733650bd8fbc7161af200d57 /meta/packages/linux-hotplug
parent2cf0eadf9f730027833af802d7e6c90b44248f80 (diff)
downloadopenembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.tar.gz
openembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.tar.bz2
openembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.tar.xz
openembedded-core-b2f192faabe412adce79534e22efe9fb69ee40e2.zip
Rename /openembedded/ -> /meta/
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/linux-hotplug')
-rw-r--r--meta/packages/linux-hotplug/files/collie/usbd1
-rwxr-xr-xmeta/packages/linux-hotplug/files/mmc.agent52
-rwxr-xr-xmeta/packages/linux-hotplug/files/sleeve.agent120
-rwxr-xr-xmeta/packages/linux-hotplug/files/sleeve.rc60
-rw-r--r--meta/packages/linux-hotplug/files/soc.agent62
-rw-r--r--meta/packages/linux-hotplug/files/sysconfig-hotplug12
-rw-r--r--meta/packages/linux-hotplug/files/sysconfig-usb0
-rw-r--r--meta/packages/linux-hotplug/files/tosa/sysconfig-usb2
-rw-r--r--meta/packages/linux-hotplug/files/usbd2
-rwxr-xr-xmeta/packages/linux-hotplug/files/usbd.agent63
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/fix-net.agent29
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/hotplug-net-agent-usb.patch43
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/isapnp-exit.diff11
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/logcheck-ignore1
-rwxr-xr-xmeta/packages/linux-hotplug/linux-hotplug-20040920/update-usb.usermap37
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/usb-storage2
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/usbrc-busybox.patch13
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug-20040920/userspecified_hcd.patch55
-rw-r--r--meta/packages/linux-hotplug/linux-hotplug_20040920.bb73
19 files changed, 638 insertions, 0 deletions
diff --git a/meta/packages/linux-hotplug/files/collie/usbd b/meta/packages/linux-hotplug/files/collie/usbd
new file mode 100644
index 000000000..38aff0adc
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/collie/usbd
@@ -0,0 +1 @@
+usbdmodule="sa1100_bi"
diff --git a/meta/packages/linux-hotplug/files/mmc.agent b/meta/packages/linux-hotplug/files/mmc.agent
new file mode 100755
index 000000000..a80daa460
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/mmc.agent
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# H3600 Sleeve hotplug policy agent for Linux 2.4 kernels
+#
+# Kernel NET hotplug params include:
+#
+# ACTION=%s [add or remove]
+# MEDIA=%s
+# SLOT=%d
+#
+
+. /etc/hotplug/hotplug.functions
+#DEBUG=yes export DEBUG
+
+ echo "Executing $0 action=$ACTION, media=$MEDIA ($SLOT)" > /dev/console
+
+MMC_MOUNT_OPTIONS="-t auto -o sync,noatime"
+
+if [ -f /etc/sysconfig/hotplug ] ; then
+ . /etc/sysconfig/hotplug
+fi
+
+case `uname -r` in
+2.4*)
+ devpath=mmc/part
+ ;;
+*)
+ devpath=mmcblk0p
+ ;;
+esac
+
+if [ "$ACTION" = "add" ] ; then
+ sleep 4
+ echo -n add > /dev/console
+ for n in 1 2 3 4 ; do
+ device=/dev/$devpath$n
+ if [ "$n" = "1" ] ; then
+ card=/mnt/card
+ else
+ card=/mnt/card$n
+ fi
+ [ -b $device ] || break
+ echo " flash on $device" > /dev/console
+ [ -d $card ] || mkdir -p $card
+ mount $MMC_MOUNT_OPTIONS $device $card
+ done
+
+else
+ for card in /mnt/card*; do
+ umount $card
+ done
+fi
diff --git a/meta/packages/linux-hotplug/files/sleeve.agent b/meta/packages/linux-hotplug/files/sleeve.agent
new file mode 100755
index 000000000..55befca1b
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/sleeve.agent
@@ -0,0 +1,120 @@
+#!/bin/sh
+#
+# H3600 Sleeve hotplug policy agent for Linux 2.4 kernels
+#
+# Kernel NET hotplug params include:
+#
+# ACTION=%s [add or remove]
+# VENDOR_ID=%s
+# DEVICE_ID=%x
+# DEVICE_NAME=%s
+#
+
+. /etc/hotplug/hotplug.functions
+#DEBUG=yes export DEBUG
+
+if [ "$DEBUG" != "" ]; then
+ mesg "Executing $0 action=$ACTION, device=$DEVICE_NAME ($VENDOR_ID,$DEVICE_ID)"
+fi
+
+COMPACTFLASH_TIMING_INCREMENT=0
+PCMCIA_TIMING_INCREMENT=0
+DUAL_PCMCIA_TIMING_INCREMENT=0
+NAVMAN_TIMING_INCREMENT=0
+BACKPAQ_TIMING_INCREMENT=-100
+
+if [ -f /etc/sysconfig/hotplug ] ; then
+ . /etc/sysconfig/hotplug
+fi
+
+case $ACTION in
+add)
+ case $DEVICE_NAME in
+ "Compaq Mercury Backpaq")
+ mkdir -p /backpaq
+ echo $BACKPAQ_TIMING_INCREMENT > /proc/sys/backpaq/pcmcia/timing_increment_ns
+ ## mount -t jffs2 /dev/mtdblock/4 /backpaq
+ modprobe h3600_backpaq_fpga || mesg 'could not load backpaq fpga driver'
+ modprobe h3600_backpaq_camera || mesg 'could not load backpaq camera driver'
+ if [ -c /dev/v4l/video0 ] ; then
+ ln -s /dev/v4l/video0 /dev/video0
+ ln -s /dev/v4l/video0 /dev/video
+ fi
+ CAMERATYPE=`/bin/grep "CameraType" /proc/backpaq/camera | /bin/sed -e 's/.*: //'`
+ BACKPAQ_NUMBER=`/bin/grep "Major revision" /proc/backpaq/eeprom | /bin/sed -e 's/.*0x//'`
+ FPGA_NUMBER=`/bin/grep "FPGA version" /proc/backpaq/eeprom | /bin/sed -e 's/.*0x//'`
+ CAMERA_NUMBER=`/bin/grep "Camera" /proc/backpaq/eeprom | /bin/sed -e 's/.*0x//'`
+
+ echo "CAMERA_TYPE = $CAMERATYPE"
+ echo "BACKPAQ_NUMBER = $BACKPAQ_NUMBER"
+ echo "FPGA_NUMBER = $FPGA_NUMBER"
+ echo "CAMERA_NUMBER = $CAMERA_NUMBER"
+ echo "looking for file: /etc/fpga_B${BACKPAQ_NUMBER}_F${FPGA_NUMBER}_C${CAMERA_NUMBER}.bin"
+ if [ -e /etc/fpga_B${BACKPAQ_NUMBER}_F${FPGA_NUMBER}_C${CAMERA_NUMBER}.bin ] ; then
+ cat /etc/fpga_B${BACKPAQ_NUMBER}_F${FPGA_NUMBER}_C${CAMERA_NUMBER}.bin > /dev/backpaq/fpga
+ elif [ -e /etc/fpga_$CAMERATYPE.bin ] ; then
+ cat /etc/fpga_$CAMERATYPE.bin > /dev/backpaq/fpga
+ elif [ -e /etc/fpga.bin ] ; then
+ cat /etc/fpga.bin > /dev/backpaq/fpga
+ else
+ mesg 'unable to program the backpaq fpga'
+ fi
+ modprobe h3600_backpaq_accel || mesg 'could not load backpaq accelerometer driver'
+ mesg 'BackPAQ drivers loaded'
+ ;;
+ "Compaq CompactFlash Sleeve")
+ mesg 'CompactFlash drivers loaded'
+ echo $COMPACTFLASH_TIMING_INCREMENT > /proc/sys/bus/pcmcia/timing_increment_ns
+ ;;
+ "Compaq PC Card Sleeve")
+ mesg 'PC card sleeve drivers loaded'
+ echo $PCMCIA_TIMING_INCREMENT > /proc/sys/bus/pcmcia/timing_increment_ns
+ ;;
+ "Compaq Dual PC Card Sleeve")
+ mesg 'Dual PC card sleeve drivers loaded'
+ echo $DUAL_PCMCIA_TIMING_INCREMENT > /proc/sys/bus/pcmcia/timing_increment_ns
+ ;;
+ "Navman GPS/CF Sleeve")
+ mesg 'Navman GPS sleeve drivers loaded'
+ echo $NAVMAN_TIMING_INCREMENT > /proc/sys/bus/pcmcia/timing_increment_ns
+ start-stop-daemon --start --exec /usr/sbin/gpsd.bin -- -p /dev/tts/0 -s 57600
+ ;;
+ *)
+ mesg "$1 $ACTION event not handled for $DEVICE_NAME"
+ ;;
+ esac
+ ;;
+
+remove)
+ case $DEVICE_NAME in
+ "Compaq Mercury Backpaq")
+ mesg 'Unloading BackPAQ drivers'
+ ## umount /backpaq
+ rmmod h3600_backpaq_camera
+ rmmod h3600_backpaq_accel
+ rmmod h3600_backpaq_fpga
+ ;;
+ "Compaq CompactFlash Sleeve")
+ mesg 'Unloading CompactFlash sleeve'
+ ;;
+ "Compaq PC Card Sleeve")
+ mesg 'Unloading PC Card sleeve'
+ ;;
+ "Compaq Dual PC Card Sleeve")
+ mesg 'Unloading Dual PC Card sleeve'
+ ;;
+ "Navman GPS/CF Sleeve")
+ mesg 'Unloading Navman GPS sleeve'
+ start-stop-daemon --stop --name gpsd.bin
+ ;;
+ *)
+ mesg $1 $ACTION event not handled for $DEVICE_NAME
+ ;;
+ esac
+ ;;
+
+*)
+ mesg "$1 $ACTION event not supported"
+ exit 1 ;;
+
+esac
diff --git a/meta/packages/linux-hotplug/files/sleeve.rc b/meta/packages/linux-hotplug/files/sleeve.rc
new file mode 100755
index 000000000..864a2eb18
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/sleeve.rc
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# H3600 Sleeve hotplug *.rc agent.
+# This script is called by /etc/init.d/hotplug whenever
+# a run level has changed.
+#
+# A single argument is passed - start, restart, status, or stop
+#
+# We set up parameters that are equivalent to the ones created
+# by the Kernel and pass them along to /sbin/hotplug (the
+# function called by the kernel).
+#
+# Kernel NET hotplug params include:
+#
+# ACTION=%s [add or remove]
+# VENDOR_ID=%s
+# DEVICE_ID=%x
+# DEVICE_NAME=%s
+#
+
+. /etc/hotplug/hotplug.functions
+# DEBUG=yes export DEBUG
+
+SLEEVEFILE="/proc/bus/sleeve/device"
+[ ! -f $SLEEVEFILE ] && exit 0
+
+# give the sleeve driver a kick to make sure it recognizes the card -Jamey 6/26/01
+# echo > /proc/sys/sleeve/insert
+
+export DEVICE_NAME=`/bin/grep driver $SLEEVEFILE | /bin/sed -e 's/.*=//'`
+export DEVICE_ID=`/bin/grep device $SLEEVEFILE | /bin/sed -e 's/.*=//'`
+export VENDOR_ID=`/bin/grep vendor $SLEEVEFILE | /bin/sed -e 's/.*=//'`
+
+case "$1" in
+ start)
+ export ACTION="add"
+ /sbin/hotplug sleeve
+ ;;
+ stop)
+ export ACTION="remove"
+ /sbin/hotplug sleeve
+ ;;
+ restart)
+ export ACTION="remove"
+ /sbin/hotplug sleeve
+ export ACTION="add"
+ /sbin/hotplug sleeve
+ ;;
+ status)
+ if [ -f /var/lock/subsys/hotplug ]; then
+ mesg "Hot plug sleeve has been started, current device $DEVICE_NAME"
+ else
+ mesg "Hot plug sleeve has not been started, current device $DEVICE_NAME"
+ fi
+ ;;
+ *)
+ mesg "Usage: $0 {start|stop|status|restart}"
+ ;;
+esac
+
diff --git a/meta/packages/linux-hotplug/files/soc.agent b/meta/packages/linux-hotplug/files/soc.agent
new file mode 100644
index 000000000..e91246196
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/soc.agent
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+# SoC hotplug agent for 2.6 kernels
+#
+# ACTION=add
+# SOC_ID=1234
+#
+
+cd /etc/hotplug
+. ./hotplug.functions
+
+MAP_CURRENT=$MODULE_DIR/modules.socmap
+
+#
+# stdin is "modules.socmap" syntax
+# on return, all matching modules were added to $DRIVERS
+#
+soc_map_modules ()
+{
+ while read line
+ do
+ # comments are lines that start with "#" ...
+ # be careful, they still get parsed by bash!
+ case "$line" in
+ \#*) continue ;;
+ esac
+
+ set $line
+
+ module="$1"
+ id="$2"
+
+ if [ "$id" != "0x$SOC_ID" ]; then
+ continue
+ fi
+
+ # It was a match!
+ case " $DRIVERS " in
+ *" $module "* )
+ : already found
+ ;;
+ * )
+ DRIVERS="$module $DRIVERS"
+ ;;
+ esac
+ : drivers $DRIVERS
+ done
+}
+
+case $ACTION in
+
+add)
+
+ load_drivers soc $MAP_CURRENT "$SOC_ID"
+ ;;
+
+*)
+ debug_mesg SoC $ACTION event not supported
+ exit 1
+ ;;
+
+esac
diff --git a/meta/packages/linux-hotplug/files/sysconfig-hotplug b/meta/packages/linux-hotplug/files/sysconfig-hotplug
new file mode 100644
index 000000000..7ee5a20c3
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/sysconfig-hotplug
@@ -0,0 +1,12 @@
+##
+## Each of these may be assigned to the number of nanoseconds by which to
+## increase the timing of pcmcia bus transactions
+##
+# COMPACTFLASH_TIMING_INCREMENT=0
+## the single pcmcia sleeve seems to be a bit slow, but 25ns makes my
+## orinoco card detectable. -Jamey 4/2/2002
+PCMCIA_TIMING_INCREMENT=25
+# DUAL_PCMCIA_TIMING_INCREMENT=0
+
+## mount options used by MMC
+MMC_MOUNT_OPTIONS="-t auto -o sync,noatime"
diff --git a/meta/packages/linux-hotplug/files/sysconfig-usb b/meta/packages/linux-hotplug/files/sysconfig-usb
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/sysconfig-usb
diff --git a/meta/packages/linux-hotplug/files/tosa/sysconfig-usb b/meta/packages/linux-hotplug/files/tosa/sysconfig-usb
new file mode 100644
index 000000000..cbd18c656
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/tosa/sysconfig-usb
@@ -0,0 +1,2 @@
+## Specify the USB host controller driver
+HCD="usb_ohci_tc6393"
diff --git a/meta/packages/linux-hotplug/files/usbd b/meta/packages/linux-hotplug/files/usbd
new file mode 100644
index 000000000..aa4e6d2de
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/usbd
@@ -0,0 +1,2 @@
+usbdmodule=""
+
diff --git a/meta/packages/linux-hotplug/files/usbd.agent b/meta/packages/linux-hotplug/files/usbd.agent
new file mode 100755
index 000000000..6613b4810
--- /dev/null
+++ b/meta/packages/linux-hotplug/files/usbd.agent
@@ -0,0 +1,63 @@
+#!/bin/ash
+
+# DEBUG=yes export DEBUG
+#set -x
+
+. /etc/hotplug/hotplug.functions
+. /etc/default/usbd
+cd $HOTPLUG_DIR
+
+[ -z "$INTERFACE" ] && exit 1
+[ -z "$ACTION" ] && exit 1
+[ -z "$usbdmodule" ] && exit 0
+
+debug_mesg "USBD $ACTION Action Recived"
+
+case $INTERFACE in
+
+monitor)
+ case $ACTION in
+ # called to load all usb device modules
+ load)
+ modprobe usbdcore
+ modprobe net_fd
+ modprobe $usbdmodule
+ ;;
+
+ # called to handle suspend power management event
+ suspend)
+ rmmod $usbdmodule
+ ;;
+
+ # called to reload after resume power management event
+ restore-loaded)
+ modprobe $usbdmodule
+ sleep 2
+ ;;
+
+ # called to unload after resume power management event
+ restore-unloaded)
+ modprobe -r net_fd
+ ;;
+
+ # called to unload all usb device modules
+ unload)
+ modprobe -r $usbdmodule
+ ;;
+
+ *)
+ debug_mesg USBD $ACTION event not handled
+ exit 1
+ ;;
+ esac
+ ;;
+*)
+ debug_mesg USBD $INTERFACE-$ACTION event not handled
+ exit 1
+ ;;
+esac
+
+[ -e /proc/usb-monitor ] && echo "Done" > /proc/usb-monitor
+
+exit 0
+
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/fix-net.agent b/meta/packages/linux-hotplug/linux-hotplug-20040920/fix-net.agent
new file mode 100644
index 000000000..3bc093501
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/fix-net.agent
@@ -0,0 +1,29 @@
+#!/bin/sh -e
+#
+# Since ifupdown of Debian is different than one of RedHat.
+# So we need to fix it
+
+topdir=$1
+dir=$topdir/etc/hotplug
+test -f $dir/net.agent || exit 1
+mv $dir/net.agent $dir/net.agent.orig
+
+sed -e '/^\*)/i\
+unregister)\
+ # Assume that we want to run ifdown no matter what, \
+ # because it is not going to remove the data from the \
+ # ifstate database otherwise.\
+ if [ -x /sbin/ifdown ]; then\
+ debug_mesg invoke ifdown $INTERFACE\
+ exec /sbin/ifdown $INTERFACE\
+ else\
+ # mesg "how do I bring interfaces up on this distro?"\
+ mesg "E: /sbin/ifdown not found. You need to install ifupdown package"\
+ fi\
+ mesg $1 $ACTION event not handled\
+ ;;\
+' $dir/net.agent.orig > $dir/net.agent
+rm -f $dir/net.agent.orig
+chmod 755 $dir/net.agent
+exit 0
+
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/hotplug-net-agent-usb.patch b/meta/packages/linux-hotplug/linux-hotplug-20040920/hotplug-net-agent-usb.patch
new file mode 100644
index 000000000..a64fc50d2
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/hotplug-net-agent-usb.patch
@@ -0,0 +1,43 @@
+--- hotplug/etc/hotplug/net.agent 2005-01-13 21:12:47.143597392 +1300
++++ hotplug/etc/hotplug/net.agent 2005-01-13 21:17:57.095477544 +1300
+@@ -41,6 +41,9 @@
+ debug_mesg assuming $INTERFACE is already up
+ exit 0
+ ;;
++ # interfaces that don't go up until attached
++ usbf)
++ ;;
+ # interfaces that are registered then brought up
+ *)
+ # NOTE: network configuration relies on administered state,
+@@ -83,6 +86,13 @@
+ mesg $1 $ACTION event not handled
+ ;;
+
++attach)
++ # ifupdown is dumb and won't bring up an interface that it thinks
++ # might already be configured.
++ /sbin/ifdown $INTERFACE
++ exec /sbin/ifup $INTERFACE
++ ;;
++
+ remove|unregister)
+ case $INTERFACE in
+ # interfaces that are unregistered after being "down" (?)
+@@ -105,6 +115,16 @@
+ mesg $1 $ACTION event not handled
+ ;;
+
++detach)
++ if [ -x /sbin/ifdown ]; then
++ debug_mesg invoke ifdown $INTERFACE
++ exec /sbin/ifdown $INTERFACE
++ else
++ mesg "E: /sbin/ifdown not found. You need to install ifupdown package"
++ fi
++ mesg $1 $ACTION event not handled
++ ;;
++
+ *)
+ debug_mesg NET $ACTION event for $INTERFACE not supported
+ exit 1 ;;
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/isapnp-exit.diff b/meta/packages/linux-hotplug/linux-hotplug-20040920/isapnp-exit.diff
new file mode 100644
index 000000000..e5a9ab10a
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/isapnp-exit.diff
@@ -0,0 +1,11 @@
+--- hotplug-2004_09_20/etc/hotplug/isapnp.rc.orig 2004-12-20 15:01:21.541446000 +0100
++++ hotplug-2004_09_20/etc/hotplug/isapnp.rc 2004-12-20 15:01:32.625760928 +0100
+@@ -13,7 +13,7 @@
+ #
+
+ # only 2.6 kernels are supported
+-[ -d /sys/bus/pnp/devices/ ] || return 0
++[ -d /sys/bus/pnp/devices/ ] || exit 0
+
+ cd /etc/hotplug
+ . ./hotplug.functions
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/logcheck-ignore b/meta/packages/linux-hotplug/linux-hotplug-20040920/logcheck-ignore
new file mode 100644
index 000000000..b94135304
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/logcheck-ignore
@@ -0,0 +1 @@
+net.agent: invoke if(up|down)
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/update-usb.usermap b/meta/packages/linux-hotplug/linux-hotplug-20040920/update-usb.usermap
new file mode 100755
index 000000000..d09e1176e
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/update-usb.usermap
@@ -0,0 +1,37 @@
+#!/bin/sh -e
+# update-usb.usermap
+# Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
+# GPL
+
+LIBDIR=/usr/lib/hotplug
+USERMAP=/etc/hotplug/usb.usermap
+LOCALMAP=/etc/hotplug/usb.usermap.local
+
+test -d $LIBDIR || exit 0
+
+echo -n "Updating $USERMAP ..."
+
+echo "# usb.usermap file" > $USERMAP
+echo "# This is autogenerated by update-usb.usermap program" >> $USERMAP
+echo "# usb module match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info" >> $USERMAP
+
+if [ -f $LOCALMAP ]; then
+ echo "# usb.usermap.local" >> $USERMAP
+ cat $LOCALMAP >> $USERMAP
+fi
+
+cd $LIBDIR
+for package in *
+do
+ if [ -d "$package" ]; then
+ map=$package/usb.usermap
+ echo "# $package" >> $USERMAP
+ if [ -x "$map" ]; then
+ ./$map >> $USERMAP
+ elif [ -f "$map" ]; then
+ cat $map >> $USERMAP
+ fi
+ fi
+done
+
+echo done.
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/usb-storage b/meta/packages/linux-hotplug/linux-hotplug-20040920/usb-storage
new file mode 100644
index 000000000..138790a36
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/usb-storage
@@ -0,0 +1,2 @@
+#!/bin/sh
+modprobe sd_mod \ No newline at end of file
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/usbrc-busybox.patch b/meta/packages/linux-hotplug/linux-hotplug-20040920/usbrc-busybox.patch
new file mode 100644
index 000000000..35f43dc52
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/usbrc-busybox.patch
@@ -0,0 +1,13 @@
+--- hotplug/etc/hotplug/usb.rc.old 2005-05-25 15:50:11.000000000 +0100
++++ hotplug/etc/hotplug/usb.rc 2005-05-25 15:50:59.000000000 +0100
+@@ -95,8 +95,8 @@
+ PRODUCT="$(cat $devlink/../idVendor)/$(cat $devlink/../idProduct)/$(cat $devlink/../bcdDevice)"
+ if [ -f $devlink/../../devnum ]
+ then
+- devbus=$( ( echo -n 000 ; cat $devlink/../../devnum ) | grep -o ...\$ )
+- devdev=$( ( echo -n 000 ; cat $devlink/../devnum ) | grep -o ...\$ )
++ devbus=$( ( echo -n 000 ; cat $devlink/../../devnum ) | sed 's/.*\(...\)$/\1/' )
++ devdev=$( ( echo -n 000 ; cat $devlink/../devnum ) | sed 's/.*\(...\)$/\1/' )
+ DEVICE="/proc/bus/usb/$devbus/$devdev"
+ else
+ DEVICE=
diff --git a/meta/packages/linux-hotplug/linux-hotplug-20040920/userspecified_hcd.patch b/meta/packages/linux-hotplug/linux-hotplug-20040920/userspecified_hcd.patch
new file mode 100644
index 000000000..c2ceeb686
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug-20040920/userspecified_hcd.patch
@@ -0,0 +1,55 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- hotplug-2004_09_20/etc/hotplug/usb.rc~userspecified_hcd.patch
++++ hotplug-2004_09_20/etc/hotplug/usb.rc
+@@ -24,6 +24,7 @@
+ unset I_WANT_A_BROKEN_PS
+ PS_PERSONALITY=linux
+
++HCD=
+ STATIC_MODULE_LIST=
+ X11_USBMICE_HACK=false
+
+@@ -166,20 +167,25 @@
+ # FIXME: some of this should be driven by PCI hotplugging, and have
+ # the blacklist control which uhci driver gets used (before 2.5).
+
+- # "new style" HCDs ... more common code
+- modprobe -q ehci-hcd >/dev/null 2>&1
+- modprobe -q ohci-hcd >/dev/null 2>&1
+- modprobe -q uhci-hcd >/dev/null 2>&1
+-
+- # "old style" HCDs ... more driver-specific bugs
+- modprobe -q usb-ohci >/dev/null 2>&1
+- # NOTE: this prefers "uhci"; you may prefer "usb-uhci".
+- # modprobe -q usb-uhci >/dev/null 2>&1 || modprobe -q uhci >/dev/null 2>&1
+- modprobe -q uhci >/dev/null 2>&1 || modprobe -q usb-uhci >/dev/null 2>&1
+-
+- # ... add any non-PCI HCDS here. Examples include the
+- # CRIS usb-host, Philips ISP-1161, Symlogic 811HS, and so on.
+- # ohci-hcd can handle some non-pci variants.
++ # If the user specified which HCD they want, trust them.
++ if [ -n "$HCD" ]; then
++ modprobe -q $HCD >/dev/null 2>&1
++ else
++ # "new style" HCDs ... more common code
++ modprobe -q ehci-hcd >/dev/null 2>&1
++ modprobe -q ohci-hcd >/dev/null 2>&1
++ modprobe -q uhci-hcd >/dev/null 2>&1
++
++ # "old style" HCDs ... more driver-specific bugs
++ modprobe -q usb-ohci >/dev/null 2>&1
++ # NOTE: this prefers "uhci"; you may prefer "usb-uhci".
++ # modprobe -q usb-uhci >/dev/null 2>&1 || modprobe -q uhci >/dev/null 2>&1
++ modprobe -q uhci >/dev/null 2>&1 || modprobe -q usb-uhci >/dev/null 2>&1
++
++ # ... add any non-PCI HCDS here. Examples include the
++ # CRIS usb-host, Philips ISP-1161, Symlogic 811HS, and so on.
++ # ohci-hcd can handle some non-pci variants.
++ fi
+
+ if [ -d /proc/bus/usb ]; then
+ # If we see there are no busses, we "failed" and
diff --git a/meta/packages/linux-hotplug/linux-hotplug_20040920.bb b/meta/packages/linux-hotplug/linux-hotplug_20040920.bb
new file mode 100644
index 000000000..c6bcbb66e
--- /dev/null
+++ b/meta/packages/linux-hotplug/linux-hotplug_20040920.bb
@@ -0,0 +1,73 @@
+DESCRIPTION = "This package contains the scripts necessary \
+for hotplug Linux support, and lets you plug in new devices \
+and use them immediately."
+HOMEPAGE = "http://linux-hotplug.sourceforge.net/"
+LICENSE = "GPL"
+RPROVIDES_${PN} = "hotplug"
+RCONFLICTS_${PN} = "hotplug"
+RREPLACES_${PN} = "hotplug"
+SECTION = "base"
+RSUGGESTS = "pciutils usbutils"
+PR = "r8"
+
+SRC_URI = "ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/hotplug-2004_09_20.tar.gz \
+ file://userspecified_hcd.patch;patch=1 \
+ file://hotplug-net-agent-usb.patch;patch=1 \
+ file://usbrc-busybox.patch;patch=1 \
+ file://fix-net.agent \
+ file://update-usb.usermap \
+ file://logcheck-ignore \
+ file://sleeve.agent \
+ file://sleeve.rc \
+ file://mmc.agent \
+ file://usbd.agent \
+ file://usbd \
+ file://sysconfig-hotplug \
+ file://sysconfig-usb \
+ file://isapnp-exit.diff;patch=1 \
+ file://usb-storage \
+ file://soc.agent"
+
+SRC_URI_append_openzaurus = " file://quiet-pci.patch;patch=1"
+
+S = "${WORKDIR}/hotplug-2004_09_20"
+
+INITSCRIPT_NAME = "hotplug"
+INITSCRIPT_PARAMS = "start 40 S . stop 89 0 6 ."
+
+inherit update-rc.d
+
+do_compile () {
+ :
+}
+
+oldmandir := "${mandir}"
+oldsbindir := "${sbindir}"
+prefix = ""
+exec_prefix = ""
+FILES_${PN} += "${oldsbindir}"
+FILES_${PN}-doc += "${oldmandir}"
+
+export DEBFIX = "sed -e 's:sysconfig/usb:default/hotplug.usb:'"
+do_install () {
+ install -d ${D}${sysconfdir}/logcheck/ignore.d
+ install -d ${D}${oldmandir}
+ install -d ${D}${oldsbindir}
+ #install -d ${D}${sysconfdir}/default
+ oe_runmake prefix=${D}${prefix} exec_prefix=${D}${exec_prefix} \
+ etcdir=${D}${sysconfdir} sbindir=${D}${sbindir} \
+ mandir=${D}${oldmandir} INSTALL=install install
+ sh ${WORKDIR}/fix-net.agent ${D} || :
+ install -m 0755 ${WORKDIR}/update-usb.usermap ${D}${oldsbindir}/
+ install -m 0644 ${WORKDIR}/logcheck-ignore ${D}${sysconfdir}/logcheck/ignore.d/hotplug
+ install -m 0755 ${WORKDIR}/sleeve.agent ${D}${sysconfdir}/hotplug/
+ install -m 0755 ${WORKDIR}/sleeve.rc ${D}${sysconfdir}/hotplug/
+ install -m 0755 ${WORKDIR}/mmc.agent ${D}${sysconfdir}/hotplug/
+ install -m 0755 ${WORKDIR}/usbd.agent ${D}${sysconfdir}/hotplug/
+ install -m 0755 ${WORKDIR}/soc.agent ${D}${sysconfdir}/hotplug/
+ #install -m 0755 ${WORKDIR}/usbd ${D}${sysconfdir}/default/usbd
+ install -d ${D}${sysconfdir}/sysconfig
+ install -m 0644 ${WORKDIR}/sysconfig-hotplug ${D}${sysconfdir}/sysconfig/hotplug
+ install -m 0644 ${WORKDIR}/sysconfig-usb ${D}${sysconfdir}/sysconfig/usb
+ install -m 0755 ${WORKDIR}/usb-storage ${D}${sysconfdir}/hotplug/usb
+}