[PATCH RFC] pcmcia: allocate minimum io/mem for X86 system

Komuro komurojun-mbn at nifty.com
Fri Nov 13 19:19:55 EST 2009


pcmcia: rsrc_nonstatic.c
   allocate minimum io/mem for X86 system
   without running the pcmcia-socket-startup.

---

--- linux-2.6.32-rc7/drivers/pcmcia/rsrc_nonstatic.c.orig	2009-11-14 07:58:40.000000000 +0900
+++ linux-2.6.32-rc7/drivers/pcmcia/rsrc_nonstatic.c	2009-11-14 08:48:27.000000000 +0900
@@ -47,6 +47,13 @@ INT_MODULE_PARM(probe_io,	1);		/* IO por
 INT_MODULE_PARM(mem_limit,	0x10000);
 #endif
 
+#if defined(CONFIG_X86)
+static int default_io[] = {0x100, 0x3af, 0x3e0, 0x3ff};
+static int default_mem[] = {0xd0000, 0xdffff, 0xa0000000, 0xa0ffffff};
+static int default_io_count = sizeof(default_io)/sizeof(*default_io);
+static int default_mem_count = sizeof(default_mem)/sizeof(*default_mem);
+#endif
+
 /* for io_db and mem_db */
 struct resource_map {
 	u_long			base, num;
@@ -774,14 +781,28 @@ static int adjust_io(struct pcmcia_socke
 }
 
 
-#ifdef CONFIG_PCI
 static int nonstatic_autoadd_resources(struct pcmcia_socket *s)
 {
 	struct resource *res;
 	int i, done = 0;
 
+#if defined(CONFIG_X86)
+	/* allocate minimum io/mem resources */
+	for (i = 0; i < default_io_count; i = i + 2) {
+		if (!adjust_io(s, ADD_MANAGED_RESOURCE,
+				default_io[i], default_io[i+1]))
+			done |= IORESOURCE_IO;
+	}
+	for (i = 0; i < default_mem_count; i = i + 2) {
+		if (!adjust_memory(s, ADD_MANAGED_RESOURCE,
+				default_mem[i], default_mem[i+1]))
+			done |= IORESOURCE_MEM;
+	}
+#endif
+
+#ifdef CONFIG_PCI
 	if (!s->cb_dev || !s->cb_dev->bus)
-		return -ENODEV;
+		goto out;
 
 #if defined(CONFIG_X86)
 	/* If this is the root bus, the risk of hitting
@@ -791,7 +812,7 @@ static int nonstatic_autoadd_resources(s
 	 * of resources at the moment.
 	 */
 	if (s->cb_dev->bus->number == 0)
-		return -EINVAL;
+		goto out;
 #endif
 
 	for (i=0; i < PCI_BUS_NUM_RESOURCES; i++) {
@@ -824,7 +845,9 @@ static int nonstatic_autoadd_resources(s
 				done |= IORESOURCE_MEM;
 		}
 	}
+out:
 
+#endif
 	/* if we got at least one of IO, and one of MEM, we can be glad and
 	 * activate the PCMCIA subsystem */
 	if (done == (IORESOURCE_MEM | IORESOURCE_IO))
@@ -833,16 +856,6 @@ static int nonstatic_autoadd_resources(s
 	return 0;
 }
 
-#else
-
-static inline int nonstatic_autoadd_resources(struct pcmcia_socket *s)
-{
-	return -ENODEV;
-}
-
-#endif
-
-
 static int nonstatic_init(struct pcmcia_socket *s)
 {
 	struct socket_data *data;





More information about the linux-pcmcia mailing list