Re: [PATCH] PnP Fixes for 2.5.74

Adam Belay (ambx1@neo.rr.com)
Thu, 3 Jul 2003 18:41:56 +0000


diff -urN a/drivers/pnp/manager.c b/drivers/pnp/manager.c
--- a/drivers/pnp/manager.c 2003-07-03 00:55:25.000000000 +0000
+++ b/drivers/pnp/manager.c 2003-07-03 01:07:17.000000000 +0000
@@ -40,17 +40,20 @@
if (!(dev->res.port_resource[idx].flags & IORESOURCE_AUTO))
return 1;

- if (!rule->size)
- return 1; /* skip disabled resource requests */
-
start = &dev->res.port_resource[idx].start;
end = &dev->res.port_resource[idx].end;
flags = &dev->res.port_resource[idx].flags;

/* set the initial values */
+ *flags = *flags | rule->flags | IORESOURCE_IO;
+
+ if (!rule->size) {
+ *flags |= IORESOURCE_DISABLED;
+ return 1; /* skip disabled resource requests */
+ }
+
*start = rule->min;
*end = *start + rule->size - 1;
- *flags = *flags | rule->flags | IORESOURCE_IO;

/* run through until pnp_check_port is happy */
while (!pnp_check_port(dev, idx)) {
@@ -79,16 +82,11 @@
if (!(dev->res.mem_resource[idx].flags & IORESOURCE_AUTO))
return 1;

- if (!rule->size)
- return 1; /* skip disabled resource requests */
-
start = &dev->res.mem_resource[idx].start;
end = &dev->res.mem_resource[idx].end;
flags = &dev->res.mem_resource[idx].flags;

/* set the initial values */
- *start = rule->min;
- *end = *start + rule->size -1;
*flags = *flags | rule->flags | IORESOURCE_MEM;

/* convert pnp flags to standard Linux flags */
@@ -101,6 +99,14 @@
if (rule->flags & IORESOURCE_MEM_SHADOWABLE)
*flags |= IORESOURCE_SHADOWABLE;

+ if (!rule->size) {
+ *flags |= IORESOURCE_DISABLED;
+ return 1; /* skip disabled resource requests */
+ }
+
+ *start = rule->min;
+ *end = *start + rule->size -1;
+
/* run through until pnp_check_mem is happy */
while (!pnp_check_mem(dev, idx)) {
*start += rule->align;
@@ -134,9 +140,6 @@
if (!(dev->res.irq_resource[idx].flags & IORESOURCE_AUTO))
return 1;

- if (!rule->map)
- return 1; /* skip disabled resource requests */
-
start = &dev->res.irq_resource[idx].start;
end = &dev->res.irq_resource[idx].end;
flags = &dev->res.irq_resource[idx].flags;
@@ -144,6 +147,11 @@
/* set the initial values */
*flags = *flags | rule->flags | IORESOURCE_IRQ;

+ if (!rule->map) {
+ *flags |= IORESOURCE_DISABLED;
+ return 1; /* skip disabled resource requests */
+ }
+
for (i = 0; i < 16; i++) {
if(rule->map & (1<<xtab[i])) {
*start = *end = xtab[i];
@@ -177,9 +185,6 @@
if (!(dev->res.dma_resource[idx].flags & IORESOURCE_AUTO))
return 1;

- if (!rule->map)
- return 1; /* skip disabled resource requests */
-
start = &dev->res.dma_resource[idx].start;
end = &dev->res.dma_resource[idx].end;
flags = &dev->res.dma_resource[idx].flags;
@@ -187,6 +192,11 @@
/* set the initial values */
*flags = *flags | rule->flags | IORESOURCE_DMA;

+ if (!rule->map) {
+ *flags |= IORESOURCE_DISABLED;
+ return 1; /* skip disabled resource requests */
+ }
+
for (i = 0; i < 8; i++) {
if(rule->map & (1<<xtab[i])) {
*start = *end = xtab[i];
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/