Lines Matching refs:bridge
93 put_device(pci_bus->bridge); in release_pcibus_dev()
348 static void pci_read_bridge_windows(struct pci_dev *bridge) in pci_read_bridge_windows() argument
353 pci_read_config_word(bridge, PCI_IO_BASE, &io); in pci_read_bridge_windows()
355 pci_write_config_word(bridge, PCI_IO_BASE, 0xe0f0); in pci_read_bridge_windows()
356 pci_read_config_word(bridge, PCI_IO_BASE, &io); in pci_read_bridge_windows()
357 pci_write_config_word(bridge, PCI_IO_BASE, 0x0); in pci_read_bridge_windows()
360 bridge->io_window = 1; in pci_read_bridge_windows()
367 if (bridge->vendor == PCI_VENDOR_ID_DEC && bridge->device == 0x0001) in pci_read_bridge_windows()
370 pci_read_config_dword(bridge, PCI_PREF_MEMORY_BASE, &pmem); in pci_read_bridge_windows()
372 pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE, in pci_read_bridge_windows()
374 pci_read_config_dword(bridge, PCI_PREF_MEMORY_BASE, &pmem); in pci_read_bridge_windows()
375 pci_write_config_dword(bridge, PCI_PREF_MEMORY_BASE, 0x0); in pci_read_bridge_windows()
380 bridge->pref_window = 1; in pci_read_bridge_windows()
389 pci_read_config_dword(bridge, PCI_PREF_BASE_UPPER32, &pmem); in pci_read_bridge_windows()
390 pci_write_config_dword(bridge, PCI_PREF_BASE_UPPER32, in pci_read_bridge_windows()
392 pci_read_config_dword(bridge, PCI_PREF_BASE_UPPER32, &tmp); in pci_read_bridge_windows()
393 pci_write_config_dword(bridge, PCI_PREF_BASE_UPPER32, pmem); in pci_read_bridge_windows()
395 bridge->pref_64_window = 1; in pci_read_bridge_windows()
571 struct pci_host_bridge *bridge = to_pci_host_bridge(dev); in pci_release_host_bridge_dev() local
573 if (bridge->release_fn) in pci_release_host_bridge_dev()
574 bridge->release_fn(bridge); in pci_release_host_bridge_dev()
576 pci_free_resource_list(&bridge->windows); in pci_release_host_bridge_dev()
577 pci_free_resource_list(&bridge->dma_ranges); in pci_release_host_bridge_dev()
578 kfree(bridge); in pci_release_host_bridge_dev()
581 static void pci_init_host_bridge(struct pci_host_bridge *bridge) in pci_init_host_bridge() argument
583 INIT_LIST_HEAD(&bridge->windows); in pci_init_host_bridge()
584 INIT_LIST_HEAD(&bridge->dma_ranges); in pci_init_host_bridge()
592 bridge->native_aer = 1; in pci_init_host_bridge()
593 bridge->native_pcie_hotplug = 1; in pci_init_host_bridge()
594 bridge->native_shpc_hotplug = 1; in pci_init_host_bridge()
595 bridge->native_pme = 1; in pci_init_host_bridge()
596 bridge->native_ltr = 1; in pci_init_host_bridge()
597 bridge->native_dpc = 1; in pci_init_host_bridge()
598 bridge->domain_nr = PCI_DOMAIN_NR_NOT_SET; in pci_init_host_bridge()
600 device_initialize(&bridge->dev); in pci_init_host_bridge()
605 struct pci_host_bridge *bridge; in pci_alloc_host_bridge() local
607 bridge = kzalloc(sizeof(*bridge) + priv, GFP_KERNEL); in pci_alloc_host_bridge()
608 if (!bridge) in pci_alloc_host_bridge()
611 pci_init_host_bridge(bridge); in pci_alloc_host_bridge()
612 bridge->dev.release = pci_release_host_bridge_dev; in pci_alloc_host_bridge()
614 return bridge; in pci_alloc_host_bridge()
627 struct pci_host_bridge *bridge; in devm_pci_alloc_host_bridge() local
629 bridge = pci_alloc_host_bridge(priv); in devm_pci_alloc_host_bridge()
630 if (!bridge) in devm_pci_alloc_host_bridge()
633 bridge->dev.parent = dev; in devm_pci_alloc_host_bridge()
636 bridge); in devm_pci_alloc_host_bridge()
640 ret = devm_of_pci_bridge_init(dev, bridge); in devm_pci_alloc_host_bridge()
644 return bridge; in devm_pci_alloc_host_bridge()
648 void pci_free_host_bridge(struct pci_host_bridge *bridge) in pci_free_host_bridge() argument
650 put_device(&bridge->dev); in pci_free_host_bridge()
772 struct pci_dev *bridge = bus->self; in pci_set_bus_speed() local
775 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP); in pci_set_bus_speed()
777 pos = pci_find_capability(bridge, PCI_CAP_ID_AGP3); in pci_set_bus_speed()
781 pci_read_config_dword(bridge, pos + PCI_AGP_STATUS, &agpstat); in pci_set_bus_speed()
784 pci_read_config_dword(bridge, pos + PCI_AGP_COMMAND, &agpcmd); in pci_set_bus_speed()
788 pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX); in pci_set_bus_speed()
793 pci_read_config_word(bridge, pos + PCI_X_BRIDGE_SSTATUS, in pci_set_bus_speed()
816 if (pci_is_pcie(bridge)) { in pci_set_bus_speed()
820 pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap); in pci_set_bus_speed()
822 bridge->link_active_reporting = !!(linkcap & PCI_EXP_LNKCAP_DLLLARC); in pci_set_bus_speed()
824 pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta); in pci_set_bus_speed()
834 d = dev_get_msi_domain(bus->bridge); in pci_host_bridge_msi_domain()
883 static int pci_register_host_bridge(struct pci_host_bridge *bridge) in pci_register_host_bridge() argument
885 struct device *parent = bridge->dev.parent; in pci_register_host_bridge()
899 bridge->bus = bus; in pci_register_host_bridge()
902 list_splice_init(&bridge->windows, &resources); in pci_register_host_bridge()
903 bus->sysdata = bridge->sysdata; in pci_register_host_bridge()
904 bus->ops = bridge->ops; in pci_register_host_bridge()
905 bus->number = bus->busn_res.start = bridge->busnr; in pci_register_host_bridge()
907 if (bridge->domain_nr == PCI_DOMAIN_NR_NOT_SET) in pci_register_host_bridge()
910 bus->domain_nr = bridge->domain_nr; in pci_register_host_bridge()
913 b = pci_find_bus(pci_domain_nr(bus), bridge->busnr); in pci_register_host_bridge()
921 dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(bus), in pci_register_host_bridge()
922 bridge->busnr); in pci_register_host_bridge()
924 err = pcibios_root_bridge_prepare(bridge); in pci_register_host_bridge()
928 err = device_add(&bridge->dev); in pci_register_host_bridge()
930 put_device(&bridge->dev); in pci_register_host_bridge()
933 bus->bridge = get_device(&bridge->dev); in pci_register_host_bridge()
934 device_enable_async_suspend(bus->bridge); in pci_register_host_bridge()
937 if (bridge->msi_domain && !dev_get_msi_domain(&bus->dev) && in pci_register_host_bridge()
942 set_dev_node(bus->bridge, pcibus_to_node(bus)); in pci_register_host_bridge()
945 bus->dev.parent = bus->bridge; in pci_register_host_bridge()
1000 list_move_tail(&window->node, &bridge->windows); in pci_register_host_bridge()
1029 put_device(&bridge->dev); in pci_register_host_bridge()
1030 device_del(&bridge->dev); in pci_register_host_bridge()
1037 static bool pci_bridge_child_ext_cfg_accessible(struct pci_dev *bridge) in pci_bridge_child_ext_cfg_accessible() argument
1046 if (bridge->bus->bus_flags & PCI_BUS_FLAGS_NO_EXTCFG) in pci_bridge_child_ext_cfg_accessible()
1054 if (pci_is_pcie(bridge) && in pci_bridge_child_ext_cfg_accessible()
1055 (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT || in pci_bridge_child_ext_cfg_accessible()
1056 pci_pcie_type(bridge) == PCI_EXP_TYPE_UPSTREAM || in pci_bridge_child_ext_cfg_accessible()
1057 pci_pcie_type(bridge) == PCI_EXP_TYPE_DOWNSTREAM)) in pci_bridge_child_ext_cfg_accessible()
1068 pos = pci_find_capability(bridge, PCI_CAP_ID_PCIX); in pci_bridge_child_ext_cfg_accessible()
1072 pci_read_config_dword(bridge, pos + PCI_X_STATUS, &status); in pci_bridge_child_ext_cfg_accessible()
1077 struct pci_dev *bridge, int busnr) in pci_alloc_child_bus() argument
1111 if (!bridge) { in pci_alloc_child_bus()
1112 child->dev.parent = parent->bridge; in pci_alloc_child_bus()
1116 child->self = bridge; in pci_alloc_child_bus()
1117 child->bridge = get_device(&bridge->dev); in pci_alloc_child_bus()
1118 child->dev.parent = child->bridge; in pci_alloc_child_bus()
1127 if (!pci_bridge_child_ext_cfg_accessible(bridge)) { in pci_alloc_child_bus()
1134 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i]; in pci_alloc_child_bus()
1137 bridge->subordinate = child; in pci_alloc_child_bus()
1837 dev->dev.parent = dev->bus->bridge; in pci_setup_device()
1999 struct pci_dev *bridge = pci_upstream_bridge(dev); in pci_configure_mps() local
2026 if (!bridge || !pci_is_pcie(bridge)) in pci_configure_mps()
2030 p_mps = pcie_get_mps(bridge); in pci_configure_mps()
2037 mps, pci_name(bridge), p_mps); in pci_configure_mps()
2049 if (mpss < p_mps && pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) { in pci_configure_mps()
2050 pcie_set_mps(bridge, mpss); in pci_configure_mps()
2052 mpss, p_mps, 128 << bridge->pcie_mpss); in pci_configure_mps()
2053 p_mps = pcie_get_mps(bridge); in pci_configure_mps()
2159 struct pci_dev *bridge; in pci_configure_ltr() local
2179 bridge = pci_upstream_bridge(dev); in pci_configure_ltr()
2180 if (bridge && bridge->ltr_path) in pci_configure_ltr()
2206 bridge = pci_upstream_bridge(dev); in pci_configure_ltr()
2207 if (bridge && bridge->ltr_path) { in pci_configure_ltr()
2219 struct pci_dev *bridge; in pci_configure_eetlp_prefix() local
2235 bridge = pci_upstream_bridge(dev); in pci_configure_eetlp_prefix()
2236 if (bridge && bridge->eetlp_prefix_path) in pci_configure_eetlp_prefix()
2389 struct pci_dev *bridge = bus->self; in pci_bus_read_dev_vendor_id() local
2395 if (bridge && bridge->vendor == PCI_VENDOR_ID_IDT && in pci_bus_read_dev_vendor_id()
2396 bridge->device == 0x80b5) in pci_bus_read_dev_vendor_id()
2619 struct pci_dev *bridge = bus->self; in only_one_child() local
2633 if (bridge && pci_is_pcie(bridge) && pcie_downstream_port(bridge)) in only_one_child()
3016 int __weak pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) in pcibios_root_bridge_prepare() argument
3033 struct pci_host_bridge *bridge; in pci_create_root_bus() local
3035 bridge = pci_alloc_host_bridge(0); in pci_create_root_bus()
3036 if (!bridge) in pci_create_root_bus()
3039 bridge->dev.parent = parent; in pci_create_root_bus()
3041 list_splice_init(resources, &bridge->windows); in pci_create_root_bus()
3042 bridge->sysdata = sysdata; in pci_create_root_bus()
3043 bridge->busnr = bus; in pci_create_root_bus()
3044 bridge->ops = ops; in pci_create_root_bus()
3046 error = pci_register_host_bridge(bridge); in pci_create_root_bus()
3050 return bridge->bus; in pci_create_root_bus()
3053 put_device(&bridge->dev); in pci_create_root_bus()
3058 int pci_host_probe(struct pci_host_bridge *bridge) in pci_host_probe() argument
3063 ret = pci_scan_root_bus_bridge(bridge); in pci_host_probe()
3065 dev_err(bridge->dev.parent, "Scanning root bridge failed"); in pci_host_probe()
3069 bus = bridge->bus; in pci_host_probe()
3152 int pci_scan_root_bus_bridge(struct pci_host_bridge *bridge) in pci_scan_root_bus_bridge() argument
3159 if (!bridge) in pci_scan_root_bus_bridge()
3162 resource_list_for_each_entry(window, &bridge->windows) in pci_scan_root_bus_bridge()
3164 bridge->busnr = window->res->start; in pci_scan_root_bus_bridge()
3169 ret = pci_register_host_bridge(bridge); in pci_scan_root_bus_bridge()
3173 b = bridge->bus; in pci_scan_root_bus_bridge()
3174 bus = bridge->busnr; in pci_scan_root_bus_bridge()
3256 unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge) in pci_rescan_bus_bridge_resize() argument
3259 struct pci_bus *bus = bridge->subordinate; in pci_rescan_bus_bridge_resize()
3263 pci_assign_unassigned_bridge_resources(bridge); in pci_rescan_bus_bridge_resize()