Release of pcmciautils-011 (2005-12-06) Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
diff --git a/Makefile b/Makefile index 1dd5a5c..705ada7 100644 --- a/Makefile +++ b/Makefile
@@ -31,7 +31,7 @@ # Set this to true if you want to use 'udev' instead of 'hotplug' # to invoke the necessary pcmciautils commands. -UDEV = false +UDEV = true # Set the following to `true' to log the debug # and make a unstripped, unoptimized binary. @@ -44,7 +44,7 @@ CBDUMP = cbdump CISDUMP = dump_cis -VERSION = 010 +VERSION = 011 #INSTALL_DIR = /usr/local/sbin RELEASE_NAME = pcmciautils-$(VERSION) @@ -57,6 +57,7 @@ exec_prefix = ${prefix} etcdir = ${prefix}/etc sbindir = ${exec_prefix}/sbin +mandir = ${prefix}/usr/share/man srcdir = . INSTALL = /usr/bin/install -c @@ -169,12 +170,12 @@ UNINSTALL_TARGETS = uninstall-udev endif + + # if STARTUP is disabled, we can skip a few things ifeq ($(strip $(STARTUP)),false) - UDEV_RULES = udev/60-pcmcia.rules.static PCMCIA_SOCKET_STARTUP_BUILD = else - UDEV_RULES = udev/60-pcmcia.rules PCMCIA_SOCKET_STARTUP_BUILD = $(PCMCIA_SOCKET_STARTUP) INSTALL_TARGETS += install-config install-socket-tools UNINSTALL_TARGETS += uninstall-socket-tools @@ -184,8 +185,15 @@ endif endif +#udev rules collection +UDEV_RULES_FILE = udev/60-pcmcia.rules +UDEV_RULES = udev/rules-start udev/rules-modprobe udev/rules-base +ifneq ($(strip $(STARTUP)),false) + UDEV_RULES += udev/rules-nonstaticsocket +endif -all: ccdv $(PCCARDCTL) $(PCMCIA_CHECK_BROKEN_CIS) $(PCMCIA_SOCKET_STARTUP_BUILD) + +all: ccdv $(PCCARDCTL) $(PCMCIA_CHECK_BROKEN_CIS) $(PCMCIA_SOCKET_STARTUP_BUILD) udevrules ccdv: @echo "Building ccdv" @@ -199,7 +207,6 @@ mv y.tab.c $*.c mv y.tab.h $*.h - $(PCCARDCTL): $(LIBC) src/$(PCCARDCTL).o $(OBJS) $(HEADERS) $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) src/$(PCCARDCTL).o $(LIB_OBJS) $(ARCH_LIB_OBJS) $(QUIET) $(STRIPCMD) $@ @@ -214,7 +221,7 @@ yacc_config.o lex_config.o: %.o: %.c $(CC) -c -MD -O -pipe $(CPPFLAGS) $< - + debugtools: ccdv $(CBDUMP) $(CISDUMP) $(CBDUMP): $(LIBC) debug/cbdump.o @@ -225,12 +232,16 @@ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) debug/$(CISDUMP).o src/read-cis.o debug/parse_cis.o $(LIB_OBJS) $(ARCH_LIB_OBJS) $(QUIET) $(STRIPCMD) $@ +udevrules: + cat $(UDEV_RULES) > $(UDEV_RULES_FILE) + clean: -find . \( -not -type d \) -and \( -name '*~' -o -name '*.[oas]' \) -type f -print \ | xargs rm -f -rm -f $(PCCARDCTL) $(PCMCIA_CHECK_BROKEN_CIS) $(PCMCIA_SOCKET_STARTUP) -rm -f $(CBDUMP) $(CISDUMP) -rm -f src/yacc_config.c src/yacc_config.d src/lex_config.c src/lex_config.d src/yacc_config.h + -rm -f udev/60-pcmcia.rules -rm -f build/ccdv install-hotplug: @@ -239,19 +250,19 @@ $(INSTALL_PROGRAM) -D hotplug/pcmcia.rc $(DESTDIR)$(hotplugdir)/pcmcia.rc uninstall-hotplug: - - rm -f $(hotplugdir)/pcmcia.agent $(hotplugdir)/pcmcia.rc + - rm -f $(DESTDIR)$(hotplugdir)/pcmcia.agent $(DESTDIR)$(hotplugdir)/pcmcia.rc install-socket-hotplug: $(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent $(INSTALL_PROGRAM) -D hotplug/pcmcia_socket.rc $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc uninstall-socket-hotplug: - - rm -f $(hotplugdir)/pcmcia_socket.agent $(hotplugdir)/pcmcia_socket.rc + - rm -f $(DESTDIR)$(hotplugdir)/pcmcia_socket.agent $(DESTDIR)$(hotplugdir)/pcmcia_socket.rc install-socket-tools: $(INSTALL_PROGRAM) -D $(PCMCIA_SOCKET_STARTUP) $(DESTDIR)$(sbindir)/$(PCMCIA_SOCKET_STARTUP) uninstall-socket-tools: - - rm -f $(sbindir)/$(PCMCIA_SOCKET_STARTUP) + - rm -f $(DESTDIR)$(sbindir)/$(PCMCIA_SOCKET_STARTUP) install-tools: $(INSTALL) -d $(DESTDIR)$(sbindir) @@ -260,22 +271,29 @@ uninstall-tools: - - rm -f $(sbindir)/$(PCCARDCTL) - - rm -f $(sbindir)/$(PCMCIA_CHECK_BROKEN_CIS) + - rm -f $(DESTDIR)$(sbindir)/$(PCCARDCTL) + - rm -f $(DESTDIR)$(sbindir)/$(PCMCIA_CHECK_BROKEN_CIS) install-config: $(INSTALL) -d $(DESTDIR)$(pcmciaconfdir) $(INSTALL_DATA) -D config/config.opts $(DESTDIR)$(pcmciaconfdir)/config.opts uninstall-config: -# - rm -f $(pcmciaconfdir)/config.opts +# - rm -f $(DESTDIR)$(pcmciaconfdir)/config.opts install-udev: - $(INSTALL_DATA) -D $(UDEV_RULES) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules - + $(INSTALL_DATA) -D $(UDEV_RULES_FILE) $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules + uninstall-udev: - - rm -f $(udevrulesdir)/60-pcmcia.rules + - rm -f $(DESTDIR)$(udevrulesdir)/60-pcmcia.rules -install: install-tools $(INSTALL_TARGETS) +install-man: + $(INSTALL_DATA) -D man/man8/pccardctl.8 $(DESTDIR)$(mandir)/man8/pccardctl.8 -uninstall: uninstall-tools $(UNINSTALL_TARGETS) +uninstall-man: + - rm $(DESTDIR)$(mandir)/man8/pccardctl.8 + + +install: install-tools install-man $(INSTALL_TARGETS) + +uninstall: uninstall-tools uninstall-man $(UNINSTALL_TARGETS)
diff --git a/debug/dump_cis.c b/debug/dump_cis.c index c5cdc51..05ad314 100644 --- a/debug/dump_cis.c +++ b/debug/dump_cis.c
@@ -942,15 +942,13 @@ print_tuple(&tuple); ret = pccard_parse_tuple(&tuple, &parse); - if (ret) { + if (ret) printf("invalid tuple\n"); - continue; + else { + print_parse(&tuple, &parse); + printf("\n"); } - print_parse(&tuple, &parse); - - printf("\n"); - ret = pcmcia_get_next_tuple(BIND_FN_ALL, &tuple); if (ret) break;
diff --git a/doc/cardmgr-to-pcmciautils.txt b/doc/cardmgr-to-pcmciautils.txt new file mode 100644 index 0000000..8ff970a --- /dev/null +++ b/doc/cardmgr-to-pcmciautils.txt
@@ -0,0 +1,158 @@ +PCMCIA: cardmgr to pcmciautils HowTo +==================================== + +written by Daniel Ritz <daniel.ritz@gmx.ch> + +This howto describes in short how to change your system to work with the new +pcmciautils instead of the old cardmgr. + +Prerequisites +------------- + +- kernel 2.6.13-rc1 and newer +- pcmciautils, preferably 010 or newer +- you read the mini-howto.txt + + +Introduction +------------ + +Kernels since 2.6.13-rc1 do not require the cardmgr daemon anymore. In those +newer kernel the pcmcia bus acts almost as any other bus with full /sbin/hotplug +support. Old style cardmgr setups should still work if the kernel is configured +correctly. But be aware that the ioctl for PCMCIA will be removed in the near +future. + +The change to be /sbin/hotplug capable means that the normal /etc/init.d/pcmcia +script is not required any more and in fact only hurts as it starts cardmgr. To +use the new pcmciautils it is a requirement that cardmgr is not started. + + +The STARTUP option +------------------ + +When reading the pcmciautils howto you see that STARTUP option mentioned. What +does it do again? It controls the setup of a dynamic resource database needed +for some sockets. The resource database tells the PCMCIA layer what IO port and +what IO memory are usable for PCMCIA cards. In case the database is dynamic, it +needs to be setup before any cards can be used. The /etc/pcmcia/config.opts +file contains the neccessary configuration. +In old setups it is cardmgr that parses that file and tells the kernel what +resources to use. In case of pcmciautils it's the pcmcia-socket-startup tool +which is built and installed when the STARTUP option is set. The tool itself +is run from the hotplug script pcmcia_socket.agent whenever a new socket is +registered with the pcmcia module. This means that pcmcia-socket-startup does +not need to be run manually. + + +Compiling and installing pcmciautils +------------------------------------ + +You should have read the pcmciautils howto already. Again in short: +- make a backup copy of your /etc/pcmcia/config.opts +- determine whether you need UDEV set or not. if unsure: don't set it +- determine whether you need STARTUP set or not +- make +- make install (as root) +- put your original /etc/pcmcia/config.opts back to where it was + + +Stop cardmgr from starting +-------------------------- + +We don't want cardmgr. For setups with a PCI PCMCIA/Cardbus controller the +easiest thing to do is to make sure /etc/init.d/pcmcia does nothing. +Either make sure it does not start up, or (if you want to use older kernels +as well) add the following snippet to the beginning of /etc/init.d/pcmcia +(after the #!/bin/sh line of course): + + + KVERREL=`uname -r` + KVER=${KVERREL%-*} + KVER_MAJOR=${KVER%.*} + KVER_MINOR=${KVER##*.} + + if [ "$KVER_MAJOR" == "2.6" ]; then + # kernel 2.6.13-rc1 and higher have pcmcia via /sbin/hotplug + if [ $KVER_MINOR -ge 13 ]; then + # uncomment the following line if the driver for your + # controller is not auto-loaded. or if you want to be + # able to say /etc/init.d/pcmcia stop + #/etc/init.d/pcmcia-new $1 + exit 0 + fi + fi + +this will make sure the init script does nothing for newer kernel and works +normally on older kernels. + +if you have a socket controller where the module cannot be loaded automatically +by hotplug, uncomment the line in the above code snipped and make sure you have +the /etc/init.d/pcmcia-new script around which should look like this: + + #!/bin/sh + + # set this to the driver to use, one of: + # yenta_socket, i82365, i82092, pd6792, tcic, etc. + DRIVER=yenta_socket + DRIVER_OPTS= + + case "$1" in + start) + modprobe $DRIVER $DRIVER_OPTS > /dev/null 2>&1 + modprobe pcmcia > /dev/null 2>&1 # just in case it's not auto-loaded + ;; + + stop) + pccardctl eject + MODULES=`lsmod | grep "pcmcia " | awk '{print $4}' | tr , ' '` + for i in $MODULES ; do + rmmod $i > /dev/null 2>&1 + done + rmmod pcmcia > /dev/null 2>&1 + rmmod $DRIVER > /dev/null 2>&1 + rmmod rsrc_nonstatic > /dev/null 2>&1 + rmmod pcmcia_core > /dev/null 2>&1 + ;; + esac + +( you can find this script in doc/pcmcia-new.sh ) + +make sure you set the DRIVER (and maybe DRIVER_OPTS) variable to the right +socket driver. If yenta_socket doesn't work look up the config file from your +distro. look at the PCIC variable and PCIC_OPTS. + - Red Hat (and Conectiva, Mandriva, etc.) have it in /etc/sysconfig/pcmcia + - Debian (and probably Ubuntu) has it in /etc/pcmcia.conf + - Others: sorry, don't know +If you don't know where to find it, you should look at the init script. Maybe it's +even in there directly. + +The file system right for the script should be right as well: + chmod 755 /etc/init.d/pcmcia-new + + +Auto-load pcmcia module +----------------------- + +To have support for 16-bit cards you need the pcmcia module loaded. Since the +other modules do not depend on this one it is not loaded automatically. To +make sure the pcmcia module is loaded right after pcmcia_core, add the following +line to /etc/modprobe.conf + install pcmcia_core /sbin/modprobe --ignore-install pcmcia_core; /sbin/modprobe pcmcia + + +Hotplug +------- + +Make sure hotplug works correctly. Most distros have a /etc/init.d/hotplug script +which should be loaded at boot time. For most laptops the the socket driver is +yenta_socket. If it is not loaded after boot it means that hotplug is not working +correctly. Reasons for the driver not loaded include the /etc/hotplub/blacklist +file or some other list that prevents the driver being loaded. +eg. Conectiva Linux 10 does not load PCI modules per default, but only modules +that are listed in /etc/hotplug/pci.whitelist. + +If your socket driver can be loaded via hotplug (PCI socket or detected by PnP or +whatever) and everything is ok, yenta_socket (or another socket driver), pcmcia, +pcmcia_core and rsrc_nonstatic (not for all socket drivers) should be loaded after +booting. Modules for inserted pcmcia cards should be loaded as well.
diff --git a/doc/mini-howto.txt b/doc/mini-howto.txt new file mode 100644 index 0000000..78d8d2b --- /dev/null +++ b/doc/mini-howto.txt
@@ -0,0 +1,205 @@ +Linux Kernel 2.6 PCMCIA - mini-HOWTO +==================================== + + Last update: 08 November 2005. + +Table of contents: + + * [1]Introduction + * [2]Setup + + [3]Determine the socket driver to use + + [4]Resource database + + [5]Dependencies + + [6]Install pcmciautils + + [7]The difficult cases: CIS overrides + * [8]Usage + + +1. Introduction +--------------- + + So, you'd like to get PCMCIA working on Linux kernel 2.6.13-rc1 or + later? This short document intends to help you doing so; for + additional questions please search the web, especially the help forums + of your distribution, or ask on the [9]Linux-PCMCIA mailinglist. Also, + the help texts in the Linux kernel configuration for the PCMCIA + subsystem might point you into the correct direction -- so please read + them. + + +2. Setup +-------- + + Fortunately, several distributions have already included up-to-date + pcmciautils and PCMCIA support into their products. Therefore, you may + be able to rely on your distribution to set up the system correctly. + + 2.1. Determine the socket driver to use + --------------------------------------- + + At first, you need to determine which PCMCIA socket driver you need to + use. On most modern notebooks, this is yenta-socket. Else, check the + kernel configuration menu for the appropriate driver. + + Then, make sure it is either built into the kernel, or it is loaded + during bootup. Previously, this was oftern handled by the pcmcia-cs + startup script. As you won't use this package any longer, you can't + rely on it any more to load the socket driver! + + 2.2. Resource database? + ----------------------- + + Then, you need to find out whether you need a resource database. This + contains the ioport and iomem region which PCMCIA cards may use. + Fortunately, less and less systems require setting such a database up. + + 2.2.1. The lucky ones + --------------------- + + Sockets which are governed by these drivers do not need a resource + database: + * hd64465 + * Au1x00 + * SA1100 + * SA1111 + * PXA2xx + * M32R_PCC + * M32R_CFC + * VRC4171 + * VRC4173 + + 2.2.2. The unlucky ones + ----------------------- + + These sockets always need a resource database: + * i82365 + * tcic + + 2.2.3. The complicated ones + --------------------------- + + For the remaining socket drivers, + * yenta-socket + * pd6729 + * i82092 + + you need to investigate a bit further. However, if you think that this + is too complicated for you, just try it out without a resource + database. If it doesn't work, you can still add the resource database + later on. + + First you need to know if the system is of the x86 or x86_64 + architecture. If you don't know what this means, check wheter you have + an apple printed on the backside of your notebook -- then the answer + is no, else it is most probably yes. + + + 2.2.3.1. x86 and x86_64 architectures + ------------------------------------- + + Now you need to determine the PCI bus the device is on: search for the + device using the lspci command. Then you'll see a number like + 0000:02:03.0 in front of the device. If the second "block" (which is + 02 in this example), is zero, you need a resource database, if it is + not zero, you do not need it. + + 2.2.3.2. other architectures + ---------------------------- + + On other architectures (including ppc and ppc64) you do not need a + resource database for such sockets. + + 2.3. Dependencies + ----------------- + + To use any of the PCMCIAutils tools, you need sysfsutils 1.3.0 or + newer. However, if you do not need a resource database, you do not run + a modular kernel and you are lucky, you might not need any userspace + tools at all. + + If you use a modular kernel, you also need module-init-tools 3.2-pre4 + or later. + + In addition, you either need the basic hotplug scripts installed, or a + working udev environment. + + + 2.4. Installing pcmciautils + --------------------------- + + Get the latest revision of pcmciautils. Then, you need to configure + it. Therefore, open the file "Makefile" with an editor of your choice, + and modify it accordingly: + + If you do not need a resource database, modify the line which starts + with STARTUP to read + + STARTUP = false + + If you want to use udev instead of hotplug to manage the activation of + pcmciautils, modify the line which starts with UDEV to read + + UDEV = true + + Issue the famous make command next. Then, if you already had PCMCIA + running well, make a backup copy of /etc/pcmcia/config.opts. Then + issue make install. + + If you need a resource database, you should use the version of + /etc/pcmcia/config.opts you had up and running before (so restore the + backup copy you just made). Else you can try to use the version which + is distributed within pcmciautils and installed by default; however + you might need to modify it for the specific needs of the + architecture, socket and system you are using. + + + 2.5. The difficult cases: CIS overrides + --------------------------------------- + + If the PCMCIA card you use needs a "CIS" override (sort of a + "firmware" override) to work correctly, get the proper file out of + [10]pcmcia-cs or from other sources, rename it from ".dat" to ".cis" + and store it into /lib/firmware/. + + +3. Usage +-------- + + 3.1. devices + ------------ + + Plug the cards in, watch them appear in /sys/bus/pcmcia/devices/, use + them. Don't forget to unmount block devices before ejecting a PCMCIA + card! + + If you relied on the startup scripts in /etc/pcmcia/*, you should + switch to the generic hotplug scripts in one of its variants (hotplug, + hotplug-ng, and so on) or to udev rules. Most distributions already + include this capability; if not, you might need to adapt them slightly + depending on your distribution and configuration. Also check the udev + documentation, for example if you want to name interfaces differently + from the kernel's default setting. + + 3.2. pccardctl (replaces cardctl) + --------------------------------- + + And what about the command cardctl you might be used to? It is + replaced by several new ways to achieve the same aims; if you want to + update pccardctl to handle them all, please send patches to the + [11]Linux-PCMCIA mailinglist. + + cardctl info pccardctl info + cardctl ident pccardctl ident + cardctl insert pccardctl insert + cardctl eject pccardctl eject + cardctl suspend pccardctl suspend [>=2.6.15] + cardctl resume pccardctl resume [>=2.6.15] + cardctl suspend echo -n "3" > /sys/class/pcmcia_socket/pcmcia_socket*/d + evice/power/state + cardctl resume echo -n "0" > /sys/class/pcmcia_socket/pcmcia_socket*/d + evice/power/state + cardctl status cat /sys/class/pcmcia/pcmcia_socket/*/* + cardctl config cat /sys/bus/pcmcia/devices/*/* + cardctl scheme -- not implemented, as incompatible to cardbus. Use + other utilities (udev, nameif, ...) to achieve + the same aims --
diff --git a/doc/pcmcia-new.sh b/doc/pcmcia-new.sh new file mode 100644 index 0000000..5195989 --- /dev/null +++ b/doc/pcmcia-new.sh
@@ -0,0 +1,36 @@ +#!/bin/sh +# +# this is an examle of the /etc/init.d/pcmcia-new init script as described in +# cardmgr-to-pcmciautils.txt +# + +# +# set this to the driver to use, one of: +# yenta_socket, i82365, i82092, pd6792, tcic, etc. +# +DRIVER=yenta_socket +DRIVER_OPTS= + +# in case modprobe and rmmod are not in PATH: set MODUTILS_PATH to the right +# path an uncomment the following two lines: +#MODUTILS_PATH= +#export PATH=$MODUTILS_PATH:$PATH + +case "$1" in + start) + modprobe $DRIVER $DRIVER_OPTS > /dev/null 2>&1 + modprobe pcmcia > /dev/null 2>&1 # just in case it's not auto-loaded + ;; + + stop) + pccardctl eject + MODULES=`lsmod | grep "pcmcia " | awk '{print $4}' | tr , ' '` + for i in $MODULES ; do + rmmod $i > /dev/null 2>&1 + done + rmmod pcmcia > /dev/null 2>&1 + rmmod $DRIVER > /dev/null 2>&1 + rmmod rsrc_nonstatic > /dev/null 2>&1 + rmmod pcmcia_core > /dev/null 2>&1 + ;; +esac
diff --git a/hotplug/pcmcia.rc b/hotplug/pcmcia.rc index 19f15fe..6b240ab 100755 --- a/hotplug/pcmcia.rc +++ b/hotplug/pcmcia.rc
@@ -22,7 +22,7 @@ continue; fi; MODALIAS=$(cat $PCMCIA_DEVICE/modalias) - debug_mesg $MODALIAS $PCMICA_DEVICE + debug_mesg $MODALIAS $PCMCIA_DEVICE if [ -z $MODALIAS ]; then continue; fi;
diff --git a/man/man8/pccardctl.8 b/man/man8/pccardctl.8 new file mode 100644 index 0000000..6c1ff4a --- /dev/null +++ b/man/man8/pccardctl.8
@@ -0,0 +1,66 @@ +.\" Copyright (C) 1998 David A. Hinds -- dahinds@users.sourceforge.net +.\" Copyright (C) 2005 by Daniel Ritz <daniel.ritz@gmx.ch> +.\" +.TH PCCARDCTL 8 "2005/10/22" "pcmciautils" +.SH NAME +pccardctl \- PCMCIA card control utility + +.SH SYNOPSIS +\fBpccardctl\fR [\fB-V\fR] \fIcommand\fR [\fIsocket\fR] +.br + +.SH DESCRIPTION +\fBpccardctl\fR is used to monitor and control the state of PCMCIA +sockets. If a socket number is specified, the command will be applied +to just one socket; otherwise, all sockets will be affected. +.PP +If \fBpccardctl\fR is executed by root, all commands are available. If +it is executed by an unpriviledged user, only the informational +commands are accessible. +.PP + +.SH COMMANDS +.TP \w'abcd'u +.B status +Display the current socket status flags. \-\-not yet implemented +.TP +.B config +Display the socket configuration, including power settings, interrupt +and I/O window settings, and configuration registers. +\-\-not yet implemented +.TP +.B ident +Display card identification information, including product +identification strings, manufacturer ID codes, and function ID codes. +Not yet implemented for cardbus cards. Use lspci instead. +.TP +.B info +Much like the \fBident\fR command, but its output is formatted as a +series of Bourne-stype shell variable definitions for use in scripts. +Not yet implemented for cardbus cards. +.TP +.B suspend +Shut down and then disable power for a socket. +.TP +.B resume +Restore power to a socket, and re-configure for use. +.TP +.TP +.B eject +Notify all client drivers that this card will be ejected, then cut +power to the socket. +.TP +.B insert +Notify all client drivers that this card has just been inserted. + +.SH OPTIONS +.TP +.B \-V +Show version information and exit. + +.SH AUTHOR +Daniel Ritz \- daniel.ritz@gmx.ch +.br +based upon the original cardctl man page by +.br +David Hinds \- dahinds@users.sourceforge.net
diff --git a/src/pccardctl.c b/src/pccardctl.c index 5bef5d2..6f4e06a 100644 --- a/src/pccardctl.c +++ b/src/pccardctl.c
@@ -41,7 +41,7 @@ if (!attr) return -ENODEV; - ret = sysfs_write_attribute(attr, power ? "3" : "0", 1); + ret = sysfs_write_attribute(attr, power ? "2" : "0", 1); sysfs_close_attribute(attr);
diff --git a/udev/60-pcmcia.rules b/udev/60-pcmcia.rules deleted file mode 100644 index 79909ed..0000000 --- a/udev/60-pcmcia.rules +++ /dev/null
@@ -1,27 +0,0 @@ -# PCMCIA devices: -# -# modprobe $modalias loads all possibly appropriate modules -ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="*", \ - RUN+="/sbin/modprobe $modalias" - -# Very few CIS firmware entries (which we use for matching) -# are so broken that we need to read out random bytes of it -# instead of the manufactor, card or product ID. Then the -# matching is done in userspace. -ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="*", \ - RUN+="/sbin/pcmcia-check-broken-cis" - -# However, the "weak" matching by func_id is only allowed _after_ modprobe -# returns, so that "strong" matches have a higher priority. -ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="*", \ - RUN+="/bin/sh -c 'echo 1 > /sys/$DEVPATH/allow_func_id_match'" - - -# PCMCIA sockets: -# -# modprobe the pcmcia bus module so that 16-bit PCMCIA devices work -SUBSYSTEM="pcmcia_socket" RUN+="/sbin/modprobe pcmcia" - -# if this is a PCMCIA socket which needs a resource database, -# pcmcia-socket-startup sets it up -SUBSYSTEM="pcmcia_socket" RUN+="/sbin/pcmcia-socket-startup"
diff --git a/udev/60-pcmcia.rules.static b/udev/60-pcmcia.rules.static deleted file mode 100644 index 23ef3e3..0000000 --- a/udev/60-pcmcia.rules.static +++ /dev/null
@@ -1,27 +0,0 @@ -# PCMCIA devices: -# -# modprobe $modalias loads all possibly appropriate modules -ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="*", \ - RUN+="/sbin/modprobe $modalias" - -# Very few CIS firmware entries (which we use for matching) -# are so broken that we need to read out random bytes of it -# instead of the manufactor, card or product ID. Then the -# matching is done in userspace. -ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="*", \ - RUN+="/sbin/pcmcia-check-broken-cis" - -# However, the "weak" matching by func_id is only allowed _after_ modprobe -# returns, so that "strong" matches have a higher priority. -ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="*", \ - RUN+="/bin/sh -c 'echo 1 > /sys/$DEVPATH/allow_func_id_match'" - - -# PCMCIA sockets: -# -# modprobe the pcmcia bus module so that 16-bit PCMCIA devices work -SUBSYSTEM="pcmcia_socket" RUN+="/sbin/modprobe pcmcia" - -# if this is a PCMCIA socket which needs a resource database, -# pcmcia-socket-startup sets it up -#SUBSYSTEM="pcmcia_socket" RUN+="/sbin/pcmcia-socket-startup"
diff --git a/udev/rules-base b/udev/rules-base new file mode 100644 index 0000000..c6d14de --- /dev/null +++ b/udev/rules-base
@@ -0,0 +1,18 @@ + +# Very few CIS firmware entries (which we use for matching) +# are so broken that we need to read out random bytes of it +# instead of the manufactor, card or product ID. Then the +# matching is done in userspace. +ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="?*", \ + RUN+="/sbin/pcmcia-check-broken-cis" + +# However, the "weak" matching by func_id is only allowed _after_ modprobe +# returns, so that "strong" matches have a higher priority. +ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="?*", \ + RUN+="/bin/sh -c 'echo 1 > /sys/$devpath/allow_func_id_match'" + +# PCMCIA sockets: +# +# modprobe the pcmcia bus module so that 16-bit PCMCIA devices work +ACTION=="add", SUBSYSTEM=="pcmcia_socket", \ + RUN+="/sbin/modprobe pcmcia"
diff --git a/udev/rules-modprobe b/udev/rules-modprobe new file mode 100644 index 0000000..ea1f44a --- /dev/null +++ b/udev/rules-modprobe
@@ -0,0 +1,3 @@ +# modprobe $modalias loads all possibly appropriate modules +ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="?*", \ + RUN+="/sbin/modprobe $modalias"
diff --git a/udev/rules-nonstaticsocket b/udev/rules-nonstaticsocket new file mode 100644 index 0000000..23b599e --- /dev/null +++ b/udev/rules-nonstaticsocket
@@ -0,0 +1,5 @@ + +# if this is a PCMCIA socket which needs a resource database, +# pcmcia-socket-startup sets it up +ACTION=="add", SUBSYSTEM=="pcmcia_socket", \ + RUN+="/sbin/pcmcia-socket-startup"
diff --git a/udev/rules-start b/udev/rules-start new file mode 100644 index 0000000..790902b --- /dev/null +++ b/udev/rules-start
@@ -0,0 +1,2 @@ +# PCMCIA devices: +#