Lines Matching refs:bridge
119 WARN_ON(context->bridge); in acpiphp_put_context()
124 static inline void get_bridge(struct acpiphp_bridge *bridge) in get_bridge() argument
126 kref_get(&bridge->ref); in get_bridge()
129 static inline void put_bridge(struct acpiphp_bridge *bridge) in put_bridge() argument
131 kref_put(&bridge->ref, free_bridge); in put_bridge()
158 struct acpiphp_bridge *bridge; in free_bridge() local
164 bridge = container_of(kref, struct acpiphp_bridge, ref); in free_bridge()
166 list_for_each_entry_safe(slot, next, &bridge->slots, node) { in free_bridge()
173 context = bridge->context; in free_bridge()
178 context->bridge = NULL; in free_bridge()
182 put_device(&bridge->pci_bus->dev); in free_bridge()
183 pci_dev_put(bridge->pci_dev); in free_bridge()
184 kfree(bridge); in free_bridge()
264 struct acpiphp_bridge *bridge = data; in acpiphp_add_context() local
272 struct pci_bus *pbus = bridge->pci_bus; in acpiphp_add_context()
273 struct pci_dev *pdev = bridge->pci_dev; in acpiphp_add_context()
298 newfunc->parent = bridge; in acpiphp_add_context()
312 list_for_each_entry(slot, &bridge->slots, node) in acpiphp_add_context()
324 slot->bus = bridge->pci_bus; in acpiphp_add_context()
328 list_add_tail(&slot->node, &bridge->slots); in acpiphp_add_context()
341 bridge->nr_slots++; in acpiphp_add_context()
344 sun = bridge->nr_slots; in acpiphp_add_context()
352 bridge->nr_slots--; in acpiphp_add_context()
372 static void cleanup_bridge(struct acpiphp_bridge *bridge) in cleanup_bridge() argument
377 list_for_each_entry(slot, &bridge->slots, node) { in cleanup_bridge()
392 list_del(&bridge->list); in cleanup_bridge()
396 bridge->is_going_away = true; in cleanup_bridge()
670 static void acpiphp_check_bridge(struct acpiphp_bridge *bridge) in acpiphp_check_bridge() argument
675 if (bridge->is_going_away) in acpiphp_check_bridge()
678 list_for_each_entry(slot, &bridge->slots, node) { in acpiphp_check_bridge()
729 struct acpiphp_bridge *bridge = NULL; in acpiphp_check_host_bridge() local
733 bridge = to_acpiphp_root_context(adev->hp)->root_bridge; in acpiphp_check_host_bridge()
734 if (bridge) in acpiphp_check_host_bridge()
735 get_bridge(bridge); in acpiphp_check_host_bridge()
738 if (bridge) { in acpiphp_check_host_bridge()
741 acpiphp_check_bridge(bridge); in acpiphp_check_host_bridge()
744 put_bridge(bridge); in acpiphp_check_host_bridge()
755 struct acpiphp_bridge *bridge; in hotplug_event() local
758 bridge = context->bridge; in hotplug_event()
759 if (bridge) in hotplug_event()
760 get_bridge(bridge); in hotplug_event()
770 if (bridge) in hotplug_event()
771 acpiphp_check_bridge(bridge); in hotplug_event()
780 if (bridge) { in hotplug_event()
781 acpiphp_check_bridge(bridge); in hotplug_event()
800 if (bridge) in hotplug_event()
801 put_bridge(bridge); in hotplug_event()
826 struct acpiphp_bridge *bridge; in acpiphp_enumerate_slots() local
834 adev = ACPI_COMPANION(bus->bridge); in acpiphp_enumerate_slots()
839 bridge = kzalloc(sizeof(struct acpiphp_bridge), GFP_KERNEL); in acpiphp_enumerate_slots()
840 if (!bridge) { in acpiphp_enumerate_slots()
845 INIT_LIST_HEAD(&bridge->slots); in acpiphp_enumerate_slots()
846 kref_init(&bridge->ref); in acpiphp_enumerate_slots()
847 bridge->pci_dev = pci_dev_get(bus->self); in acpiphp_enumerate_slots()
848 bridge->pci_bus = bus; in acpiphp_enumerate_slots()
858 if (pci_is_root_bus(bridge->pci_bus)) { in acpiphp_enumerate_slots()
865 root_context->root_bridge = bridge; in acpiphp_enumerate_slots()
880 bridge->context = context; in acpiphp_enumerate_slots()
881 context->bridge = bridge; in acpiphp_enumerate_slots()
889 list_add(&bridge->list, &bridge_list); in acpiphp_enumerate_slots()
894 acpiphp_add_context, NULL, bridge, NULL); in acpiphp_enumerate_slots()
897 cleanup_bridge(bridge); in acpiphp_enumerate_slots()
898 put_bridge(bridge); in acpiphp_enumerate_slots()
905 pci_dev_put(bridge->pci_dev); in acpiphp_enumerate_slots()
906 kfree(bridge); in acpiphp_enumerate_slots()
909 static void acpiphp_drop_bridge(struct acpiphp_bridge *bridge) in acpiphp_drop_bridge() argument
911 if (pci_is_root_bus(bridge->pci_bus)) { in acpiphp_drop_bridge()
916 adev = ACPI_COMPANION(bridge->pci_bus->bridge); in acpiphp_drop_bridge()
922 cleanup_bridge(bridge); in acpiphp_drop_bridge()
923 put_bridge(bridge); in acpiphp_drop_bridge()
932 struct acpiphp_bridge *bridge; in acpiphp_remove_slots() local
938 list_for_each_entry(bridge, &bridge_list, list) in acpiphp_remove_slots()
939 if (bridge->pci_bus == bus) { in acpiphp_remove_slots()
941 acpiphp_drop_bridge(bridge); in acpiphp_remove_slots()