|
@@ -69,6 +69,7 @@ static int get_power_status (struct hotplug_slot *slot, u8 *value);
|
|
|
static int get_attention_status (struct hotplug_slot *slot, u8 *value);
|
|
|
static int get_latch_status (struct hotplug_slot *slot, u8 *value);
|
|
|
static int get_adapter_status (struct hotplug_slot *slot, u8 *value);
|
|
|
+static int get_address (struct hotplug_slot *slot, u32 *value);
|
|
|
static int get_max_bus_speed (struct hotplug_slot *slot, enum pci_bus_speed *value);
|
|
|
static int get_cur_bus_speed (struct hotplug_slot *slot, enum pci_bus_speed *value);
|
|
|
|
|
@@ -81,6 +82,7 @@ static struct hotplug_slot_ops pciehp_hotplug_slot_ops = {
|
|
|
.get_attention_status = get_attention_status,
|
|
|
.get_latch_status = get_latch_status,
|
|
|
.get_adapter_status = get_adapter_status,
|
|
|
+ .get_address = get_address,
|
|
|
.get_max_bus_speed = get_max_bus_speed,
|
|
|
.get_cur_bus_speed = get_cur_bus_speed,
|
|
|
};
|
|
@@ -331,6 +333,18 @@ static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int get_address(struct hotplug_slot *hotplug_slot, u32 *value)
|
|
|
+{
|
|
|
+ struct slot *slot = hotplug_slot->private;
|
|
|
+ struct pci_bus *bus = slot->ctrl->pci_dev->subordinate;
|
|
|
+
|
|
|
+ dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name);
|
|
|
+
|
|
|
+ *value = (pci_domain_nr(bus) << 16) | (slot->bus << 8) | slot->device;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int get_max_bus_speed(struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value)
|
|
|
{
|
|
|
struct slot *slot = hotplug_slot->private;
|