PCI: rpaphp: Remove setup_pci_slot()
authorLinas Vepstas <linas@austin.ibm.com>
Fri, 13 Apr 2007 22:34:16 +0000 (15:34 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 3 May 2007 02:02:39 +0000 (19:02 -0700)
The setup_pci_slot() routine appears to be nothing else than
a big, complicated wrapper around pcibios_add_pci_devices().
Remove the wrapping, and call pcibios_add_pci_devices() directly.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: John Rose <johnrose@austin.ibm.com>
Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/pci/hotplug/rpaphp_pci.c

index b6a991ab9b7ee75a05dbd6c724ff89b65d8bf403..6417b7074ed49ac66c947838ab60c4faa1d2f148 100644 (file)
@@ -92,64 +92,15 @@ static void set_slot_name(struct slot *slot)
                        bus->number);
 }
 
-static int setup_pci_slot(struct slot *slot)
-{
-       struct device_node *dn = slot->dn;
-       struct pci_bus *bus;
-
-       BUG_ON(!dn);
-       bus = pcibios_find_pci_bus(dn);
-       if (!bus) {
-               err("%s: no pci_bus for dn %s\n", __FUNCTION__, dn->full_name);
-               goto exit_rc;
-       }
-
-       slot->bus = bus;
-       slot->pci_devs = &bus->devices;
-       set_slot_name(slot);
-
-       /* find slot's pci_dev if it's not empty */
-       if (slot->hotplug_slot->info->adapter_status == EMPTY) {
-               slot->state = EMPTY;    /* slot is empty */
-       } else {
-               /* slot is occupied */
-               if (!dn->child) {
-                       /* non-empty slot has to have child */
-                       err("%s: slot[%s]'s device_node doesn't have child for adapter\n", 
-                               __FUNCTION__, slot->name);
-                       goto exit_rc;
-               }
-
-               if (slot->hotplug_slot->info->adapter_status == NOT_CONFIGURED) {
-                       dbg("%s CONFIGURING pci adapter in slot[%s]\n",  
-                               __FUNCTION__, slot->name);
-                       pcibios_add_pci_devices(slot->bus);
-
-               } else if (slot->hotplug_slot->info->adapter_status != CONFIGURED) {
-                       err("%s: slot[%s]'s adapter_status is NOT_VALID.\n",
-                               __FUNCTION__, slot->name);
-                       goto exit_rc;
-               }
-               print_slot_pci_funcs(slot->bus);
-               if (!list_empty(slot->pci_devs)) {
-                       slot->state = CONFIGURED;
-               } else {
-                       /* DLPAR add as opposed to 
-                        * boot time */
-                       slot->state = NOT_CONFIGURED;
-               }
-       }
-       return 0;
-exit_rc:
-       return -EINVAL;
-}
-
 int rpaphp_register_pci_slot(struct slot *slot)
 {
        int rc, level, state;
        struct pci_bus *bus;
        struct hotplug_slot_info *info = slot->hotplug_slot->info;
 
+       info->adapter_status = NOT_VALID;
+       slot->state = EMPTY;
+
        /* Find out if the power is turned on for the slot */
        rc = rtas_get_power_level(slot->power_domain, &level);
        if (rc)
@@ -157,23 +108,42 @@ int rpaphp_register_pci_slot(struct slot *slot)
        info->power_status = level;
 
        /* Figure out if there is an adapter in the slot */
-       info->adapter_status = NOT_VALID;
        rc = rpaphp_get_sensor_state(slot, &state);
        if (rc)
                return rc;
 
-       if (state == EMPTY)
-               info->adapter_status = EMPTY;
-       else if (state == PRESENT) {
-               bus = pcibios_find_pci_bus(slot->dn);
-               if (bus && !list_empty(&bus->devices))
-                       info->adapter_status = CONFIGURED;
-               else
-                       info->adapter_status = NOT_CONFIGURED;
+       bus = pcibios_find_pci_bus(slot->dn);
+       if (!bus) {
+               err("%s: no pci_bus for dn %s\n", __FUNCTION__, slot->dn->full_name);
+               return -EINVAL;
        }
 
-       if (setup_pci_slot(slot))
-               return -EINVAL;
+       info->adapter_status = EMPTY;
+       slot->bus = bus;
+       slot->pci_devs = &bus->devices;
+       set_slot_name(slot);
+
+       /* if there's an adapter in the slot, go add the pci devices */
+       if (state == PRESENT) {
+               info->adapter_status = NOT_CONFIGURED;
+               slot->state = NOT_CONFIGURED;
+
+               /* non-empty slot has to have child */
+               if (!slot->dn->child) {
+                       err("%s: slot[%s]'s device_node doesn't have child for adapter\n",
+                           __FUNCTION__, slot->name);
+                       return -EINVAL;
+               }
+
+               if (list_empty(&bus->devices))
+                       pcibios_add_pci_devices(bus);
+
+               print_slot_pci_funcs(bus);
+               if (!list_empty(&bus->devices)) {
+                       info->adapter_status = CONFIGURED;
+                       slot->state = CONFIGURED;
+               }
+       }
 
        return rpaphp_register_slot(slot);
 }