Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 19256
b: refs/heads/master
c: e06b80b
h: refs/heads/master
v: v3
  • Loading branch information
linas@austin.ibm.com authored and Greg Kroah-Hartman committed Feb 1, 2006
1 parent 534336f commit df7613d
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 40 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8fe64399cccf8dddcc4e5eaff270a12064f6fe9f
refs/heads/master: e06b80b78db96ca272db4ec0b26ce1092a1a9704
1 change: 1 addition & 0 deletions trunk/drivers/pci/hotplug/rpaphp.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ extern int num_slots;
extern int rpaphp_enable_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_sensor_state(struct slot *slot, int *state);

/* rpaphp_core.c */
extern int rpaphp_add_slot(struct device_node *dn);
Expand Down
38 changes: 28 additions & 10 deletions trunk/drivers/pci/hotplug/rpaphp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -393,22 +393,40 @@ static void __exit rpaphp_exit(void)
cleanup_slots();
}

static int enable_slot(struct hotplug_slot *hotplug_slot)
static int __enable_slot(struct slot *slot)
{
int retval = 0;
struct slot *slot = (struct slot *)hotplug_slot->private;
int state;
int retval;

if (slot->state == CONFIGURED) {
dbg("%s: %s is already enabled\n", __FUNCTION__, slot->name);
goto exit;
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)
{
int retval;
struct slot *slot = (struct slot *)hotplug_slot->private;

dbg("ENABLING SLOT %s\n", slot->name);
down(&rpaphp_sem);
retval = rpaphp_enable_pci_slot(slot);
retval = __enable_slot(slot);
up(&rpaphp_sem);
exit:
dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval);

return retval;
}

Expand Down
30 changes: 1 addition & 29 deletions trunk/drivers/pci/hotplug/rpaphp_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
#include "../pci.h" /* for pci_add_new_bus */
#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 setlevel;
Expand Down Expand Up @@ -212,31 +212,3 @@ int register_pci_slot(struct slot *slot)
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;
}

0 comments on commit df7613d

Please sign in to comment.