blob: e071e92c9e4641d3b5a8647a9ea1f0f6dd2f209f [file] [log] [blame]
#!/bin/sh
#
# PCMCIA-specific hotplug policy agent
#
# $Id$
#
#DEBUG=yes; export DEBUG
SYSFS=/sys
cd /etc/hotplug
. ./hotplug.functions
if [ "$ACTION" = "" ]; then
mesg Bad PCMCIA agent invocation, no action
exit 1
fi
debug_mesg $SOCKET_NO $DEVICE_NO $MODALIAS $DEVPATH
case $ACTION in
add)
modprobe $MODALIAS
# check whether the CIS is completely broken
if [ ! -h $SYSFS$DEVPATH/driver ]; then
CISFILE=$(pcmcia-check-broken-cis $SOCKET_NO)
debug_mesg $CISFILE;
if [ ! -z $CISFILE ]; then
if [ -f /etc/pcmcia/cis/$CISFILE ]; then
cat /etc/pcmcia/cis/$CISFILE > /sys/class/pcmcia_socket/pcmcia_socket$(SOCKET_NO)/cis
elif [ -f /lib/firmware/cis/$CISFILE ]; then
cat /lib/firmware/cis/$CISFILE > /sys/class/pcmcia_socket/pcmcia_socket$(SOCKET_NO)/cis
fi;
fi;
fi;
# allow a match solely based on the "function ID" field
if [ ! -h $SYSFS$DEVPATH/driver ]; then
if [ -w $SYSFS$DEVPATH/allow_func_id_match ]; then
debug_mesg allowing func_id based match for PCMCIA device $SOCKET_NO.$DEVICE_NO
echo -n "42" > $SYSFS$DEVPATH/allow_func_id_match;
fi;
fi;
;;
remove)
;;
*)
debug_mesg "PCMCIA '$ACTION' event not supported"
;;
esac