PnP Fixes for 2.6.5
Subsystems (2)
PATCH 1/1 PnP Fixes for 2.6.5
drivers/pnp/pnpbios/rsparser.c +5 -0
@@ -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;
drivers/pnp/manager.c +10 -14
@@ -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)) {
drivers/pnp/interface.c +1 -1
@@ -434,7 +434,7 @@ goto done; } done: -if (retval) +if (retval <0 )return retval;return count; }
arch/i386/kernel/dmi_scan.c +5 -1
@@ -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 */
drivers/pnp/pnpbios/proc.c +1 -1
@@ -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,
drivers/pnp/isapnp/core.c +1 -1
@@ -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;