ACPIPHP: prevent duplicate slot numbers when no _SUN
authorKristen Accardi <kristen.c.accardi@intel.com>
Wed, 28 Jun 2006 07:09:54 +0000 (03:09 -0400)
committerLen Brown <len.brown@intel.com>
Wed, 28 Jun 2006 07:09:54 +0000 (03:09 -0400)
Dock bridges generally do not implement _SUN, yet show up as ejectable
slots.  If you have more than one ejectable slot that does not implement
SUN, with the current code you will get duplicate slot numbers.  So, if
there is no _SUN, use the current count of the number of slots found
instead.

Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/pci/hotplug/acpiphp_glue.c

index b3899cfcab6b0adcac87434f4cfed6a66bf141ae..ef95d12fb32c6beca0fc0b1e6f0c645f8ad9b6dd 100644 (file)
@@ -219,8 +219,13 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
                newfunc->flags |= FUNC_HAS_DCK;
 
        status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
-       if (ACPI_FAILURE(status))
-               sun = -1;
+       if (ACPI_FAILURE(status)) {
+               /*
+                * use the count of the number of slots we've found
+                * for the number of the slot
+                */
+               sun = bridge->nr_slots+1;
+       }
 
        /* search for objects that share the same slot */
        for (slot = bridge->slots; slot; slot = slot->next)