Lines Matching refs:slot

159 	struct acpiphp_slot *slot, *next;  in free_bridge()  local
166 list_for_each_entry_safe(slot, next, &bridge->slots, node) { in free_bridge()
167 list_for_each_entry_safe(func, tmp, &slot->funcs, sibling) in free_bridge()
170 kfree(slot); in free_bridge()
204 bus = context->func.slot->bus; in acpiphp_post_dock_fixup()
267 struct acpiphp_slot *slot; in acpiphp_add_context() local
312 list_for_each_entry(slot, &bridge->slots, node) in acpiphp_add_context()
313 if (slot->device == device) in acpiphp_add_context()
316 slot = kzalloc(sizeof(struct acpiphp_slot), GFP_KERNEL); in acpiphp_add_context()
317 if (!slot) { in acpiphp_add_context()
324 slot->bus = bridge->pci_bus; in acpiphp_add_context()
325 slot->device = device; in acpiphp_add_context()
326 INIT_LIST_HEAD(&slot->funcs); in acpiphp_add_context()
328 list_add_tail(&slot->node, &bridge->slots); in acpiphp_add_context()
349 retval = acpiphp_register_hotplug_slot(slot, sun); in acpiphp_add_context()
351 slot->slot = NULL; in acpiphp_add_context()
362 newfunc->slot = slot; in acpiphp_add_context()
363 list_add_tail(&newfunc->sibling, &slot->funcs); in acpiphp_add_context()
367 slot->flags |= SLOT_ENABLED; in acpiphp_add_context()
374 struct acpiphp_slot *slot; in cleanup_bridge() local
377 list_for_each_entry(slot, &bridge->slots, node) { in cleanup_bridge()
378 list_for_each_entry(func, &slot->funcs, sibling) { in cleanup_bridge()
386 slot->flags |= SLOT_IS_GOING_AWAY; in cleanup_bridge()
387 if (slot->slot) in cleanup_bridge()
388 acpiphp_unregister_hotplug_slot(slot); in cleanup_bridge()
427 static void acpiphp_set_acpi_region(struct acpiphp_slot *slot) in acpiphp_set_acpi_region() argument
433 list_for_each_entry(func, &slot->funcs, sibling) { in acpiphp_set_acpi_region()
446 static void check_hotplug_bridge(struct acpiphp_slot *slot, struct pci_dev *dev) in check_hotplug_bridge() argument
454 list_for_each_entry(func, &slot->funcs, sibling) { in check_hotplug_bridge()
462 static int acpiphp_rescan_slot(struct acpiphp_slot *slot) in acpiphp_rescan_slot() argument
466 list_for_each_entry(func, &slot->funcs, sibling) { in acpiphp_rescan_slot()
473 return pci_scan_slot(slot->bus, PCI_DEVFN(slot->device, 0)); in acpiphp_rescan_slot()
483 static void enable_slot(struct acpiphp_slot *slot) in enable_slot() argument
486 struct pci_bus *bus = slot->bus; in enable_slot()
491 acpiphp_rescan_slot(slot); in enable_slot()
495 if (PCI_SLOT(dev->devfn) != slot->device) in enable_slot()
501 check_hotplug_bridge(slot, dev); in enable_slot()
513 acpiphp_set_acpi_region(slot); in enable_slot()
523 slot->flags |= SLOT_ENABLED; in enable_slot()
524 list_for_each_entry(func, &slot->funcs, sibling) { in enable_slot()
525 dev = pci_get_slot(bus, PCI_DEVFN(slot->device, in enable_slot()
530 slot->flags &= (~SLOT_ENABLED); in enable_slot()
540 static void disable_slot(struct acpiphp_slot *slot) in disable_slot() argument
542 struct pci_bus *bus = slot->bus; in disable_slot()
553 if (PCI_SLOT(dev->devfn) == slot->device) in disable_slot()
556 list_for_each_entry(func, &slot->funcs, sibling) in disable_slot()
559 slot->flags &= (~SLOT_ENABLED); in disable_slot()
562 static bool slot_no_hotplug(struct acpiphp_slot *slot) in slot_no_hotplug() argument
564 struct pci_bus *bus = slot->bus; in slot_no_hotplug()
568 if (PCI_SLOT(dev->devfn) == slot->device && dev->ignore_hotplug) in slot_no_hotplug()
586 static unsigned int get_slot_status(struct acpiphp_slot *slot) in get_slot_status() argument
591 list_for_each_entry(func, &slot->funcs, sibling) { in get_slot_status()
602 pci_bus_read_config_dword(slot->bus, in get_slot_status()
603 PCI_DEVFN(slot->device, in get_slot_status()
673 struct acpiphp_slot *slot; in acpiphp_check_bridge() local
679 list_for_each_entry(slot, &bridge->slots, node) { in acpiphp_check_bridge()
680 struct pci_bus *bus = slot->bus; in acpiphp_check_bridge()
683 if (slot_no_hotplug(slot)) { in acpiphp_check_bridge()
685 } else if (device_status_valid(get_slot_status(slot))) { in acpiphp_check_bridge()
689 if (PCI_SLOT(dev->devfn) == slot->device) in acpiphp_check_bridge()
693 enable_slot(slot); in acpiphp_check_bridge()
695 disable_slot(slot); in acpiphp_check_bridge()
749 static int acpiphp_disable_and_eject_slot(struct acpiphp_slot *slot);
755 struct acpiphp_slot *slot = func->slot; in hotplug_event() local
773 else if (!(slot->flags & SLOT_IS_GOING_AWAY)) in hotplug_event()
774 enable_slot(slot); in hotplug_event()
783 } else if (!(slot->flags & SLOT_IS_GOING_AWAY)) { in hotplug_event()
788 if (acpiphp_rescan_slot(slot)) in hotplug_event()
796 acpiphp_disable_and_eject_slot(slot); in hotplug_event()
953 int acpiphp_enable_slot(struct acpiphp_slot *slot) in acpiphp_enable_slot() argument
957 if (slot->flags & SLOT_IS_GOING_AWAY) { in acpiphp_enable_slot()
963 if (!(slot->flags & SLOT_ENABLED)) in acpiphp_enable_slot()
964 enable_slot(slot); in acpiphp_enable_slot()
974 static int acpiphp_disable_and_eject_slot(struct acpiphp_slot *slot) in acpiphp_disable_and_eject_slot() argument
978 if (slot->flags & SLOT_IS_GOING_AWAY) in acpiphp_disable_and_eject_slot()
982 disable_slot(slot); in acpiphp_disable_and_eject_slot()
984 list_for_each_entry(func, &slot->funcs, sibling) in acpiphp_disable_and_eject_slot()
997 int acpiphp_disable_slot(struct acpiphp_slot *slot) in acpiphp_disable_slot() argument
1007 ret = acpiphp_disable_and_eject_slot(slot); in acpiphp_disable_slot()
1017 u8 acpiphp_get_power_status(struct acpiphp_slot *slot) in acpiphp_get_power_status() argument
1019 return (slot->flags & SLOT_ENABLED); in acpiphp_get_power_status()
1026 u8 acpiphp_get_latch_status(struct acpiphp_slot *slot) in acpiphp_get_latch_status() argument
1028 return !(get_slot_status(slot) & ACPI_STA_DEVICE_UI); in acpiphp_get_latch_status()
1035 u8 acpiphp_get_adapter_status(struct acpiphp_slot *slot) in acpiphp_get_adapter_status() argument
1037 return !!get_slot_status(slot); in acpiphp_get_adapter_status()