[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