| From kristen.c.accardi@intel.com Fri Apr 13 15:34:19 2007 |
| From: Linas Vepstas <linas@austin.ibm.com> |
| Date: Fri, 13 Apr 2007 15:34:14 -0700 |
| Subject: [patch 08/21] PCI: rpaphp: Remove another wrappered function |
| To: gregkh@suse.de |
| Message-ID: <20070413223419.739402081@intel.com> |
| Content-Disposition: inline; filename=pci-rpaphp-remove-another-wrappered-function |
| |
| |
| From: Linas Vepstas <linas@austin.ibm.com> |
| |
| Remove another stove-pipe; this funcion was called from |
| two different places, with a compile-time const that is |
| then run-time checked to perform two different things. |
| |
| 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.h | 1 |
| drivers/pci/hotplug/rpaphp_core.c | 16 ++++++++-- |
| drivers/pci/hotplug/rpaphp_pci.c | 59 ++++++++++---------------------------- |
| 3 files changed, 29 insertions(+), 47 deletions(-) |
| |
| --- a/drivers/pci/hotplug/rpaphp.h |
| +++ b/drivers/pci/hotplug/rpaphp.h |
| @@ -89,7 +89,6 @@ extern struct list_head rpaphp_slot_head |
| /* rpaphp_pci.c */ |
| extern int rpaphp_enable_pci_slot(struct slot *slot); |
| extern int rpaphp_register_pci_slot(struct slot *slot); |
| -extern int rpaphp_get_pci_adapter_status(struct slot *slot, int is_init, u8 * value); |
| extern int rpaphp_get_sensor_state(struct slot *slot, int *state); |
| |
| /* rpaphp_core.c */ |
| --- a/drivers/pci/hotplug/rpaphp_core.c |
| +++ b/drivers/pci/hotplug/rpaphp_core.c |
| @@ -130,12 +130,22 @@ static int get_attention_status(struct h |
| static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 * value) |
| { |
| struct slot *slot = (struct slot *)hotplug_slot->private; |
| - int retval = 0; |
| + int rc, state; |
| |
| down(&rpaphp_sem); |
| - retval = rpaphp_get_pci_adapter_status(slot, 0, value); |
| + rc = rpaphp_get_sensor_state(slot, &state); |
| up(&rpaphp_sem); |
| - return retval; |
| + |
| + *value = NOT_VALID; |
| + if (rc) |
| + return rc; |
| + |
| + if (state == EMPTY) |
| + *value = EMPTY; |
| + else if (state == PRESENT) |
| + *value = slot->state; |
| + |
| + return 0; |
| } |
| |
| static int get_max_bus_speed(struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value) |
| --- a/drivers/pci/hotplug/rpaphp_pci.c |
| +++ b/drivers/pci/hotplug/rpaphp_pci.c |
| @@ -64,43 +64,6 @@ int rpaphp_get_sensor_state(struct slot |
| return rc; |
| } |
| |
| -/** |
| - * get_pci_adapter_status - get the status of a slot |
| - * |
| - * 0-- slot is empty |
| - * 1-- adapter is configured |
| - * 2-- adapter is not configured |
| - * 3-- not valid |
| - */ |
| -int rpaphp_get_pci_adapter_status(struct slot *slot, int is_init, u8 * value) |
| -{ |
| - struct pci_bus *bus; |
| - int state, rc; |
| - |
| - *value = NOT_VALID; |
| - rc = rpaphp_get_sensor_state(slot, &state); |
| - if (rc) |
| - goto exit; |
| - |
| - if (state == EMPTY) |
| - *value = EMPTY; |
| - else if (state == PRESENT) { |
| - if (!is_init) { |
| - /* at run-time slot->state can be changed by */ |
| - /* config/unconfig adapter */ |
| - *value = slot->state; |
| - } else { |
| - bus = pcibios_find_pci_bus(slot->dn); |
| - if (bus && !list_empty(&bus->devices)) |
| - *value = CONFIGURED; |
| - else |
| - *value = NOT_CONFIGURED; |
| - } |
| - } |
| -exit: |
| - return rc; |
| -} |
| - |
| static void print_slot_pci_funcs(struct pci_bus *bus) |
| { |
| struct device_node *dn; |
| @@ -183,20 +146,30 @@ exit_rc: |
| |
| int rpaphp_register_pci_slot(struct slot *slot) |
| { |
| - int rc, level; |
| + int rc, level, state; |
| + struct pci_bus *bus; |
| struct hotplug_slot_info *info = slot->hotplug_slot->info; |
| |
| + /* Find out if the power is turned on for the slot */ |
| rc = rtas_get_power_level(slot->power_domain, &level); |
| if (rc) |
| return rc; |
| info->power_status = level; |
| |
| - rpaphp_get_pci_adapter_status(slot, 1, &info->adapter_status); |
| + /* 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 (info->adapter_status == NOT_VALID) { |
| - err("%s: NOT_VALID: skip dn->full_name=%s\n", |
| - __FUNCTION__, slot->dn->full_name); |
| - return -EINVAL; |
| + 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; |
| } |
| |
| if (setup_pci_slot(slot)) |