Release of pcmciautils-008 (2005-08-28)

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
diff --git a/Makefile b/Makefile
index b0a9801..30ef605 100644
--- a/Makefile
+++ b/Makefile
@@ -40,7 +40,7 @@
 CBDUMP =			cbdump
 CISDUMP =			dump_cis
 
-VERSION =	007
+VERSION =	008
 #INSTALL_DIR =	/usr/local/sbin
 RELEASE_NAME =	pcmciautils-$(VERSION)
 
diff --git a/hotplug/pcmcia.agent b/hotplug/pcmcia.agent
index a9ec4d1..e071e92 100755
--- a/hotplug/pcmcia.agent
+++ b/hotplug/pcmcia.agent
@@ -16,11 +16,6 @@
     exit 1
 fi
 
-if [ "$MODALIAS" = "" ]; then
-    # this will go away soon -- only a few -mm kernels exported this wrongly.
-    MODALIAS=$(MODNAME)
-fi
-
 debug_mesg $SOCKET_NO $DEVICE_NO $MODALIAS $DEVPATH
 
 case $ACTION in
diff --git a/src/startup.c b/src/startup.c
index 2f78c52..0dd5f38 100644
--- a/src/startup.c
+++ b/src/startup.c
@@ -50,6 +50,7 @@
 
 
 static int add_available_resource(unsigned int socket_no, unsigned int type,
+				  unsigned int action,
 				  unsigned long start, unsigned long end)
 {
 	char file[SYSFS_PATH_MAX];
@@ -64,12 +65,25 @@
 	if (end <= start)
 		return -EINVAL;
 
-	dprintf("%d %d %lx %lx\n", socket_no, type, start, end);
+	dprintf("%d %d %d 0x%lx 0x%lx\n", socket_no, type, action, start, end);
 
 	snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET "pcmcia_socket%u/%s",
 		socket_no, resource_files[type]);
 
-	len = snprintf(content, SYSFS_PATH_MAX, "0x%08lx - 0x%08lx", start, end);
+	switch(action) {
+	case ADD_MANAGED_RESOURCE:
+		len = snprintf(content, SYSFS_PATH_MAX,
+			       "0x%08lx - 0x%08lx", start, end);
+		break;
+		
+	case REMOVE_MANAGED_RESOURCE:
+		len = snprintf(content, SYSFS_PATH_MAX,
+			       "- 0x%08lx - 0x%08lx", start, end);
+		break;
+		
+	default:
+		return -EINVAL;
+	}
 
 	dprintf("content is %s\n", content);
 
@@ -125,9 +139,10 @@
 	if (irq >= 32)
 		return -EINVAL;
 
-	snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
+	len = snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
 		 "pcmcia_socket%u/card_irq_mask",
 		 socket_no);
+	dprintf("file is %s\n", file);
 
 	attr = sysfs_open_attribute(file);
 	if (!attr)
@@ -184,18 +199,21 @@
 	    switch (al->adj.Resource) {
 	    case RES_MEMORY_RANGE:
 		    add_available_resource(socket_no, RESOURCE_MEM,
+					   al->adj.Action,
 					   al->adj.resource.memory.Base,
 					   al->adj.resource.memory.Base +
 					   al->adj.resource.memory.Size - 1);
 		    break;
 	    case RES_IO_RANGE:
 		    add_available_resource(socket_no, RESOURCE_IO,
+					   al->adj.Action,
 					   al->adj.resource.io.BasePort,
 					   al->adj.resource.io.BasePort +
 					   al->adj.resource.io.NumPorts - 1);
 		    break;
 	    case RES_IRQ:
-		    disallow_irq(socket_no, al->adj.resource.irq.IRQ);
+		    if(al->adj.Action == REMOVE_MANAGED_RESOURCE)
+			    disallow_irq(socket_no, al->adj.resource.irq.IRQ);
 		    break;
 	    }
     }
@@ -207,10 +225,11 @@
 	char *socket_no;
 	unsigned long socket;
 
-	if (argc == 2) {
-		socket = strtoul(argv[1], NULL, 0);
-	} else if ((socket_no = getenv("SOCKET_NO"))) {
+
+	if ((socket_no = getenv("SOCKET_NO"))) {
 		socket = strtoul(socket_no, NULL, 0);
+	} else if (argc == 2) {
+		socket = strtoul(argv[1], NULL, 0);
 	} else {
 		return -EINVAL;
 	}