backport pnpacpi-cope-with-invalid-device-ids from linux-next
This commit is contained in:
parent
42dee18802
commit
694abf90a3
@ -724,6 +724,8 @@ Patch12224: pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch
|
|||||||
Patch12300: btusb-macbookpro-7-1.patch
|
Patch12300: btusb-macbookpro-7-1.patch
|
||||||
Patch12301: btusb-macbookpro-6-2.patch
|
Patch12301: btusb-macbookpro-6-2.patch
|
||||||
|
|
||||||
|
Patch12302: pnpacpi-cope-with-invalid-device-ids.patch
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
|
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
|
||||||
@ -1333,6 +1335,9 @@ ApplyPatch pci-v2-4-4-PCI-allocate-bus-resources-from-the-top-down.patch
|
|||||||
ApplyPatch btusb-macbookpro-7-1.patch
|
ApplyPatch btusb-macbookpro-7-1.patch
|
||||||
ApplyPatch btusb-macbookpro-6-2.patch
|
ApplyPatch btusb-macbookpro-6-2.patch
|
||||||
|
|
||||||
|
# rhbz#641468
|
||||||
|
ApplyPatch pnpacpi-cope-with-invalid-device-ids.patch
|
||||||
|
|
||||||
# END OF PATCH APPLICATIONS
|
# END OF PATCH APPLICATIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -1940,6 +1945,10 @@ fi
|
|||||||
# || ||
|
# || ||
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 15 2010 Kyle McMartin <kyle@redhat.com>
|
||||||
|
- backport pnpacpi-cope-with-invalid-device-ids from linux-next.
|
||||||
|
(rhbz#641468)
|
||||||
|
|
||||||
* Fri Oct 15 2010 Kyle McMartin <kyle@redhat.com> 2.6.36-0.39.rc8.git0
|
* Fri Oct 15 2010 Kyle McMartin <kyle@redhat.com> 2.6.36-0.39.rc8.git0
|
||||||
- Linux 2.6.36-rc8.
|
- Linux 2.6.36-rc8.
|
||||||
|
|
||||||
|
85
pnpacpi-cope-with-invalid-device-ids.patch
Normal file
85
pnpacpi-cope-with-invalid-device-ids.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
commit 420a0f66378c84b00b0e603e4d38210102dbe367
|
||||||
|
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||||
|
Date: Sat Sep 18 10:11:09 2010 -0700
|
||||||
|
|
||||||
|
PNPACPI: cope with invalid device IDs
|
||||||
|
|
||||||
|
If primary ID (HID) is invalid try locating first valid ID on compatible
|
||||||
|
ID list before giving up.
|
||||||
|
|
||||||
|
This helps, for example, to recognize i8042 AUX port on Sony Vaio VPCZ1
|
||||||
|
which uses SNYSYN0003 as HID. Without the patch users are forced to
|
||||||
|
boot with i8042.nopnp to make use of their touchpads.
|
||||||
|
|
||||||
|
Tested-by: Jan-Hendrik Zab <jan@jhz.name>
|
||||||
|
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
|
||||||
|
Signed-off-by: Len Brown <len.brown@intel.com>
|
||||||
|
|
||||||
|
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
|
||||||
|
index dc4e32e..0d943ee 100644
|
||||||
|
--- a/drivers/pnp/pnpacpi/core.c
|
||||||
|
+++ b/drivers/pnp/pnpacpi/core.c
|
||||||
|
@@ -28,7 +28,7 @@
|
||||||
|
#include "../base.h"
|
||||||
|
#include "pnpacpi.h"
|
||||||
|
|
||||||
|
-static int num = 0;
|
||||||
|
+static int num;
|
||||||
|
|
||||||
|
/* We need only to blacklist devices that have already an acpi driver that
|
||||||
|
* can't use pnp layer. We don't need to blacklist device that are directly
|
||||||
|
@@ -180,11 +180,24 @@ struct pnp_protocol pnpacpi_protocol = {
|
||||||
|
};
|
||||||
|
EXPORT_SYMBOL(pnpacpi_protocol);
|
||||||
|
|
||||||
|
+static char *pnpacpi_get_id(struct acpi_device *device)
|
||||||
|
+{
|
||||||
|
+ struct acpi_hardware_id *id;
|
||||||
|
+
|
||||||
|
+ list_for_each_entry(id, &device->pnp.ids, list) {
|
||||||
|
+ if (ispnpidacpi(id->id))
|
||||||
|
+ return id->id;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int __init pnpacpi_add_device(struct acpi_device *device)
|
||||||
|
{
|
||||||
|
acpi_handle temp = NULL;
|
||||||
|
acpi_status status;
|
||||||
|
struct pnp_dev *dev;
|
||||||
|
+ char *pnpid;
|
||||||
|
struct acpi_hardware_id *id;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -192,11 +205,17 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
|
||||||
|
* driver should not be loaded.
|
||||||
|
*/
|
||||||
|
status = acpi_get_handle(device->handle, "_CRS", &temp);
|
||||||
|
- if (ACPI_FAILURE(status) || !ispnpidacpi(acpi_device_hid(device)) ||
|
||||||
|
- is_exclusive_device(device) || (!device->status.present))
|
||||||
|
+ if (ACPI_FAILURE(status))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ pnpid = pnpacpi_get_id(device);
|
||||||
|
+ if (!pnpid)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (is_exclusive_device(device) || !device->status.present)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- dev = pnp_alloc_dev(&pnpacpi_protocol, num, acpi_device_hid(device));
|
||||||
|
+ dev = pnp_alloc_dev(&pnpacpi_protocol, num, pnpid);
|
||||||
|
if (!dev)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@@ -227,7 +246,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
|
||||||
|
pnpacpi_parse_resource_option_data(dev);
|
||||||
|
|
||||||
|
list_for_each_entry(id, &device->pnp.ids, list) {
|
||||||
|
- if (!strcmp(id->id, acpi_device_hid(device)))
|
||||||
|
+ if (!strcmp(id->id, pnpid))
|
||||||
|
continue;
|
||||||
|
if (!ispnpidacpi(id->id))
|
||||||
|
continue;
|
Loading…
Reference in New Issue
Block a user