Merge branch 'xarray' of git://git.infradead.org/users/willy/linux-dax
[platform/kernel/linux-starfive.git] / drivers / pci / hotplug / acpiphp_core.c
index 0447b16..853e04a 100644 (file)
@@ -57,7 +57,7 @@ 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 struct hotplug_slot_ops acpi_hotplug_slot_ops = {
+static const struct hotplug_slot_ops acpi_hotplug_slot_ops = {
        .enable_slot            = enable_slot,
        .disable_slot           = disable_slot,
        .set_attention_status   = set_attention_status,
@@ -118,7 +118,7 @@ EXPORT_SYMBOL_GPL(acpiphp_unregister_attention);
  */
 static int enable_slot(struct hotplug_slot *hotplug_slot)
 {
-       struct slot *slot = hotplug_slot->private;
+       struct slot *slot = to_slot(hotplug_slot);
 
        pr_debug("%s - physical_slot = %s\n", __func__, slot_name(slot));
 
@@ -135,7 +135,7 @@ static int enable_slot(struct hotplug_slot *hotplug_slot)
  */
 static int disable_slot(struct hotplug_slot *hotplug_slot)
 {
-       struct slot *slot = hotplug_slot->private;
+       struct slot *slot = to_slot(hotplug_slot);
 
        pr_debug("%s - physical_slot = %s\n", __func__, slot_name(slot));
 
@@ -179,7 +179,7 @@ static int set_attention_status(struct hotplug_slot *hotplug_slot, u8 status)
  */
 static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value)
 {
-       struct slot *slot = hotplug_slot->private;
+       struct slot *slot = to_slot(hotplug_slot);
 
        pr_debug("%s - physical_slot = %s\n", __func__, slot_name(slot));
 
@@ -225,7 +225,7 @@ static int get_attention_status(struct hotplug_slot *hotplug_slot, u8 *value)
  */
 static int get_latch_status(struct hotplug_slot *hotplug_slot, u8 *value)
 {
-       struct slot *slot = hotplug_slot->private;
+       struct slot *slot = to_slot(hotplug_slot);
 
        pr_debug("%s - physical_slot = %s\n", __func__, slot_name(slot));
 
@@ -245,7 +245,7 @@ static int get_latch_status(struct hotplug_slot *hotplug_slot, u8 *value)
  */
 static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value)
 {
-       struct slot *slot = hotplug_slot->private;
+       struct slot *slot = to_slot(hotplug_slot);
 
        pr_debug("%s - physical_slot = %s\n", __func__, slot_name(slot));
 
@@ -266,39 +266,26 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot,
        if (!slot)
                goto error;
 
-       slot->hotplug_slot = kzalloc(sizeof(*slot->hotplug_slot), GFP_KERNEL);
-       if (!slot->hotplug_slot)
-               goto error_slot;
-
-       slot->hotplug_slot->info = &slot->info;
-
-       slot->hotplug_slot->private = slot;
-       slot->hotplug_slot->ops = &acpi_hotplug_slot_ops;
+       slot->hotplug_slot.ops = &acpi_hotplug_slot_ops;
 
        slot->acpi_slot = acpiphp_slot;
-       slot->hotplug_slot->info->power_status = acpiphp_get_power_status(slot->acpi_slot);
-       slot->hotplug_slot->info->attention_status = 0;
-       slot->hotplug_slot->info->latch_status = acpiphp_get_latch_status(slot->acpi_slot);
-       slot->hotplug_slot->info->adapter_status = acpiphp_get_adapter_status(slot->acpi_slot);
 
        acpiphp_slot->slot = slot;
        slot->sun = sun;
        snprintf(name, SLOT_NAME_SIZE, "%u", sun);
 
-       retval = pci_hp_register(slot->hotplug_slot, acpiphp_slot->bus,
+       retval = pci_hp_register(&slot->hotplug_slot, acpiphp_slot->bus,
                                 acpiphp_slot->device, name);
        if (retval == -EBUSY)
-               goto error_hpslot;
+               goto error_slot;
        if (retval) {
                pr_err("pci_hp_register failed with error %d\n", retval);
-               goto error_hpslot;
+               goto error_slot;
        }
 
        pr_info("Slot [%s] registered\n", slot_name(slot));
 
        return 0;
-error_hpslot:
-       kfree(slot->hotplug_slot);
 error_slot:
        kfree(slot);
 error:
@@ -312,8 +299,7 @@ void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *acpiphp_slot)
 
        pr_info("Slot [%s] unregistered\n", slot_name(slot));
 
-       pci_hp_deregister(slot->hotplug_slot);
-       kfree(slot->hotplug_slot);
+       pci_hp_deregister(&slot->hotplug_slot);
        kfree(slot);
 }