2004-04-14 20:55:10

by Adam Belay

[permalink] [raw]
Subject: [PATCH] PnP Fixes for 2.6.5

diff -Nru a/drivers/pnp/pnpbios/rsparser.c b/drivers/pnp/pnpbios/rsparser.c
--- a/drivers/pnp/pnpbios/rsparser.c Wed Apr 14 04:42:06 2004
+++ b/drivers/pnp/pnpbios/rsparser.c Wed Apr 14 04:42:06 2004
@@ -505,6 +505,11 @@

switch (tag) {

+ case LARGE_TAG_ANSISTR:
+ strncpy(dev->name, p + 3, len >= PNP_NAME_LEN ? PNP_NAME_LEN - 2 : len);
+ dev->name[len >= PNP_NAME_LEN ? PNP_NAME_LEN - 1 : len] = '\0';
+ break;
+
case SMALL_TAG_COMPATDEVID: /* compatible ID */
if (len != 4)
goto len_err;


2004-04-14 20:55:50

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] PnP Fixes for 2.6.5

diff -Nru a/drivers/pnp/manager.c b/drivers/pnp/manager.c
--- a/drivers/pnp/manager.c Wed Apr 14 04:41:52 2004
+++ b/drivers/pnp/manager.c Wed Apr 14 04:41:52 2004
@@ -452,23 +452,19 @@

if (!dev->dependent) {
if (pnp_assign_resources(dev, 0))
- return 1;
- else
return 0;
+ } else {
+ dep = dev->dependent;
+ do {
+ if (pnp_assign_resources(dev, i))
+ return 0;
+ dep = dep->next;
+ i++;
+ } while (dep);
}

- dep = dev->dependent;
- do {
- if (pnp_assign_resources(dev, i))
- return 1;
-
- /* if this dependent resource failed, try the next one */
- dep = dep->next;
- i++;
- } while (dep);
-
pnp_err("Unable to assign resources to device %s.", dev->dev.bus_id);
- return 0;
+ return -EBUSY;
}

/**
@@ -486,7 +482,7 @@
}

/* ensure resources are allocated */
- if (!pnp_auto_config_dev(dev))
+ if (pnp_auto_config_dev(dev))
return -EBUSY;

if (!pnp_can_write(dev)) {

2004-04-14 20:58:03

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] PnP Fixes for 2.6.5

diff -Nru a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c
--- a/drivers/pnp/isapnp/core.c Wed Apr 14 04:40:54 2004
+++ b/drivers/pnp/isapnp/core.c Wed Apr 14 04:40:54 2004
@@ -995,7 +995,7 @@
res->port_resource[tmp].flags = IORESOURCE_IO;
}
for (tmp = 0; tmp < PNP_MAX_MEM; tmp++) {
- ret = isapnp_read_dword(ISAPNP_CFG_MEM + (tmp << 3));
+ ret = isapnp_read_word(ISAPNP_CFG_MEM + (tmp << 3)) << 8;
if (!ret)
continue;
res->mem_resource[tmp].start = ret;

2004-04-14 20:58:30

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] PnP Fixes for 2.6.5

diff -Nru a/drivers/pnp/interface.c b/drivers/pnp/interface.c
--- a/drivers/pnp/interface.c Wed Apr 14 04:41:38 2004
+++ b/drivers/pnp/interface.c Wed Apr 14 04:41:38 2004
@@ -434,7 +434,7 @@
goto done;
}
done:
- if (retval)
+ if (retval < 0)
return retval;
return count;
}

2004-04-14 20:58:30

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] PnP Fixes for 2.6.5

diff -Nru a/arch/i386/kernel/dmi_scan.c b/arch/i386/kernel/dmi_scan.c
--- a/arch/i386/kernel/dmi_scan.c Wed Apr 14 04:41:24 2004
+++ b/arch/i386/kernel/dmi_scan.c Wed Apr 14 04:41:24 2004
@@ -778,11 +778,15 @@
MATCH(DMI_BIOS_DATE, "10/26/01"), NO_MATCH
} },

- { exploding_pnp_bios, "Higraded P14H", { /* BIOSPnP problem */
+ { exploding_pnp_bios, "Higraded P14H", { /* PnPBIOS GPF on boot */
MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
MATCH(DMI_BIOS_VERSION, "07.00T"),
MATCH(DMI_SYS_VENDOR, "Higraded"),
MATCH(DMI_PRODUCT_NAME, "P14H")
+ } },
+ { exploding_pnp_bios, "ASUS P4P800", { /* PnPBIOS GPF on boot */
+ MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."),
+ MATCH(DMI_BOARD_NAME, "P4P800"),
} },

/* Machines which have problems handling enabled local APICs */

2004-04-14 20:58:31

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] PnP Fixes for 2.6.5

diff -Nru a/drivers/pnp/pnpbios/proc.c b/drivers/pnp/pnpbios/proc.c
--- a/drivers/pnp/pnpbios/proc.c Wed Apr 14 04:41:10 2004
+++ b/drivers/pnp/pnpbios/proc.c Wed Apr 14 04:41:10 2004
@@ -139,7 +139,7 @@
/* 26 = the number of characters per line sprintf'ed */
if ((p - buf + 26) > count)
break;
- if (pnp_bios_get_dev_node(&nodenum, PNPMODE_STATIC, node))
+ if (pnp_bios_get_dev_node(&nodenum, PNPMODE_DYNAMIC, node))
break;
p += sprintf(p, "%02x\t%08x\t%02x:%02x:%02x\t%04x\n",
node->handle, node->eisa_id,