[PATCH] powerpc/PCI hotplug: merge rpaphp_enable_pci_slot()
Remove general baroqueness. The function rpaphp_enable_pci_slot() has a fairly simple logic structure, once all of the debug printk's are removed. Its called from only one place, and that place also has a very simple structure once he printk's are removed. Merge the two together. Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Acked-by: John Rose <johnrose@austin.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8fe64399cc
commit
e06b80b78d
@@ -91,6 +91,7 @@ extern int num_slots;
|
|||||||
extern int rpaphp_enable_pci_slot(struct slot *slot);
|
extern int rpaphp_enable_pci_slot(struct slot *slot);
|
||||||
extern int register_pci_slot(struct slot *slot);
|
extern int 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_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 */
|
/* rpaphp_core.c */
|
||||||
extern int rpaphp_add_slot(struct device_node *dn);
|
extern int rpaphp_add_slot(struct device_node *dn);
|
||||||
|
@@ -393,22 +393,40 @@ static void __exit rpaphp_exit(void)
|
|||||||
cleanup_slots();
|
cleanup_slots();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __enable_slot(struct slot *slot)
|
||||||
|
{
|
||||||
|
int state;
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
if (slot->state == CONFIGURED)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
retval = rpaphp_get_sensor_state(slot, &state);
|
||||||
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
if (state == PRESENT) {
|
||||||
|
pcibios_add_pci_devices(slot->bus);
|
||||||
|
slot->state = CONFIGURED;
|
||||||
|
} else if (state == EMPTY) {
|
||||||
|
slot->state = EMPTY;
|
||||||
|
} else {
|
||||||
|
err("%s: slot[%s] is in invalid state\n", __FUNCTION__, slot->name);
|
||||||
|
slot->state = NOT_VALID;
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int enable_slot(struct hotplug_slot *hotplug_slot)
|
static int enable_slot(struct hotplug_slot *hotplug_slot)
|
||||||
{
|
{
|
||||||
int retval = 0;
|
int retval;
|
||||||
struct slot *slot = (struct slot *)hotplug_slot->private;
|
struct slot *slot = (struct slot *)hotplug_slot->private;
|
||||||
|
|
||||||
if (slot->state == CONFIGURED) {
|
|
||||||
dbg("%s: %s is already enabled\n", __FUNCTION__, slot->name);
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
dbg("ENABLING SLOT %s\n", slot->name);
|
|
||||||
down(&rpaphp_sem);
|
down(&rpaphp_sem);
|
||||||
retval = rpaphp_enable_pci_slot(slot);
|
retval = __enable_slot(slot);
|
||||||
up(&rpaphp_sem);
|
up(&rpaphp_sem);
|
||||||
exit:
|
|
||||||
dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval);
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
#include "../pci.h" /* for pci_add_new_bus */
|
#include "../pci.h" /* for pci_add_new_bus */
|
||||||
#include "rpaphp.h"
|
#include "rpaphp.h"
|
||||||
|
|
||||||
static int rpaphp_get_sensor_state(struct slot *slot, int *state)
|
int rpaphp_get_sensor_state(struct slot *slot, int *state)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
int setlevel;
|
int setlevel;
|
||||||
@@ -212,31 +212,3 @@ exit_rc:
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rpaphp_enable_pci_slot(struct slot *slot)
|
|
||||||
{
|
|
||||||
int retval = 0, state;
|
|
||||||
|
|
||||||
retval = rpaphp_get_sensor_state(slot, &state);
|
|
||||||
if (retval)
|
|
||||||
goto exit;
|
|
||||||
dbg("%s: sensor state[%d]\n", __FUNCTION__, state);
|
|
||||||
/* if slot is not empty, enable the adapter */
|
|
||||||
if (state == PRESENT) {
|
|
||||||
dbg("%s : slot[%s] is occupied.\n", __FUNCTION__, slot->name);
|
|
||||||
pcibios_add_pci_devices(slot->bus);
|
|
||||||
slot->state = CONFIGURED;
|
|
||||||
info("%s: devices in slot[%s] configured\n",
|
|
||||||
__FUNCTION__, slot->name);
|
|
||||||
} else if (state == EMPTY) {
|
|
||||||
dbg("%s : slot[%s] is empty\n", __FUNCTION__, slot->name);
|
|
||||||
slot->state = EMPTY;
|
|
||||||
} else {
|
|
||||||
err("%s: slot[%s] is in invalid state\n", __FUNCTION__,
|
|
||||||
slot->name);
|
|
||||||
slot->state = NOT_VALID;
|
|
||||||
retval = -EINVAL;
|
|
||||||
}
|
|
||||||
exit:
|
|
||||||
dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval);
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user